PDBをOracle12cコンテナー データベースに接続する方法

Summary: 当社の信念は、データベース ソリューション、カスタム開発、ダイナミック データセンター、柔軟なコンピューティングを提供することによりITを簡素化するソリューションを提供することです

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

適用先: 
データベース:Oracle 12cR1

作成者:
Mahesh Reddy

問題: 
PDBをOracle12cコンテナー データベースに接続する方法を教えてください。

解決方法: 
プラグ可能データベースを作成するには、以下の方法があります。
  • シードを使用した新規PDBの作成
  • 既存PDBのクローンニングによる新規PDBの作成
  • プラグ解除されたPDBのCDBへのプラグ
  • 12c非CDBからの新規PDBの作成
1.シードを使用した新規PDBの作成:

シード データベースを使用してPDBを作成します。この方法では、シードに関連づけられているファイルを新しい場所にコピーし、新しいPDBに関連付けます。CREATE PLUGGABLE DATABASE文を使用して、シードから新しいPDBを簡単に作成できます。

次の句を指定して、さまざまな方法でシードから新しいPDBを作成することができます。
  • Storage:ストレージ制限を指定できます
  • Default Tablespace:小さいファイル テーブルスペースを作成し、非システム ユーザーに割り当てます。
  • path_prefix:絶対パスを指定します
  • file_name_convert:ソース ファイルからのPDBファイルの新しい場所を指定します。
  • Tempfile reuse:指定した場合、ターゲットの場所にある一時ファイルを再使用します。
  • Roles:PDB_DBAの役割に付与される事前定義されたOracleロールです。
SLN310932_ja__1icon :ROLES句は、PDBをシードから作成する場合にのみ使用できます。

例1:

sql> create pluggable database PDBNAME admin user PDBUSR identified by PASSWORD;

上記の文では、ローカル ユーザーPDBUSRでPDBを作成します。  この文はPDB_DBAロールをPDB管理者である「pdbusr」に付与し、指定された定義済みOracleロールをPDBでローカルにPDB_DBAロールに付与します。

例2:                              

sql> create pluggable database PDBNAME admin user PDBUSR identified by PASSWORD storage (MAXSIZE 5G) default tablespace USERS datafile ‘+DATA_NEW’ size 100M autoextend on path_prefix = ‘+DATA_NEW’ file_name_convert = (‘+DATA’,’DATA_NEW’);

上記の文では、サイズが制限されたPDBを作成します。PDBに属するすべてのテーブルスペースは5GBを超えてはいけないことが指定されています。新しい場所「+DATA_NEW」に管理者以外のユーザー用のデフォルトのテーブルスペースユーザーを作成します。 

2.  既存PDBのクローニングによる新規PDBの作成:

本番データベースのクローニングは、アプリケーションや関連する環境の変更を開発およびテストするために使用される一般的な手法です。新しいオペレーティング システム リリース、ストレージ ソフトウェア、またはアプリケーション バージョンを本番環境にインストールする前には、本番データを使用した徹底的なテストが必要です。これは通常、本番データベースをテスト環境にコピーすることによって行われます。

Oracle12cでは、CREATE PLUGGABLE DATABASE文を使用してPDBのクローンを作成することができます。この文は、ソースPDBのクローンを作成し、このクローンを同じCDBまたはリモートCDBにプラグします。

CREATE PLUGGABLE DATABASE文は、ソースPDBに関連付けられているファイルを新しい場所にコピーし、そのファイルをターゲットPDBに関連付けます。

以下は、さまざまな種類の句です。

1.       句を使わないローカルPDBのクローニング

句を使用しない場合、構造の変更はありません。

例:sql> create pluggable database clone_pdb from pdb;

ここでは、異なるGUIDを持つクローンPDBが、デフォルトのディスク グループで同じサイズと同じ役割で作成されています。

2.       PATH_PREFIX句およびFILE_NAME_CONVERT句を使用したローカルPDBのクローニング

FILE_NAME_CONVERT句は、コピーされるファイルのターゲットの場所を指定するために必要です。この例では、ファイルが1つの場所から別の場所にコピーされています。

例:sql> create pluggable database clone_pdb from pdb PATH_PREFIX= '+BRLOAD’ FILE_NAME_CONVERT = ('+DATA','+BRLOAD');

ここで、ソースPDBデータファイルは「+DATA」ディスク グループに格納され、クローンPDBデータファイルは別の「+BRLOAD」ディスクグループに配置されます。データファイルの場所を「+DATA」から「+BRLOAD」に変換するには、FILE_NAME_CONVERT句を使用します。

3.       FILE_NAME_CONVERT句とSTORAGE句を使用したローカルPDBのクローニング

PDBには、ストレージ制限を適用する必要があります。したがって、STORAGE句は必須です。具体的には、PDBに属しているすべてのテーブルスペースは2GBを超えないようにする必要があります。また、共有一時テーブルスペース内でPDBセッションで使用されるストレージは、100MBを超えないようにする必要があります。

例:sql> create pluggable database clone_pdb from pdb FILE_NAME_CONVERT= ('+DATA','+BRLOAD') STORAGE (MAXSIZE 2G MAX_SHARED_TEMP_SIZE 100M);

 ローカルPDBのクローンを作成するステップ

このセクションでは、ローカルPDBのクローニングについて説明します。ローカルPDBのクローニングを行った後、ソースとターゲットのPDBは同じCDBにあります。

PDBのクローニングを行うには、次の手順を実行します。

ステップ1:ソースPDBの状態を確認する

  sql> show pdbs;

      CON_ID   CON_NAME    OPEN MODE      RESTRICTED

          2    PDB$SEED       READ ONLY   NO

          3    PDB1           READ WRITE  NO

 クローニング対象のPDBは読み取り専用状態である必要があります。読み取り/書き込みモードの場合は、次のコマンドを使用して状態を変更します

sql> alter pluggable database PDBNAME close instances=all;

ここで、「instances=all」は、すべてのノードでPDBを閉じることを意味します。

sql> alter pluggable database pdb open read only instances=all;

sql> show pdbs;

      CON_ID   CON_NAME    OPEN MODE      RESTRICTED

          2    PDB$SEED       READ ONLY   NO

          3    PDB1           READ ONLY   NO

ステップ2:セクション2で説明されているさまざまなクローニングの句に合わせて必要なオプションを選択します。

Sql> create pluggable database clone_pdb1 from pdb1; (句なし)

ここで、pdb1はソースで、clone_pdb1はターゲットです。

ステップ3:クローニングされたPDBは、マウント モードになり、その状態はNEWになります。PDBの状態は、CDB_PDBSビューまたはDBA_PDBSビューのSTATUS列をクエリーして確認できます。

その後、ALTER PLUGGABLE DATABASEを使用してPDBの状態を変更し、すべてのノードのtnsnames.oraにPDBサービスを追加する必要があります。

3.CDBからのPDBのプラグ解除とプラグ

PDBのプラグ解除:

PDBをCDBからの関連付けを解除して、PDBをプラグ解除します。プラグ解除の操作によってPDBのデータ ファイルにいくつかの変更が行われたことが記録されます。例えば、PDBが正常にプラグ解除されたことが記録されます。まだCDBの一部であるため、プラグ解除されたPDBはCDB全体のRMANバックアップに含まれています。このようなバックアップは、今後必要になるときに備えてプラグ解除されたPDBをアーカイブするための便利な方法となります。PDBはプラグ解除する前に閉じる必要があります。CDBからPDBをプラグ解除すると、プラグ解除されたPDBはマウント モードになります。

PDBをプラグ解除する手順:

ソースPDBの状態を確認します

 sql> show pdbs;

      CON_ID   CON_NAME    OPEN MODE      RESTRICTED

          2    PDB$SEED       READ ONLY   NO

          3    PDB1           READ WRITE  NO

ソースPDBが読み取り/書き込みモードである場合は、PDBの状態をMOUNTEDに変更する必要があります。

sql> alter pluggable database PDBNAME close instances=all;

ルート コンテナーに接続し、次のコマンドを実行します

sql> alter pluggable database pdb1 unplug into /u01/app/oracle/pdb1.xml’;

ここでは、「/u01/app/oracle」ディレクトリに「pdb1.xml」メタデータ ファイルを作成します。

XMLメタデータ ファイルを使用して、PDBを以下にプラグすることができます。

3.1. 同じCDB

3.2. リモートCDB

CREATE PLUGGABLE DATABASE文を使用して、PDBをCDBにプラグし、さまざまな句を使用してXMLファイルを指定することができます。

以下は、さまざまな種類の句です。

COPY句なしでSOURCE_FILE_NAME_CONVERT句を使用:
SOURCE_FILE_NAME_CONVERT:XMLファイルに現在のファイルの場所が示されていない場合、この句を使用できます。XMLはファイルが「+DATA」にあることを示していますが、実際のファイルは「+DATA1」にあります。

Source_file_name_convert = (‘+DATA’,’+DATA1’)

+DATA= string1   +DATA1=string2

ここで、「string1」ファイル名パターンが「string2」ファイル名パターンに置き換えられます。

2.       PATH_PREFIX句、COPY句、FILE_NAME_CONVERT句の使用:

PATH_PREFIX:この句は、データファイルの場所の絶対パスを指定するために使用されます。

FILE_NAME_CONVERT:ファイルがターゲットの場所にない場合で、そのファイルをPDB作成中にコピーまたは移動する場合に、この句を使用します。

3.       FILE_NAME_CONVERT句、MOVE句、SOURCE_FILE_NAME_CONVERT句の使用:

XMLファイルが現在のファイルの場所を記述していないため、ソースファイル名の変換が必要です。例:XMLファイルはファイルが「+DATA」にあることを示していますが、ファイルは「/u01/app」にあります。

ファイルを「/u01/app」から「+DATA1」に移動するためにファイル名変換はが必要です。

3.1. プラグ解除したPDBの同じCDBへのプラグ:

PDBをCDBからドロップしてから、そのPDBを同じCDBにプラグして戻す必要があります。

 さまざまな方法で、XMLファイルを使用してプラグ可能なデータベースを作成します。

a)NOCOPY法

sql> create pluggable database pdb1 using ‘/u01/app/oracle/pdb1.xml’ nocopy;

b)COPY法

sql> create pluggable database pdb1 using ‘/u01/app/oracle/pdb1.xml’ copy file_name_convert=(‘+DATA/pdb1/’,’+DATA1’/pdb1/’);

c)AS CLONE MOVE法

sql> create pluggable database pdb1 as clone using ‘/u01/app/oracle/pdb1.xml’ move file_name_convert=(‘+DATA/pdb1/’,’+DATA1’/pdb1/’);

3.2プラグ解除されたPDBのリモートCDBへのプラグ:

前提条件:

A)同じエンディアン形式である必要があります。

B)同じデータベース オプション セットがインストールされている必要があります。

ソース:

1.   PDBをプラグ解除した後、XMLをターゲットの場所に転送し、「ASMCMD cp」または「DATA_FILE_NAME_CONVERT」コマンドを使用して、ディスクグループ(+DATA)からOSの場所(/home/)にデータベース ファイルを転送します。

2.   ソースからターゲットOSの場所にデータベース ファイルを転送します。 

ターゲット:

ソースからXMLとデータベース ファイルを取得したら、DBMS_PDB.CHECK_PLUG_COMPATIBILITY関数を使用して、プラグ解除されたPDBがTARGET CDBと互換性があるかどうかを判断します。

「YES」が出力された場合は、PDBに互換性があります。

「NO」が出力された場合は、PDBに互換性がないため、PDB_PLUG_IN_VIOLATIONSビューでエラーがないか確認します。

リモートPDBの作成中に、セクション3から必要な句を選択します。

例:sql> create pluggable database PDBNAME using ‘/home/oracle/pdbname.xml’

      Source_file_name_convert = (‘+SOURCE_DATA’,’/home/oracle/datafiles’)

      Move

      File_name_convert = (‘/home/oracle/datafiles’,’+TARGET_DATA’);

説明:XMLファイルは、ASMディスクでのPDBデータファイルの場所を指定しますが、実際のファイルは「/home/oracle」に存在します。SOURCE_FILE_NAME_CONVERT句を使用すると、ファイル名パターンを置換して実際のソースの場所を指定できます。FILE_NAME_CONVERT句を使用すると、データをOSの場所からASMディスクに移動できます。

4.12c-非cdbのPDBへの移行:

このホワイトペーパーを参照してください。
Article Properties
Article Number: 000146520
Article Type: Solution
Last Modified: 21 Feb 2021
Version:  3
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.