Oracle資料泵-schema匯入匯出
資料泵是10g推出的功能,個人倒資料比較喜歡用資料泵。
其匯入的時候利用remap引數很方便轉換表空間以及schema,並且可以忽略服務端與客戶端字符集問題(exp/imp需要排查字符集)。
資料泵也有不方便的地方,如果遠端匯出匯入,必須安裝資料庫服務端(client不行);需要在資料庫中建立一個路徑directory(dba_directories);並且主流工具支援exp/imp的匯入匯出(plsql developer),所以發現資料泵流行程度沒有想象中高。
以下簡單介紹schema的匯入匯出
以schema方式匯出生產庫使用者下所有物件,並匯入測試庫。
注:eamdb為生產庫,eamprd為生產庫使用者,密碼為eamprd
eamuat為測試庫,eamprduat為測試庫使用者,密碼為eamprduat
一、生產庫的匯出(以sqlplus命令列的方式)。
1.以sys或者system使用者身份登入生產資料庫。
2.建立schema匯出路徑(DUMP_DIR名稱可替換),並在dba_directories中檢視
create directory DUMP_DIR as ‘/xxx/xxx’; select * from dba_directories;
3.把匯出路徑與匯出許可權授權給eamprd,如果用system等高階帳號匯出,則不用。
grant read,write on directory DUMP_DIR to eamprd; grant exp_full_database to eamprd;
4.退出sqlplus,在oracle系統使用者下執行,匯出對應的SCHEMA,推薦第二種。
expdp eamprd/eamprd@eamdb DIRECTORY=DUMP_DIR DUMPFILE=eamdb.dmp expdp system/xxxx@eamdb directory=dump_dir dumpfile=eamdb.dmp schemas=eamprd
匯出重點引數:
版本:高往低需加version=xx.x 匯出某些張表tables=xxxx content=metadata_only(只要結構) content=data_only(只要資料)
5.把eamdb.dmp拷貝到測試庫。
二、測試庫的匯入
1.以sys或者system身份登陸測試庫。
2.建立匯入表空間和臨時表空間(名稱、路徑、表空間大小,請自行替換)。
create tablespace tbs_EAMUAT datafile '/xxxx/xxxxx/EAMUAT.DBF' size 10240M autoextend on next 1024M maxsize 20480M; create temporary tablespace EAMUAT_TEMP tempfile '/xxx/xxx/EAMUAT_TEMP.DBF' size 5120M;
3.建立使用者及賦予許可權(也可以不建立使用者),匯入時最好給予使用者dba許可權,以防匯入時建立某些物件許可權不夠,注意需要回收其對users表空間的許可權。
create user eamprduat identified by eamprduat default tablespace tbs_EAMUAT temporary tablespace EAMUAT_TEMP; grant connect,resource,create view,create session,dba to eamprduat; revoke unlimited tablespace from eamprduat; alter user eamprduat quota unlimited on tbs_EAMUAT;
4.建立匯入路徑(把eamdb.dmp放在此路徑下),並授權。
create directory DUMP_DIR as '/xxxxx/xxxxx'; grant read,write on directory DUMP_DIR to eamprduat;
5.匯入資料(在oracle系統使用者下執行),注意remap_schema引數,請自行替換
impdp eamprduat/eamprduat@eamuat DIRECTORY=DUMP_DIR DUMPFILE=eamdb.dmp LOGFILE=impdp.log remap_schema=eamprd:eamprduat;
匯入重點引數:
remap_schema=eamprd:eamprduat,eamxxx:xxx,xxx:xxx
remap_tablespace=eamdev:eamxxx,eamxxx:xxx,xxx:xxx
table_exists_action=replace(替換)append(追加)
exclude=table_statistics 此引數是取消對錶的統計資訊收集,如果表太多,不取消的話特別慢,之後可以手動收集,或等oracle自動收集。
execute dbms_stats.gather_table_stats(ownname=>'USERNAME',tabname=>'TABLE_NAME',cascade=>TRUE)
如匯入報錯:ORA-31684: Object type USER:"xxxxx" already exists,不用理會,因為之前建立了使用者。
也可以在匯入的語句中直接remap一個不存在的使用者,會自動生成,其密碼和許可權與匯出時候一樣,但其表空間如果不想用users,必須手工建立。
相關文章
- Oracle資料泵匯出匯入(expdp/impdp)Oracle
- Oracle資料泵的匯入和匯出Oracle
- 資料泵匯出匯入
- oracle10g expdp資料泵的bug,按schema匯出,匯入impdp時無jobOracle
- Oracle使用資料泵expdp,impdp進行資料匯出匯入Oracle
- Oracle 資料匯入匯出Oracle
- Oracle資料匯入匯出Oracle
- Oracle expdp資料泵遠端匯出Oracle
- 資料泵匯出匯入物化檢視(ORA-39083)
- oracle資料匯出匯入(exp/imp)Oracle
- Oracle資料庫匯入匯出。imp匯入命令和exp匯出命令Oracle資料庫
- sqoop資料匯入匯出OOP
- phpMyAdmin匯入/匯出資料PHP
- 資料庫 MySQL 資料匯入匯出資料庫MySql
- Oracle 資料匯入ExcelOracleExcel
- 【oracle 資料匯入匯出字元問題】Oracle字元
- MySQL入門--匯出和匯入資料MySql
- Oracle用資料泵匯入資料包12899的錯誤碼解決方法Oracle
- ORACLE 資料泵impdp匯入報錯之ORA-31693 ORA-04098Oracle
- Mongodb資料的匯出與匯入MongoDB
- 匯入和匯出AWR的資料
- EasyPoi, Excel資料的匯入匯出Excel
- Mysql 資料庫匯入與匯出MySql資料庫
- Access 匯入 oracle 資料庫Oracle資料庫
- 【最佳實踐】MongoDB匯出匯入資料MongoDB
- SQL資料庫的匯入和匯出SQL資料庫
- 複雜「場景」資料匯入匯出
- ClickHouse 資料表匯出和匯入(qbit)
- 【STATS】Oracle匯入匯出優化器統計資訊Oracle優化
- 【資料泵】EXPDP匯出表結構(真實案例)
- [Docker核心之容器、資料庫檔案的匯入匯出、容器映象的匯入匯出]Docker資料庫
- Oracle 資料匯出注意事項Oracle
- MongoDB--Mongodb 中資料匯出與匯入MongoDB
- Oracle資料庫——資料匯出時出現匯出成功終止, 但出現警告。Oracle資料庫
- PHP大資料xlswriter匯入匯出(最優資料化)PHP大資料
- oracle12c還原資料庫遇到的問題-將一個11.2.0.1的資料泵匯出檔案匯入12.1.0.2版本報錯Oracle資料庫
- SQLServer匯出匯入資料到MySQLServerMySql
- mongodb使用自帶命令工具匯出匯入資料MongoDB
- QZpython匯入匯出redis資料的實現deuPythonRedis