OracleDB 6の概要:DBLINKを使用して非CDBをCDBアーキテクチャに複製します

バージョンの説明:

    元のライブラリ:ORACLE12cR1非CDBアーキテクチャ

    ターゲットライブラリ:ORACLE 12cR1CDBアーキテクチャ

1.ターゲットデータベースのインストール

少し

2つ目は、dbcaがCDBデータベースインスタンスを作成することです。

#dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \
-GDBNAME  T24_CDB                        \
-SID  T24_CDB                            \
-EMCONFIGURATION  "NONE"                   \
-SYSPASSWORD  "Password_4U"                 \
-SYSTEMPASSWORD  "Password_4U"              \
-DBSNMPPASSWORD  "Password_4U"              \
-STORAGETYPE  FS                             \
-CREATEASCONTAINERDATABASE TRUE                 \
-NUMBEROFPDBS  1                                 \
-PDBNAME  SGP_DEV                                   \
-DATAFILEDESTINATION  "/odata/datafile/"                 \
-RECOVERYAREADESTINATION "/odata/fast_recovery_area/"              \
-MEMORYPERCENTAGE  "15"                        \
-AUTOMATICMEMORYMANAGEMENT TRUE             \
-CHARACTERSET  "AL32UTF8"                   \
-NATIONALCHARACTERSET "AL16UTF16"

注意:

  1. ここで、CREATEASCONTAINERDATABASEオプションは、CDBコンテナデータベースを作成するための(TRUE)を識別します。
  2. NUMBEROFPDBSは、pdb $ seedを除いて、PDBの初期数を指定します。システムは、プラグ可能なデータベースPDBの数を自動的に作成します。
  3. PDBNAMEは、作成されたPDBの名前を指定するか、指定されていない場合、システムのデフォルトです。
  4. その他のGDBNAME、SID、DATAFILEDESTINATIONなどは、非CDBアーキテクチャと同じです。

3つ目は、ソースライブラリへのtns接続文字列を構成することです。

例:tnsnames.ora

SGP_DEV2 =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 99.12.98.194)(PORT = 1521))
        (CONNECT_DATA =
           (SERVER = DEDICATED)
           (SERVICE_NAME = SGP_DEV2)
   )
  )

構成後にtnspingテストを使用します

bash-4.2$ tnsping SGP_DEV2
TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 08-JUL-2019 19:27:57
Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Used parameter files:
/oinstall/oracle/product/12.1.0/dbhome_1/network/admin/sqlnet.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 99.12.98.194)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = SGP_DEV2)))
OK (10 msec)
bash-4.2$

第四に、DBリンクを作成するためのターゲットライブラリ

SQL> create database link OLDDB connect to system identified by XXX using ‘TNS_NAME’;

注意:

  1. TNS_NAMEは、3番目のステップで作成されたtns接続文字列の名前です。
  2. OLDDBは、dbリンクオブジェクトの名前です。
  3. XXXはユーザーSYSTEMのパスワードを表します

5、元のライブラリを読み取り専用に設定します

SQL>shutdown immediate;
SQL>startup open read only;

 注:12cR1のUNDO表領域は共有モードのみをサポートします。つまり C DBアーキテクチャーのすべてのPDBはUNDO表領域を共有し、クローン処理中に元のデータベースが変更されないようにするには、元のデータベースを読み取りに設定する必要があります。 -のみ。それ以外の場合は、後続の手順でエラーが報告されます。

6. db linkを使用して、リモートデータベースのクローンを作成します

SQL> create pluggable database PDB_DEV from NON$CDB@OLDDB file_name_convert=(‘PATH1’,’PATH2’);

注意:

  1. 複製されたPDB名は次のとおりです:PDB_DEV
  2. このコマンドは、使用するDBリンクに接続するためにNON $ CDBのユーザーを。あるNON $ CDB非CDBの移行専用の公式Oracleユーザー?
  3. F変換用のファイルパスile_name_convert。

コマンドが実行された後、理論的にはPDB PDB_DEVが正常に作成され、関連するサービスも準備ができています(lsnrctlステータスを確認してください)。

7、noncdb_to_pdb.sql変換

  • セッションの変更:
SQL> alter session set container= PDB_DEV
  • PDBに変換
SQL> @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql

注意:

1.このステップには5〜10分かかる場合があります。しばらくお待ちください。

2.このスクリプトを呼び出すと、12cR1バージョンでエラー(ORA-600)が報告される可能性があると言われています。このエラーはoracleのバグであり、変換時に作成者が表示されませんでした。

8.最後に

変換されたPDBは読み取り専用状態(またはマウント状態)にあり、オープン状態に変更されます。

SQL> alter pluggable database PDB_DEV open

終了--------------------ディスカッションへようこそ

 

おすすめ

転載: blog.csdn.net/zhaogang1993/article/details/95655856