12c 使用資料泵複製資料庫結構的注意事項
剛剛結束了一個使用資料泵複製資料庫結構的工作,將過程和注意事項記錄下來以供參考。
源端
1. 建立目錄
create or replace directory dp_dir as '/u02/files';
2. 匯出使用者SH,HR的所有結構,不需要資料
vi scott_meta.par
userid="/ as sysdba"
directory=dp_dir
dumpfile=scott_expdp.dmp
schemas=sh,hr
content=metadata_only
開啟4個並行來執行匯出
expdp parfile=scott_meta.par parallel=4
3. 匯出資料庫表空間結構
vi scott_tbs.par
userid="/ as sysdba"
directory=dp_dir
dumpfile=scott_tbs.dmp
include=tablespace
full=y
content=metadata_only
開啟2個並行來執行匯出
expdp parfile=scott_tbs.par parallel=2
4. 複製密碼校驗規則指令碼
源庫使用了密碼規則,透過修改下面的檔案可以獲得。
cd $ORACLE_HOME/rdbms/admin
cp utlpwdmg.sql scott_utlpwdmg.sql
根據需要修改指令碼內容,如果只是需要一個密碼驗證的話可以按照下面的方式來修改。
vi scott_utlpwdmg.sql
...省去部分內容
ALTER PROFILE DEFAULT LIMIT
/*
PASSWORD_LIFE_TIME 90
PASSWORD_GRACE_TIME 3
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 20
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME 1
*/
PASSWORD_VERIFY_FUNCTION ora12c_verify_function;
...省去部分內容
5. 複製profile指令碼
源庫使用者有app_profile限制,需要手工匯出
SYS@cdb > select distinct profile from dba_profiles;
PROFILE
---------------
APP_PROFILE
DEFAULT
select profile,resource_name,limit from dba_profiles where profile='APP_PROFILE';
透過上面的查詢結構修改指令碼為
vi app_profile.sql
CREATE PROFILE "APP_PROFILE" LIMIT
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL UNLIMITED
CONNECT_TIME UNLIMITED
IDLE_TIME UNLIMITED
SESSIONS_PER_USER UNLIMITED
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL UNLIMITED
PRIVATE_SGA UNLIMITED
COMPOSITE_LIMIT UNLIMITED
FAILED_LOGIN_ATTEMPTS UNLIMITED
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_GRACE_TIME UNLIMITED
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_VERIFY_FUNCTION NULL;
scp 表空間結構指令碼、schema指令碼、密碼校驗指令碼、profile指令碼到目標資料庫
scp scott_tbs.dmp scott_expdp.dmp scott_utlpwdmg.sql app_profile.sql oracle@<ip address>:/home/oracle/files
目標端
5. 建立一個目錄
create or replace directory dp_dir as '/home/oracle/files';
6. 使用資料泵的sqlfile引數將表空間語句匯出
impdp \'/ as sysdba\' directory=dp_dir dumpfile=scott_tbs.dmp sqlfile=scott_tbs.sql
指令碼內容是create tablespace xxx ...
語句執行完畢後會生成名為scott_tbs.sql的指令碼,包含資料庫中建立所有表空間的語句。我們需要將業務所需的表空間(除去安裝系統時候自帶的system/sysaux/undo/users/temp)的指令碼提取出來。如果目標端磁碟空間較小,需要將資料檔案調小後再執行。
7. 建立表空間
SQL >@/home/oracle/files/scott_tbs.sql
8. 建立密碼約束
SQL >@/home/oracle/files/scott_utlpwdmg.sql
9. 建立使用者profile。如果沒有這個步驟在在匯入指令碼建立使用者的時候會找不到profile而報錯。
SQL > @/home/oracle/files/app_profile.sql
10. 匯入表結構。在這一步會建立使用者,授權,建立表等操作。
impdp \'/ as sysdba\' directory=dp_dir dumpfile=scott_expdp.dmp logfile=scott_expdp.log parallel 4
總結:
資料泵的content=metadata_only選項為匯出結構的需求提供了方便。匯出物件可以為全庫full=y,表空間inclue=tablespace等等。
使用impdp的sqlfile引數可以匯出dmp檔案中的建立語句。使用dbms_metadata.get_ddl也可以匯出表空間、表的建立語句。
在匯入具體使用者結構之前需要將建立使用者所需的密碼規則和相關profile建立好再impdp匯入,避免建立使用者時出錯。
全文完
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-2150449/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 複製資料庫中需要注意的幾點事項資料庫
- MySQL 資料庫-索引注意事項MySql資料庫索引
- 【Toad】使用Toad呼叫expdp資料泵備份資料步驟及注意事項
- Oracle 資料庫升級注意事項Oracle資料庫
- 資料庫程式設計注意事項資料庫程式設計
- 備份 master 資料庫時的注意事項AST資料庫
- Oracle資料庫中Create user的注意事項Oracle資料庫
- MySQL 資料庫設計和注意事項MySql資料庫
- 使用RMAN複製資料庫資料庫
- 使用OEM複製資料庫資料庫
- Oracle資料庫表設計時的注意事項Oracle資料庫
- 在SQL Server資料庫中使用批處理的注意事項SQLServer資料庫
- 使用Oracle9i資料庫的九大注意事項(轉)Oracle資料庫
- 複製oracle home的注意事項Oracle
- 達夢資料裝載工具-dmfldr使用注意事項總結
- 資料庫複製資料庫
- 複製資料庫資料庫
- 使用資料泵進行Oracle-Oracle的單向複製。Oracle
- 12c 資料泵克隆使用者
- mysql複製表結構和資料MySql
- sql複製表結構和資料SQL
- 資料網格的注意事項 - Kineret
- SqlServer同例項複製資料庫方法SQLServer資料庫
- 【12C】Oracle 12c 可插拔資料庫之資料泵功能體驗Oracle資料庫
- 12c 資料泵常用功能總結
- PG 資料庫 DTS 遷移需要注意的事項:資料庫
- 備份model 和msdb 資料庫時的注意事項資料庫
- Oracle 資料匯出注意事項Oracle
- 大資料學習注意事項大資料
- 使用rman的命令duplicate複製資料庫資料庫
- DM7資料複製之資料庫級複製資料庫
- 使用 Bulk Copy 將大量資料複製到資料庫資料庫
- 使用RMAN複製資料庫 active database資料庫Database
- 【RMAN】使用duplicate本地複製資料庫資料庫
- 使用RMAN進行資料庫複製資料庫
- 架構設計(二):資料庫複製架構資料庫
- mysql 如何複製表結構和資料MySql
- 敏捷企業的資料管理注意事項敏捷