忘れかけのIT備忘録

今まで学んできた知識や小技、なるほど!と思ったことをメモするブログです。

RACデータベースのポリシー管理型DBから管理者管理型DBへの変換検証

某検証環境を事前準備する際、RACデータベースをポリシー管理型データベースから管理者管理型データベースに変換する作業が発生しました。
せっかくなので検証結果としてブログに残しておこうと思います。
なお、「Oracle Database 11g Release 2 RAC実践ガイド 基礎から学ぶRAC構築・管理(P216)」の手順を参考にしています。

ポリシー管理型データベースと管理者管理型データベースの設定値レベルの大きな差分として、
・管理者管理型データベースはユーザ定義のサーバー・プールが不要
・管理者管理型データベースはinstance_number(インスタンス番号)、undo_tablespace(UNDO表領域)、thread(スレッド番号)が必要
があります。

管理者管理型データベースは事前定義プールのGenericプール(厳密にはGenericプールの子プールora.データベース名)でノードを固定化します。
ポリシー管理型データベースはサーバー・プールのポリシーによって動的にインスタンス番号、UNDO表領域、スレッド番号が変わるため設定不要でしたが、管理者管理型データベースはノードが固定されるため設定が必要です。

■検証環境
OS:Oracle Linux 6.5
GI:Oracle Grid Infrastructure 12c Release 1 (12.1.0.2.0) Enterprise Edition
DB:Oracle Database 12c Release 1 (12.1.0.2.0) Enterprise Edition
※2ノードRAC(ポリシー管理型DB)構成

■前提
・ポリシー管理型データベース
・サービス設定なし

■設定情報

クラスタリソース情報
[root@node1 ~]# /u01/app/12.1.0/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.FRA.dg
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.asm
               ONLINE  ONLINE       node1                    Started,STABLE
               ONLINE  ONLINE       node2                    Started,STABLE
ora.net1.network
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.ons
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       node2                    STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       node1                    169.254.244.153 192.
                                                                                 168.100.101,STABLE
ora.cvu
      1        ONLINE  ONLINE       node1                    STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       node1                    Open,STABLE
ora.node1.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.node2.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.oc4j
      1        ONLINE  ONLINE       node1                    STABLE
ora.orcl.db
      1        ONLINE  ONLINE       node1                    Open,STABLE
      2        ONLINE  ONLINE       node2                    Open,STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       node1                    STABLE
--------------------------------------------------------------------------------

サーバー・プール情報
[oracle@node1 ~]$ srvctl config srvpool
サーバー・プール名: Free
重要度: 0、最小: 0、最大: -1
カテゴリ: 
候補サーバー名: 
サーバー・プール名: Generic
重要度: 0、最小: 0、最大: -1
カテゴリ: 
候補サーバー名: 
サーバー・プール名: srvpool1
重要度: 10、最小: 1、最大: 2
カテゴリ: hub
候補サーバー名: 
[oracle@node1 ~]$

DB情報
[oracle@node1 ~]$ srvctl config database -db orcl
一意のデータベース名: orcl
データベース名: 
Oracleホーム: /u01/app/oracle/product/12.1.0/dbhome_1
Oracleユーザー: oracle
spfile: +DATA/ORCL/PARAMETERFILE/spfile.289.1116114229
パスワード・ファイル: +DATA/ORCL/PASSWORD/pwdorcl.276.1116113807
ドメイン
開始オプション: open
停止オプション: immediate
データベース・ロール: PRIMARY
管理ポリシー: AUTOMATIC
サーバー・プール: srvpool1
ディスク・グループ: DATA,FRA
マウント・ポイントのパス: 
サービス: 
タイプ: RAC
開始の同時実行性: 
停止の同時実行性: 
OSDBAグループ: dba
OSOPERグループ: oper
データベース・インスタンス
構成されたノード: 
データベースはポリシーによって管理されています

 

■検証パターン
①orclをポリシー管理型データベースから管理者管理型データベースに変換

■検証
①orclをポリシー管理型データベースから管理者管理型データベースに変換
2ノードRAC構成のポリシー管理型データベース(orcl)を管理者管理型データベースに変換できるか検証します

【検証手順】
1. 初期化パラメータファイル変更
2. (任意)パスワードファイル作成
3. (任意)サービス停止
4. (任意)サービスリソース削除
5. DB停止
6. DBリソース削除
7. (任意)audit_file_destに指定するディレクトリ作成
8. DB、インスタンスリソース作成
9. DB開始
10. (任意)サービス作成
11. (任意)サービス開始
12. サーバー・プール削除
13. (任意)プロファイルにORACLE_SID追加
14. (任意)DB接続確認

【想定】
ポリシー管理型データベースから管理者管理型データベースに変換できるはず

【検証結果】
ポリシー管理型データベースから管理者管理型データベースに変換できた

【作業ログ】

1. 初期化パラメータファイル変更
管理者管理型データベースはinstance_number、undo_tablespace、threadの設定が必要です

設定前
[oracle@node1 ~]$ sqlplus / as sysdba
SQL> select inst_id, name, value from gv$parameter where name='instance_number';

 INST_ID NAME                           VALUE
-------- ------------------------------ ------------------------------
       1 instance_number                1
       2 instance_number                2

SQL> select inst_id, name, value from gv$parameter where name='undo_tablespace';

 INST_ID NAME                           VALUE
-------- ------------------------------ ------------------------------
       2 undo_tablespace                UNDOTBS1
       1 undo_tablespace                UNDOTBS2

SQL> select inst_id, name, value from gv$parameter where name='thread';

 INST_ID NAME                           VALUE
-------- ------------------------------ ------------------------------
       2 thread                         0
       1 thread                         0

設定
SQL> --instance_number
SQL> alter system set instance_number=1 scope=spfile sid='orcl1';

システムが変更されました。

SQL> alter system set instance_number=2 scope=spfile sid='orcl2';

システムが変更されました。

SQL> --undo_tablespace
SQL> alter system set undo_tablespace='UNDOTBS1' scope=spfile sid='orcl1';

システムが変更されました。

SQL> alter system set undo_tablespace='UNDOTBS2' scope=spfile sid='orcl2';

システムが変更されました。

SQL> --thread
SQL> alter system set thread=1 scope=spfile sid='orcl1';

システムが変更されました。

SQL> alter system set thread=2 scope=spfile sid='orcl2';

システムが変更されました。

2. (任意)パスワードファイル作成
管理者管理型データベースを配置する全サーバ上でパスワードファイルを作成します
既にある場合、本作業はスキップ可能です
※本検証ではパスワードファイル作成済みのため、スキップしました

設定例
orapwd file=$ORACLE_HOME/dbs/orapworcl password=password force=y

3. (任意)サービス停止
サービスがある場合、サービスを停止します
※本検証ではサービスはないため、スキップしました

4. (任意)サービスリソース削除
サービスリソースがある場合、サービスリソースを削除します
※本検証ではサービスリソースはないため、スキップしました

5. DB停止
[oracle@node1 ~]$ srvctl status database -db orcl
インスタンスorcl_1はノードnode1で実行中です。
インスタンスorcl_2はノードnode2で実行中です。
[oracle@node1 ~]$ srvctl stop database -db orcl
[oracle@node1 ~]$ srvctl status database -db orcl
インスタンスorcl_1はノードnode1で実行されていません。
インスタンスorcl_2はノードnode2で実行されていません。

6. DBリソース削除
[oracle@node1 ~]$ srvctl config database -db orcl
一意のデータベース名: orcl
データベース名: 
Oracleホーム: /u01/app/oracle/product/12.1.0/dbhome_1
Oracleユーザー: oracle
spfile: +DATA/ORCL/PARAMETERFILE/spfile.289.1116114229
パスワード・ファイル: +DATA/ORCL/PASSWORD/pwdorcl.276.1116113807
ドメイン
開始オプション: open
停止オプション: immediate
データベース・ロール: PRIMARY
管理ポリシー: AUTOMATIC
サーバー・プール: srvpool1
ディスク・グループ: DATA,FRA
マウント・ポイントのパス: 
サービス: 
タイプ: RAC
開始の同時実行性: 
停止の同時実行性: 
OSDBAグループ: dba
OSOPERグループ: oper
データベース・インスタンス
構成されたノード: 
データベースはポリシーによって管理されています
[oracle@node1 ~]$ srvctl remove database -db orcl
データベースorclを削除しますか。  (y/[n]) y
[oracle@node1 ~]$ srvctl config database -db orcl
PRCD-1120 : データベースorclのリソースが見つかりませんでした。
PRCR-1001 : リソースora.orcl.dbは存在しません

7. (任意)audit_file_destに指定するディレクトリ作成
管理者管理型データベースを配置する全サーバ上で監査ファイルを出力するディレクトリを作成します
既にある場合、本作業はスキップ可能です
※本検証では監査ファイルを出力するディレクトリ作成済みのため、スキップしました

設定例
ls -l $ORACLE_BASE/admin/adump
mkdir -p $ORACLE_BASE/admin/adump
ls -l $ORACLE_BASE/admin/adump

8. DB、インスタンスリソース作成
[oracle@node1 ~]$ srvctl config database -db orcl
PRCD-1120 : データベースorclのリソースが見つかりませんでした。
PRCR-1001 : リソースora.orcl.dbは存在しません
[oracle@node1 ~]$ srvctl add database -db orcl -oraclehome /u01/app/oracle/product/12.1.0/dbhome_1 -spfile +DATA/O RCL/PARAMETERFILE/spfile.289.1116114229 -pwfile +DATA/ORCL/PASSWORD/pwdorcl.276.1116113807 -dbtype RAC -diskgroup  "DATA,FRA"
[oracle@node1 ~]$ srvctl config database -db orcl
一意のデータベース名: orcl
データベース名: 
Oracleホーム: /u01/app/oracle/product/12.1.0/dbhome_1
Oracleユーザー: oracle
spfile: +DATA/ORCL/PARAMETERFILE/spfile.289.1116114229
パスワード・ファイル: +DATA/ORCL/PASSWORD/pwdorcl.276.1116113807
ドメイン
開始オプション: open
停止オプション: immediate
データベース・ロール: PRIMARY
管理ポリシー: AUTOMATIC
サーバー・プール: 
ディスク・グループ: DATA,FRA
マウント・ポイントのパス: 
サービス: 
タイプ: RAC
開始の同時実行性: 
停止の同時実行性: 
OSDBAグループ: dba
OSOPERグループ: oper
データベース・インスタンス
構成されたノード: 
データベースは管理者によって管理されています

[oracle@node1 ~]$ srvctl add instance -db orcl -instance orcl1 -node node1
[oracle@node1 ~]$ srvctl add instance -db orcl -instance orcl2 -node node2
[oracle@node1 ~]$ srvctl config database -db orcl
一意のデータベース名: orcl
データベース名: 
Oracleホーム: /u01/app/oracle/product/12.1.0/dbhome_1
Oracleユーザー: oracle
spfile: +DATA/ORCL/PARAMETERFILE/spfile.289.1116114229
パスワード・ファイル: +DATA/ORCL/PASSWORD/pwdorcl.276.1116113807
ドメイン
開始オプション: open
停止オプション: immediate
データベース・ロール: PRIMARY
管理ポリシー: AUTOMATIC
サーバー・プール: 
ディスク・グループ: DATA,FRA
マウント・ポイントのパス: 
サービス: 
タイプ: RAC
開始の同時実行性: 
停止の同時実行性: 
OSDBAグループ: dba
OSOPERグループ: oper
データベース・インスタンス: orcl1,orcl2
構成されたノード: node1,node2
データベースは管理者によって管理されています

9. DB開始
[oracle@node1 ~]$ srvctl status database -db orcl
インスタンスorcl1はノードnode1で実行されていません。
インスタンスorcl2はノードnode2で実行されていません。
[oracle@node1 ~]$ srvctl start database -db orcl
[oracle@node1 ~]$ srvctl status database -db orcl
インスタンスorcl1はノードnode1で実行中です。
インスタンスorcl2はノードnode2で実行中です。

10. (任意)サービス作成
サービスが必要な場合、サービスを作成します
※本検証ではサービスは必要ないため、スキップしました

11. (任意)サービス開始
作成したサービスを起動します
※本検証ではサービスは必要ないため、スキップしました

12. サーバー・プール削除
[oracle@node1 ~]$ srvctl config srvpool
サーバー・プール名: Free
重要度: 0、最小: 0、最大: -1
カテゴリ: 
候補サーバー名: 
サーバー・プール名: Generic
重要度: 0、最小: 0、最大: -1
カテゴリ: 
候補サーバー名: node1,node2
サーバー・プール名: srvpool1
重要度: 10、最小: 1、最大: 2
カテゴリ: hub
候補サーバー名: 
[oracle@node1 ~]$ srvctl status srvpool -detail
サーバー・プール名: Free
アクティブ・サーバー数: 0
アクティブ・サーバー名: 
サーバー・プール名: Generic
アクティブ・サーバー数: 2
アクティブ・サーバー名: node1,node2
NAME=node1 STATE=ONLINE
NAME=node2 STATE=ONLINE
サーバー・プール名: srvpool1
アクティブ・サーバー数: 0
アクティブ・サーバー名: 
[oracle@node1 ~]$ srvctl remove srvpool -serverpool srvpool1
[oracle@node1 ~]$ srvctl config srvpool
サーバー・プール名: Free
重要度: 0、最小: 0、最大: -1
カテゴリ: 
候補サーバー名: 
サーバー・プール名: Generic
重要度: 0、最小: 0、最大: -1
カテゴリ: 
候補サーバー名: node1,node2
[oracle@node1 ~]$ srvctl status srvpool -detail
サーバー・プール名: Free
アクティブ・サーバー数: 0
アクティブ・サーバー名: 
サーバー・プール名: Generic
アクティブ・サーバー数: 2
アクティブ・サーバー名: node1,node2
NAME=node1 STATE=ONLINE
NAME=node2 STATE=ONLINE

クラスタリソース情報
[root@node1 ~]# /u01/app/12.1.0/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.FRA.dg
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.asm
               ONLINE  ONLINE       node1                    Started,STABLE
               ONLINE  ONLINE       node2                    Started,STABLE
ora.net1.network
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.ons
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       node2                    STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.MGMTLSNR
      1        ONLINE  ONLINE       node1                    169.254.244.153 192.
                                                                                 168.100.101,STABLE
ora.cvu
      1        ONLINE  ONLINE       node1                    STABLE
ora.mgmtdb
      1        ONLINE  ONLINE       node1                    Open,STABLE
ora.node1.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.node2.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.oc4j
      1        ONLINE  ONLINE       node1                    STABLE
ora.orcl.db
      1        ONLINE  ONLINE       node1                    Open,STABLE
      2        ONLINE  ONLINE       node2                    Open,STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       node1                    STABLE
--------------------------------------------------------------------------------

13. (任意)プロファイルにORACLE_SID追加
必要に応じてユーザのプロファイルにORACLE_SIDを追加します

#ノード1
[root@node1 ~]# vi /home/grid/.bash_profile
----------------------------------------
export ORACLE_SID=+ASM1
----------------------------------------

[root@node1 ~]# vi /home/oracle/.bash_profile
----------------------------------------
export ORACLE_SID=orcl1
----------------------------------------

#ノード2
[root@node2 ~]# vi /home/grid/.bash_profile
----------------------------------------
export ORACLE_SID=+ASM2
----------------------------------------

[root@node2 ~]# vi /home/oracle/.bash_profile
----------------------------------------
export ORACLE_SID=orcl2
----------------------------------------

14. (任意)DB接続確認
#ノード1
[oracle@node1 ~]$ echo $ORACLE_SID
orcl1
[oracle@node1 ~]$ sqlplus / as sysdba
SQL> select instance_name,status from v$instance;

INSTANCE_NAME                                           STATUS
------------------------------------------------ ------------------------------------
orcl1                                                                OPEN

#ノード2
[oracle@node2 ~]$ echo $ORACLE_SID
orcl2
[oracle@node2 ~]$ sqlplus / as sysdba

SQL> select instance_name,status from v$instance;

INSTANCE_NAME                                           STATUS
------------------------------------------------ ------------------------------------
orcl2                                                                OPEN

 

■参考資料
Oracle Database 11g Release 2 RAC実践ガイド 基礎から学ぶRAC構築・管理