最近生產數據庫要修改生產用戶的密碼,由於用戶密碼修改,各個庫之間創建的dblink就失效了,需要重建。上生產一看dblink還真不少,而且誰建的都有,改起來比較費勁。於是想到可以使用expdp的方式導出所有的dblink,即可獲取dblink的創建語句,然後修改原密碼再在庫上創建就可以了。
生產環境中的庫有兩個版本10.2.0.4和11.2.0.3下面分別在10g和11g上做測試
測試10g:
SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi PL/SQL Release 10.2.0.4.0 - Production CORE 10.2.0.4.0 Production TNS for Linux: Version 10.2.0.4.0 - Production NLSRTL Version 10.2.0.4.0 - Production
創建dblink到11g數據庫
SQL> create public database link link_11g connect to system identified by "123456" using '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )'; Database link created. SQL> select * from dual@link_11g; D - X col owner for a30 col username for a30 col db_link for a30 col host for a50 set linesize 200 set pagesize 999 select OWNER,DB_LINK,USERNAME,HOST from dba_db_links; OWNER DB_LINK USERNAME HOST ------------------------------ ------------------------------ ------------------------------ -------------------------------------------------- PUBLIC LINK_11G SYSTEM (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56. 2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
使用expdp導出dblink
[oracle@rhel5 ~]$ expdp system/123456 directory=dump dumpfile=dblink.dmp full=y include=db_link Export: Release 10.2.0.4.0 - 64bit Production on Thursday, 10 November, 2016 15:26:02 Copyright (c) 2003, 2007, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options FLASHBACK automatically enabled to preserve database integrity. Starting "SYSTEM"."SYS_EXPORT_FULL_01": system/******** directory=dump dumpfile=dblink.dmp full=y include=db_link Estimate in progress using BLOCKS method... Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA Total estimation using BLOCKS method: 0 KB Processing object type DATABASE_EXPORT/SCHEMA/DB_LINK Master table "SYSTEM"."SYS_EXPORT_FULL_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is: /home/oracle/dblink.dmp Job "SYSTEM"."SYS_EXPORT_FULL_01" successfully completed at 15:26:13
使用impdp查看導出的dblink的創建語句
[oracle@rhel5 ~]$ impdp system/123456 directory=dump dumpfile=dblink.dmp sqlfile=dblink.sql Import: Release 10.2.0.4.0 - 64bit Production on Thursday, 10 November, 2016 15:28:31 Copyright (c) 2003, 2007, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Master table "SYSTEM"."SYS_SQL_FILE_FULL_01" successfully loaded/unloaded Starting "SYSTEM"."SYS_SQL_FILE_FULL_01": system/******** directory=dump dumpfile=dblink.dmp sqlfile=dblink.sql Processing object type DATABASE_EXPORT/SCHEMA/DB_LINK Job "SYSTEM"."SYS_SQL_FILE_FULL_01" successfully completed at 15:28:33 [oracle@rhel5 ~]$ cat /home/oracle/dblink.sql -- CONNECT SYSTEM -- new object type path is: DATABASE_EXPORT/SCHEMA/DB_LINK CREATE PUBLIC DATABASE LINK "LINK_11G" CONNECT TO "SYSTEM" IDENTIFIED BY VALUES '0588B5151FD4089DC7B87F64727E740D26' USING '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.2)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )';
測試11g
sys@ORCL>select * from v$version; BANNER -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0 - Production CORE 11.2.0.4.0 Production TNS for Linux: Version 11.2.0.4.0 - Production NLSRTL Version 11.2.0.4.0 - Production
創建dblink
create public database link link_10g connect to system identified by "123456" using '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = mydb) ) )'; Database link created. sys@ORCL>select * from dual@link_10g; DUM --- X sys@ORCL>select OWNER,DB_LINK,USERNAME,HOST from dba_db_links; OWNER DB_LINK USERNAME HOST ------------------------------ ------------------------------ ------------------------------ -------------------------------------------------- PUBLIC LINK_A SCOTT orcl PUBLIC LINK_10G SYSTEM (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56. 11)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = mydb) ) )
expdp導出dblink
[oracle@rhel6 ~]$ expdp system/123456 directory=dump dumpfile=dblink.dmp full=y include=db_link Export: Release 11.2.0.4.0 - Production on Thu Nov 10 15:34:24 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options FLASHBACK automatically enabled to preserve database integrity. Starting "SYSTEM"."SYS_EXPORT_FULL_01": system/******** directory=dump dumpfile=dblink.dmp full=y include=db_link Estimate in progress using BLOCKS method... Total estimation using BLOCKS method: 0 KB Processing object type DATABASE_EXPORT/SCHEMA/DB_LINK Master table "SYSTEM"."SYS_EXPORT_FULL_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is: /home/oracle/dblink.dmp Job "SYSTEM"."SYS_EXPORT_FULL_01" successfully completed at Thu Nov 10 15:34:42 2016 elapsed 0 00:00:15
使用impdp查看導出的dblink的創建語句
[oracle@rhel6 ~]$ impdp system/123456 directory=dump dumpfile=dblink.dmp sqlfile=dblink.sql Import: Release 11.2.0.4.0 - Production on Thu Nov 10 15:35:38 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Master table "SYSTEM"."SYS_SQL_FILE_FULL_01" successfully loaded/unloaded Starting "SYSTEM"."SYS_SQL_FILE_FULL_01": system/******** directory=dump dumpfile=dblink.dmp sqlfile=dblink.sql Processing object type DATABASE_EXPORT/SCHEMA/DB_LINK Job "SYSTEM"."SYS_SQL_FILE_FULL_01" successfully completed at Thu Nov 10 15:35:40 2016 elapsed 0 00:00:01 [oracle@rhel6 ~]$ cat /home/oracle/dblink.sql -- CONNECT SYSTEM ALTER SESSION SET EVENTS '10150 TRACE NAME CONTEXT FOREVER, LEVEL 1'; ALTER SESSION SET EVENTS '10904 TRACE NAME CONTEXT FOREVER, LEVEL 1'; ALTER SESSION SET EVENTS '25475 TRACE NAME CONTEXT FOREVER, LEVEL 1'; ALTER SESSION SET EVENTS '10407 TRACE NAME CONTEXT FOREVER, LEVEL 1'; ALTER SESSION SET EVENTS '10851 TRACE NAME CONTEXT FOREVER, LEVEL 1'; ALTER SESSION SET EVENTS '22830 TRACE NAME CONTEXT FOREVER, LEVEL 192 '; -- new object type path: DATABASE_EXPORT/SCHEMA/DB_LINK CREATE PUBLIC DATABASE LINK "LINK_10G" CONNECT TO "SYSTEM" IDENTIFIED BY VALUES ':1' USING '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = mydb) ) )'; CREATE PUBLIC DATABASE LINK "LINK_A" CONNECT TO "SCOTT" IDENTIFIED BY VALUES ':1' USING 'orcl';
使用上面的方式可以查看dblink的創建語句。
從上面dblink創建語句的輸出結果也可以看出10g導出的dblink創建語句可以看到密碼的密文,而11g裏就看不到了。
官方文檔:http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5005.htm#i2061505