Oracle导入到不同的角色,oracle 不同版本之间的导入导出
不同版本oracle導(dǎo)入導(dǎo)出解決辦法。
今天遇到一個(gè)比較特殊的情況,需要在oracle8中使用oracle9的數(shù)據(jù),如是導(dǎo)入導(dǎo)出。費(fèi)了大半天,從oracle9中導(dǎo)出的數(shù)據(jù)就是無法導(dǎo)入oracle8中。
后來上網(wǎng)查詢才知道,oracle不同版本之間的導(dǎo)入導(dǎo)出,不同于同版本導(dǎo)入導(dǎo)出。 有些規(guī)則要遵循:
一篇文章這樣說:
如果版本不一致的話,在數(shù)據(jù)庫之間exp、imp數(shù)據(jù)的應(yīng)該遵循的規(guī)則:
1、imp工具的版本應(yīng)該和目標(biāo)數(shù)據(jù)庫的版本一致;
2、exp工具的版本應(yīng)該與源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫中版本最低的一個(gè)相一致
另一片文章這樣說:
規(guī)則一:從Oracle 低版本的Export數(shù)據(jù)可以Import到Oracle高版本中,但限于Oracle的相鄰版本,如從Oracle 7 到 Oracle 8。對(duì)于兩個(gè)不相鄰版本間進(jìn)行轉(zhuǎn)換,如從Oracle 6 到 Oracle 8,則應(yīng)先將數(shù)據(jù)輸入到中間版本—Oracle 7,再從中間數(shù)據(jù)庫轉(zhuǎn)入更高版本。
規(guī)則二:Oracle的Export/Import工具只能連接到擁有更高或者一樣的Export/Import版本的數(shù)據(jù)庫。如Oracle 8.0.5的Export/Import(版本8.0.5.0.0)可連接到Oracle 8.1.6數(shù)據(jù)庫(版本8.1.6.0.0);高版本的Export導(dǎo)出來的轉(zhuǎn)儲(chǔ)文件,低版本的Import讀不了;低版本的Export導(dǎo)出來的轉(zhuǎn)儲(chǔ)文件,高版本的Import可以進(jìn)行讀取。
這兩中說法基本相同。
那如何解決呢?
實(shí)例:
比如機(jī)器A oracle9
機(jī)器B oralce8
如果機(jī)器B想要使用機(jī)器A的數(shù)據(jù)。
我這里有兩個(gè)辦法:
第一種: 這一種比較簡單,步驟如下:
通過機(jī)器B連接到機(jī)器A,然后導(dǎo)出數(shù)據(jù)庫,然后再導(dǎo)入到機(jī)器B中,即可完成。
如果兩臺(tái)機(jī)器無法連接。 只好使用第二種辦法。
1、在高版本數(shù)據(jù)庫上運(yùn)行底版本的catexp.sql; 2、使用低版本的EXP來導(dǎo)出高版本的數(shù)據(jù); 3、使用低版本的IMP將數(shù)據(jù)庫導(dǎo)入到低版本數(shù)據(jù)庫中; 4、在高版本數(shù)據(jù)庫上重新運(yùn)行高版本的catexp.sql腳本。 但在9i中,上面的方法并不能解決問題。如果直接使用低版本EXP/IMP會(huì)出現(xiàn)如下錯(cuò)誤: EXP-00008: ORACLE error %lu encountered ORA-00904: invalid column name 這已經(jīng)是一個(gè)公布的BUG,需要等到Oracle10.0才能解決,BUG號(hào)為2261722,你可以到METALINK上去查看有關(guān)此BUG的詳細(xì)信息。 BUG歸BUG,我們的工作還是要做,在沒有Oracle的支持之前,我們就自己解決。在Oracle9i中執(zhí)行下面的SQL重建exu81rls視圖即可。 CREATE OR REPLACE view exu81rls (objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy) AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname, decode(bitand(r.stmt_type,1), 0,'', 'SELECT,') || decode(bitand(r.stmt_type,2), 0,'', 'INSERT,') || decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,') || decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'), r.check_opt, r.enable_flag, DECODE(BITAND(r.stmt_type, 16), 0, 0, 1) from user$ u, obj$ o, rls$ r where u.user# = o.owner# and r.obj# = o.obj# and (uid = 0 or uid = o.owner# or exists ( select * from session_roles where role='SELECT_CATALOG_ROLE') ) / grant select on sys.exu81rls to public; / 當(dāng)在不相鄰的主要版本之間遷移數(shù)據(jù) (例如,從O r a c l e 6到O r a c l e 8 )時(shí),應(yīng)先將數(shù)據(jù)導(dǎo)入到 中間版本(本例中是O r a c l e 7 ),然后再從這個(gè)版本的數(shù)據(jù)庫導(dǎo)入更新的主要版本 ( O r a c l e 8 )。 總結(jié): 可以跨版本的使用EXP/IMP,但必須正確地使用EXP和IMP的版本: 1.總是使用IMP的版本匹配數(shù)據(jù)庫的版本,如:要導(dǎo)入到817中,使用817的IMP工具. 2.總是使用EXP的版本匹配兩個(gè)數(shù)據(jù)庫中最低的版本,如:從9201往817中導(dǎo)入,則使用817版本的EXP工具.
總結(jié)
以上是生活随笔為你收集整理的Oracle导入到不同的角色,oracle 不同版本之间的导入导出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建行分期通怎么还款
- 下一篇: 编程php分析器,如何编程访问分析器数据