说明1
この新機能は、大幅に別のCDBに1つのマルチテナントコンテナデータベース(CDB)からプラグイン可能なデータベース(PDB)を再配置するクローン機能を活用することで、ダウンタイムを削減します。ソースPDBはまだオープンして実際のクローニング操作が行われている間完全に機能しています。ソースPDBが静止している間にアプリケーションの停止が非常に小さなウィンドウに縮小され、先のPDBは、増分REDOを適用した後にオンラインになります。ソースPDBはその後削除されます。
12.2大幅にダウンタイムを減らす、別のCDB 1つの容器、マルチテナントデータベース(CDB)から移行するクローニング挿入データベース(PDB)を使用して、この新機能機能。実際の操作は、ソースPDBがまだ開いている、全ての機能が利用可能である場合にクローニングが起こります。アプリケーションは、唯一のダウンタイムの短い窓、最後の増分アプリケーションログを持っています。
図1 PDB移行
以下の基準を満たしている必要があり1.1 elocate PDB
-
現在のユーザーは、PDBが再配置されているにCDBのルートでCREATE DATABASEプラグ接続システム権限を持っている必要があります。
-
移転前に、PDBが含まれているCDBは、ローカルUNDOモードでなければなりません。 - 必须是地元アンドゥ
-
PDBが再配置されているためにCDBがARCHIVELOGモードでない場合は、PDBは、PDBが再配置されているためにCDBがARCHIVELOGモードになっている場合は、この要件は適用されません。運転中にオープン、読み取り専用モードにする必要があります - 非ファイリングモードは、その後、元のPDBは、読み取り専用モードでのみ開くことがあれば、アーカイブモードにします。
-
次の前提条件は、データベース・リンクに適用されます。
-
データベース・リンクは、PDBがPDBの現在のCDBに移転されているにCDBからの接続を有効にする必要があります。データベース・リンクは、CDBのルートに接続する必要があります。PDBは、アプリケーションのPDBの場合は、データベース・リンクは、そのアプリケーションのルートに接続する必要があります。
-
データベース・リンクは、PDBの現在のCDBにして接続するユーザーは、CREATE DATABASEプラグ接続システム権限を持っている必要があります。
-
データベース・リンクは、PDBの現在のCDB内で接続するユーザーは、SYSDBAまたはSYSOPERの管理者権限を持っている必要があります。
-
データベース・リンクは、PDBの現在のCDBでCDBのルートに接続している場合は、データベース・リンクがで接続するユーザーは、一般的なユーザーでなければなりません。
-
-
それが再配置されているためにPDBの現在のCDBとCDBのプラットフォームは、これらの要件を満たす必要があります。
-
彼らは、同じエンディアンを持つ必要があります。
-
ソース・プラットフォーム上にインストールされたデータベース・オプションは、同じ、またはターゲットプラットフォームにインストールされたデータベース・オプションのサブセットでなければなりません。
-
-
PDBが再配置されているにCDBの文字セットがAL32UTF8でない場合は、それが再配置されているためにPDBの現在のCDBとCDBは、互換性のある文字セットと各国語キャラクタ・セットを持っている必要があります。互換であるためには、キャラクタ・セットおよび各国語キャラクタ・セットは、Oracle Databaseグローバリゼーション・サポート・ガイドで指定された要件のすべてを満たす必要があります。默认字符集是AL32UTF8
-
あなたがアプリケーションのPDBを作成する場合は、PDBが再配置されているのアプリケーション名とバージョンは、それが再配置された後、アプリケーションのPDBが含まれていますアプリケーションコンテナのアプリケーション名とバージョンと一致する必要があります。
実験2
2.1環境
遠位PDB:192.168.1.55 cndba_pdbは - PDBを再配置であります
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 CNDBA_PDB READ WRITE NO
ローカルPDB:192.168.1.110 cndba_pdb_re - 新しいPDBを格納するために使用されます
データベース・リンクを作成するために、2.2先端CDBユーザ
SQL> CREATE USER c##remote_clone_user IDENTIFIED BY remote_clone_user CONTAINER=ALL;
User created.
SQL> GRANT CREATE SESSION, SYSOPER, CREATE PLUGGABLE DATABASE TO c##remote_clone_user CONTAINER=ALL;
Grant succeeded.
2.3チェックリモートモードとアーカイブモードCDB元に戻します
- モードを元に戻します
COLUMN property_name FORMAT A30
COLUMN property_value FORMAT A30
SELECT property_name, property_value
FROM database_properties
WHERE property_name = 'LOCAL_UNDO_ENABLED';
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED TRUE
- アーカイブモード
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 41
Next log sequence to archive 43
Current log sequence 43
2.4ローカルCDBの設定TNS、遠位CDB監督
tnsnames.oraで以下を追加し、「(SERVER = DEDICATED)」が含まれるようにしてください
CDB55=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.55)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = zhixin)
)
)
- テスト
[oracle@db12CR2 backup]$ tnsping cdb55
TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 08-AUG-2017 14:26:51
Copyright (c) 1997, 2016, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.55)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = zhixin)))
OK (10 msec)
2.5チェックローカルCDBは、モードとアーカイブモードを元に戻します
-undoモード
COLUMN property_name FORMAT A30
COLUMN property_value FORMAT A30
SELECT property_name, property_value
FROM database_properties
WHERE property_name = 'LOCAL_UNDO_ENABLED';
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED TRUE
- アーカイブモード
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 402
Next log sequence to archive 404
Current log sequence 404
ローカルCDBで作成された2.6のdblink、遠位CDBを監督
SQL> CREATE PUBLIC DATABASE LINK clone_link
CONNECT TO c##remote_clone_user IDENTIFIED BY remote_clone_user USING 'cdb55'; 2
Database link created.
- テストするかどうか、通常のデータベース・リンク
SQL> select count(*) from user_tables@clone_link;
COUNT(*)
----------
0 --因为该用户下没有表
2.7移動可能PDB
CREATE PLUGGABLE DATABASE cndba_pdb_re FROM cndba_pdb@clone_link
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/cndba_pdb/','/u01/app/oracle/oradata/orcl/cndba_pdb_re/')
RELOCATE;
Pluggable database created.
あなたはOMFを開始した場合、あなたは赤い部分は必要ありません。
2.8ビューの新しいPDB
MOUNT状態がCNDBA_PDB_REです
SQL> SELECT name, open_mode FROM v$pdbs WHERE name = 'CNDBA_PDB_RE';
NAME OPEN_MODE
------------------------------ --------------------
CNDBA_PDB_RE MOUNTED
- 現在の状態が移転されます
SQL> col pdb_name for a20
SQL> SELECT pdb_name, status FROM DBA_PDBS WHERE pdb_name = 'CNDBA_PDB_RE';
PDB_NAME STATUS
-------------------- -----------------------
CNDBA_PDB_RE RELOCATING
2.9 PDB遠位一部のDML操作
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 CNDBA_PDB READ WRITE NO --首先PDB为READ WRITE状态
SQL> alter session set container=cndba_pdb;
Session altered.
SQL> conn lei/lei@cndba_pdb
Connected.
- テーブルを作成し、データを挿入
SQL> create table test_relocate as select * from v$version;
Table created.
2.10完全な再配置
新しいPDBを開くと、それが再配置完了を表します。
SQL> alter pluggable database CNDBA_PDB_RE open;
Pluggable database altered.
SQL> SELECT name, open_mode FROM v$pdbs WHERE name = 'CNDBA_PDB_RE';
NAME OPEN_MODE
------------------------------ --------------------
CNDBA_PDB_RE READ WRITE
2.11かどうかを確認バック上のデータ伝送
SQL> select * from lei.test_relocate;
BANNER
--------------------------------------------------------------------------------
CON_ID
----------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
0
PL/SQL Release 12.2.0.1.0 - Production
0
CORE 12.2.0.1.0 Production
0
BANNER
--------------------------------------------------------------------------------
CON_ID
----------
TNS for Linux: Version 12.2.0.1.0 - Production
0
NLSRTL Version
問題ありません。
2.12 PDBの遠位端を削除するかどうかを確認します
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
あなたはCNDBA_PDBがなくなった、見ることができます。
参考記事:
http://docs.oracle.com/database/122/ADMIN/creating-and-removing-pdbs-with-sql-plus.htm#ADMIN-GUID-F887DBA7-61A6-49FB-8400-40632765F1E1
HTTP: //docs.oracle.com/database/122/NLSPG/choosing-character-set.htm#NLSPG1035
https://oracle-base.com/articles/12c/multitenant-relocate-pdb-12cr2