LoginSignup
5
4

More than 5 years have passed since last update.

Oracle Database 11gR2(11.2.0.4)から12cR2(12.2.0.1)のPDBにTTS(トランスポータブル表領域)をしてみる。

Last updated at Posted at 2018-06-26

表題の通り、Oracle Database 11gR2(11.2.0.4)から12cR2(12.2.0.1)の
PDBにTTS(トランスポータブル表領域)を実行してみるやで彡(゚)(゚)

プラットフォームはどちらも Linux x86 64bitで試します。
特別な手順は必要なくマニュアル通りに粛々と実施するだけです。

Oracle Database管理者ガイド 11gリリース2 (11.2) B56301-08
データベース間で表領域をトランスポートする手順および例
https://docs.oracle.com/cd/E16338_01/server.112/b56301/tspaces.htm#i1007252

Oracle Database データベース管理者ガイド 12c リリース2 (12.2)
15.1.2.2 トランスポータブル表領域またはトランスポータブル表の使用例
https://docs.oracle.com/cd/E82638_01/admin/transporting-data.html#GUID-5158E6EB-591A-4DF0-9A44-BAF1E10338A8

0. 移行対象の表/表領域

移行対象は以下の表(TBL_TEST_TTS1,TBL_TEST_TTS2)/表領域(TBS_TTS1,TBS_TTS2)とします。

-- 11gR2
COLUMN OWNER FORMAT A20;
COLUMN SEGMENT_NAME FORMAT A20;
COLUMN BYTES FORMAT 999,999,999;
COLUMN TABLESPACE_NAME FORMAT A20;
SELECT OWNER, SEGMENT_NAME, BYTES, TABLESPACE_NAME FROM DBA_SEGMENTS WHERE TABLESPACE_NAME IN ('TBS_TTS1', 'TBS_TTS2');

OWNER                SEGMENT_NAME                BYTES TABLESPACE_NAME
-------------------- -------------------- ------------ --------------------
AYSHIBAT             TBL_TEST_TTS1             196,608 TBS_TTS1
AYSHIBAT             TBL_TEST_TTS2             196,608 TBS_TTS2

1. 移行元/移行先のエンディアンを確認

まず移行元/移行先のエンディアンを確認します。今回はどちらも同じエンディアン彡(゚)(゚)

-- 移行元(11gR2)のエンディアン
COLUMN PLATFORM_NAME FORMAT A30;
COLUMN ENDIAN_FORMAT FORMAT A30;
SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
     FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
     WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

PLATFORM_NAME                  ENDIAN_FORMAT
------------------------------ ------------------------------
Linux x86 64-bit               Little

-- 移行先(12cR2)のエンディアン
COLUMN PLATFORM_NAME FORMAT A30;
COLUMN ENDIAN_FORMAT FORMAT A30;
SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
     FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
     WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

PLATFORM_NAME                  ENDIAN_FORMAT
------------------------------ ------------------------------
Linux x86 64-bit               Little

2. 表領域が自己完結しているかを確認

下記のコマンドで表領域が自己完結しているかを確認します。
TRANSPORT_SET_VIOLATIONSで行が出なければ、自己完結しています。

-- 11gR2
EXECUTE SYS.DBMS_TTS.TRANSPORT_SET_CHECK('TBS_TTS1, TBS_TTS2', TRUE);

SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;

PL/SQL procedure successfully completed.

no rows selected

3. 移行対象の表領域を READ ONLY にします。

下記のコマンドで移行対象の表領域を READ ONLY にします。

-- 11gR2
ALTER TABLESPACE TBS_TTS1 READ ONLY;
ALTER TABLESPACE TBS_TTS2 READ ONLY;

Tablespace altered.
Tablespace altered.

4. 表領域の定義情報をエクスポート(expdp)

expdpコマンドで表領域の定義情報をエクスポートします。
定義情報だけのエクスポートなので、時間はそれほど掛かりません。

# 11gR2
expdp AYSHIBAT/xxxxxxxx@orcl dumpfile=tts_users.dmp directory=DIR_AYSHIBAT transport_tablespaces=TBS_TTS1,TBS_TTS2 logfile=exp_tts_users.log

Export: Release 11.2.0.4.0 - Production on Tue Jun 26 18:49:44 2018

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
Starting "AYSHIBAT"."SYS_EXPORT_TRANSPORTABLE_01":  AYSHIBAT/********@orcl dumpfile=tts_users.dmp directory=DIR_AYSHIBAT transport_tablespaces=TBS_TTS1,TBS_TTS2 logfile=exp_tts_users.log
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Master table "AYSHIBAT"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for AYSHIBAT.SYS_EXPORT_TRANSPORTABLE_01 is:
  /home/oracle/work/ayshibat/tts_users.dmp
******************************************************************************
Datafiles required for transportable tablespace TBS_TTS1:
  +DATA/orcl/datafile/tbs_tts1.266.979841605
Datafiles required for transportable tablespace TBS_TTS2:
  +DATA/orcl/datafile/tbs_tts2.267.979841605
Job "AYSHIBAT"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at Tue Jun 26 18:50:53 2018 elapsed 0 00:01:06

5. dmpファイルとデータファイルの転送(コピー)

dmpファイルとデータファイルを移行先(12cR2)に転送(コピー)します。
データファイルの転送にはcpコマンド/DBMS_FILE_TRANSFER/RMAN等々の手段が有りますが、
今回は 11gR2のASM ⇒ asmcmdでファイルシステムに出力 ⇒ scpで転送 ⇒ 12cR2のファイルシステム とします。

# 11gR2
asmcmd
cd +DATA/ORCL/DATAFILE
ls -l

Type      Redund  Striped  Time             Sys  Name
DATAFILE  MIRROR  COARSE   JUN 26 18:00:00  Y    SYSAUX.257.836897651
DATAFILE  MIRROR  COARSE   JUN 26 18:00:00  Y    SYSTEM.256.836897649
DATAFILE  MIRROR  COARSE   JUN 26 18:00:00  Y    TBS_TTS1.266.979841605
DATAFILE  MIRROR  COARSE   JUN 26 18:00:00  Y    TBS_TTS2.267.979841605
DATAFILE  MIRROR  COARSE   JUN 26 18:00:00  Y    UNDOTBS1.258.836897653
DATAFILE  MIRROR  COARSE   JUN 26 18:00:00  Y    USERS.259.836897653

cp '+DATA/ORCL/DATAFILE/TBS_TTS1.266.979841605' '/home/grid/work/ayshibat/TBS_TTS1.266.979841605'
cp '+DATA/ORCL/DATAFILE/TBS_TTS2.267.979841605' '/home/grid/work/ayshibat/TBS_TTS2.267.979841605'

copying +DATA/ORCL/DATAFILE/TBS_TTS1.266.979841605 -> /home/grid/work/ayshibat/TBS_TTS1.266.979841605
copying +DATA/ORCL/DATAFILE/TBS_TTS2.267.979841605 -> /home/grid/work/ayshibat/TBS_TTS2.267.979841605

↓

【scpでdmpファイルとデータファイルを転送(コピー)】

↓
# 12cR2
cd /u01/app/oracle/oradata/AYUCDB/6C4B2D3386C20FB8E055000000000001/datafile/
ls -la
-rw-r--r--. 1 oracle oinstall  10493952 Jun 26 18:55 TBS_TTS1.266.979841605 ★scpで転送(コピー)したデータファイル
-rw-r--r--. 1 oracle oinstall  10493952 Jun 26 18:56 TBS_TTS2.267.979841605 ★scpで転送(コピー)したデータファイル
-rw-r-----. 1 oracle oinstall 398467072 Jun 26 18:35 o1_mf_sysaux_fhq8s86l_.dbf
-rw-r-----. 1 oracle oinstall 272637952 Jun 26 18:57 o1_mf_system_fhq8s865_.dbf
:
cd /home/oracle/work/ayshibat
ls -la tts_users.dmp
-rw-r--r--. 1 oracle oinstall 94208 Jun 26 18:50 tts_users.dmp ★scpで転送(コピー)したdmpファイル

6. PDBに表領域の定義情報をインポート(impdp)

impdpコマンドで表領域の定義情報をインポートします。
やはり定義情報だけのインポートなので、時間はそれほど掛かりません。

# 12cR2
impdp AYSHIBAT/xxxxxxxx@PDB01 dumpfile=tts_users.dmp directory=DIR_AYSHIBAT \
transport_datafiles=\
'/u01/app/oracle/oradata/AYUCDB/6C4B2D3386C20FB8E055000000000001/datafile/TBS_TTS1.266.979841605',\
'/u01/app/oracle/oradata/AYUCDB/6C4B2D3386C20FB8E055000000000001/datafile/TBS_TTS2.267.979841605' \
logfile=imp_tts_users.log

Import: Release 12.2.0.1.0 - Production on Tue Jun 26 19:10:48 2018

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Master table "AYSHIBAT"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Starting "AYSHIBAT"."SYS_IMPORT_TRANSPORTABLE_01":  AYSHIBAT/********@PDB01 dumpfile=tts_users.dmp directory=DIR_AYSHIBAT transport_datafiles=/u01/app/oracle/oradata/AYUCDB/6C4B2D3386C20FB8E055000000000001/datafile/TBS_TTS1.266.979841605,/u01/app/oracle/oradata/AYUCDB/6C4B2D3386C20FB8E055000000000001/datafile/TBS_TTS2.267.979841605 logfile=imp_tts_users.log
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Job "AYSHIBAT"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at Tue Jun 26 19:11:05 2018 elapsed 0 00:00:13

7. PDBに接続してデータを確認

PDBに接続してデータを確認します。見事にデータが転送されています。やったぜ彡(^)(^)

-- 12cR2
sqlplus /nolog
CONNECT AYSHIBAT/xxxxxxxx@PDB01
SHOW CON_NAME;
COLUMN OWNER FORMAT A20;
COLUMN SEGMENT_NAME FORMAT A20;
COLUMN BYTES FORMAT 999,999,999;
COLUMN TABLESPACE_NAME FORMAT A20;
SELECT OWNER, SEGMENT_NAME, BYTES, TABLESPACE_NAME FROM DBA_SEGMENTS WHERE TABLESPACE_NAME IN ('TBS_TTS1', 'TBS_TTS2');
SELECT COUNT(*) FROM TBL_TEST_TTS1;
SELECT COUNT(*) FROM TBL_TEST_TTS2;

SQL*Plus: Release 12.2.0.1.0 Production on Tue Jun 26 19:14:27 2018

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Connected.

CON_NAME
------------------------------
PDB01

OWNER                SEGMENT_NAME                BYTES TABLESPACE_NAME
-------------------- -------------------- ------------ --------------------
AYSHIBAT             TBL_TEST_TTS2             196,608 TBS_TTS2
AYSHIBAT             TBL_TEST_TTS1             196,608 TBS_TTS1

  COUNT(*)
----------
     10000

  COUNT(*)
----------
     10000

8. 表領域の READ ONLY状態を解除

表領域のREAD ONLY状態を解除します。ちな移行元(今回は11gR2)のREAD ONLY解除は、
データファイル書き出しが終わった時点で実施してOKですやで彡(゚)(゚)

-- 11gR2
SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME IN ('TBS_TTS1', 'TBS_TTS2');
ALTER TABLESPACE TBS_TTS1 READ WRITE;
ALTER TABLESPACE TBS_TTS2 READ WRITE;
SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME IN ('TBS_TTS1', 'TBS_TTS2');

TABLESPACE_NAME                STATUS
------------------------------ ---------
TBS_TTS1                       READ ONLY
TBS_TTS2                       READ ONLY

Tablespace altered.
Tablespace altered.

TABLESPACE_NAME                STATUS
------------------------------ ---------
TBS_TTS1                       ONLINE
TBS_TTS2                       ONLINE

-- 12cR2
SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME IN ('TBS_TTS1', 'TBS_TTS2');
ALTER TABLESPACE TBS_TTS1 READ WRITE;
ALTER TABLESPACE TBS_TTS2 READ WRITE;
SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME IN ('TBS_TTS1', 'TBS_TTS2');

TABLESPACE_NAME                STATUS
------------------------------ ---------
TBS_TTS1                       READ ONLY
TBS_TTS2                       READ ONLY

Tablespace altered.
Tablespace altered.

TABLESPACE_NAME                STATUS
------------------------------ ---------
TBS_TTS1                       ONLINE
TBS_TTS2                       ONLINE

9. まとめ

特別な手順は無く、11gR2 ⇒ 12cR2(PDB) の
TTS(トランスポータブル表領域)が実行できました彡(^)(^)

リアルな環境を考慮すると、5. のデータファイル転送(コピー)のところで
最も時間が掛かるのですが、一旦中間ファイルに書き出す今回のやり方よりも、
中間ファイルを介さずに直接転送する方法も有るようなので、
詰める余地が有りますやね彡(゚)(゚)

※2018/6/27追記

「5. dmpファイルとデータファイルの転送(コピー)」の
データファイル転送部分はDBMS_FILE_TRANSFERパッケージでも行けました。
ファイルシステム(中間ファイル)を介さないので理論上速い。
下記記事参照彡(゚)(゚)

DBMS_FILE_TRANSFERパッケージでDB(11gR2) -> DBLINK -> PDB(12cR2)のデータファイルの転送(コピー)を実行する。(Oracle Database)
https://qiita.com/ora_gonsuke777/items/94cf4572cdad942f8d52

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4