当前位置:首页 » 参考文献 » oracle数据库实现

oracle数据库实现

发布时间: 2021-03-05 01:36:27

⑴ oracle数据库实现全文检索

Oracle全文检索配置方法:

1.检查数据库是否具有全文检索功能(这是针对已经建成使用的数据库)

查看用户中是否存在ctxsys用户,查询角色里是否存在ctxapp角色。以上两个中的1个不满足(不存在),则说明没有装过全文检索功能。

使用contains函数的时候,若没有全文检索则会报错的。

2.若没有,则需要手动建立,先建立全文检索要使用的空间

sqlplus / as sysdba --进入控制台

createtablespaceIdx_ctxsysdatafile'/oradata/sg186fx/ctxsys01.;--创建全文检索使用的表空间

3.创建全文检索使用的用户和角色及相应的包,则需要执行oracle自带的一个脚本:cd $ORACLE_HOME/ctx/admin/catctx.sql

还是在sqlplus中执行:

@?/ctx/admin/catctx.sql ctxsys Idx_ctxsys temp nolock

在执行这个脚本的时候,输入了几个参数,第一个参数ctxsys为ctxsys用户的密码

第二个参数Idx_ctxsys为ctxsys用户要使用的表空间

第三个参数temp为ctxsys用户使用的临时表空间

第四个参数nolock为ctxsys用户处于解锁状态。

4.创建完成后,要登录ctxsys用户

connect ctxsys/ctxsys

执行以下脚本:@?/ctx/admin/defaults/drdefus.sql(这是个很重要的脚本,后面创建索引会使用该脚本创建的信息)

5.创建全文索引语法分析器

先要明确使用全文索引的用户,我要使用全文索引的是sgpm用户

因此

grantexecuteonctxsys.ctx_ddltosgpmwithgrantoption;

connect sgpm/sgpm

设置语法分析器:

execctx_ddl.drop_preference('chinalexer');
execctx_ddl.create_preference('chinalexer','chinese_lexer');

设置词法属性:

execctx_ddl.drop_preference('idx_c_store');
begin
ctx_ddl.create_preference('idx_c_store','BASIC_STORAGE');
ctx_ddl.set_attribut('idx_c_store','I_TABLE_CLAUSE','tablespacesIdx_ctxsy');
ctx_ddl.set_attribute('idx_c_store','I_INDEX_CLAUSE','tablespaceIdx_ctxsycompress2');
end;
/

6.创建索引

createindexsgpm.idx_c_cons_nameonsgpm.c_cons(cons_name)indextypeisctxsys.contextparameters('lexerchinalexerstorageidx_c_store');

7.同步索引

variablejobnonumber;
begin
dbms_job.submit(:jobno,'pkg_sp_tools.p_cont_sys_index();',sysdate,'trunc(sysdate)+19/24+1');--执行的是个性化方法。
end;
/

普通的就是用:

execctx_ddl.sync_index('idx_c_cons_name');

到此,全文检索创建成功,contains函数就可以正常使用了。

注意:创建的过程中会出现ORA-29879:cannot create multiple domain index on a column listusing same indextype ,这说明在其他用户下已经建立了该索引。

⑵ 如何实现两个oracle数据库实时同步

为方便完成指定数据表的同步操作,可以采用dblink与merge结合的方法完成。
操作环境: 此数据库服务器ip为192.168.196.76,有center与branch两个库,一般需要将center的表数据同步到branch,center为源库,branch为目标库,具体步骤如下:
1.在源库创建到目标库的dblink
create database link branch --输入所要创建dblink的名称,自定义
connect to dbuser identified by “password” --设置连接远程数据库的用户名和密码
using '192.168.196.76/branch'; --指定目标数据库的连接方式,可用tns名称

在创建dblink时,要注意,有时候可能会报用户名和密码错误,但实际上我们所输入的账户信息是正确的,此时就注意将密码的大小写按服务器上所设置的输入,并在账号密码前号加上双引号(服务器版本不同造成的)。
2.成功后验证dblink
select * from tb_bd_action@branch; --查询创建好的brach库

正常情况下,如果创建dblink成功,可采用该方式访问到远程数据库的表.
3.通过merge语句完成表数据同步
此例中需要将center库中的tb_sys_sqlscripe表同步到branch,简单的语法如下:
merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (b.pk=c.pk) --从center将表merge到branch,同步的依据是两个表的pk
when matched then update set b.sqlscripe=c.sqlscripe,b.author=c.author --如果pk值是相同则将指定表的值更新到目标表
when not matched then --如果pk值不一至,则将源表中的数据整条插入到目标表中
insert values (c.pk, c.fk, c.createtime, c.lastmodifytime,c.author,c.mole,c.deleteflag, c.scripttype);
commit; --记得merge后必须commit,否则更改未能提交
4.为方便每次需要同步时自动完成同步工作,可将该语句做成存储过程或脚本来定时执行或按要求手动执行,简单说一下创建脚本的方法:
a.创建merge文件夹
b.先将merge语句写完整后,存到merge.sql文件中
c.新建merge.bat文件,编辑后写入以下内容
sqlplus user/password@serverip/database @"%cd%\merge.sql"

⑶ ORACLE数据库高可用的实现有哪些方法

class.forname("xx.xx")等同于class.forname("xx.xx",true,callclass.class.getclassloader()),第二抄个参数(bool)表示装载类的时候是否初始化该类,即调用类的静态块的语句及初始化静态成员变量。
classloader
loader
=
thread.currentthread.getcontextclassloader();
//也可以用

⑷ 用java做界面连接oracle数据库实现增删改查功能,具体步骤怎么做

  1. 如果不用ORM框架,那么直接引入ojdbc6.jar 驱动包,然后在代码中JDBC配置;

  2. 然后可以使用jdbc实现增删改查,比如下面代码

ResultSetrs=null;
Statementstmt=null;
Connectionconn=null;
try{
Class.forName("oracle.jdbc.driver.oracleDriver");
//neworacle.jdbc.driver.oracleDriver();
conn=DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:yuewei","scott","tiger");
stmt=conn.createStatement();
rs=stmt.executeQuery("select*fromdept");
while(rs.next()){
System.out.println(rs.getString("deptno"));
//System.out.println(rs.getInt("deptno"));
}
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
rs=null;
}
if(stmt!=null){
stmt.close();
stmt=null;
}
if(conn!=null){
conn.close();
conn=null;
}
}catch(SQLExceptione){
e.printStackTrace();
}
}

2.

⑸ Oracle数据库中的数据完整性如何实现

Oracle数据库的完整性有三个:实体完整性、参考完整性和自定义完整性。它的实现是通过5五个约束来完成的。五个约束如下:
主键 primary key
非空 not null
唯一 unique
检查 check
外键 foreign key

⑹ 求助。oracle数据库实现a、b、c三表联合查询,如何实现如下效果

selectA.姓名,A.性别,D.选课内容fromA
leftjoin(
SELECTB.学号student,wmsys.wm_concat(C.课程回名答称)as选课内容FROMB
leftjoinConB.课程id=C.课程ID
GROUPBYB.学号
)asDonA.学号=D.学号

⑺ 如何实现Oracle数据库的读写分离

在MySQL作为应用系统的后台数据库时,我们常常见到这样的架构,一拖二、一拖三等等。这是用MySQL的读写分离技术,实现数据的写入和读取分别在不同的库上,提升了数据库服务能力。
同样,在Oracle作为后台数据库的架构中,我们也可以这么做。实现的方式有很多种。有基于RAC架构的,使用其中某个节点作为读库;有基于Streams数据复制技术的,实时将数据复制到另外一个库供读取;有使用第三方数据复制软件的,如Golden Gate(已经被Oracle收入囊中)、DSG的,也是实时复制数据到另外一个库中。还有使用Logical standby技术,实时复制数据到一个库,且该库是对应用而言是只读的。

⑻ 一数据库方案用ORACLE实现

给A\B分别赋予来不通的角色。各种角源色都有不通的权限。你可以把数据库A部分的读取即select付给A用户 grant select …… to A 同理给B付grant select …… to B。即可。不同的用户密码肯定是不同的吧。至于读取修改指定的内容貌似oracle中,只要你登录了,操作是不需要密码的。
有什么不懂的追问

⑼ 如何实现两个Oracle数据库的数据同步

为方便完成指定数据表的同步操作,可以采用dblink与merge结合的方法完成。

操作环境: 此数据库服务器ip为192.168.196.76,有center与branch两个库,一般需要将center的表数据同步到branch,center为源库,branch为目标库,具体步骤如下:

1.在源库创建到目标库的dblink

create database link branch --输入所要创建dblink的名称,自定义
connect to dbuser identified by “password” --设置连接远程数据库的用户名和密码
using '192.168.196.76/branch'; --指定目标数据库的连接方式,可用tns名称

正常情况下,如果创建dblink成功,可采用该方式访问到远程数据库的表.

3.通过merge语句完成表数据同步

此例中需要将center库中的tb_sys_sqlscripe表同步到branch,简单的语法如下:

merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (b.pk=c.pk) --从center将表merge到branch,同步的依据是两个表的pk

when matched then update set b.sqlscripe=c.sqlscripe,b.author=c.author --如果pk值是相同则将指定表的值更新到目标表

when not matched then --如果pk值不一至,则将源表中的数据整条插入到目标表中

insert values (c.pk, c.fk, c.createtime, c.lastmodifytime,c.author,c.mole,c.deleteflag, c.scripttype);

commit; --记得merge后必须commit,否则更改未能提交

4.为方便每次需要同步时自动完成同步工作,可将该语句做成存储过程或脚本来定时执行或按要求手动执行,简单说一下创建脚本的方法:

a.创建merge文件夹

b.先将merge语句写完整后,存到merge.sql文件中

c.新建merge.bat文件,编辑后写入以下内容

sqlplus user/password@serverip/database @"%cd%merge.sql"

⑽ 在oracle数据库中用sql语句实现

在你原来的基础上面调整

select
distinctes.flowid,
a.ticketsubject,
tu.name,
a.startdeptdeptname,
es.uptime,
es.filename,
a.PROJECTNAME
fromes_flowef,ts_usertu,
(selectx.*,row_number()over(partitionbyx.flowidorderbyuptimedesc)ordernofromEs_Attachmentx)es,--修改
(selectflowid,PROJECTNAME,startdept,ticketsubject
from(selectflowid,ticketno,PROJECTNAME,startdept,ticketsubjectfrombusiness_ysgl)
)a
wherea.flowid=ef.flowid
andtu.userid=ef.starterid
andtu.deleted=0
anda.flowid=es.flowid
andes.orderno=1--修改

热点内容
涂鸦论文 发布:2021-03-31 13:04:48 浏览:698
手机数据库应用 发布:2021-03-31 13:04:28 浏览:353
版面217 发布:2021-03-31 13:04:18 浏览:587
知网不查的资源 发布:2021-03-31 13:03:43 浏览:713
基金赎回参考 发布:2021-03-31 13:02:08 浏览:489
悬疑故事范文 发布:2021-03-31 13:02:07 浏览:87
做简单的自我介绍范文 发布:2021-03-31 13:01:48 浏览:537
战略地图参考 发布:2021-03-31 13:01:09 浏览:463
收支模板 发布:2021-03-31 13:00:43 浏览:17
电气学术会议 发布:2021-03-31 13:00:32 浏览:731