English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

ORACLE 12C PDBの保守の基本的な知識紹介

まず基本的な使い方について説明します:
まず11G前に実行する
conn / as sysdba;
create user test identified by test;

ORA-65096: 公用ユーザー名またはロール名が無効です。

公式ドキュメントを確認すると、「一般ユーザーを作成しようとするときは、C##またはc##で始まる必要があります」とあります。この時、心に疑問が湧いてきます。一般ユーザーとは何ですか?とりあえず成功したことを考えてみましょう。
create C##user test identified by test;
作成成功

SQL> show con_name;

CON_NAME
------------------------------
CDB$ROOT

select con_id, dbid, NAME, OPEN_MODE from v$pdbs;


CON_ID DBID NAME OPEN_MODE

---------- ---------- ------------------------------ ----------

2 4066409480 PDB$SEED READ ONLY

3 2270995695 PDBORCL MOUNTED

SQL> alter session set container=PDBORCL;
その場合、create user test identified by test;でユーザーを作成することで十分です。

CDBとPDBはORACLE 12Cの非常に明るい新しい機能は、彼らの導入により、伝統的なORACLEデータベース管理の理念が多く変わりました。ここでは、cdbとpdbの管理方法の基本的な部分を挙げました。
cdbとpdbの関係図

ORACLE 12Cバージョン

SQL> select * from v$version;
バナー                                        CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64ビット プロダクション       0
PL/SQL リリース 12.1.0.1.0 - 生産                          0
CORE  12.1.0.1.0 プロダクション                            0
TNS for Linux: バージョン 12.1.0.1.0 - 生産                      0
NLSRTL バージョン 12.1.0.1.0 - 生産                          0

生産を開始/終了します

SQL> startup
ORACLEインスタンスが起動しました。
全体システムグローバルエリア 597098496 バイト
固定サイズ         2291072 バイト
可変サイズ       272632448 バイト
データベースバッファ     314572800バイト
リドデータバッファ        7602176 バイト
データベースがマウントされました。
データベースがオープンしました。
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
  CON_ID    DBID NAME              OPEN_MODE
---------- ---------- ------------------------------ ----------
     2 4048821679 PDB$SEED            READ ONLY
     3 3313918585 PDB1              MOUNTED
     4 3872456618 PDB2              MOUNTED
SQL> alter PLUGGABLE database pdb1 open;
プラグゲイブルデータベースが変更されました。
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
  CON_ID    DBID NAME              OPEN_MODE
---------- ---------- ------------------------------ ----------
     2 4048821679 PDB$SEED            READ ONLY
     3 3313918585 PDB1              READ WRITE
     4 3872456618 PDB2              MOUNTED
SQL> alter PLUGGABLE database pdb1 close;
プラグゲイブルデータベースが変更されました。
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
  CON_ID    DBID NAME              OPEN_MODE
---------- ---------- ------------------------------ ----------
     2 4048821679 PDB$SEED            READ ONLY
     3 3313918585 PDB1              MOUNTED
     4 3872456618 PDB2              MOUNTED
SQL> alter PLUGGABLE database all open;
プラグゲイブルデータベースが変更されました。
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
  CON_ID    DBID NAME              OPEN_MODE
---------- ---------- ------------------------------ ----------
     2 4048821679 PDB$SEED            READ ONLY
     3 3313918585 PDB1              READ WRITE
     4 3872456618 PDB2              READ WRITE
SQL> alter PLUGGABLE database all close;
プラグゲイブルデータベースが変更されました。
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
  CON_ID    DBID NAME              OPEN_MODE
---------- ---------- ------------------------------ ----------
     2 4048821679 PDB$SEED            READ ONLY
     3 3313918585 PDB1              MOUNTED
     4 3872456618 PDB2              MOUNTED
SQL> alter session set container=pdb1;
セッションが変更されました。
SQL> startup
プラグゲイブルデータベースがオープンしました。
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
  CON_ID    DBID NAME              OPEN_MODE
---------- ---------- ------------------------------ ----------
     3 3313918585 PDB1              READ WRITE

pdbの管理はcdbで行うことも、pdbで行うこともできます。cdbで行う場合、PLUGGABLEキーワードが必要です。pdbの場合、通常のデータベースと同じように直接行います。

pdbへのログイン

[oracle@xifenfei ~]$ lsnrctl status
LSNRCTL for Linux: バージョン 12.1.0.1.0 - Production on 12-MAY-2013 08:07:02
著作権 (c) 1991, 2013, Oracle. 全ての権利は保留です。
接続先 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xifenfei)(PORT=1521)))
LISTENERのSTATUS
------------------------
エイリアス           LISTENER
バージョン          TNSLSNR for Linux: バージョン 12.1.0.1.0 - 生産
開始日        11-MAY-2013 18:30:54
Uptime          0日 13 hr. 36 最小. 8 sec
トレースレベル        無
セキュリティ         ON: ローカルOS認証
SNMP           無
リスナーパラメータファイル  /u01/app/grid/product/12.1/network/admin/listener.ora
Listener Log File     /u01/app/grid/diag/tnslsnr/xifenfei/listener/alert/log.xml
Listening Endpoints Summary...
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xifenfei)(PORT=1521)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=xifenfei)(PORT=5500))
(Security=(my_wallet_directory=/u01/oracle/12.1/db_1/admin/cdb/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "+ASM" has 1 instance(s).
 Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "cdb" has 1 instance(s).
 Instance "cdb", status READY, has 1 handler(s) for this service...
Service "cdbXDB" has 1 instance(s).
 Instance "cdb", status READY, has 1 handler(s) for this service...
Service "pdb1" has 1 instance(s).
 Instance "cdb", status READY, has 1 handler(s) for this service...
Service "pdb2" has 1 instance(s).
 Instance "cdb", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@xifenfei ~]$ tnsping pdb1
TNS Ping Utility for Linux: Version 12.1.0.1.0 - Production on 12-MAY-2013 08:07:09
著作権 (c) 1997, 2013, Oracle. 全ての権利は保留です。
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xifenfei
(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pdb1)))
OK (20 msec)
[oracle@xifenfei ~]$ sqlplus sys/xifenfei@pdb1 as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Sun May 12 08:08:02 2013
著作権 (c) 1982, 2013, Oracle. 全ての権利は保留です。
接続先:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64ビット生産
パーティションング、自動ストレージ管理、OLAP、高度な分析
そして Real Application Testing オプション
SQL> show con_name;
CON_NAME
------------------------------
PDB1
[oracle@xifenfei ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Sun May 12 08:09:14 2013
著作権 (c) 1982, 2013, Oracle. 全ての権利は保留です。
接続先:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64ビット生産
パーティションング、自動ストレージ管理、OLAP、高度な分析
そして Real Application Testing オプション
SQL> alter session set container=pdb1;
セッションが変更されました。
SQL> show con_name;
CON_NAME
------------------------------
PDB1

pdb は alter session container を使ってアクセスすることもできますし、tns モードで直接ログインすることもできます

ユーザーを作成

SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
  CON_ID    DBID NAME              OPEN_MODE
---------- ---------- ------------------------------ ----------
     2 4048821679 PDB$SEED            READ ONLY
     3 3313918585 PDB1              READ WRITE
     4 3872456618 PDB2              MOUNTED
SQL> create user xff identified by xifenfei;
ユーザー xff を xifenfei で識別
      *
ERROR at line 1:
ORA-65096: invalid common user or role name
SQL> !oerr ora 65096
65096, 00000, "invalid common user or role name"
// *原因: 一般的なユーザーやロールの名前で作成しようと試みました
//     これは一般的なユーザーやロールには有効ではありません。さらに、
//     ユーザー名とロール名の通常のルール、一般的なユーザーとロール 
//     名前はC##またはc##で始まり、ASCII文字のみで構成されなければなりません。 
//     文字。
// *アクション: 有効な一般的なユーザーやロール名を指定してください。
//
SQL> create user c##xff identified by xifenfei;
User created.
SQL> SELECT USERNAME,CON_ID,USER_ID FROM CDB_USERS WHERE USERNAME='C##XFF';
USERNAME    CON_ID  USER_ID
---------- ---------- ----------
C##XFF       1    103
C##XFF       3    104
SQL> alter session set container=pdb1;
セッションが変更されました。
SQL> show con_name
CON_NAME
------------------------------
PDB1
SQL> create user xff identified by xifenfei;
User created.
SQL> create user c##abc identified by xifenfei;
create user c##abc identified by xifenfei
      *
ERROR at line 1:
ORA-65094: 无効なローカルユーザーやロール名

ユーザーの作成はデフォルトでcontainer=allであり、cdbではグローバルユーザー(C##で始まる)を作成することができます。このユーザーはcdbおよびすべてのpdbで作成されます(ただし、pdb内のグローバルユーザーは別途権限を付与する必要があります。pdb内ではローカルユーザーのみを作成できます。

ユーザー権限付与

SQL> grant connect to c##xff;
権限付与に成功しました。
SQL> select GRANTEE,con_id from cdb_ROLE_PRIVS where GRANTED_ROLE='CONNECT' AND GRANTEE='C##XFF';
GRANTEE              CON_ID
------------------------------ ----------
C##XFF                 1
SQL> grant resource to c##xff container=all;
権限付与に成功しました。
SQL> select GRANTEE,con_id from cdb_ROLE_PRIVS where GRANTED_ROLE='RESOURCE' AND GRANTEE='C##XFF';
GRANTEE              CON_ID
------------------------------ ----------
C##XFF                 1
C##XFF                 3

ユーザー権限はデフォルトで、現在のcontainerにのみ与えられます。cdbではcontainer=allを指定することもできます。すべてのオープンなpdbに存在するユーザーに対して、権限を与えることができます。

パラメータの変更

SQL> alter system set open_cursors=;500 container=all;
System altered.
SQL> conn sys/xifenfei@pdb1 as sysdba
Connected.
SQL> show parameter open_cursors;
NAME                 TYPE    VALUE
------------------------------------ ----------- ------------------------------
open_cursors             整数   500
SQL> alter system set open_cursors=;100;
 alter system set open_cursors=;100
*
ERROR at line 1:
ORA-01219: database or pluggable database not open: queries allowed on fixed
tables or views only
SQL> alter database open;
Database altered.
SQL> alter system set open_cursors=;100;
System altered.
SQL> show parameter open_cursors;
NAME                 TYPE    VALUE
------------------------------------ ----------- ------------------------------
open_cursors             整数   100
SQL> conn / as sysdba
Connected.
SQL> show parameter open_cursors;
NAME                 TYPE    VALUE
------------------------------------ ----------- ------------------------------
open_cursors             整数   500

ここでは、cdbで変更すると、pdbがそれを継承するのを見ることができます。pdbで変更すると、pdbがcdbから継承したパラメータの意味が上書きされます。

声明:本文の内容はインターネットから取得され、著作権者に帰属します。インターネットユーザーにより自発的に貢献し、自己でアップロードされた内容であり、本サイトは所有権を有しないものであり、人工編集は行われていません。著作権侵害を疑われる内容がある場合は、メールを送信して:notice#oldtoolbag.com(メール送信時は、#を@に変更してください)で通報してください。関連する証拠を提供し、一旦確認されると、本サイトは即座に侵害を疑われるコンテンツを削除します。

おすすめ