ITPub博客

首页 > 数据库 > Oracle > 使用datapump 导出导入同义词(export and import synonym using datapump)

使用datapump 导出导入同义词(export and import synonym using datapump)

Oracle 作者:dawn009 时间:2014-03-02 14:09:12 0 删除 编辑

对于同义词的备份我们有多种方式来实现,如直接通过脚本生成同义词的创建脚本,或者使用dbms_metadata.get_ddl来提取同义词的定义脚本。然而在使用传统的exp或是datapump expdp实现schema级别数据迁移时,不能导出公共同义词。尽管如此,我们依旧可以使用导出导入的方式来实现。所不同的是,我们使用FULL=Y的方式来单独导出同义词,然后再将其导入的目标数据库。下文是对此进行的描述,末尾也给出了手动创建同义词的脚本。

 

1、环境

  1. --源数据库  
  2. SQL> select * from v$version where rownum<2;  
  3.   
  4. BANNER  
  5. ----------------------------------------------------------------  
  6. Oracle Database 10g Release 10.2.0.3.0 - 64bit Production  
  7.   
  8. SQL> show parameter db_nam  
  9.   
  10. NAME                                 TYPE        VALUE  
  11. ------------------------------------ ----------- ------------------------------  
  12. db_name                              string      XM6320  
  13. SQL> select count(*) from dba_synonyms where table_owner='GOEX_ADMIN';  
  14.   
  15.   COUNT(*)  
  16. ----------  
  17.       1042  
  18.   
  19. --目标数据库  
  20. --目标数据库schema goex_admin的所有数据均来源于源数据库,但是使用datapump导入后,无同义词  
  21. SQL> select * from v$version where rownum<2;  
  22.   
  23. BANNER  
  24. ----------------------------------------------------------------  
  25. Oracle Database 10g Release 10.2.0.3.0 - 64bit Production  
  26.   
  27. SQL> show parameter db_name  
  28.   
  29. NAME                                 TYPE        VALUE  
  30. ------------------------------------ ----------- ------------------------------  
  31. db_name                              string      KM3625  
  32.   
  33. --下面的查询中仅有两个同义词,这两个同义是在创建DB的时候手动创建的,非使用datapump导入产生的  
  34. SQL> select count(*) from dba_synonyms where table_owner='GOEX_ADMIN';  
  35.   
  36.   COUNT(*)  
  37. ----------  
  38.          2  

2、从源数据库导出公共同义词

  1. oracle@BKDB01p:~> env | grep SID  
  2. ORACLE_SID=XM6320  
  3. #使用下面的方式导出公共同义词,对于可导出的对象我们可以查询数据字典 DATABASE_EXPORT_OBJECTS  
  4. oracle@BKDB01p:~> expdp goex_admin/xxx directory=db_dump_dir dumpfile=syns.dmp logfile=exp_syns.log full=y \  
  5. > include=PUBLIC_SYNONYM/SYNONYM:\"IN \(SELECT synonym_name FROM dba_synonyms WHERE table_owner=\'GOEX_ADMIN\'\)\"  
  6.   
  7. Export: Release 10.2.0.3.0 - 64bit Production on Wednesday, 19 June, 2013 16:11:19  
  8.   
  9. Copyright (c) 2003, 2005, Oracle.  All rights reserved.  
  10.   
  11. Connected to: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production  
  12. Starting "GOEX_ADMIN"."SYS_EXPORT_FULL_01":  goex_admin/******** directory=db_dump_dir dumpfile=syns.dmp logfile=exp_syns.log   
  13. full=y include=PUBLIC_SYNONYM/SYNONYM:"IN (SELECT synonym_name FROM dba_synonyms WHERE table_owner='GOEX_ADMIN')"  
  14. Estimate in progress using BLOCKS method...  
  15. Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA  
  16. Total estimation using BLOCKS method: 0 KB  
  17. Processing object type DATABASE_EXPORT/SCHEMA/PUBLIC_SYNONYM/SYNONYM  
  18. Master table "GOEX_ADMIN"."SYS_EXPORT_FULL_01" successfully loaded/unloaded  
  19. ******************************************************************************  
  20. Dump file set for GOEX_ADMIN.SYS_EXPORT_FULL_01 is:  
  21.   /u02/database/XM6320/BNR/dump/syns.dmp  
  22. Job "GOEX_ADMIN"."SYS_EXPORT_FULL_01" successfully completed at 16:11:23  

3、导入公共同义词到目标数据库

  1. oracle@BKDB01p:~> cp /u02/database/XM6320/BNR/dump/syns.dmp /u02/database/KM3625/BNR/dump/  
  2. oracle@BKDB01p:~> export ORACLE_SID=KM3625  
  3.   
  4. oracle@BKDB01p:~> impdp goex_admin/xxx directory=db_dump_dir dumpfile=syns.dmp logfile=imp_syns.log full=y include=synonym  
  5.   
  6. Import: Release 10.2.0.3.0 - 64bit Production on Wednesday, 19 June, 2013 16:15:52  
  7.   
  8. Copyright (c) 2003, 2005, Oracle.  All rights reserved.  
  9.   
  10. Connected to: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production  
  11. Master table "GOEX_ADMIN"."SYS_IMPORT_FULL_01" successfully loaded/unloaded  
  12. Starting "GOEX_ADMIN"."SYS_IMPORT_FULL_01":  goex_admin/******** directory=db_dump_dir dumpfile=syns.dmp logfile=imp_syns.log full=y include=synonym  
  13. Processing object type DATABASE_EXPORT/SCHEMA/PUBLIC_SYNONYM/SYNONYM  
  14. ORA-31684: Object type SYNONYM:"PUBLIC"."GO_GA_SYS_DATAPUMP_PARA_TBL" already exists  
  15. ORA-31684: Object type SYNONYM:"PUBLIC"."BO_SYS_DATAPUMP_PKG" already exists  
  16. Job "GOEX_ADMIN"."SYS_IMPORT_FULL_01" completed with 2 error(s) at 16:16:12  
  17. #上面的导入过程可以看到,Processing object type DATABASE_EXPORT/SCHEMA/PUBLIC_SYNONYM/SYNONYM实现了同义词的导入  
  18. #同时由于有两个同义词存在,也给出了提示  
  19.   
  20. #验证导入的同义词  
  21. oracle@BKDB01p:~> sqlplus / as sysdba  
  22.   
  23. SQL*Plus: Release 10.2.0.3.0 - Production on Wed Jun 19 16:16:24 2013  
  24.   
  25. Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.  
  26.   
  27.   
  28. Connected to:  
  29. Oracle Database 10g Release 10.2.0.3.0 - 64bit Production  
  30.   
  31. SQL> show parameter db_name  
  32.   
  33. NAME                                 TYPE        VALUE  
  34. ------------------------------------ ----------- ------------------------------  
  35. db_name                              string      KM3625  
  36.   
  37. SQL> select count(*) from dba_synonyms where table_owner='GOEX_ADMIN';  
  38.   
  39.   COUNT(*)  
  40. ----------  
  41.       1042  

4、手动创建同义词的脚本

  1. ACCEPT input_owner PROMPT 'Enter the owner of table:'  
  2. SET HEADING OFF VERIFY OFF FEEDBACK OFF TERMOUT OFF;  
  3. SPOOL $LOG/create_synonym.sql  
  4.   
  5. --Author: Robinson  
  6. --Blog  : http://blog.csdn.net/robinson_0612  
  7.   
  8. SELECT 'create public synonym ' || synonym_name || ' for ' || table_owner || '.' || table_name || ';'  
  9.   FROM dba_synonyms s  
  10.  WHERE s.owner = 'PUBLIC' AND s.table_owner = UPPER ('&input_owner');  
  11.   
  12. SET HEADING ON VERIFY ON TERMOUT ON FEEDBACK OFF;  
  13. SPOOL OFF;  
  14. --@$LOG/create_synonym.sql; 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29119536/viewspace-1098047/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle中的cluster表
请登录后发表评论 登录
全部评论

注册时间:2013-08-15

  • 博文量
    595
  • 访问量
    4988611