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

简介:       对于同义词的备份我们有多种方式来实现,如直接通过脚本生成同义词的创建脚本,或者使用dbms_metadata.get_ddl来提取同义词的定义脚本。

      对于同义词的备份我们有多种方式来实现,如直接通过脚本生成同义词的创建脚本,或者使用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;

 

Oracle&nbsp;牛鹏社

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体系结构) 

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
18天前
|
SQL Oracle 关系型数据库
Oracle 数据泵导出导入(映射表空间、Schema)
Oracle 数据泵导出导入(映射表空间、Schema)
|
Oracle 关系型数据库
PLSQL_数据泵导入进度查看Impdp/Expdp Status(案例)
20150701 Created By BaoXinjian 一、摘要 查看EXPDP/IMPDP的进度,当你当如导出的时候,如果数据量比较大,中途有些人会着急,不免想看看进度如何 1. 两个视图 DBA_DATAPUMP_JOBS; DBA_DATAPUMP_SESSIONS; 2.
3194 0
|
Oracle 关系型数据库 数据库
oracle数据库impdp导入dmp文件功能演示,imp导入IMP-00038: Could not convert to environment character sets handle问题解决
oracle数据库impdp导入dmp文件功能演示,imp导入IMP-00038: Could not convert to environment character sets handle问题解决
767 0
|
关系型数据库 Oracle