DBLINKがどのような挙動を示すか試してみることにしました。
■前提
CentOS 6.5 x64
Oracle 11.2.0.4.0
影響がでないようにVMwareにインストールして、いざ検証開始。
1. db_domain と global_name を確認
SQL> show parameter db_domain NAME TYPE VALUE ------------------- --------- -------------------------- db_domain string foo.jp SQL> select * from global_name; GLOBAL_NAME ------------------------------------------------------- HOGE.foo.jp |
2. DBLINK作成
CREATE DATABASE LINK dblink_test01 CONNECT TO user IDENTIFIED BY password USING 'target_database'; |
3. 検証用にProcedure1つ作成
CREATE OR REPLACE PROCEDURE proc01 IS VAL NUMBER; BEGIN SELECT COUNT(*) INTO VAL FROM table@dblink_test01; END proc01; / |
4. DBLINK確認
SELECT DB_LINK FROM DBA_DB_LINKS; DB_LINK ------------------------------------------------------- dblink_test01.foo.jp |
とりあえず、これで準備は完了。
うまくいきますように。。。
5. db_domain / global_name を変更
SQL> UPDATE global_name SET global_name = 'HOGE.bar.jp'; 1 row updated. SQL> COMMIT; Commit complete. SQL> ALTER SYSTEM SET db_domain = 'bar.jp' SCOPE = spfile; System altered. |
6. Oracleを再起動(手順略)
7. もう一度 db_domain と global_name を確認
SQL> show parameter db_domain NAME TYPE VALUE ------------------- --------- -------------------------- db_domain string bar.jp SQL> select * from global_name; GLOBAL_NAME ------------------------------------------------------- HOGE.bar.jp |
8. もう1つDBLINK作成
CREATE DATABASE LINK dblink_test02 CONNECT TO user IDENTIFIED BY password USING 'target_database'; |
9. 検証用のProcedure変更
CREATE OR REPLACE PROCEDURE proc01 IS VAL NUMBER; VAL2 NUMBER; BEGIN SELECT COUNT(*) INTO VAL FROM table@dblink_test01; SELECT COUNT(*) INTO VAL FROM table@dblink_test02; END proc01; / |
としたところでコンパイルエラー発生(ORA-00942)。
まあ、ドメイン名が変わっているのですから当然ですよね。
検証したかったのは、ドメイン名を変更したときに
作成済みDBLINKのドメイン付の名前(dblink_test01.foo.jp)が
変わってくれるかどうか、ということでした。
結論:変わってくれない。以上。
0 件のコメント:
コメントを投稿