ソースライブラリ
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権限を付与します
SQL> grant DBA_PATH to SYDADMIN;
SQL> grant exp_full_database to SYDADMIN;
3.3(ターゲットライブラリ)PDBにリンクされたtns文字列を設定します
私は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;
終わり
- ソースデータベースのテーブルスペースを読み取り/書き込みに設定します
alter tablespace TESTDATA read write;
alter tablespace TESTINDEX read write;
総括する
CDBアーキテクチャはORACLEの公式機能です。12cより前の非CDBアーキテクチャの公式サポートはますます低くなると考えられます。したがって、非CDBアーキテクチャから高バージョンのCDBアーキテクチャへの本番データベースの移行は、近年のDBAの主要なタスクの1つになります。
前回のブログでは、DB LINK方式による非CDBデータベースアーキテクチャからCDBアーキテクチャへの直接移行について説明しましたが、移行後の非CDBデータベースがPDBになった後、非CDBのSYSTEMを含め、多くの欠点があります。アーキテクチャ/ SYSAUX / USERなどの複数のテーブルスペースファイルは多くのディスク領域を占有し、noncdb_to_pdb.sqlは失敗しやすいと言われています。
この記事では、非CDBから別の次元からのCDBへの移行について説明します。移行は表スペースに対して正確であるため、時間とスペースが大幅に節約され、DB間のバージョン移行がサポートされます。