OracleDB入门7:使用TTS迁移non-CDB表空间成CDB架构

本文详细介绍了如何将OracleDB的non-CDB表空间迁移到CDB架构,包括源库导出元数据,目标库创建PDB,配置tns连接,拷贝表空间文件,以及直接导入到PDB的步骤。该方法能精确到表空间迁移,节省时间和空间,适用于跨DB版本迁移。
摘要由CSDN通过智能技术生成

源库

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE    11.2.0.4.0      Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

目的库

SQL> select * from v$version;

BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production              0
PL/SQL Release 12.1.0.2.0 - Production                                                    0
CORE    12.1.0.2.0      Production                                                                0
TNS for Linux: Version 12.1.0.2.0 - Production                                            0
NLSRTL Version 12.1.0.2.0 - Production                                                    0
SQL> select cdb from v$database;

CDB
---
YES

步骤

3.1 (源库)导出元数据

grant read,write on directory FILE_PATH to TEST;
grant exp_full_database to TEST;
alter tablespace TESTDATA read only;
alter tablespace TESTINDEX read only;


expdp TEST/TEST dumpfile=TEST_metadata.dmp directory=FILE_PATH transport_tablespaces= TESTDATA,TESTINDEX logfile=TEST_export.log;

3.2 (目标库)创建PDB等

  • 在CDB数据库中创建一个PDB
$sqlplus / as sysdba;
SQL> create pluggable database PDBSYD admin user PDBSYD identified by Passwod123456 roles=(connect) file_name_convert=('/data/T24CDB/T24CDB/pdbseed','/data/T24CDB/T24CDB/PDBSYD');
  • 打开PDB
SQL> alter pluggable database PDBSYD open;
  • 切换到PDB会话
SQL> alter session set container= PDBSYD;
  • 创建PDB的私有用户
SQL> create user SYDADMIN identified by SYDADMIN;
  • 授权SYDADMIN对directory对象的权限
SQL> grant DBA_PATH to SYDADMIN;
SQL> grant exp_full_database to SYDADMIN;

3.3 (目标库)配置链接到PDB的tns串

vim tnsnames.ora

PDBSYD =
 (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 99.13.213.50)(PORT = 1521))
     (CONNECT_DATA =
       (SERVER = DEDICATED)
       (SERVICE_NAME = PDBSYD)
   )
)
  • 用tnsping 测试链接串
$ tnsping PDBSYD
  • 测试SYDADMIN用户直接登录到PDB
[oracle@oceansvn01 12chome1]<20190801 16:06:28>$ sqlplus SYDADMIN/SYDADMIN@pdbsyd

SQL*Plus: Release 12.1.0.2.0 Production on Thu Aug 1 16:06:30 2019
Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Last Successful login time: Thu Aug 01 2019 15:57:55 +08:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> show con_name;

CON_NAME
------------------------------
PDBSYD
SQL>

3.3 拷贝源库的元数据与表空间文件

可使用scp、ftp等工具拷贝源库导出的元数据和表空间文件,并正确设置文件属性(chown),此处从略。

3.4 (目标库)直接导入到PDB

$ impdp SYDADMIN/SYDADMIN@pdbsyd dumpfile=CMBASOC1_metadata_01.dmp directory=DBA_PATH logfile=CMBASOC_import1.log transport_datafiles=/data/T24CDB/T24CDB/PDBSYD/cmbasoc1_index.dbf,/data/T24CDB/T24CDB/PDBSYD/cmbasoc1_data.dbf;

结尾

  • 把源库的表空间设置为read write
alter tablespace TESTDATA read write;
alter tablespace TESTINDEX read write;

总结

         CDB架构作为ORACLE官方主推的特性,可想而知官方对12c以前non-CDB架构的支持力度将越来越低。因而,将生产数据库从non-CDB架构迁移成高版本的CDB架构将是近几年DBA的主要工作之一。

     前博讲诉了通过DB LINK方式直接将非non-CDB架构数据库整体迁移成CDB架构,但其有诸多弊端,如迁移后non-CDB数据库揉成一个PDB,其中包括non-CDB架构中的SYSTEM/SYSAUX/USER等多个表空间文件,占用大量磁盘空间,且据说noncdb_to_pdb.sql容易失败。

     本文从另外一个维度讲诉non-CDB到CDB的迁移,将迁移精确到表空间,大大的节省了时间和空间,且支持跨DB版本迁移。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值