对于同义词的备份我们有多种方式来实现,如直接通过脚本生成同义词的创建脚本,或者使用dbms_metadata.get_ddl来提取同义词的定义脚本。然而在使用传统的exp或是datapump expdp实现schema级别数据迁移时,不能导出公共同义词。尽管如此,我们依旧可以使用导出导入的方式来实现。所不同的是,我们使用FULL=Y的方式来单独导出同义词,然后再将其导入的目标数据库。下文是对此进行的描述,末尾也给出了手动创建同义词的脚本。
1、环境
-
-
SQL> select * from v$version where rownum<2;
-
-
BANNER
-
-
Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
-
-
SQL> show parameter db_nam
-
-
NAME TYPE VALUE
-
-
db_name string XM6320
-
SQL> select count(*) from dba_synonyms where table_owner='GOEX_ADMIN';
-
-
COUNT(*)
-
-
1042
-
-
-
-
SQL> select * from v$version where rownum<2;
-
-
BANNER
-
-
Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
-
-
SQL> show parameter db_name
-
-
NAME TYPE VALUE
-
-
db_name string KM3625
-
-
-
SQL> select count(*) from dba_synonyms where table_owner='GOEX_ADMIN';
-
-
COUNT(*)
-
-
2
2、从源数据库导出公共同义词
-
oracle@BKDB01p:~> env | grep SID
-
ORACLE_SID=XM6320
-
-
oracle@BKDB01p:~> expdp goex_admin/xxx directory=db_dump_dir dumpfile=syns.dmp logfile=exp_syns.log full=y \
-
> include=PUBLIC_SYNONYM/SYNONYM:\"IN \(SELECT synonym_name FROM dba_synonyms WHERE table_owner=\'GOEX_ADMIN\'\)\"
-
-
Export: Release 10.2.0.3.0 - 64bit Production on Wednesday, 19 June, 2013 16:11:19
-
-
Copyright (c) 2003, 2005, Oracle. All rights reserved.
-
-
Connected to: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
-
Starting "GOEX_ADMIN"."SYS_EXPORT_FULL_01": goex_admin/******** directory=db_dump_dir dumpfile=syns.dmp logfile=exp_syns.log
-
full=y include=PUBLIC_SYNONYM/SYNONYM:"IN (SELECT synonym_name FROM dba_synonyms WHERE table_owner='GOEX_ADMIN')"
-
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/PUBLIC_SYNONYM/SYNONYM
-
Master table "GOEX_ADMIN"."SYS_EXPORT_FULL_01" successfully loaded/unloaded
-
******************************************************************************
-
Dump file set for GOEX_ADMIN.SYS_EXPORT_FULL_01 is:
-
/u02/database/XM6320/BNR/dump/syns.dmp
-
Job "GOEX_ADMIN"."SYS_EXPORT_FULL_01" successfully completed at 16:11:23
3、导入公共同义词到目标数据库
-
oracle@BKDB01p:~> cp /u02/database/XM6320/BNR/dump/syns.dmp /u02/database/KM3625/BNR/dump/
-
oracle@BKDB01p:~> export ORACLE_SID=KM3625
-
-
oracle@BKDB01p:~> impdp goex_admin/xxx directory=db_dump_dir dumpfile=syns.dmp logfile=imp_syns.log full=y include=synonym
-
-
Import: Release 10.2.0.3.0 - 64bit Production on Wednesday, 19 June, 2013 16:15:52
-
-
Copyright (c) 2003, 2005, Oracle. All rights reserved.
-
-
Connected to: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
-
Master table "GOEX_ADMIN"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
-
Starting "GOEX_ADMIN"."SYS_IMPORT_FULL_01": goex_admin/******** directory=db_dump_dir dumpfile=syns.dmp logfile=imp_syns.log full=y include=synonym
-
Processing object type DATABASE_EXPORT/SCHEMA/PUBLIC_SYNONYM/SYNONYM
-
ORA-31684: Object type SYNONYM:"PUBLIC"."GO_GA_SYS_DATAPUMP_PARA_TBL" already exists
-
ORA-31684: Object type SYNONYM:"PUBLIC"."BO_SYS_DATAPUMP_PKG" already exists
-
Job "GOEX_ADMIN"."SYS_IMPORT_FULL_01" completed with 2 error(s) at 16:16:12
-
-
-
-
-
oracle@BKDB01p:~> sqlplus / as sysdba
-
-
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Jun 19 16:16:24 2013
-
-
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
-
-
-
Connected to:
-
Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
-
-
SQL> show parameter db_name
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ------------------------------
-
db_name string KM3625
-
-
SQL> select count(*) from dba_synonyms where table_owner='GOEX_ADMIN';
-
-
COUNT(*)
-
----------
-
1042
4、手动创建同义词的脚本
-
ACCEPT input_owner PROMPT 'Enter the owner of table:'
-
SET HEADING OFF VERIFY OFF FEEDBACK OFF TERMOUT OFF;
-
SPOOL $LOG/create_synonym.sql
-
-
-
-
-
SELECT 'create public synonym ' || synonym_name || ' for ' || table_owner || '.' || table_name || ';'
-
FROM dba_synonyms s
-
WHERE s.owner = 'PUBLIC' AND s.table_owner = UPPER ('&input_owner');
-
-
SET HEADING ON VERIFY ON TERMOUT ON FEEDBACK OFF;
-
SPOOL OFF;
-
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29119536/viewspace-1098047/
,如需转载,请注明出处,否则将追究法律责任。