ラベル OracleDatabase の投稿を表示しています。 すべての投稿を表示
ラベル OracleDatabase の投稿を表示しています。 すべての投稿を表示

2015年10月20日火曜日

Linux 版 Oracle Database 同梱の SQL Developer を X で起動してみる。

Oracle Database に接続するとき、
同梱のクライアントとして sqlplus を使うことが多いと思います。
GUI のクライアントとしては、Oracle SQL Developer がありますが、
これも Oracle Database に同梱されています。
Linux 版の Oracle Database にも同梱されています。
※SQL Developer は単体でもダウンロードできます。

今回は、Oracle Linux 6.7 に、
Oracle Database 12c  (12.1.0.2) をインストール済みです。
さりげなく ORACLE_HOME 配下に sqldeveloper  ディレクトリがあります。
[oracle@db01 ~]$ cat /etc/oracle-release
Oracle Linux Server release 6.7
[oracle@db01 ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/12.1.0/dbhome_1
[oracle@db01 ~]$ ls $ORACLE_HOME/
OPatch      cfgtoollogs  demo           javavm  network      oui       rest          suptools
QOpatch     clone        diagnostics    jdbc    nls          owm       root.sh       sysman
R           crs          dmu            jdk     oc4j         perl      scheduler     ucp
addnode     css          dv             jlib    odbc         plsql     slax          usm
apex        ctx          has            ldap    olap         plugins   sqldeveloper  utl
assistants  cv           hs             lib     opmn         precomp   sqlj          wwg
bin         dbs          install        log     oraInst.loc  racg      sqlpatch      xdk
ccr         dc_ocm       instantclient  md      oracore      rdbms     sqlplus
cdata       deinstall    inventory      mgw     ord          relnotes  srvm

すでに xming (X Window サーバ)をインストール~起動している Windows PC (192.168.56.1)で、
SQL Developper を起動してみます。
[oracle@db01 ~]$ cd $ORACLE_HOME/sqldeveloper/sqldeveloper/bin/
[oracle@db01 bin]$ export DISPLAY=192.168.56.1:0
[oracle@db01 bin]$ ./sqldeveloper &

2015年10月18日日曜日

Oracle Database 12c を単純にサイレントインストール。

Oracle Database 12c のサイレントインストールをしてみたので、記録を残してみようと思います。
今回は下記のような流れです。
  1. 環境準備。Oracle Linux インストール ~ RPM 導入。
  2. Oracle Database のソフトウェアをサイレントインストール。
  3. DB を DBCA のサイレントモードで作成。
  4. 起動確認。
DB も create database ではなく
あえてサイレントモードの DBCA で作成してみました。

2014年9月25日木曜日

Oracle 12c PDB の RAC での見え方。

何となくよく聞かれるのですが、
RAC 環境でも PDB を作成できます。
その場合、RAC のそれぞれの DB インスタンスから PDB が見えるようになります。

Oracle Database 12c の PDB は、RAC 環境ではこうなります。
今回は、2ノード RAC です。
[grid@dsva01 ~]$ crsctl stat res ora.rdgdb.db -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.rdgdb.db
      1        ONLINE  ONLINE       dsva01                   Open,STABLE
      2        ONLINE  ONLINE       dsva02                   Open,STABLE
--------------------------------------------------------------------------------

コンテナ DB(CDB)は1つで、DB サーバは 2ノードで、2 DB インスタンスです。
[oracle@dsva01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on 木 9月 25 08:45:24 2014
Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
に接続されました。
SQL> col host_name for a10
SQL> select inst_id,host_name,instance_name,status from gv$instance;
   INST_ID HOST_NAME  INSTANCE_NAME    STATUS
---------- ---------- ---------------- ------------
         1 dsva01     rdgdb1           OPEN  ★2インスタンス
         2 dsva02     rdgdb2           OPEN
SQL> select inst_id,name,cdb,dbid from gv$database order by 1;
   INST_ID NAME      CDB       DBID
---------- --------- --- ----------
         1 RDGDB     YES 3513886885  ★CDBは1つ。DBID が同じ。
         2 RDGDB     YES 3513886885

PDB は、2つ作ってあります。
シード PDB (テンプレート用 PDB)も合わせると3つあります。
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 TESTDB1                        READ WRITE NO
         4 TESTDB2                        READ WRITE NO

それぞれの RAC ノードから、PDB が見えます。
DBID が同じ PDB が、インスタンス1 と 2 それぞれから見えています。
SQL> select inst_id,name,dbid from gv$pdbs order by 2,1;
   INST_ID NAME                                 DBID
---------- ------------------------------ ----------
         1 PDB$SEED                       1284832173
         2 PDB$SEED                       1284832173
         1 TESTDB1                         660856108
         2 TESTDB1                         660856108
         1 TESTDB2                         508821250
         2 TESTDB2                         508821250
6行が選択されました。

以上、RAC 環境での PDB の見え方でした。

2014年9月1日月曜日

Oracle で NFS+ASM にデータベースファイルを格納する。

あまり話題になることはないかもしれませんが、
Oracle Database で NFS 領域にデータファイルを配置する場合も
ASM が使えたりします。
Oracle Grid Infrastructureインストレーション・ガイド
11gリリース2 (11.2) for Linux
3.3.1.2
Oracle ASMで使用するためのNASデバイスでのファイルの作成
http://docs.oracle.com/cd/E16338_01/install.112/b56271/storage.htm#CFACJAGB
NFS 領域に直接データベースのファイルを配置する場合と、
NFS かつ ASM にデータベースのファイルを配置する場合を比較すると
下記のような感じになります。
※とりあえず、データファイルだけ書きました。



NFS に直接データファイルを配置する場合、
たとえば下記のように見えます。
※例では、NFS を /u02 配下にマウントしています。
[grid@dbsv01 ~]$ df -h /u02
Filesystem                Size  Used Avail Use% Mounted on
192.168.60.59:/nfs/dbf01   20G  7.5G   12G  41% /u02



NFS で ASM を使用する場合、
dd コマンドで「ゼロ埋込みファイル」を作成して
それを ASM ディスクとして使用します。

余分なレイヤが追加されるようにも見えますが、
NFS で表領域にファイルをオンライン追加できたり
NFS サーバを複数並べてストレージ筐体レベルで冗長化できたり
するので、メリットがゼロというわけではないとは思います。



おそらく本番環境でやることはないと思いますが、
1つのデータベースで、
NFS 上の OS ファイルと ASM ファイル両方を利用することもできます。
SQL> col TABLESPACE_NAME for a15
SQL> col FILE_NAME for a32
SQL> select TABLESPACE_NAME,FILE_NAME from dba_data_files;

TABLESPACE_NAME FILE_NAME
--------------- --------------------------------
USERS           +DG_NADB/nadb/users01.dbf
UNDOTBS1        +DG_NADB/nadb/undotbs01.dbf
SYSAUX          +DG_NADB/nadb/sysaux01.dbf
SYSTEM          +DG_NADB/nadb/system01.dbf
EXAMPLE         +DG_NADB/nadb/example01.dbf
UNDOTBS2        +DG_NADB/nadb/undotbs02.dbf
TS_TEST         /u02/oradata/nadb/ts_test01.dbf


7行が選択されました。

こんなイメージです。



ちなみに当然ながら、1台のサーバ(OS)に
ASM を利用している DB と
ASM 利用していない DB を同居させることもできます。

以上、Oracle の NFS+ASM の話でした。

2014年7月15日火曜日

Oracle Database Vault どうですか。

最近、DB データへのアクセスについて事件があったようです。
なんとなく、Oracle Database で有名な「SYS で何でもできちゃう」についての制御ができる
Oracle Database Vault(DBV)がウケそうな気がしたので
簡単に紹介してみようと思います。

DBV を有効化するには

DBV は、Oracle Database の Enterprise Edition のオプション機能です。
DBMS のインストール中などに有効化できます。

DBV では SYS 外にも「DBV 管理者」などの役割のユーザを用意することで、
いわゆる 職掌分離 ができます。
DBCA で DB 作成するときに、下記のような感じで
DBV 管理用のユーザを作成することができます。




DBV が有効化されている環境だと どうなるか

DBV が有効化されると、
今までの権限やロールといった概念の他に
レルム と呼ばれる、スキーマオブジェクトと権限をまとめるような概念が登場します。
SYS をアプリ用データに関わるレルムに参加させないことによって、
DB 管理者が本来の DB 管理業務では見るべきではないデータに
アクセスできないようになります。

まず、SYS でログインしてユーザを作成しようとしてみます。
DB に表領域の作成はできますが、
SYS なのに新規ユーザを作成することはできなくなっています。
[oracle@db03 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on 火 7月 15 00:45:36 2014

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


Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
に接続されました。
SQL> show user
ユーザーは"SYS"です。
SQL> create tablespace ts_user01 datafile '/u02/oradata/dbvdb/ts_user01.dbf' size 10M;

表領域が作成されました。

SQL> create user user01 identified by "********";
create user user01 identified by "********"
                                 *
行1でエラーが発生しました。:
ORA-01031: 権限が不足しています。

ユーザ管理は、DBV 管理者の役割になっています。
DBV 管理者であれば、ユーザ作成や、権限設定ができます。
※今回は、DBV の管理者として DBVADM というユーザを作成しています。

DBV の管理者はすべての管理操作が許可されているではないので
役割を越えた権限設定などをしようとするとエラーになります。
SQL> connect dbvadm
パスワードを入力してください:
接続されました。
SQL> show user
ユーザーは"DBVADM"です。
SQL> create user user01 identified by "********";

ユーザーが作成されました。

SQL> alter user user01 default tablespace ts_user01;

ユーザーが変更されました。

SQL> alter user user01 quota unlimited on ts_user01;

ユーザーが変更されました。

SQL> grant connect to user01;

権限付与が成功しました。

SQL> grant create table to user01;
grant create table to user01
*
行1でエラーが発生しました。:
ORA-47410: GRANT(CREATE TABLEに対する)のレルム違反です

SYS ユーザで、 create table 権限を付けておきます。
SQL> connect / as sysdba
接続されました。
SQL> show user
ユーザーは"SYS"です。
SQL> grant create table to user01;

権限付与が成功しました。

作成した USER01 のオブジェクトはレルムを作成して保護します。
下記のような DBV 専用の Web UI から設定することができます。
※DB Control とは微妙に URL が異なります。(/em が /dva になる)



細かい設定は省略・・・
Database 11g R2 では、普通の EM っぽい UI です。



レルムで保護した USER01 スキーマに
SYS でテーブル作成しようとしてもエラーになりました。
SQL> connect / as sysdba
接続されました。
SQL> show user
ユーザーは"SYS"です。
SQL> create table user01.tab1 (c1 number, c2 varchar2(10));
create table user01.tab1 (c1 number, c2 varchar2(10))
*
行1でエラーが発生しました。:
ORA-47401: CREATE TABLE(USER01.TAB1に対する)のレルム違反です
しかし、USER01 ユーザであれば、
ちゃんとテーブル作成して、参照もできます。
そして SYS では、USER01 のテーブルを参照できなくなっています。
SQL> connect user01
パスワードを入力してください:
接続されました。
SQL> show user
ユーザーは"USER01"です。
SQL> create table user01.tab1 (c1 number, c2 varchar2(10));

表が作成されました。

SQL> insert into user01.tab1 values(1,'himitsu');

1行が作成されました。

SQL> commit;

コミットが完了しました。

SQL> select * from user01.tab1;

        C1 C2
---------- ----------
         1 himitsu

SQL> connect / as sysdba
接続されました。
SQL> show user
ユーザーは"SYS"です。
SQL> select * from user01.tab1;
select * from user01.tab1
                     *
行1でエラーが発生しました。:
ORA-01031: 権限が不足しています。

このような感じで、SYS であっても不要なデータ参照ができないように
制御することができます。

ちなみに、上記のような SYS によるテーブル参照エラーも、
ちゃんと監査ログとして残すことができます。




ただし 設計が難しかったり、
当然ながら DB 運用の見直しも必要になったりということはあります・・・


ちなみに、マニュアルはこのあたりがわかりやすいと思います。

Oracle Database 2日でセキュリティ・ガイド 11g リリース2(11.2)
Oracle Database Vaultを使用した管理者のアクセスの制御
http://docs.oracle.com/cd/E16338_01/server.112/b56296/tdpsg_securing_data.htm#CIADFEAG

以上です。Oracle Database Vault の話でした。

2013年8月29日木曜日

ためしにOracle 12c RAC をインストールしてみて(DB編)

12c RAC を構築してみました。

RACインストール~DB作成の流れで、いくつか気づいたことを
ピックアップしてお伝えします。(まだ12cRACは試行錯誤なので…)

11gR2以降のRAC環境を構築するとき、
ざっくり、下記のような作業が必要になると思います。
  1. Grid Infrastructureのインストール
  2. データベース配置用のASMディスクグループの作成(ASMCAなどで)
  3. DBMS(RAC)をインストール
  4. DBを作成(リスナーも作成)

今回の話は、上記 2~です。
基本的には、手順的にも、インストーラ(OUI)の見ため的にも
12cは、11gR2とそんなに変わらない感じでした。
Grid Infraの感想はこちら・・・
ためしにOracle 12c RAC をインストールしてみて(Grid Infrastructure)

ASMCAについて

ASMのディスクグループを作成したりすることができる、GUIツールです。
これも、11gのころとあまり変わっていない気がします。






RACインストールについて

Real Application Clustersデータベースのインストールです。



だんだん、ソフトウェアの必要領域が増えています…
RACの新機能を試したい場合は、Enterprise Editionを選択します。



RACデータベースも、Singleと変わらず、役割ごとに指定できるOSグループが増えました。
ただし、すべてのユーザを分けるのが必須というわけではありません。




RACのDB作成(DBCA)

11gR2~のポリシー管理型RACデータベースは、12cでもあります。



PDB(プラガブル・データベース)を作成できます。いくつ作成するかも選べます。
ただし、ここで複数のPDBを作成すると、PDB名の先頭が同じになります。



クラスタ検証ユーティリティ(CVU)が定期実行できそうです。
インストール時の環境チェックくらいにしか使わないツールだと思っていましたが…
予期しない構成変更とかを検知できるのでしょうか?



データベースファイルの配置についての設定です。
ここで Grid Infra 導入時に作成したディスクグループ以外を選ぶ場合は、
事前にディスクグループを作成しておきます。(ASMCAやsqlplusなどで)
従来通りですが・・・何となく。



DB Vault と Label Securityの設定画面もあります。
DBVaultは、DB管理者に対するアクセス制限をできるツールで、
Lavel Security は DB版SELinuxみたいなものではないかと思っています。
また使ったことがないので、違ったらすみません…





ためしに、3ノードRACです。
[grid@sv12c01 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
ora.CRS_DG.dg
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
ora.DATA_DG.dg
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
ora.net1.network
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
ora.ons
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
ora.proxy_advm
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       sv12c02                  STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       sv12c03                  STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       sv12c01                  STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       sv12c01                  169.254.198.145 192.
                                                             168.14.141,STABLE
ora.asm
      1        ONLINE  ONLINE       sv12c01                  STABLE
      2        ONLINE  ONLINE       sv12c02                  STABLE
      3        ONLINE  ONLINE       sv12c03                  STABLE
ora.cvu
      1        ONLINE  ONLINE       sv12c01                  STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       sv12c01                  Open,STABLE
ora.oc4j
      1        ONLINE  ONLINE       sv12c01                  STABLE
ora.racdb.db
      1        ONLINE  ONLINE       sv12c03                  Open,STABLE
      2        ONLINE  ONLINE       sv12c02                  Open,STABLE
      3        ONLINE  ONLINE       sv12c01                  Open,STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       sv12c02                  STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       sv12c03                  STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       sv12c01                  STABLE
ora.sv12c01.vip
      1        ONLINE  ONLINE       sv12c01                  STABLE
ora.sv12c02.vip
      1        ONLINE  ONLINE       sv12c02                  STABLE
ora.sv12c03.vip
      1        ONLINE  ONLINE       sv12c03                  STABLE
--------------------------------------------------------------------------------

上記のora.racdb.dbリソースの順番が変なのは、ポリシーベースにしていろいろしていたら、
サーバ→インスタンスの対応がポリシーベースっぽくズレたためです。
SQL> col host_name for a10
SQL> select host_name,instance_name,status from gv$instance
  2  order by 1;

HOST_NAME  INSTANCE_NAME    STATUS
---------- ---------------- ------------
sv12c01    racdb_3          OPEN
sv12c02    racdb_2          OPEN
sv12c03    racdb_1          OPEN

ちなみに、これからRACの勉強をしたい場合は、現段階では
(12cよりは)情報が豊富な11gR2RACを題材としておくと良いのではないかと思いました。
11gR1→11gR2の時ほどの変化ではない&
しばらくはFlexでない従来形式のクラスタやASMが使われそうな気がしたので・・・

以上です。12cRACインストールしてみた話でした。

2013年8月23日金曜日

ためしにOracle 12c RAC をインストールしてみて(Grid Infrastructure)

ためしに、Grid Infrastructure 12c をインストールしてみました。
いくつか気づいたことをお伝えします。

Flex ASM 用のネットワークは、こんな感じで選択できます。
NICの用途選択画面で
ASMおよびプライベート」 と 「ASM」 という種類が増えていて、
Flex ASMにするにはどちらかを選択しておく必要があります。



上記のように選択した場合は、oifcfgコマンドでは下記のように見えます。
[grid@sv12c01 ~]$ oifcfg getif
eth0 192.168.4.0 global public
eth1 192.168.14.0 global cluster_interconnect
eth2 192.168.24.0 global asm

グリッド・インフラストラクチャ・管理リポジトリ
Grid Infrastructure管理用のインスタンス(-MGMTDB)が作成できます。



起動されるプロセスはこんな感じです。
[grid@sv12c01 ~]$ ps -ef | grep mdb_
grid 5201 1 0 19:41 ? 00:00:01 mdb_pmon_-MGMTDB
grid 5203 1 0 19:41 ? 00:00:01 mdb_psp0_-MGMTDB
grid 5207 1 1 19:41 ? 00:01:17 mdb_vktm_-MGMTDB
grid 5213 1 0 19:41 ? 00:00:00 mdb_gen0_-MGMTDB
grid 5215 1 0 19:41 ? 00:00:00 mdb_mman_-MGMTDB
grid 5219 1 0 19:41 ? 00:00:00 mdb_diag_-MGMTDB
grid 5221 1 0 19:41 ? 00:00:00 mdb_dbrm_-MGMTDB
grid 5223 1 0 19:41 ? 00:00:03 mdb_dia0_-MGMTDB
grid 5225 1 0 19:41 ? 00:00:00 mdb_dbw0_-MGMTDB
grid 5227 1 0 19:41 ? 00:00:01 mdb_lgwr_-MGMTDB
grid 5229 1 0 19:41 ? 00:00:02 mdb_ckpt_-MGMTDB
grid 5231 1 0 19:41 ? 00:00:00 mdb_lg00_-MGMTDB
grid 5233 1 0 19:41 ? 00:00:00 mdb_lg01_-MGMTDB
grid 5235 1 0 19:41 ? 00:00:00 mdb_smon_-MGMTDB
grid 5237 1 0 19:41 ? 00:00:00 mdb_lreg_-MGMTDB
grid 5239 1 0 19:41 ? 00:00:00 mdb_rbal_-MGMTDB
grid 5241 1 0 19:41 ? 00:00:00 mdb_asmb_-MGMTDB
grid 5243 1 0 19:41 ? 00:00:05 mdb_mmon_-MGMTDB
grid 5247 1 0 19:41 ? 00:00:02 mdb_mmnl_-MGMTDB
grid 5249 1 0 19:41 ? 00:00:00 mdb_d000_-MGMTDB
grid 5251 1 0 19:41 ? 00:00:00 mdb_s000_-MGMTDB
grid 5253 1 0 19:41 ? 00:00:00 mdb_mark_-MGMTDB
grid 5274 1 0 19:41 ? 00:00:00 mdb_tmon_-MGMTDB
grid 5276 1 0 19:41 ? 00:00:00 mdb_tt00_-MGMTDB
grid 5283 1 0 19:41 ? 00:00:00 mdb_smco_-MGMTDB
grid 5287 1 0 19:41 ? 00:00:00 mdb_fbda_-MGMTDB
grid 5291 1 0 19:41 ? 00:00:00 mdb_aqpc_-MGMTDB
grid 5295 1 0 19:41 ? 00:00:00 mdb_cjq0_-MGMTDB
grid 5308 1 0 19:41 ? 00:00:00 mdb_qm02_-MGMTDB
grid 5312 1 0 19:41 ? 00:00:00 mdb_q002_-MGMTDB
grid 5314 1 0 19:41 ? 00:00:00 mdb_q003_-MGMTDB
grid 5344 1 0 19:41 ? 00:00:00 mdb_p000_-MGMTDB
grid 5348 1 0 19:41 ? 00:00:00 mdb_p001_-MGMTDB
grid 5350 1 0 19:41 ? 00:00:00 mdb_p002_-MGMTDB
grid 5352 1 0 19:41 ? 00:00:00 mdb_p003_-MGMTDB
grid 5354 1 0 19:41 ? 00:00:00 mdb_p004_-MGMTDB
grid 5356 1 0 19:41 ? 00:00:00 mdb_p005_-MGMTDB
grid 5358 1 0 19:41 ? 00:00:00 mdb_p006_-MGMTDB
grid 5360 1 0 19:41 ? 00:00:00 mdb_p007_-MGMTDB
grid 10141 1 0 20:41 ? 00:00:03 mdb_o000_-MGMTDB
grid 10885 1 0 21:05 ? 00:00:00 mdb_w002_-MGMTDB
grid 11370 1 0 21:21 ? 00:00:00 mdb_w001_-MGMTDB
grid 11661 2040 0 21:31 pts/0 00:00:00 grep mdb_

「グリッド・インフラストラクチャ・管理リポジトリ」を作成した場合は、
Grid Infrastructureをインストールしただけですが
_mgmtdb用のデータファイルが作成されます。
※+CRS_DGというASMディスクグループ名はインストール中に指定しました。
[grid@sv12c01 ~]$ asmcmd ls -ls crs_dg/_mgmtdb/*
Type Redund Striped Time Sys Block_Size Blocks Bytes Space Name

+crs_dg/_mgmtdb/CONTROLFILE/:
CONTROLFILE UNPROT FINE AUG 21 19:00:00 Y 16384 613 10043392 16777216 Current.262.823332585

+crs_dg/_mgmtdb/DATAFILE/:
DATAFILE UNPROT COARSE AUG 23 05:00:00 Y 8192 56321 461381632 463470592 SYSAUX.258.823332327
DATAFILE UNPROT COARSE AUG 13 07:00:00 Y 8192 12801 104865792 106954752 SYSGRIDHOMEDATA.261.823332545
DATAFILE UNPROT COARSE AUG 13 07:00:00 Y 8192 262145 2147491840 2149580800 SYSMGMTDATA.260.823332441
DATAFILE UNPROT COARSE AUG 13 07:00:00 Y 8192 76801 629153792 631242752 SYSTEM.259.823332373
DATAFILE UNPROT COARSE AUG 13 07:00:00 Y 8192 7041 57679872 58720256 UNDOTBS1.257.823332303

+crs_dg/_mgmtdb/ONLINELOG/:
ONLINELOG UNPROT COARSE AUG 13 07:00:00 Y 512 102401 52429312 53477376 group_1.263.823332589
ONLINELOG UNPROT COARSE AUG 13 07:00:00 Y 512 102401 52429312 53477376 group_2.264.823332591
ONLINELOG UNPROT COARSE AUG 13 07:00:00 Y 512 102401 52429312 53477376 group_3.265.823332593

+crs_dg/_mgmtdb/PARAMETERFILE/:
PARAMETERFILE UNPROT COARSE AUG 13 23:00:00 Y 512 7 3584 1048576 spfile.267.823332675

+crs_dg/_mgmtdb/TEMPFILE/:
TEMPFILE UNPROT COARSE AUG 13 07:00:00 Y 8192 2561 20979712 22020096 TEMP.266.823332611
PARAMETERFILE UNPROT COARSE AUG 13 23:00:00 N 512 7 3584 1048576 spfile-MGMTDB.ora => +CRS_DG/_MGMTDB/PARAMETERFILE/spfile.267.823332675

Flex ASM の選択画面です。
ためしに Flex ASMにしてみました。



従来のASMインスタンス「+ASM1」以外にも、
新しい種類のインスタンス「+APX1」ができていました。※ノード1です。
[grid@sv12c01 ~]$ ps -ef | grep asm_
grid 11678 2040 0 21:31 pts/0 00:00:00 grep asm_
grid 31818 1 0 19:17 ? 00:00:01 asm_pmon_+ASM1
grid 31820 1 0 19:17 ? 00:00:01 asm_psp0_+ASM1
grid 31822 1 1 19:17 ? 00:01:31 asm_vktm_+ASM1
grid 31826 1 0 19:17 ? 00:00:00 asm_gen0_+ASM1
grid 31828 1 0 19:17 ? 00:00:00 asm_mman_+ASM1
grid 31832 1 0 19:17 ? 00:00:05 asm_diag_+ASM1
grid 31834 1 0 19:17 ? 00:00:00 asm_ping_+ASM1
grid 31836 1 0 19:17 ? 00:00:17 asm_dia0_+ASM1
grid 31838 1 0 19:17 ? 00:00:13 asm_lmon_+ASM1
grid 31840 1 0 19:17 ? 00:00:09 asm_lmd0_+ASM1
grid 31842 1 0 19:17 ? 00:00:18 asm_lms0_+ASM1
grid 31846 1 0 19:17 ? 00:00:02 asm_lmhb_+ASM1
grid 31848 1 0 19:17 ? 00:00:00 asm_lck1_+ASM1
grid 31850 1 0 19:17 ? 00:00:00 asm_gcr0_+ASM1
grid 31852 1 0 19:17 ? 00:00:00 asm_dbw0_+ASM1
grid 31854 1 0 19:17 ? 00:00:00 asm_lgwr_+ASM1
grid 31856 1 0 19:17 ? 00:00:00 asm_ckpt_+ASM1
grid 31858 1 0 19:17 ? 00:00:00 asm_smon_+ASM1
grid 31860 1 0 19:17 ? 00:00:00 asm_lreg_+ASM1
grid 31862 1 0 19:17 ? 00:00:01 asm_rbal_+ASM1
grid 31864 1 0 19:17 ? 00:00:01 asm_gmon_+ASM1
grid 31866 1 0 19:17 ? 00:00:00 asm_mmon_+ASM1
grid 31868 1 0 19:17 ? 00:00:01 asm_mmnl_+ASM1
grid 31870 1 0 19:17 ? 00:00:01 asm_lck0_+ASM1
grid 31926 1 0 19:17 ? 00:00:00 asm_asmb_+ASM1

[grid@sv12c01 ~]$ ps -ef | grep apx_
grid 3341 1 0 19:20 ? 00:00:00 apx_pmon_+APX1
grid 3343 1 0 19:20 ? 00:00:01 apx_psp0_+APX1
grid 3351 1 1 19:20 ? 00:01:30 apx_vktm_+APX1
grid 3355 1 0 19:20 ? 00:00:00 apx_gen0_+APX1
grid 3357 1 0 19:20 ? 00:00:00 apx_mman_+APX1
grid 3361 1 0 19:20 ? 00:00:00 apx_diag_+APX1
grid 3363 1 0 19:20 ? 00:00:02 apx_dia0_+APX1
grid 3365 1 0 19:20 ? 00:00:00 apx_lreg_+APX1
grid 3367 1 0 19:20 ? 00:00:00 apx_rbal_+APX1
grid 3370 1 0 19:20 ? 00:00:00 apx_vdbg_+APX1
grid 3372 1 0 19:20 ? 00:00:00 apx_vubg_+APX1
grid 11682 2040 0 21:31 pts/0 00:00:00 grep apx_

Grid Infrastructure インストール中にrootユーザで実行するスクリプトは、
自動実行できるようになっていました。



上記の画面でOSのrootユーザパスワードを入力しておくと、
インストール中に下記の画面が表示されます。
「はい」をクリックすると、全ノードでスクリプトを自動実行してくれます。




Grid Infrastructureインストール直後のクラスタリソースの状態は
こんな感じです。
※今回は3ノード構成です。

[grid@sv12c01 ~]$ /u01/app/12.1.0/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
ora.CRS_DG.dg
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
ora.net1.network
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
ora.ons
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
ora.proxy_advm
               ONLINE  ONLINE       sv12c01                  STABLE
               ONLINE  ONLINE       sv12c02                  STABLE
               ONLINE  ONLINE       sv12c03                  STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       sv12c02                  STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       sv12c03                  STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       sv12c01                  STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       sv12c01                  169.254.66.67 192.16
                                                             8.14.141,STABLE
ora.asm
      1        ONLINE  ONLINE       sv12c01                  STABLE
      2        ONLINE  ONLINE       sv12c02                  STABLE
      3        ONLINE  ONLINE       sv12c03                  STABLE
ora.cvu
      1        ONLINE  ONLINE       sv12c01                  STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       sv12c01                  Open,STABLE
ora.oc4j
      1        ONLINE  ONLINE       sv12c01                  STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       sv12c02                  STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       sv12c03                  STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       sv12c01                  STABLE
ora.sv12c01.vip
      1        ONLINE  ONLINE       sv12c01                  STABLE
ora.sv12c02.vip
      1        ONLINE  ONLINE       sv12c02                  STABLE
ora.sv12c03.vip
      1        ONLINE  ONLINE       sv12c03                  STABLE
--------------------------------------------------------------------------------

以上、12c の Grid Infrastructure をインストールしてみた話でした。

2013年8月1日木曜日

PDBプラグイン後のアラートログを見てみる。

Oracle 12c のプラガブル・データベース(PDB)を
別のコンテナ・データベース(CDB)にプラグインしてみました。

PDB「pdb3orcl」をプラグインしています。
この時にエラーがでたので、ためしにアラートログを見てみました。
SQL> create pluggable database pdb3orcl
  2  using '/u02/dbdata/pdb3orcl.xml'
  3  source_file_name_convert = (
  4     '/u02/oradata/pdb3orcl/',
  5     '/u02/dbdata/pdb3orcl/'
  6  )
  7  nocopy
  8  tempfile reuse;

Pluggable database created.

SQL> alter pluggable database pdb3orcl open;

Warning: PDB altered with errors.

その時のアラートログです。
どうやら、PDBのデータファイルが以前のCDBでのファイル番号(file#)をもっていたので
エラーを出していたようです。
プラグイン先のCDBであらためてファイル番号を振りなおしているようで、
プラグイン後の処理自体は完了、成功しているようです。
Thu Aug 01 00:08:18 2013  ★アラートログに実行したSQLが出力されています。
create pluggable database pdb3orcl
using '/u02/dbdata/pdb3orcl.xml'
source_file_name_convert = (
   '/u02/oradata/pdb3orcl/',
   '/u02/dbdata/pdb3orcl/'
)
nocopy
tempfile reuse
Thu Aug 01 00:08:19 2013
****************************************************************
Pluggable Database PDB3ORCL with pdb id - 4 is created as UNUSABLE.
If any errors are encountered before the pdb is marked as NEW,
then the pdb must be dropped
****************************************************************
Deleting old file#33 from file$  ★プラグインしたPDBのデータファイルをいったん削除
Deleting old file#34 from file$
Deleting old file#35 from file$
Adding new file#11 to file$(old file#33)  ★あらためてファイル追加しなおしていいる
Adding new file#12 to file$(old file#34)
Adding new file#13 to file$(old file#35)
Successfully created internal service pdb3orcl at open  ★成功しています。
ALTER SYSTEM: Flushing buffer cache inst=0 container=4 local
****************************************************************
Post plug operations are now complete.
Pluggable database PDB3ORCL with pdb id - 4 is now marked as NEW.
****************************************************************
Completed: create pluggable database pdb3orcl  ★プラグイン完了しています。
using '/u02/dbdata/pdb3orcl.xml'
source_file_name_convert = (
   '/u02/oradata/pdb3orcl/',
   '/u02/dbdata/pdb3orcl/'
)
nocopy
tempfile reuse
alter pluggable database pdb3orcl open  ★PDBをオープンしています。
Thu Aug 01 00:09:14 2013
Pluggable database PDB3ORCL dictionary check beginning
Pluggable Database PDB3ORCL Dictionary check complete
Opening pdb PDB3ORCL (4) with no Resource Manager plan active

XDB installed.

XDB initialized.
Warning: Pluggable database PDB3ORCL altered with errors
              ★このメッセージはコンソール表示されていたエラーと同じものでしょう。
Pluggable database PDB3ORCL opened read write
Completed: alter pluggable database pdb3orcl open

ちなみに、アラートログの場所は、11gのころから変わりありません。
この環境は、 ORACLE_BASEが「/u01/app/oracle」、
CDB名が「oradb」(そしてDBインスタンス名もoradb)なので下記のようなファイル名でした。
※結構、一般的な構成だと思います。

/u01/app/oracle/diag/rdbms/oradb/oradb/trace/alert_oradb.log


以上、PDBプラグインした時のエラー表示についてでした。

Oracle 12c プラガブルDB(PDB)を別のCDBにアンプラグ→プラグインしてみる

今回は、Oracle DB 12c のプラガブル・データベース(PDB)を
コンテナ・データベース(CDB)からアンプラグして、
別のPDBにプラグインしてみます。

構成
  • アンプラグ→プラグインするPDB: pdb3orcl
  • アンプラグする元のCDB: orcl (サーバのホスト名は sv12c1 )
  • プラグインする先のCDB: oradb (サーバのホスト名は sv12c00 )
  • OSは、Oracle Linux Server release 6.2

CDBからアンプラグ

まず、ひとつめのCDB(CDB名:orcl)から、PDB(PDB名:pdb3orcl)をアンプラグします。

sqlplus で CDB「orcl」にログインします。
[oracle@sv12c1 ~]$ sqlplus sys/password@localhost/orcl as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 31 23:11:03 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, OLAP, Advanced Analytics and Real Application Testing options

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT  ★CDBに接続しています。

SQL> col HOST_NAME for a10
SQL> select host_name,instance_name from v$instance;

HOST_NAME  INSTANCE_NAME
---------- ----------------
sv12c1    orcl  ★ひとつめのCDBです。

PDBを確認します。これからアンプラグするPDB「pdb3orcl」のCON_IDは 5 です。
SQL> col NAME for a10
SQL> select NAME,CON_ID,DBID,CON_UID from v$pdbs;

NAME           CON_ID       DBID    CON_UID
---------- ---------- ---------- ----------
PDB$SEED            2 4061795626 4061795626
PDBORCL             3 2266308759 2266308759
PDB2ORCL            4 3206526558 3206526558
PDB3ORCL            5 2588836665 2588836665

赤字部分のデータファイルのファイルが、アンプラグ対象のPDBのものです。
SQL> set pagesize 20
SQL> col NAME for a60
SQL> select con_id, name, status from v$datafile order by 1,2;

    CON_ID NAME                                                         STATUS
---------- ------------------------------------------------------------ -------
         1 /u01/app/oracle/oradata/orcl/sysaux01.dbf                    ONLINE
         1 /u01/app/oracle/oradata/orcl/system01.dbf                    SYSTEM
         1 /u01/app/oracle/oradata/orcl/undotbs01.dbf                   ONLINE
         1 /u01/app/oracle/oradata/orcl/users01.dbf                     ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf            ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf            SYSTEM
         3 /u01/app/oracle/oradata/orcl/pdborcl/pdborcl_users01.dbf     ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf            ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/system01.dbf            SYSTEM
         4 /u02/oradata/pdb2orcl/pdb2orcl_users01.dbf                   ONLINE
         4 /u02/oradata/pdb2orcl/sysaux01.dbf                           ONLINE
         4 /u02/oradata/pdb2orcl/system01.dbf                           SYSTEM
         5 /u02/oradata/pdb3orcl/pdb2orcl_users01.dbf                   ONLINE
         5 /u02/oradata/pdb3orcl/sysaux01.dbf                           ONLINE
         5 /u02/oradata/pdb3orcl/system01.dbf                           SYSTEM

15 rows selected.

PDB「pdb3orcl 」をクローズして、アンプラグします。
SQL> alter pluggable database pdb3orcl close;

Pluggable database altered.

SQL> alter pluggable database pdb3orcl
  2  unplug into '/u02/pdbxml/pdb3orcl.xml';

Pluggable database altered.

ファイルを Tar + GZIP で圧縮して、別のCDBがあるサーバへ転送します。
PDBのデータファイルとXMLファイルを、両方とも転送しておきます。
[oracle@sv12c1 ~]$ cd /u02/oradata/
[oracle@sv12c1 oradata]$ ls -lh pdb3orcl
合計 976M
-rw-r----- 1 oracle oinstall 5.1M  7月 31 23:17 2013 pdb2orcl_users01.dbf
-rw-r----- 1 oracle oinstall 701M  7月 31 23:17 2013 sysaux01.dbf
-rw-r----- 1 oracle oinstall 271M  7月 31 23:17 2013 system01.dbf
-rw-r----- 1 oracle oinstall  21M  7月 31 14:00 2013 temp01.dbf
[oracle@sv12c1 oradata]$ tar zcvf pdb3orcl.tgz pdb3orcl
pdb3orcl/
pdb3orcl/pdb2orcl_users01.dbf
pdb3orcl/system01.dbf
pdb3orcl/sysaux01.dbf
pdb3orcl/temp01.dbf


[oracle@sv12c1 oradata]$ scp pdb3orcl.tgz /u02/pdbxml/pdb3orcl.xml  sv12c00:/u02/dbdata/
oracle@sv12c00's password:
pdb3orcl.tgz                                             100%  196MB  48.9MB/s   00:04
pdb3orcl.xml                                             100% 3979     3.9KB/s   00:00


ふたつめのCDBにプラグイン

ふたつめのCDBがあるサーバで、PDBのデータファイルを展開します。
[oracle@sv12c00 ~]$ cd /u02/dbdata/
[oracle@sv12c00 dbdata]$ tar zxvf pdb3orcl.tgz
pdb3orcl/
pdb3orcl/pdb2orcl_users01.dbf
pdb3orcl/system01.dbf
pdb3orcl/sysaux01.dbf
pdb3orcl/temp01.dbf

CDB「oradb」にログインします。
[oracle@sv12c00 ~]$ sqlplus sys/password@localhost/oradb as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 31 23:57:10 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, OLAP, Advanced Analytics and Real Application Testing options

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT  ★CDBにログインしています
SQL> col HOST_NAME for a10
SQL> select host_name,instance_name from v$instance;

HOST_NAME  INSTANCE_NAME
---------- ----------------
sv12c00    oradb  ★ふたつめのCDBです。

こちらのCDBには、いまはPDBが1つだけあります。
SQL> col NAME for a10
SQL> select NAME,CON_ID,DBID,CON_UID from v$pdbs;

NAME           CON_ID       DBID    CON_UID
---------- ---------- ---------- ----------
PDB$SEED            2 4064016361 4064016361
PDB1                3 3329097605 3329097605

CDB「orcl」からもってきたPDB「pdb3orcl」をプラグインします。

データファイルのパスが、もともとの場所とは違うので、
source_file_name_convert」で指定変更しています。
そして、すでにデータファイルが指定の場所にあるので「nocopy」をつけています。

一時表領域用のファイルも一緒にもってきたので、
tempfile reuse」を指定して、ファイル(今回は「temp01.dbf」)を再利用します。
SQL> create pluggable database pdb3orcl
  2  using '/u02/dbdata/pdb3orcl.xml'
  3  source_file_name_convert = (
  4     '/u02/oradata/pdb3orcl/',
  5     '/u02/dbdata/pdb3orcl/'
  6  )
  7  nocopy
  8  tempfile reuse;

Pluggable database created.

PDBをオープンします。
オープンするときにエラーがあったと警告が表示されています。
プラグインしたPDBのデータファイルを認識しなおす過程で発生したもので、
問題ないのではないかと思われます。
※念のためアラートログ確認を忘れずに。

v$pdbs をみると、PDB「pdb3orcl」が追加されていることがわかります。

SQL> alter pluggable database pdb3orcl open;

Warning: PDB altered with errors.

SQL> col NAME for a10
SQL> select NAME,CON_ID,DBID,CON_UID from v$pdbs;

NAME           CON_ID       DBID    CON_UID
---------- ---------- ---------- ----------
PDB$SEED            2 4064016361 4064016361
PDB1                3 3329097605 3329097605
PDB3ORCL            4 2588836665 2588836665

CON_IDが 4 のデータファイル(赤字の部分)がプラグインしたものです。
プラグインしたファイルはこちらのCDBは、OMF(Oracle Managed Files)なので
移行元のCDBとは、ファイル名の感じが違います・・・
SQL> set pagesize 40
SQL> col NAME for a45
SQL> select con_id, name, status from v$datafile order by 1,2;

    CON_ID NAME                                          STATUS
---------- --------------------------------------------- -------
         1 /u01/app/oracle/oradata/ORADB/datafile/o1_mf_ ONLINE
           sysaux_8yr7b481_.dbf
         1 /u01/app/oracle/oradata/ORADB/datafile/o1_mf_ SYSTEM
           system_8yr7dhjw_.dbf
         1 /u01/app/oracle/oradata/ORADB/datafile/o1_mf_ ONLINE
           undotbs1_8yr7h5to_.dbf
         1 /u01/app/oracle/oradata/ORADB/datafile/o1_mf_ ONLINE
           users_8yr7h4sn_.dbf
         2 /u01/app/oracle/oradata/ORADB/datafile/o1_mf_ ONLINE
           sysaux_8yr7jmkf_.dbf
         2 /u01/app/oracle/oradata/ORADB/datafile/o1_mf_ SYSTEM
           system_8yr7jmko_.dbf
         3 /u01/app/oracle/oradata/ORADB/E20A461FD170438 ONLINE
           DE0438C04A8C0ED68/datafile/o1_mf_sysaux_8yr85
           pb5_.dbf
         3 /u01/app/oracle/oradata/ORADB/E20A461FD170438 SYSTEM
           DE0438C04A8C0ED68/datafile/o1_mf_system_8yr85
           pfw_.dbf
         3 /u01/app/oracle/oradata/ORADB/E20A461FD170438 ONLINE
           DE0438C04A8C0ED68/datafile/o1_mf_users_8yr87p
           0f_.dbf
         4 /u02/dbdata/pdb3orcl/pdb2orcl_users01.dbf     ONLINE
         4 /u02/dbdata/pdb3orcl/sysaux01.dbf             ONLINE
         4 /u02/dbdata/pdb3orcl/system01.dbf             SYSTEM

12 rows selected.

PDBへのログインもできます。
プラグイン先のCDBの方がPDB数が少なかったため、
CON_ID は減って 4 になりました。

SQL> conn system/password@localhost/pdb3orcl
Connected.
SQL> show con_name

CON_NAME
------------------------------
PDB3ORCL ★プラグインしたPDBにログインしている。
SQL> show con_id
CON_ID
------------------------------
4

以上、PDBを別のCDBへアンプラグ→プラグインしてみる話でした。

2013年7月30日火曜日

OracleDB 12c 絵でPDB

ひさびさに、絵的なポストをしてみます。
Oracle DB 12c のプラガブルデータベース(PDB)です。


Oracle DB 12c から、プラガブル・データベースという仕組みができました。通称、PDBです。
コンテナ・データベース(CDB)に、いくつもPDBをプラグインすることができます。

CDBと、PDBは、それぞれ別のデータファイルを持ちます。



CDBには、PDBをプラグインすることができます。
新しいPDBを作成することもできますし、
他のコンテナで作成したPDBを外して(アンプラグして)もってきて、
プラグインすることもできます。



PDBは、それぞれ個別にクローズしたり、オープンしたりすることができます。
クローズしたPDBは、CDBから「アンプラグ」することができます。
PDBをアンプラグするとき、PDBの構成情報をXMLファイルに保存します。



アンプラグしたPDBを、別のCDBに「プラグイン」できます。
プラグインするときは、「plugin~」ではなく、「create pluggable database」です。

そのとき、アンプラグしたときに保存したXMLファイルを使用します。


クローズしただけのPDBは、再びオープンすることができますが、
アンプラグしたPDBは、もとのCDBではオープンできません。
いちど削除してあらためてプラグインすると、使用できるようになります。


PDBは一度 unplugするとOpenできない?

いちどアンプラグしたPDBは、そのままではオープンもクローズもできなくなります。

そのまま、もとのCDBで使用したい時は、
いったんアンプラグしたPDBを 削除(drop pluggable database) して、プラグインすると使用できます。
再びPDBをプラグインしたいときも、「create pluggable database」します。
※削除するとき、まちがってデータファイルを一緒に消さないように注意。

アンプラグしたPDBをオープンしようとすると、エラーになります。
SQL> alter pluggable database pdb2orcl
  2  unplug into '/u02/pdbxml/pdb2orcl.xml';

Pluggable database altered.

SQL> alter pluggable database pdb2orcl open;
alter pluggable database pdb2orcl open
*
ERROR at line 1:
ORA-65086: cannot open/close the pluggable database

マニュアルより。アンプラグしたPDBは、drop だけできます。
Oracle Database Error Messages
12c Release 1 (12.1)
http://docs.oracle.com/cd/E16655_01/server.121/e26079/e60000.htm
ORA-65086: cannot open/close the pluggable database
Cause: The pluggable database has been unplugged.
Action: The pluggable database can only be dropped.

以上、絵でPDBでした。

2013年7月28日日曜日

Oracle 12c プラガブルDB(PDB)をクローンしてみる

Oracle 12c のプラガブルDB(PDB)を、クローニングしてみました。

環境

OS: Oracle Linux Server release 6.2
DB: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0
    CDB名: orcl
        PDB1: pdborcl
        PDB2: pdb2orcl  ★このPDBを「pdb3orcl」としてクローニングします。

手順

まずコンテナDB(CDB)に接続します。
[oracle@sv12c1 ~]$ sqlplus sys/password@localhost/orcl as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Sun Jul 28 14:05:42 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, OLAP, Advanced Analytics and Real Application Testing options

SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT  ★CDBに接続している

クローン前の状態を確認しておきます。
SQL> col NAME for a10
SQL> select NAME,CON_ID,DBID,CON_UID,GUID from v$pdbs;

NAME           CON_ID       DBID    CON_UID GUID
---------- ---------- ---------- ---------- --------------------------------
PDB$SEED            2 4061795626 4061795626 E018B7BF835F1D45E043B505A8C05DDA
PDBORCL             3 2266308759 2266308759 E018DCC0D76D1FF1E043B505A8C0FC1F
PDB2ORCL            4 3206526558 3206526558 E075165AF1027BCCE043B505A8C08729
★クローン前のPDB一覧です。

SQL> set pagesize 15
SQL> col NAME for a60
SQL> select con_id, name, status from v$datafile order by 1,2;

    CON_ID NAME                                                         STATUS
---------- ------------------------------------------------------------ -------
         1 /u01/app/oracle/oradata/orcl/sysaux01.dbf                    ONLINE
         1 /u01/app/oracle/oradata/orcl/system01.dbf                    SYSTEM
         1 /u01/app/oracle/oradata/orcl/undotbs01.dbf                   ONLINE
         1 /u01/app/oracle/oradata/orcl/users01.dbf                     ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf            ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf            SYSTEM
         3 /u01/app/oracle/oradata/orcl/pdborcl/pdborcl_users01.dbf     ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf            ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/system01.dbf            SYSTEM
         4 /u02/oradata/pdb2orcl/pdb2orcl_users01.dbf                   ONLINE
         4 /u02/oradata/pdb2orcl/sysaux01.dbf                           ONLINE
         4 /u02/oradata/pdb2orcl/system01.dbf                           SYSTEM

12 rows selected.  ★クローン前のデータファイル一覧です。

SQL> col NAME for a15
SQL> col NETWORK_NAME for a15
SQL> col PDB for a10
SQL> select SERVICE_ID,CON_ID,NAME,PDB,NETWORK_NAME from CDB_SERVICES order by 1,2;

SERVICE_ID     CON_ID NAME            PDB        NETWORK_NAME
---------- ---------- --------------- ---------- ---------------
         1          1 SYS$BACKGROUND  CDB$ROOT
         2          1 SYS$USERS       CDB$ROOT
         5          1 orclXDB         CDB$ROOT   orclXDB
         6          1 orcl            CDB$ROOT   orcl
         6          3 pdborcl         PDBORCL    pdborcl
         7          4 pdb2orcl        PDB2ORCL   pdb2orcl

6 rows selected.  ★クローン前のPDBサービス一覧です。


クローン元のPDBを読み取り専用でオープンします。
SQL> alter pluggable database pdb2orcl close;

Pluggable database altered.

SQL> alter pluggable database pdb2orcl open read only;

Pluggable database altered.

クローンします。
SQL> create pluggable database pdb3orcl from pdb2orcl
  2  file_name_convert = (
  3    '/u02/oradata/pdb2orcl/',
  4    '/u02/oradata/pdb3orcl/'
  5  )
  6  path_prefix = '/u02/oradata/pdb3orcl';

Pluggable database created.

読み取り専用にしていたクローン元のPDBを、オープンしなおします。
SQL> alter pluggable database pdb2orcl close;

Pluggable database altered.

SQL> alter pluggable database pdb2orcl open;

Pluggable database altered.

クローニングしたPDBを、オープンします。
SQL> alter pluggable database pdb3orcl open;

Pluggable database altered.

PDBがクローンされました。
SQL> col NAME for a10
SQL> select NAME,CON_ID,DBID,CON_UID,GUID from v$pdbs;

NAME           CON_ID       DBID    CON_UID GUID
---------- ---------- ---------- ---------- --------------------------------
PDB$SEED            2 4061795626 4061795626 E018B7BF835F1D45E043B505A8C05DDA
PDBORCL             3 2266308759 2266308759 E018DCC0D76D1FF1E043B505A8C0FC1F
PDB2ORCL            4 3206526558 3206526558 E075165AF1027BCCE043B505A8C08729
PDB3ORCL            5 2588836665 2588836665 E28C5FA5B84E7396E043B505A8C0D0A9

クローニングしたPDBのデータファイルが追加されました。
SQL> set pagesize 20
SQL> col NAME for a60
SQL> select con_id, name, status from v$datafile order by 1,2;

    CON_ID NAME                                                         STATUS
---------- ------------------------------------------------------------ -------
         1 /u01/app/oracle/oradata/orcl/sysaux01.dbf                    ONLINE
         1 /u01/app/oracle/oradata/orcl/system01.dbf                    SYSTEM
         1 /u01/app/oracle/oradata/orcl/undotbs01.dbf                   ONLINE
         1 /u01/app/oracle/oradata/orcl/users01.dbf                     ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf            ONLINE
         2 /u01/app/oracle/oradata/orcl/pdbseed/system01.dbf            SYSTEM
         3 /u01/app/oracle/oradata/orcl/pdborcl/pdborcl_users01.dbf     ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf            ONLINE
         3 /u01/app/oracle/oradata/orcl/pdborcl/system01.dbf            SYSTEM
         4 /u02/oradata/pdb2orcl/pdb2orcl_users01.dbf                   ONLINE
         4 /u02/oradata/pdb2orcl/sysaux01.dbf                           ONLINE
         4 /u02/oradata/pdb2orcl/system01.dbf                           SYSTEM
         5 /u02/oradata/pdb3orcl/pdb2orcl_users01.dbf                   ONLINE
         5 /u02/oradata/pdb3orcl/sysaux01.dbf                           ONLINE
         5 /u02/oradata/pdb3orcl/system01.dbf                           SYSTEM

15 rows selected.

クローニングしたPDBのサービスも追加されました。
SQL> col NAME for a15
SQL> col NETWORK_NAME for a15
SQL> col PDB for a10
SQL> select SERVICE_ID,CON_ID,NAME,PDB,NETWORK_NAME from CDB_SERVICES order by 1,2;

SERVICE_ID     CON_ID NAME            PDB        NETWORK_NAME
---------- ---------- --------------- ---------- ---------------
         1          1 SYS$BACKGROUND  CDB$ROOT
         2          1 SYS$USERS       CDB$ROOT
         5          1 orclXDB         CDB$ROOT   orclXDB
         6          1 orcl            CDB$ROOT   orcl
         6          3 pdborcl         PDBORCL    pdborcl
         7          4 pdb2orcl        PDB2ORCL   pdb2orcl
         8          5 pdb3orcl        PDB3ORCL   pdb3orcl

7 rows selected.

クローニングしたPDBに接続できました。
SQL> conn system/password@localhost/pdb3orcl
Connected.
SQL> show con_name

CON_NAME
------------------------------
PDB3ORCL

以上、PDBのクローニングでした。