Oracle11g將dmp檔案還原
最近用到從oracle的dmp檔案中還原資料
由於沒有這方面的資料,在網上搜集了一些,相信有以下這些資料,我們可以成功地將dmp檔案用命令列的方式還原回去
第一,啟動服務,(如果資料庫處於啟動狀態,那麼略過這一步)
開啟命令列執行以下語句
net start OracleServiceORCL
net start OracleOraDb10g_home2TNSListener
net start OracleOraDb10g_home2iSQL*Plus
以上方式是在windows服務中啟動服務,當windows服務不能啟動資料庫例項的時候,應用以下的語句
set oracle_sid=orcl
oradim -startup -sid orcl
sqlplus internal/oracle
startup
第二清理以前還原過的痕跡,如果我們在資料庫曾經還原過,我們先來清理一下,痕跡,
//刪除使用者
drop user xxxx cascade;
//刪除表空間
drop tablespace xxxx;
//刪除資料庫檔案
e:/xxxxxx.dbf
第三,接下來,準備工作做好後,我們就可以開始還原了
//建立使用者
CREATE USER 使用者名稱 IDENTIFIED BY 密碼
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
//給予使用者許可權
grant connect,resource,dba to xxxx;
//建立表空間,並指定檔名,和大小
CREATE SMALLFILE TABLESPACE "xxxx" DATAFILE 'E:/ORADATA/ORCL/xxxx.DBF'
SIZE 100M
AUTOEXTEND ON NEXT 100M
MAXSIZE UNLIMITED
LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
//執行給予許可權的指令碼grant.txt,將許可權給予剛才建立的使用者
//給予許可權
GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO xxxx;
//開始匯入(完全匯入),file:dmp檔案所在的位置, ignore:因為有的表已經存在,對該表就不進行匯入。
在後面加上 ignore=y 。指定log檔案 log=e:/log.txt(注:以下必須在cmd裡執行,在SQL*PLUS裡無法執行)
imp user/[email protected] full=y file=e:/xxx.dmp ignore=y log=e:/log.txt;
//當我們不需要完整的還原資料庫的時候,我們可以單獨地還原某個特定的表
//---------------------------------------------------------------------------
imp user/[email protected] file=e:/xxx.dmp ignore=y log=e:/log.txt tables=(xxxx)
imp user/[email protected] file=e:/xxx.dmp ignore=y log=e:/log2.txt tables=(xxxx)
//---------------------------------------------------------------------------
oracle11g到Oracle11g
一、在11g伺服器上,使用expdp命令備份資料
11g 匯出語句:EXPDP USERID='facial/[email protected] as sysdba' schemas=facial directory=DATA_PUMP_DIR dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0
其中,我的使用者名稱是facial,密碼是facial,資料庫sid是orcl,schemas要匯出的使用者名稱是facial,要匯入到 10.2.0.1.0版本的Oracle資料庫中去。aa.dmp和aa.log將會在11g的dpdump目錄中生成,例如我的11g裝在了E盤下面,於是aa.dmp將會在E:\app\Administrator\admin\orcl\dpdump目錄下被生成。
二、在10g伺服器上,使用impdp命令恢復資料
準備工作:1.建庫2.建表空間3.建使用者並授權4.將aa.dmp拷貝到10g的dpdump目錄下
10g 匯入語句:IMPDP USERID='facial/[email protected] as sysdba' schemas=facial directory=DATA_PUMP_DIR dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0
oracle11g到Oracle10g
將Oracle 11g匯出的dmp檔案匯入到oracle10g
1.進行匯入表操作,提示:
IMP-00010: 不是有效的匯出檔案, 頭部驗證失敗
IMP-00000: 未成功終止匯入
2.從網上查閱,oracle資料11g到10g是有問題的,一般由oracle10g客戶端去連oracle11g進行匯出資料操作然後匯入到oracle10g,如果手中只有oracle11g的dmp檔案,怎麼辦
3.從網上查閱,頭部驗證失敗是由於版本號不同所致,經試驗可以通過如下方法進行修改:
用notepad++工具開啟dmp檔案,可以看到頭部資訊 --TEXPORT:V11.01.00,即為源資料庫的版本號,將其修改為目的資料庫的版本號,如本機為10.02.01
4.再次進行匯入操作,匯入成功