Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Enjoy members-only rewards and discounts
  • Create and access a list of your products
  • Manage your Dell EMC sites, products, and product-level contacts using Company Administration.

Oracle RAC 12cR1でプラガブル データベースに接続する方法を教えてください。

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

This article applies to   This article does not apply to 

Symptoms

適用対象:

Oracleデータベース - Oracle 12cR1 12.1.0.1.0 Enterprise Edition

オペレーティング システム – Oracle Linux 6.4(カーネル2.6.39-400.109.17.1.el6uek.x86-64)および                                          
Red Hat Enterprise Linux(カーネル2.6.32-431.el6.x86_64)

ストレージ プラットフォーム - Dell EqualLogic PS 5000およびDell EqualLogic PS 6110

問題:

Oracle RAC 12cR1でプラガブル データベースに接続する方法

解決策:

プラガブル データベース(PDB)との接続を確立するには、次の4つの方法があります。
  1. pdb名と同じ名前のデフォルト サービスを使用する方法。これはデータベース ソフトウェアによって自動的に作成されます。
  2. ユーザー定義サービスを使用する方法。SRVCTLユーティリティーでpdbプロパティを使用して作成します。これによりサービスをプラガブル データベースに関連付けます。
  3. alter sessionコマンドを使用して、コンテナーを目的のコンテナーに設定する方法
  4. Enterprise Manager Expressを使用する方法
 1. PDBへの接続にデフォルト サービスを使用する

デフォルト サービスを使用してPDBとの接続を確立するには、次の手順を実行する必要があります。
  •    tnsnames.oraファイルにエントリーを作成する必要があります。ファイルにデータベースのアドレスを定義して、データベースとの接続を確立します。
  •    pdbのステータスをマウント済みから読み取り/書き込みモードに変更する必要があります。
 tnsnames.oraファイルにエントリーを作成する:

Oracle RAC 12cの場合、プラガブル データベース名と同じ名前でデフォルト サービスが自動的にデータベース ソフトウェアによって作成されますが、tnsnames.oraファイルは1エントリーのみで生成され、グローバル データベースに属します。例えば、2ノードのOracle RAC 12cの場合、cpdbはグローバル データベースで、pdb1とpdb2は作成された2つのプラガブル データベースで、cpdb1とcpdb2は2つのインスタンスです。tnsnames.oraファイルのデフォルト エントリーは次のとおりです。

CPDB =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = cpdb.dbase.lab)

   )

)

したがって、以下に示すように、tnsnames.oraファイル内のプラガブル データベースのデフォルト サービス名に関連するエントリーを作成する必要があります。

PDB1 =

(DESCRIPTION =                                                             

   (ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = pdb1.dbase.lab)

   )

)

PDB2 =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = pdb2.dbase.lab)

   )

)

プラガブル データベースのステータスを変更する:

PDBが作成されると、デフォルトでは、open_modeは「Mounted」のみです。これは、次のように確認できます。

SQL> select name, open_mode from v$pdbs;

NAME                           OPEN_MODE
PDB$SEED                       READ ONLY

PDB1                           MOUNTED

PDB2                           MOUNTED

次のコマンドを実行すると、すべてのプラガブル データベースが読み取り/書き込みモードで開きます。

SQL> Alter pluggable database all open;

その後、次のように、sqlplusを使用してデータベースとの接続を確立できます。

[oracle@node1 bin]$ sqlplus sys/oracle@pdb1 as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Tue Oct 8 11:23:32 2013

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

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options

 2. PDBへの接続にユーザー定義サービスを使用する

前述のデフォルト サービスは、管理目的でのみ使用し、アプリケーションには使用しないでください。アプリケーションには必ずユーザー定義のサービスを使用してください。ユーザー定義のサービスはアプリケーションの要件に合わせてカスタマイズすることができるためです。ユーザー定義のサービスを使用して接続を確立するには、次の手順に従います。
  1. SRVCTLユーティリティーでPDBプロパティを使用してデータベース サービスを作成します
  2. 作成したサービス用のtnsnames.oraファイルにエントリーを作成します
  3. サービスの開始
  4. pdbプロパティを付けてサービスを使用してデータベースを接続します(ステップaで作成)
a. SRVCTLユーティリティーを使用してPDBプロパティでデータベース サービスを作成する

SRVCTLユーティリティーを使用して次のコマンドを実行し、プラガブル データベースpdb1に関連付ける2つのデータベース サービスhr1とsales1を作成します。

[[oracle@node1 bin]$ srvctl add service -db cpdb -service hr1 -pdb pdb1 -preferred cpdb1 -available cpdb2

[oracle@node1 bin]$ srvctl add service -db cpdb -service sales1 -pdb pdb1 -preferred cpdb1 -available cpdb2

pdbプロパティは、データ ディクショナリ ビューのall_servicesから表示できます。

SQL> SELECT NAME, PDB FROM all_services;

 NAME                       PDB

pdb1.dbase.lab             PDB1

hr1                        PDB1

sales1                     PDB1

$ srvctl config service –db <databasename>コマンドは、使用可能なサービス一覧も表示します。

b. 作成したデータベース サービスのtnsnames.oraファイルにエントリーを作成する

次のように、hrアプリケーションとsalesアプリケーションがそれぞれプラガブル データベースpdb1に接続するために使用できる、HR_PDB1とSALES_PDB1のネット サービス名を作成できます。

HR_PDB1 =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = hr1.dbase.lab)

   )

)

SALES_PDB1 =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = sales1.dbase.lab)

   )

)

c. サービスを開始する

[oracle@nsnode1 bin]$ srvctl status service -db cpdb -service hr1

Service hr1 is not running

 [oracle@nsnode1 bin]$ srvctl start service -db cpdb -service hr1

pdbに関連付けられたサービスを開始すると、自動的にpdbが読み取り書き込みモードで開きます。

d.データベース サービスに接続する

ユーザーは、pdbプロパティを持つデータベース サービスを使用してPDBに接続します。

例えば、SYSユーザーは、pdb1に関連付けられているデータベース サービスHR_PDB1を使用してpdb1に接続できます。

SQL> connect sys/oracle@HR_PDB1 AS SYSDBA

Connected.

SQL> SHOW CON_ID;

 CON_ID

3

SQL> SHOW CON_NAME;

CON_NAME

PDB1

3.PDBへの接続にAlter Sessionコマンドを使用する

デフォルトでは、RACインスタンスに接続する場合は、CDB$ROOTに接続します。各RACインスタンスは、全体としてPDBを開き、1つのシステム イメージを使用できます。セッションをpdbに変更する場合は、セッションを変更して、コンテナーを目的のコンテナーに設定します。show con_nameクエリーを使用すると、現在のコンテナ名を確認できます。

[oracle@node1 bin]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Wed Oct 9 13:56:27 2013

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

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Advanced Analytics and Real Application Testing options

SQL> show con_name;

CON_NAME

CDB$ROOT

SQL> ALTER SESSION SET CONTAINER = PDB1;

Session altered.

SQL> SHOW CON_NAME;

CON_NAME

PDB1

 SQL> ALTER SESSION SET CONTAINER = PDB2;

Session altered.

SQL> SHOW CON_ID;

CON_ID

4

SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;

Session altered.

 SQL> SHOW CON_NAME;

CON_NAME

CDB$ROOT

コンテナIDの説明は次のとおりです。
コンテナーID 説明
0 CDB全体
1 CDB$ROOT
2 PDB$SEED
3~254 PDB
表1:  コンテナIDの説明

この特定の例では、con_id 3はpdb1、con_id 4はpdb2を表します。

[grid@node1 bin]$ echo $ORACLE_HOME

/u01/app/12.1.0/grid

 [grid@node1 bin]$ echo $ORACLE_SID

+ASM1

[grid@node1 bin]$ sqlplus / as sysdba

 SQL*Plus: Release 12.1.0.1.0 Production on Wed Oct 9 13:51:39 2013

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

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production

With the Real Application Clusters and Automatic Storage Management options

 SQL> show con_id;

CON_ID

0

 SQL> show con_name;

 CON_NAME

Non Consolidated

4. PDBへの接続にENTERPRISE Manager (EM) Expressを使用する

Database Configuration Assistant (DBCA)を使用してデータベースを作成すると、完了時にEM ExpressのURLがDBCAによって提供されます。URLの形式は、http://<hostname>:p ortnumber/emで、デフォルトのポートIDは5500です。

EM Expressにアクセスするには、そのURLに進む前に、次のSQLステートメントを発行して、EM Expressのポートを確認する必要があります。

SQL> SELECT dbms_xdb_config.gethttpsport from dual;

GETHTTPSPORT

       5500

出力が上記の通りである場合は、DBCAによって表示されるURLに接続できます。

ただし、出力が次のようにnullの場合は、

GETHTTPSPORT

PL/SQLプロシージャのDBMS_XDB_CONFIG.SETHTTPSPORTを実行して、EM ExpressのHTTPSポートを設定する必要があります。例:

SQL> exec dbms_xdb_config.sethttpsport(5500);

PL/SQL手順が正常に完了しました。

この後、URLを使用してEM Expressへのアクセスを試行します。

次に示すように、EM ExpressにHTTPポートを構成することもできます。

SQL> select dbms_xdb_config.gethttpport from dual;

 SQL> exec dbms_xdb_config.sethttpport(8080);

PDBにEM Expressポートを設定するには、コンテナをそれぞれのPDBに変更し、そのコンテナのポートを設定するためのPL/SQL手順を実行する必要があります。

これを行った後、次のように、cpdb、pdb1、pdb2のHTTPポートを確認できます。

SQL> select dbms_xdb_config.gethttpport from dual;

GETHTTPPORT

       8080

SQL> alter session set container = pdb1;

Session altered.

SQL> select dbms_xdb_config.gethttpport from dual;

 GETHTTPPORT

       8081

SQL> alter session set container = pdb2;

Session altered.

SQL> select dbms_xdb_config.gethttpport from dual;

GETHTTPPORT

       8082 
SLN310924_en_US__1icon メモ: 上記を実行してもEM Express URLに接続できない場合は、リスナー コントロールをgridユーザーとして再ロードしてから、もう一度試してください。
Article Properties
Article Number: 000146485
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.
Article Properties
Article Number: 000146485
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.