前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用DataPump迁移非CDB到CDB数据库

使用DataPump迁移非CDB到CDB数据库

作者头像
Leshami
发布2018-08-13 09:27:25
6680
发布2018-08-13 09:27:25
举报
文章被收录于专栏:乐沙弥的世界乐沙弥的世界

Oralce 12c中的多租户数据库的启用,使得原来分布于多台服务器或者一台服务器上运行N多实例的情形需要进行整合。那就是将之前的N多非CDB数据库整合到CDB,原来的数据库将作为CDB数据库下一个PDB容器,各个PDB之间也可以通过快速dblink实现交互。常用的方法包括导出导入,DBMS_PDB包方式,以及GoldenGate复制方式等。本文主要描述使用DataPump方式实现迁移。

一、几种常用的迁移方法

如上图所示,通常有3种方式来实现将非CDB迁移到CDB数据库 注:文中所描述的迁移到CDB,指的是非CDB迁移之后将作为目标CDB的一个PDB数据库

1、Datapump/TTS   使用Datapump迁移的场景:     源非CDB数据库使用了与目标数据库不同的字节码(简单说就是跨OS平台)     源非CDB数据库使用了与目标数据库不同的字符集   使用TTS方式迁移     TTS方式与传统的导出导入方式以及可传输数据库多适用于用户定义的对象位于当个表空间情行

2、使用DBMS_PDB包实现   该方式将非CDB数据库构建一个XML文件用于描述其结构然后在目标端读取它实现导入   此种方式最为简单,但是仅仅使用在Oracle 12c版本中

3、使用复制方式,如GoldenGate   该方式能实现Oracle 12c版本之前最小化停机时间 ,但是配置复杂

二、演示使用DataPump迁移非CDB到CDB

代码语言:javascript
复制
演示说明:
1、以下演示将Oracle 11g一个schema soe作为一个pdb导入到Oracle 12c
2、在导入pdb前,做了schema映射(soe到report_usr),如果是正式迁移应创建原账号,导入完成后并将其密码变更为原密码
3、导入完成后应检查所有迁移期间涉及到的对象,如表,视图,存储过程,包,dblink,无效对象等等

--当前环境
SQL> select banner from v$version where rownum<2;

BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

--当前数据库字符集,此书与原数据库字符集是一致的         
SQL> select * from nls_database_parameters where parameter like '%CHARACTERSET%';

PARAMETER                           VALUE
----------------------------------- --------------------
NLS_NCHAR_CHARACTERSET              AL16UTF16
NLS_CHARACTERSET                    AL32UTF8

SQL> select 'Leshami' Author,'http://blog.csdn.net/leshami' Blog,
  2  '645746311' QQ from dual;                                   
AUTHOR  BLOG                         QQ                          
------- ---------------------------- ---------                   
Leshami http://blog.csdn.net/leshami 645746311     

--创建可插拔数据库
SQL> create pluggable database reportdb    
  2  admin user reportdba identified by pass roles=(connect)
  3  file_name_convert=('/app/oracle/ora12c/oradata/cdb1/pdbseed',
  4  '/app/oracle/ora12c/oradata/cdb1/reportdb');

--将数据库置为open
SQL> alter pluggable database reportdb open;

--连接到刚刚创建的pdb数据库
SQL> conn sys/pass@192.168.1.244:1521/reportdb as sysdba

--为pdb用户授权
SQL> grant dba to reportdba;

--使用pdb账号reportdba连接到pdb
SQL> conn reportdba/pass@192.168.1.244:1521/reportdb

SQL> show user; 
USER is "REPORTDBA"

--创建一个用于导入的临时目录
SQL> create directory dump_dir as '/tmp';

--创建表空间
SQL> create tablespace report_tbs datafile 
 2>  '/app/oracle/ora12c/oradata/cdb1/reportdb/report_tbs.dbf' size 500m autoextend on;

--创建一个新schema存放导入源数据schema,如果不使用新用户,则创建源schema
SQL> create user report_usr identified by report_usr default tablespace report_tbs;

--对新schema授权
SQL> grant create session,resource,connect,dba to report_usr;

--下面开始源数据schema导出,如下,连接到Oracle 11g
SQL> conn sys/oracle@ora11g as sysdba

SQL> select * from v$version where rownum=1;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

--SOE下的对象数目
SQL> select count(*) from dba_objects where owner='SOE';

  COUNT(*)
----------
        47

--导出SOE schema        
SQL> ho expdp soe/soe directory=DATA_PUMP_DIR dumpfile=soe.dmp logfile=exp_soe.log schemas=soe

--将其复制到临时位置
$ cp /app/oracle/ora11g/admin/ora11g/dpdump/soe.dmp /tmp 

--导入SOE schema,并将其映射到report_usr
$ impdp report_usr/report_usr@192.168.1.244:1521/reportdb directory=dump_dir dumpfile=soe.dmp \
> logfile=imp_soe.log schemas=soe remap_schema=soe:report_usr transform=segment_attributes:n

--连接到目标数据库,验证导入
SQL> conn report_usr/report_usr@192.168.1.244:1521/reportdb

SQL> show con_name;

CON_NAME
------------------------------
REPORTDB

--对像数目比对,其它的对象以及状态也需要比对,此处省略
SQL> select count(*) from user_objects;

  COUNT(*)
----------
        47
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年06月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、几种常用的迁移方法
  • 二、演示使用DataPump迁移非CDB到CDB
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档