记一次Oracle 11g xe 导出导入使用过程
公司一個(gè)項(xiàng)目需要使用Oracle數(shù)據(jù)庫(kù),平時(shí)mysql用習(xí)慣了,這一換還有點(diǎn)蒙。
公司網(wǎng)絡(luò)不好,需要在本地搭一個(gè)Oracle服務(wù),選擇了11g xe,主要是小。
下面整理了一下兩種導(dǎo)出導(dǎo)入數(shù)據(jù)庫(kù)的過程:
1、使用Navicat軟件轉(zhuǎn)儲(chǔ)sql文件、執(zhí)行sql文件方法(不好,容易存在外鍵問題和字符串長(zhǎng)度超過4000無法導(dǎo)入問題)
2、使用exp、imp命令導(dǎo)出導(dǎo)入(推薦)
?
一、使用Navicat導(dǎo)出導(dǎo)入過程:
1、選擇公司Oracle數(shù)據(jù)庫(kù)模式,右鍵轉(zhuǎn)儲(chǔ)sql文件結(jié)構(gòu)和數(shù)據(jù),獲得sql文件
2、本地?cái)?shù)據(jù)庫(kù)用sys登陸,創(chuàng)建一個(gè)sumengnan用戶,賦予一些創(chuàng)建表、連接的權(quán)限
3、在sumengnan模式下導(dǎo)入公司Oracle的sql文件時(shí)報(bào)錯(cuò),提示表空間不存在
解決辦法:在菜單欄選擇其他-表空間-新建表空間。
之后在用戶-編輯用戶-配額處為sumengnan用戶,配置表空間
4、導(dǎo)入公司Oracle的sql文件時(shí)報(bào)錯(cuò),又提示ORA-01950對(duì)表空間"system"無權(quán)限。
解決辦法:在用戶-編輯用戶-服務(wù)器權(quán)限處為sumengnan用戶,配置create session、create table和create tablespace權(quán)限
5、導(dǎo)入完成。
?
二、使用exp、imp命令導(dǎo)出導(dǎo)入過程:
開始導(dǎo)出:
1、遠(yuǎn)程Oracle數(shù)據(jù)庫(kù)導(dǎo)出方式有兩種(需要sys角色):
? ⑴添加遠(yuǎn)程TNS。在tnsnames.ora文件中添加如下
? remote =
? (DESCRIPTION =
? ? (ADDRESS = (PROTOCOL = TCP)(HOST = 遠(yuǎn)程主機(jī)地址)(PORT = 1521))
? ? (CONNECT_DATA =
? ? ? (SERVER = DEDICATED)
? ? ? (SERVICE_NAME = ORCL)
? ? )
? ?)
? 然后執(zhí)行tnsping remote命令,檢測(cè)是否能連接。
? 執(zhí)行命令:exp sys/123@remote file=d:\sumengnan.dmp owner=sumengnan;
? ⑵執(zhí)行命令:exp sys/123@192.168.1.100:1521/orcl?file=d:\sumengnan.dmp owner=sumengnan;(這個(gè)更簡(jiǎn)單,不需要添加遠(yuǎn)程TNS,推薦)
2、執(zhí)行遠(yuǎn)程導(dǎo)出數(shù)據(jù)庫(kù)命令,提示身份證明檢索失敗。
解決辦法:oracle\product\11.2.0\server\network\ADMIN\sqlnet.ora這個(gè)文件內(nèi)容NTS改為NONE。(驗(yàn)證方式)
NTS表示采用本地操作系統(tǒng)認(rèn)證,NONE表示將采用口令文件方式認(rèn)證。
3、用sys登錄提示connection as SYS should be as SYSDBA or SYSOPER(表示sys賬號(hào)需要SYSDBA or SYSOPER角色)
解決辦法:exp 'sys/123@192.168.1.100:1521/orcl as sysdba' file=d:\sumengnan.dmp owner=sumengnan;(加上 as sysdba)(owner表示用戶)
4、導(dǎo)出時(shí)提示ORACLE 錯(cuò)誤 904 ORA-00904: "MAXSIZE": 標(biāo)識(shí)符無效
原因:Oracle不能從低版本向高版本導(dǎo)數(shù)據(jù)。公司的是10,本地是11.
??? 由于Oracle的imp/exp組件的操作原則--向下兼容,且有一些規(guī)則:
??? 規(guī)則1:低版本的exp/imp可以連接到高版本(或同版本)的數(shù)據(jù)庫(kù)服務(wù)器,但高版本的exp/imp不能連接到低版本的數(shù)據(jù)庫(kù)服務(wù)器;
??? 規(guī)則2:高版本exp出的dmp文件,低版本無法imp(無法識(shí)別dmp文件);低版本exp出的dmp文件,高版本可以imp(向下兼容);
??? 規(guī)則3:從Oracle 低版本Export的數(shù)據(jù)可以Import到Oracle高版本中,但限于Oracle的相鄰版本,如從Oracle 10 到 Oracle 11.對(duì)于兩個(gè)不相鄰版本間進(jìn)行轉(zhuǎn)換,如從Oracle 9 到 Oracle 11,則應(yīng)先將數(shù)據(jù)輸入到中間版本-Oracle 10,再?gòu)闹虚g數(shù)據(jù)庫(kù)轉(zhuǎn)入更高版本Oracle 11.
??? 據(jù)此,最快捷的解決方案就是使用安裝了10g Oracle 的機(jī)子,進(jìn)行服務(wù)器上數(shù)據(jù)庫(kù)數(shù)據(jù)的導(dǎo)出。
5、無奈去另一臺(tái)win10電腦下載了64位的10g(下載地址在下面),安裝時(shí)提示檢查操作系統(tǒng)版本: 必須是5.1 or 5.2。 實(shí)際為 6.1。
解決辦法:修改\database\install\oraparam.ini文件,把Windows=5.1,5.2改成Windows=6.1。
6、安裝時(shí)10g設(shè)置完密碼后又提示“安裝oracle10g“程序異常終止。發(fā)生內(nèi)部錯(cuò)誤。請(qǐng)將以下文件提供給oracle技術(shù)支持 部門”
解決辦法:安裝程序setup.exe文件,需要用兼容模式xp sp3模式運(yùn)行。
7、不過出現(xiàn)了一個(gè)意外,win10電腦沒有xp sp3兼容模式。
解決辦法:下載一個(gè)虛擬機(jī),安裝xp系統(tǒng)。
8、虛擬機(jī)安裝完xp之后,在系統(tǒng)上運(yùn)行Oracle10g setup.exe安裝程序,提示不是有效的win32
解決辦法:應(yīng)該下載32位的Oracle 10g(直接使用了上面下載的64位的10g)
執(zhí)行第3步命令,導(dǎo)出成功了,拷貝到本地電腦桌面
開始導(dǎo)入:
9、先查詢公司數(shù)據(jù)庫(kù)用戶sumengnan使用的表空間(一般情況只有一個(gè))。
命令:select tablespace_name from dba_tables t WHERE t.owner='sumengnan' group by t.tablespace_name
10、首先需要在本地創(chuàng)建好sumengnan用戶和表空間
創(chuàng)建表空間命令:create tablespace sumengnan_data(表空間名稱) datafile 'e:\oracle\oradata\test\data_1.dbf'(表空間文件) size 1000M(表空間大小);
創(chuàng)建用戶命令:create user sumengnan identified by 123456 default tablespace sumengnan_data;(用戶sumengnan,密碼123456 默認(rèn)表空間 sumengnan_data)
賦予權(quán)限命令:grant connect, resource to sumengnan ;(賦予sumengnan連接Oracle和創(chuàng)建表的權(quán)限)
11、開始導(dǎo)入數(shù)據(jù),執(zhí)行命令:imp 'sys/123@XE as sysdba' file=C:\Users\sumengnan\Desktop\SUMENGNAN.DMP full=y時(shí)提示:“無法打開 EXPDAT.DMP 進(jìn)行讀取”.
原因:c盤沒有權(quán)限,換到其他盤,如d盤。
注意:如果服務(wù)器和本地兩端用戶名不相同,則執(zhí)行:imp 'sys/123@XE as sysdba' file=C:\Users\sumengnan\Desktop\SUMENGNAN.DMP fromuser=sumengnan touser=sumengnan2
fromuser就是把當(dāng)前的dmp文件中的某一個(gè)用戶下的數(shù)據(jù)取出。
touser就是把現(xiàn)在dmp文件中的數(shù)據(jù)導(dǎo)入到目標(biāo)庫(kù)的指定user下。
12、切換盤后導(dǎo)入又提示:“導(dǎo)入時(shí)由于對(duì)象已存在, 下列語句失敗:?”
解決辦法:imp導(dǎo)入命令添加參數(shù) ignore=y
13、導(dǎo)入完成
?
碰到的其他問題:
1、修改Oracle安裝時(shí)默認(rèn)8080端口
命令:
begin
? ?dbms_xdb.sethttpport('8081');
? ?dbms_xdb.setftpport('0');
end;
2、刪除用戶提示“必須指定 CASCADE 以刪除 'sumengnan'”
解決辦法:drop user sumengnan cascade;(因?yàn)檫@個(gè)數(shù)據(jù)庫(kù)只有這一個(gè)用戶,刪了就沒有用戶關(guān)聯(lián)了,所以需要用?cascade,把沒有關(guān)聯(lián)的整個(gè)數(shù)據(jù)庫(kù)也刪掉。)
?
附:
導(dǎo)出導(dǎo)入imp、exp命令參數(shù):
參數(shù)參考地址:https://blog.csdn.net/fghsfeyhdf/article/details/79807690
參數(shù)參考地址:https://www.cnblogs.com/weiwenpeng/p/10345419.html
xp迅雷下載地址:thunder://QUFodHRwOi8vc29mdC51c2Fpa2EuY24vstnX98+1zbMvd2luZG93cy9XaW5kb3dzWFAvVkwtSW1hZ2UvTVNETi96aC1oYW5zX3dpbmRvd3NfeHBfcHJvZmVzc2lvbmFsX3dpdGhfc2VydmljZV9wYWNrXzNfeDg2X2NkX3ZsX3gxNC03NDA3MC5pc29aWg==? ? ? ? ? ? ? ? ?序列號(hào):MRX3F-47B9T-2487J-KWKMF-RPWBY
Oracle 10g 32位迅雷下載地址:http://download.oracle.com/otn/nt/oracle10g/10201/10201_database_win32.zip
Oracle 10g 64位迅雷下載地址:http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_database.zip
Oracle 11g xe 64位下載地址:https://download.oracle.com/otn/nt/oracle11g/xe/OracleXE112_Win64.zip?AuthParam=1581570015_b536f613e8fecc7c02ed77c63e8c6944
總結(jié)
以上是生活随笔為你收集整理的记一次Oracle 11g xe 导出导入使用过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新房装修如何知道是否需要更换电线
- 下一篇: 花乐鲜购小程序