对于同义词的备份我们有多种方式来实现,如直接通过脚本生成同义词的创建脚本,或者使用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 --目标数据库
--目标数据库schema goex_admin的所有数据均来源于源数据库,但是使用datapump导入后,无同义词
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 --下面的查询中仅有两个同义词,这两个同义是在创建DB的时候手动创建的,非使用datapump导入产生的
SQL> select count(*) from dba_synonyms where table_owner='GOEX_ADMIN'; COUNT(*)
----------
2

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

oracle@BKDB01p:~> env | grep SID
ORACLE_SID=XM6320
#使用下面的方式导出公共同义词,对于可导出的对象我们可以查询数据字典 DATABASE_EXPORT_OBJECTS
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
#上面的导入过程可以看到,Processing object type DATABASE_EXPORT/SCHEMA/PUBLIC_SYNONYM/SYNONYM实现了同义词的导入
#同时由于有两个同义词存在,也给出了提示 #验证导入的同义词
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 --Author: Robinson
--Blog : http://blog.csdn.net/robinson_0612 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;
--@$LOG/create_synonym.sql;

5、相关参考
    数据泵 EXPDP 导出工具的使用    数据泵 IMPDP 导入工具的使用    expdp impdp中 exclude/include 的使用    使用 Oracle Datapump API 实现数据导出    导入导出 Oracle 分区表数据

Oracle datapump expdp/impdp 导入导出数据库时hang住

更多参考

有关Oracle RAC请参考
     使用crs_setperm修改RAC资源的所有者及权限     使用crs_profile管理RAC资源配置文件     RAC 数据库的启动与关闭     再说 Oracle RAC services     Services in Oracle Database 10g     Migrate datbase from single instance to Oracle RAC     Oracle RAC 连接到指定实例     Oracle RAC 负载均衡测试(结合服务器端与客户端)     Oracle RAC 服务器端连接负载均衡(Load Balance)     Oracle RAC 客户端连接负载均衡(Load Balance)     ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
     ORACLE RAC 监听配置 (listener.ora tnsnames.ora)     配置 RAC 负载均衡与故障转移     CRS-1006 , CRS-0215 故障一例 
     基于Linux (RHEL 5.5) 安装Oracle 10g RAC
     使用 runcluvfy 校验Oracle RAC安装环境

有关Oracle 网络配置相关基础以及概念性的问题请参考:
     配置非默认端口的动态服务注册
     配置sqlnet.ora限制IP访问Oracle     Oracle 监听器日志配置与管理
     设置 Oracle 监听器密码(LISTENER)     配置ORACLE 客户端连接到数据库

有关基于用户管理的备份和备份恢复的概念请参考
     Oracle 冷备份     Oracle 热备份     Oracle 备份恢复概念     Oracle 实例恢复     Oracle 基于用户管理恢复的处理     SYSTEM 表空间管理及备份恢复     SYSAUX表空间管理及恢复     Oracle 基于备份控制文件的恢复(unsing backup controlfile)

有关RMAN的备份恢复与管理请参考
     RMAN 概述及其体系结构     RMAN 配置、监控与管理     RMAN 备份详解     RMAN 还原与恢复     RMAN catalog 的创建和使用     基于catalog 创建RMAN存储脚本     基于catalog 的RMAN 备份与恢复     RMAN 备份路径困惑     使用RMAN实现异机备份恢复(WIN平台)     使用RMAN迁移文件系统数据库到ASM     linux 下RMAN备份shell脚本     使用RMAN迁移数据库到异机

有关ORACLE体系结构请参考
     Oracle 表空间与数据文件     Oracle 密码文件     Oracle 参数文件     Oracle 联机重做日志文件(ONLINE LOG FILE)     Oracle 控制文件(CONTROLFILE)     Oracle 归档日志     Oracle 回滚(ROLLBACK)和撤销(UNDO)     Oracle 数据库实例启动关闭过程     Oracle 10g SGA 的自动化管理     Oracle 实例和Oracle数据库(Oracle体系结构)

使用datapump 导出导入同义词(export and import synonym using datapump)的更多相关文章

  1. oracle 增量导出/导入

    一.   导出/导入(Export/Import) ----   利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle数据库中去. ----   1.   ...

  2. 【DB宝50】Oracle异构平台迁移之完全可传输导出导入(Full Transportable Export & Import)

    目录 一.简介 1.1.使用场景 1.2.限制条件 二.完全可传输操作步骤 三.案例演示 3.1.环境 3.2.源库操作 3.2.1.将需要传输的用户表空间设置为RO状态 3.2.2.使用Data P ...

  3. ES中的模块导出导入,import xxx from 和 import {xxx} from的区别

    export 和 export default export与export default均可用于导出常量.函数.文件.模块等 在一个文件或模块中,export.import可以有多个,export ...

  4. 使用导出导入(datapump)方式将普通表切换为分区表

    随着数据库数据量的不断增长,有些表须要由普通的堆表转换为分区表的模式. 有几种不同的方法来对此进行操作,诸如导出表数据,然后创建分区表再导入数据到分区表:使用EXCHANGE PARTITION方式来 ...

  5. 数据泵导出/导入Expdp/impdp

    一下转自 http://blog.csdn.net/jionjionyoushen/article/details/6789686 数据泵导出/导入Expdp/impdp Oracle 10g引入了D ...

  6. Troubleshooting ORA-01555/ORA-01628/ORA-30036 During Export and Import (Doc ID 1579437.1)

    Troubleshooting ORA-01555/ORA-01628/ORA-30036 During Export and Import (Doc ID 1579437.1) APPLIES TO ...

  7. 【Oracle】OCR的备份和恢复之导出导入

    使用导出导入进行OCR的备份和恢复: 在对集群做调整前.如:增删节点等操作前,应该对OCR进行一次备份.能够使用export备份到指定文件. 实验环境: OS:OEL5.6 RAC:10.2.0.1. ...

  8. export和import实现模块化

    export和import实现模块化 阅读目录 ES6的模块化的基本规则或特点: 下面列出几种import和export的基本语法: ES6导入的模块都是属于引用: 循环依赖的问题: 浏览器兼容: 参 ...

  9. 不同版本的SQL Server之间数据导出导入的方法及性能比较

    原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...

随机推荐

  1. Visual Studio 创建和使用dll的方法

    DLL是一个包含可由多个程序同时使用的代码和数据的库. DLL文件就是把一些函数导出来,然后在新程序中进行复用的过程. 第一部分:使用Visual Studio 2010进行DLL的制作 生成方法一: ...

  2. 自己新建Xib 和.h .m文件关联

    代理中注意点 1.新建MainViewController.h 和 MainViewController.m文件: 新建Main.xib文件: 2.拖View到Main.xib中: 3.点击File’ ...

  3. MAC X OS 自定义分辨率

    1 vi /Library/Preferences/SystemConfiguration/com.apple.Boot.plist 2 3 将该文件修改成如下内容: 4 5 <key>G ...

  4. C++编译时函数名修饰约定规则(很具体),MFC提供的宏,extern "C"的作用

    调用约定: __cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数 ...

  5. maven仓库--私服(Nexus的配置使用)

    maven--私服的搭建(Nexus的使用)和注意的问题 私服是什么 私服,私有服务器,是公司内部Maven项目经常需要的东东,不总结一下,不足以体现出重视.Nexus是常用的私用Maven服务器,一 ...

  6. git常用命令2

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...

  7. shell脚本中每次读取文件的一行

    写法一: #!/bin/bash while read linedo      echo $line     #这里可根据实际用途变化 done < file          #需要读取的文件 ...

  8. JSU省赛队员选拔赛个人赛1(Coin Change、Fibbonacci Number、Max Num、单词数、无限的路、叠筐)

    JSU省赛队员选拔赛个人赛1 一.题目概述: A.Coin Change(暴力求解.动态规划)     B.Fibbonacci Number(递推求解) C.Max Num(排序.比较) D.单词数 ...

  9. drupal中使用drush命令,快速批量的开启和关闭模块

    方法一: drush pml --no-core --type=module --status=enabled --pipe > modules.txt  xargs -a modules.tx ...

  10. 【转】linux命令useradd添加用户详解

    在linux中增加用户我们使用useradd命令而删除用户直接使用userdel即可了,下面小编来给各位同学介绍一下在linux中添加与删除用户方法吧.   1.作用 useradd或adduser命 ...