當前位置:首頁 » 參考文獻 » 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