RDS for Oracle でデータポンプ(3)完結編

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 さんです、よろしくお願いします!!