JPOUG Advent Calendar、12/9のエントリーです。
Amazon RDS for Oracle で Data Pump を実行する件について、前回までのエントリーは以下です。
最終的にデータベースリンクを作成してインポートをする部分を書いてなかったので書いておきます。
1. (EC2側で作業) 初期化パラメータ global_names が TRUE だと「ORA-02085」エラーになるのでFALSEに変更(※と言っても元々多分 FALSE)
$ sqlplus / as sysdba SQL> ALTER SYSTEM SET global_names=FALSE SCOPE=BOTH;
2. (EC2側で作業) tnsnames.ora を以下のとおりに設定する
EC2DB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ip-xxxxxxxxxxxx.ec2.internal)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ec2db.localdomain) ) ) RDSDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = mydbinstance.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = rdsdb.localdomain) ) )
3. (EC2側で作業) EC2DB → RDSDBのデータベースリンクを作成する
$ sqlplus / as sysdba SQL> create database link ec2rds CONNECT TO usr1 IDENTIFIED BY "xxxx" USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=mydbinstance.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rdsdb.localdomain)))';
※ちなみにこのDBリンクはsysdbaでないと使えない
4. (RDS側で作業) RDSDB → EC2DBのデータベースリンク作成
# sqlplus awsuser/mypassword@mydbinstance.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com:1521/mydb SQL> create database link rds2ec2 CONNECT TO usr3 IDENTIFIED BY "xxxx" USING '(DESCRIPTION =(ADDRESS =(PROTOCOL=TCP)(HOST=ip-xxxxxxxxxxxx.ec2.internal)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ec2db.localdomain)))';
5. (EC2側で作業) データベースリンク ec2rds を使ってデータポンプでデータを移動する
# impdp usr1/xxxx@rdsdb directory=data_pump_dir network_link=rds2ec2 schemas=cust_schema
ザッツオール!!
みなさまノロウィルスが流行っており、我が家はチョー大変です。自衛しましょうね。
明日は @akaganeer さんです、よろしくお願いします!!