しばちょう先生の試して納得!DBAへの道 indexページ▶▶

 


 

みなさん、こんにちは。”しばちょう”こと柴田長(しばた つかさ)です。

なんと!出ちゃいました!サボリ魔の自分が一番信じられませんが、今回で連載開始から5周年&第50回という記念すべき節目の回を迎えることができました!皆様に読んで頂けているからこそ継続することができておりますので、本当に感謝しております。

また、先日10/27に開催させて頂いたOracle DBA & Developer Day 2016 に沢山の方にご来場頂きまして、本当にありがとうございました!少しでも皆様のお役に立てる情報をお届けできたのであれば嬉しいです。皆様に使って頂けるからこそ、その機能に価値が生まれると私は思います。またの機会にお会いできることを楽しみにしております!ということで、今年最後のOracle Database Technology Nightの開催を12/16(金)に予定しております。日本オラクル内でMultitenantに一番詳しい“伊藤 勝一さん”が12c Release 2 の新機能も含めてご説明させて頂きますので、ご参加をお待ちしております。私は会場内をウロウロしていますので、お見掛けの際はご挨拶させて頂ければ嬉しいです。(お申込みはこちら)補足:今回のTechnology Nightは特別バージョンのために開始時刻が早まっておりますが、通常開始時間から(18:45~)のセッションからのご参加でも問題ございません。

さて前置きが長くなりましたが、この記念すべき「本連載開始から5周年&第50回」のタイミングで偶然にも最新バージョンであるOracle Database 12c Release 2もリリースされ、先行してOracle Database Cloud Service上でお使い頂ける状態となっております。何か運命を勝手に感じてしまいましたので、今回は早速ですがOracle Database Cloud Service上に12c Release 2のデータベースを作成し、その構成を確認してみましょう。DBCSをまだ使ったことの無い方もこの機会に是非ともチャレンジしてみてくださいね!

 

以下の演習をOracle Database Cloud Service上で試してみてください。なお、Oracle Cloudのページ(https://www.oracle.com/cloud/free/)から1か月間の無料トライアルをお申込み頂けますので、そちらをご活用してみてください。

 
  • 【今回ご紹介するネタ一覧(逆引き)】
  • ✓ Oracle Database Cloud Serviceのサービス作成(演習1)
  • ✓ Compute NodeへのSSHクライアントからの接続(演習2)
  • ✓ マルチテナント構成の確認(演習4)
  • ✓ 接続しているコンテナ名をSYS_CONTEXT関数で確認(演習4)
  • ✓ データベース・インスタンスのメモリー関連設定の確認(演習5)
  • ✓ Linux Huge Pageの確認(演習6)
  • ✓ アーカイブ・ログ出力設定の確認(演習7)
  • ✓ Flashback Loggingの有効性確認(演習8)
  • ✓ RMAN高速増分バックアップの有効性確認(演習9)
  • ✓ ORAChkの実行と結果(演習10)


1. WebブラウザでOracle Database Cloud Serviceのサービス・コンソールへアクセスし、サービス・レベルがAutomated(= Virtual Imageではない)「Oracle Database 12c Release 2 Enterprise Edition – Extreme Performance」のサービスを作成してください。

shibata-50-1

 

この画面は問題ないでしょう。「サービスの作成」ボタンを押下するだけですね。

 

shibata-50-2

こちらが最初に悩む画面ですが、サービス生成のタイミングでデータベースも自動生成されるのが上段の「Oracle Database Cloud Service」です。Automatedとも呼ばれています。色々とOracle Cloudならではのツールのご利用が可能です。一方、下段の「Oracle Database Cloud Service – Virtual Image」というサービス・レベルは、Oracle Databaseのバイナリがインストールされた状態までであり、ご自身でデータベースを作成する必要がありますので、ご注意くださいね。ということで、折角ですから今回は「Oracle Database Cloud Service」を選択し、「次」ボタンを押下します。

※この画面の下部に「請求頻度」の選択ボックスがありますが、トライアル環境においては関係ありません。

shibata-50-3

キター!ですね。ワクワクしてきますねー!

こちらの画面において、DBCS上に作成されるOracle Databaseのバージョンとして「Oracle Database 12リリース2」を選択し、「次」ボタンを押下します。

shibata-50-4

Oracle Databaseのエディションとして、折角なので全てのオプション機能を利用可能な「Enterprise Edition – Extreme Performance」を選択しちゃいましょう。その後、「次」ボタンを押下します。

shibata-50-5

こちらの画面が最後の設定画面で、各設定値を入力します。これまで何度もデータベースを作成されてきたDBAの方であれば、「この設定は必要だよね」的な項目が並んでいるだけだと思います。

少しだけ異なる点としては、「SSH公開鍵」なる項目でしょうか。SSH公開鍵と秘密鍵のペアは、作成されるDBCSのCompute Node(簡単に言えば、仮想OS)に対してSSHクライアントを使って接続する際に必要となります。また、そのキーペアは、こちらの画面にて生成してダウンロードしておくことが可能です。わざわざご自身のクライアントPC環境で生成する手間が省けて、非常に便利ですね。また、作成されるデータベースのバックアップの保存先も指定できます。今回は「なし」を選択しています。

「次」ボタンを押下することで、ここまで選択したすべての項目を確認する画面が表示されますので、「作成」ボタンを押下すれば完了です!あとは休憩して戻ってきたら完成していることでしょう!いやーこんなにも簡単にデータベース環境が作れてしまうと驚くのと同時に悔しくなってきますね(笑)


2. ご自身のPC上のSSHクライアント(例えば、Tera Term)を使用して、演習1で作成したサービス(私の環境では「sibacho」)のCompute Nodeへ接続してください。

と、いきなり言われても・・・ですが、Oracle Database Cloud ServiceのマニュアルUsing Oracle Database Cloud Service」の「5 Accessing Database Cloud Service – Connecting to a Compute Node Through Secure Shell (SSH)」において丁寧に説明されております。いつの時代もマニュアルは大切ですね。

shibata-50-6

演習1で「サービスの作成」ボタンが表示されていた画面に作成されたサービス「sibacho」が表示されているので、そのサービス名(ここではsibacho)のリンクをクリックすると、上の画面に移動します。こちらに赤四角でマスクされている部分にSSHクライアントからアクセス可能なパブリックIPアドレスが表示されていますので、メモメモしておきましょう。

ということで、皆さんのPC上のSSHクライアントに、「IPアドレス」と演習1で生成した「SSH秘密鍵」を接続情報として設定すれば・・・って、何か足りませんよね。はい、接続ユーザー名です。しかし、上の画面をいくら探してもきっと見つからないと思います。答えは直前にご紹介したマニュアルのページの一行目に次のように書いてあるのですね。

To gain local access the tools, utilities and other resources on a compute node associated with Oracle Database Cloud Service, you use Secure Shell (SSH) client software to establish a secure connection and log in as the user oracle or the user opc .

「oracle」ユーザーと「opc」ユーザーの違いについても同じページで説明がされており、簡単に言えば、opcユーザーはsudoコマンドでroot権限が必要なオペレーションを実行できます。一方、oracleユーザーはroot権限を持っていませんが、Oracle Databaseのバイナリの所有者です。

はい、ということで、次のように必要な情報をSSHクライアントの接続情報に設定して、Oracle CloudのCompute Nodeへ接続をしてみましょう!念のためにコメントしておくと、指定するカギは秘密鍵(Private Key)ですからね。

shibata-50-7

shibata-50-8

じゃーん!見事に、簡単にSSH接続ができてしまいました。

そして、Oracle Database 12c Release 2のデータベースORCLが存在してオープンされていることが確認できます!(実行しているコマンドに関しては、演習3で解説させて頂きますね。)

(注意点) Oracle Database Cloud Serviceで作成したサービスのCompute Nodeに対しては、デフォルトで22番ポートのみで通信が可能です。もしも、ご利用のネットワーク環境の制限のためにインターネットへ22番ポートでアクセスできない場合には、SSHトンネリングやCompute Node側で特定の通信ポートを開ける等の作業が必要となりますので、ご注意ください。この辺りの詳細を知りたい方は、こちらのスライドを参照してみてください。


3. oracleユーザーにスイッチして、oracleユーザーの「環境変数」とOracle Databaseの「バージョン」を確認してください。

[opc@sibcho ~]$ sudo -s
[root@sibcho ~]# su - oracle

[oracle@sibcho ~]$ env | grep ORACLE
ORACLE_UNQNAME=ORCL
ORACLE_SID=ORCL
ORACLE_HOSTNAME=sibcho.compute-jpem.oraclecloud.internal
ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1

[oracle@sibcho ~]$ dbaascli database status
DBAAS CLI version 1.0.0
Executing command database status
Database Status:
Database is open 
Database name: ORCL

Oracle Database 12c EE Extreme Perf Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 - Production
CORE    12.2.0.1.0      Production
TNS for Linux: Version 12.2.0.1.0 - Production
NLSRTL Version 12.2.0.1.0 – Production

まず、Oracle Cloudの特徴でもありますが、opcユーザーでログインしているので「sudo -s」でroot権限を使えるようにして、oracleユーザーにスイッチする必要があります。面倒な方は、SSHクライアントでCompute Nodeに接続する際に、opcユーザーではなくoracleユーザーを使用すれば良いだけです。ただし、その場合、root権限は使えませんのでご注意くださいね。

そして、oracleユーザーの環境変数ですが、いかがでしょうか?Oracleデータベース・インスタンスへ接続するために必要な環境変数がすべてデフォルトでセットされているのです!よって、このままの状態でSQL*Plusでインスタンスへ接続できてしまうのです。これまた便利ですねー素晴らしい。次に、Oracle Databaseのバージョンですが、Oracle Cloudならではの「dbaascli」ユーティリティが提供されており、こちらを使用すると上記のようにババッっと情報が出力されるのです。このユーティリティには他にも機能が実装されているので、次回以降も含めて追々ご紹介していきますね。

 

あれ・・・?既に原稿8ページ目にも関わらず、演習3までしか進んでいないことに気付きました。がーん。体力が持てば、50回目にして最長の記事になるかもしれません(笑) 頑張って書くので頑張って読んでください。すいません。


4. 作成済みのデータベースがマルチテナント構成であることを確認してください。

[oracle@sibcho ~]$ sqlplus / as sysdba
SQL> show parameter ENABLE_PLUGGABLE_DATABASE

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
enable_pluggable_database            boolean     TRUE


SQL> show PDBs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO


SQL> select CON_ID, NAME, LOCAL_UNDO, PDB_COUNT from V$CONTAINERS ;

    CON_ID NAME                 LOCAL_UNDO  PDB_COUNT
---------- -------------------- ---------- ----------
         1 CDB$ROOT                      0          1
         2 PDB$SEED                      1          0
         3 PDB1                          1          0

これまでにマルチテナント・アーキテクチャをご利用頂いていた方には非常に簡単な演習ではありますが、基本中の基本ですのでキチンと押さえておきましょう。

まず、マルチテナント・アーキテクチャを使用すると、Oracle データベースをマルチテナント・コンテナ・データベース(CDB)として機能させることが可能となります。このCDBにはCDB$ROOTという名前のルート・コンテナが必ず一つのみ存在し、そこに複数のプラガブル・データベース(PDB)が差し込まれて(プラグされて)管理されるような構成となります。ちなみに、従来のCDBではないOracle データベースは非CDBと呼ばれています。

でもって、OracleデータベースがCDBであることを示す初期化パラメータが「enable_pluggable_database」であり、見事に「TRUE」となっていることから、演習1でDBCS上に自動作成されたデータベースはマルチテナント・アーキテクチャが採用されていることが理解できます。演習1の画面遷移を見直して頂ければと思いますが、CDB or 非CDBなのかを選択する項目はありませんよ。

 

そして、そのCDBに差し込まれているPDBを確認するコマンドが「show PDBS」となります。これは便利ですね。上記の実行例を確認して頂くと一目瞭然ですが、2つのPDBが存在していることが分かります。しかし、CON_ID=2のPDB$SEEDという名前のPDBに関しては、シードPDBと呼ばれる「PDBのテンプレート」であり、新規のPDBを作成する際の元ネタとして使用されるものです。よって、普通という表現が適切なのかはわかりませんが、普通のPDBはCON_ID=3のPDB1の一つとなります。

ちなみに、show PDBSの出力列の名前に疑問を持った方はいないでしょうか?実は、私はここで混乱したことがあります。「CON_ID」とか「CON_NAME」の「CON」って何の省略?「Container(コンテナ)」だよね?あれ?CDBのこと? show PDBSだからPDBを表示しているのだよね?と。その答えは、次の通り。PDBはコンテナです。CDBはコンテナではありません。CDBはコンテナを管理するデータベースです。よって、PDBに「コンテナID=CON_ID」が振られますし、PDBの名前は「コンテナ名」という表現になります。ちなみに、ルート・コンテナはコンテナの一種であるので、最後のV$CONTAINERSの出力結果に、CON_ID=1でルート・コンテナ(CDB$ROOT)が出力されています。

さらに、「SQL*PlusでCDBに接続する」という表現が使われていたりしますが、正確な表現だと「SQL*PlusでCDB$ROOTコンテナに接続する」になります。これを示しているのが次の実行結果であり、SYS_CONTEXT関数で接続中のコンテナ名を取得してみると、CDB$ROOTと表示されるのです。

[oracle@sibcho ~]$ sqlplus / as sysdba
SQL> SELECT SYS_CONTEXT ('USERENV', 'CON_NAME') FROM DUAL;

SYS_CONTEXT('USERENV','CON_NAME')
---------------------------------
CDB$ROOT

と、ここまで理解して頂けると、各種ビューに追加されているCON_ID列を上手く解釈できるようになっていると思います。例えば、次のような実行結果からデータファイルやRedo Logファイル、一時ファイルがどのコンテナの持ち物なのかが理解できますよ。詳細は、またの機会にご説明させて頂きますね。個人的にはRedo Logファイルが1GBになっていたので、少し安心しましたよ。

[oracle@sibcho ~]$ sqlplus / as sysdba
SQL> -- Datafile
set linesize 150 pages 5000
col NAME for a50
select CON_ID, FILE#, STATUS, NAME, BYTES/1024/1024 as MB
  from V$DATAFILE
 order by 1, 2 ;

CON_ID FILE# STATUS  NAME                                                 MB
------ ----- ------- -------------------------------------------------- ----
     1     1 SYSTEM  /u02/app/oracle/oradata/ORCL/system01.dbf           890
     1     3 ONLINE  /u02/app/oracle/oradata/ORCL/sysaux01.dbf           770
     1     4 ONLINE  /u02/app/oracle/oradata/ORCL/undotbs01.dbf          215
     1     7 ONLINE  /u02/app/oracle/oradata/ORCL/users01.dbf              5
     2     5 SYSTEM  /u02/app/oracle/oradata/ORCL/pdbseed/system01.dbf   270
     2     6 ONLINE  /u02/app/oracle/oradata/ORCL/pdbseed/sysaux01.dbf   560
     2     8 ONLINE  /u02/app/oracle/oradata/ORCL/pdbseed/undotbs01.dbf  180
     3     9 SYSTEM  /u02/app/oracle/oradata/ORCL/PDB1/system01.dbf      280
     3    10 ONLINE  /u02/app/oracle/oradata/ORCL/PDB1/sysaux01.dbf      600
     3    11 ONLINE  /u02/app/oracle/oradata/ORCL/PDB1/undotbs01.dbf     180
     3    12 ONLINE  /u02/app/oracle/oradata/ORCL/PDB1/users01.dbf         5

SQL> -- Redo Log File
select GROUP#, THREAD#, BYTES/1024/1024, MEMBERS, CON_ID from V$LOG ;

    GROUP#    THREAD# BYTES/1024/1024    MEMBERS     CON_ID
---------- ---------- --------------- ---------- ----------
         1          1            1024          1          0
         2          1            1024          1          0
         3          1            1024          1          0

SQL> -- Temporary File
set linesize 150 pages 5000
col NAME for a50
select CON_ID, FILE#, NAME, BYTES/1024/1024 as MB
  from V$TEMPFILE
 order by 1,2 ;

CON_ID FILE# NAME                                                  MB
------ ----- -------------------------------------------------- -----
     1     1 /u02/app/oracle/oradata/ORCL/temp01.dbf               33
     2     2 /u02/app/oracle/oradata/ORCL/pdbseed/temp012016-10    64
             -04_11-34-07-330-AM.dbf
     3     3 /u04/app/oracle/oradata/ORCL/PDB1/temp012016-10-04   100
             _11-34-07-330-AM.dbf


5. SGA(System Global Area)とPGA(Private Global Area)の各種設定を確認してください。

[oracle@sibcho ~]$ sqlplus / as sysdba
SQL> 
set linesize 150 pages 5000
col COMPONENT for a27
col CURRENT_SIZE for 999,999,999,999
col USER_SPECIFIED_SIZE for 999,999,999,999
select COMPONENT, CURRENT_SIZE, USER_SPECIFIED_SIZE, CON_ID
  from V$MEMORY_DYNAMIC_COMPONENTS ;

COMPONENT                       CURRENT_SIZE USER_SPECIFIED_SIZE     CON_ID
--------------------------- ---------------- ------------------- ----------
shared pool                      905,969,664                   0          0
large pool                        33,554,432                   0          0
java pool                         16,777,216                   0          0
streams pool                               0                   0          0
SGA Target                     5,452,595,200       5,452,595,200          0
DEFAULT buffer cache           3,170,893,824                   0          0
KEEP buffer cache                          0                   0          0
RECYCLE buffer cache                       0                   0          0
DEFAULT 2K buffer cache                    0                   0          0
DEFAULT 4K buffer cache                    0                   0          0
DEFAULT 8K buffer cache                    0                   0          0
DEFAULT 16K buffer cache                   0                   0          0
DEFAULT 32K buffer cache                   0                   0          0
Shared IO Pool                   218,103,808                   0          0
Data Transfer Cache                        0                   0          0
In-Memory Area                 1,090,519,040       1,090,519,040          0
In Memory RW Extension Area                0                   0          0
In Memory RO Extension Area                0                   0          0
PGA Target                     3,640,655,872       3,640,655,872          0
ASM Buffer Cache                           0                   0          0


SQL> show parameter MEMORY%TARGET

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
memory_max_target                    big integer 0
memory_target                        big integer 0


SQL> show parameter SGA_M%

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 5200M
sga_min_size                         big integer 0


SQL> show parameter PGA

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit                  big integer 7266464640
pga_aggregate_target                 big integer 3633232320

ちょっとホッとする演習問題ですね。DBAとしてはどうしても作成されたデータベースのメモリー関連の設定が気になりますよね。ということで、早速確認してみた結果が上記の通りとなります。いかがでしょうか?まあ、物理メモリー15GBの環境であることを考えれば妥当な設計になっていると私は思います。少し詳しく見ていきましょう。

V$MEMORY_DYNAMIC_COMPONENTSビューの「SGA Target」の「USER_SPECIFIED_SIZE」列に値がセットされていることから、この環境ではSGA関連の初期化パラメータ(SGA_*)を設定していることが推測できますね。SGAの各コンポーネントの割合やPGAのサイズも一目で理解できるので非常に便利なビューですから覚えておきましょう。

さらに、show PARAMETERで各パラメータを見ていけば、MEMORY_*初期化パラメータが0であることと、SGA_MAX_SIZE初期化パラメータがセットされていることから、この環境は「自動共有メモリー管理(= Automatic Shared-Memory Management:ASMM)」でSGAが割り当てられていることが理解できますね。また、Oracle Database 12c Release 1から登場したPGA_AGGREGATE_LIMIT初期化パラメータもセットされています。この初期化パラメータの意味はこちらのマニュアルを読んで別途学習しておいてくださいね。ORA-4030の発生を抑止するためには効果的なパラメータですよー。

はい、この演習は以上です。では終わりません。「ASMMで管理されている」と聞いた際には、パフォーマンス・チューニングの観点からもう一つ確認したくなるのです。それが次の演習です!


6. Linux Huge Pagesの使用有無を確認してください。

[oracle@sibcho ~]$ sqlplus / as sysdba
SQL>
SQL> show parameter USE_LARGE_PAGES

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
use_large_pages                      string      TRUE

SQL> exit

[oracle@sibcho ~]$ exit
[root@sibcho ~]#
[root@sibcho ~]# grep ^Huge  /proc/meminfo                                                                    
HugePages_Total:    2863
HugePages_Free:      262
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

はい、答えはこちらですねー。Linux Huge Pageはご存知でしょうか?Linux環境において大規模メモリーを効率よく活用するOSの機能であり、Page Tableのエントリ数が減少してエントリをマッピングするCPUレジスタ処理が軽減します。つまり、メモリー操作のパフォーマンスが向上するのですね。で、このHuge Pageで管理されているメモリー領域上にOracleデータベース・インスタンスのSGAを起動するか否かを制御する初期化パラメータが「USE_LARGE_PAGES」であり、見事に「TRUE」でHuge Pageが使用されるように設定されています!スキが無い。。。

そのあとのコマンドは、OS側でのLinux Huge Pageの設定を確認しており、一つのページ・サイズ(Hugepagesize)が2048KBでデフォルト設定の4KBと比べて512倍の大きさに設定されています。そして、そのようなページの合計(HugePages_Total)が2863ページで空き(HugePages_Free)が262ページですから、使用しているページ数は2601ページ。このページ数に一つのページ・サイズである2048KBを掛け合わせると、5,454,692,352バイトとなります。これは、演習5のV$MEMORY_DYNAMIC_COMPONENTSビューで確認したSGA_TARGETのCURRENT_SIZEよりも少しだけ大きい数字であることもご確認いただけると思います。つまり、SGAがLinux Huge Page上に起動しているっぽいですよね。


7. アーカイブ・ログ・モードの有効性と出力パスを確認してください。

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1
Next log sequence to archive   3
Current log sequence           3


SQL> show parameter DB_RECOVERY

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------------------
db_recovery_file_dest                string      /u03/app/oracle/fast_recovery_area
db_recovery_file_dest_size           big integer 6G

はい、こちらはオマケ問題ですね。でも、ちょっと面白いことを書いているので、ここの解説は読み飛ばさないで欲しいです!

もちろんアーカイブ・ログ・モードで動作していますし、出力先としてUSE_DB_RECOVERY_FILE_DESTと表示されていることから、高速リカバリ領域へアーカイブ・ログが出力される設定になっています。そして、その高速リカバリ領域の設定場所は初期化パラメータDB_RECOVERY_FILE_DESTを確認すればバッチリですね。

DBCSサービスを作成する際に指定した設定値によって、この値は変化すると思います(すいません。まだ検証が足りず・・・)が、この高速リカバリ領域のサイズは十分注意する必要がありそうです。アーカイブ・ログで溢れてしまうとデータベースへの更新処理が不可能になってしまうので、定期的にアーカイブ・ログを削除する運用を組み込まなくては・・・と思った方は大正解ですが、Oracle Database Cloud ServiceでAutomatedなサービスを作成された場合には、大間違いになりますよー!!

なぜならば、この私の環境を確認してみたところ、30分間に一度の頻度で24時間前に生成されたアーカイブ・ログを削除するスクリプトが自動実行されるようにCRONでスケジューリングされていたのです。なんと、驚き!(今後のリリースによって変更される可能性もあるとは思いますので、ご注意を。)

[root@sibcho opc]# cat /etc/crontab

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
0,30 * * * * root /home/oracle/bkup/ORCL/obkup -dbname=ORCL -archivelog
15 03 * * 6 oracle /var/opt/oracle/cleandb/cleandblogs.pl

ちなみに、上記の赤文字のコマンドを手動で実行してみたところ、次のようにRMANの「DELETE archivelog」コマンドが内部的に発行されることまでは誰でも確認できますよー。

[root@sibcho opc]# /home/oracle/bkup/ORCL/obkup -dbname=ORCL –archivelog
(省略)
RMAN> DELETE FORCE NOPROMPT archivelog until time 'sysdate - 1';
Recovery Manager complete.
(省略)


8. Flashback Loggingの有効性を確認してください。

[oracle@sibcho ~]$ sqlplus / as sysdba
SQL> 
col NAME for a4
select DBID, NAME, LOG_MODE, CURRENT_SCN, FLASHBACK_ON, CDB, CON_ID, CON_DBID, FORCE_FULL_DB_CACHING from V$DATABASE ;

      DBID NAME LOG_MODE     CURRENT_SCN FLASHBACK_ON       CDB     CON_ID   CON_DBID FOR
---------- ---- ------------ ----------- ------------------ --- ---------- ---------- ---
1455319871 ORCL ARCHIVELOG       1952645 YES                YES          0 1455319871 NO


SQL> show parameter db_flashback_retention_target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer     1440

これもまたボーナス問題でしたね。V$DATABASEビューのFLASHBACK_ON列が「YES」となっているので、デフォルトでFlashback Loggingが有効化されていることが確認できます。おお!ということは? はい、そうですね。Flashback Logの出力先は高速リカバリ領域でしたね。なので、このFlashback Logの出力量も考慮しておきましょう。ちなみに、私の環境ではFlashback Logの保持期間は努力目標として24時間(=1440分)が設定されていました。

なお、こちらのスライドにボリューム追加方法が説明されていますので、是非参考にしてみてください。


9. Recovery Managerの高速増分バックアップの有効性を確認してください。

[oracle@sibcho ~]$ sqlplus / as sysdba
SQL> 
col FILENAME for a64
select * from V$BLOCK_CHANGE_TRACKING ;

STATUS  FILENAME                                                            BYTES CON_ID
------- ---------------------------------------------------------------- -------- ------
ENABLED /u02/app/oracle/oradata/ORCL/changetracking/o1_mf_d289kg7y_.chg  11599872      1

さて、こちらは覚えておりましたでしょうか?忘れてしまっていた方は、是非とも「第22回 Recovery Managerによる高速差分増分バックアップ」で復習しておいてくださいね。デフォルトでブロック・チェンジ・トラッキングが有効化されているので、Recovery Managerで高速増分バックアップが実行できる状態になっています。これは設定漏れを防げて便利ですね。

ちなみに、DBCS環境でのバックアップはいくつか選択することが可能です。私はバテてしまったので、ここでの解説は割愛させて頂きますが、情報が掲載されているリンクを貼り付けておきますね。ごめんなさーい。


10. 最後に、サービス作成時に自動生成されたデータベースに対してORAChkを実行し、スコアを確認してください。

[opc@sibcho ~]$ sudo -s
[root@sibcho ~]# su - oracle
[oracle@sibcho ~]$ mkdir orachk; unzip orachk.zip –d orachk; cd orachk
[oracle@sibcho orachk]$ ./orachk -b –m

List of running databases
1. ORCL
2. None of above

Select databases from list for checking best practices. For multiple databases, select 1 for All or comma separated number like 1,2 etc [1-2][1].1
. . 
(以降、省略)

shibata-50-9

凄い!なんと「95点」というハイスコアを記録してしまったではないですか!

ここまでの演習でデータベースの各設定を確認してきた感触からも確かに高得点になりそうな予感はしていましたが、95点には正直驚きました。何故ならばなかなかお目にかかれないスコアだからです。素晴らしいと素直に思います。

ORAChkの実行方法は「第37回 ORAchkを使用したデータベースのヘルス・チェック」でご紹介させて頂いているので、そちらでも復習してみてくださいね。ORAChkツールはMy Oracle Supportの「Doc ID 1268927.2 ORAchk – Health Checks for the Oracle Stack」からダウンロード可能ですが、 Oracle Cloud上のCompute Nodeに対してファイル転送ができなければ実行することはできませんので、演習1で生成した秘密鍵を使って上手に転送してみてください。それほど難しくはないはずです。って、丸投げ!!すいません。参考までに、私がWinSCPで転送設定した際の画面キャプチャを掲載しておきますね。

shibata-50-10

shibata-50-11

 

さてさて、最新リリースのOracle Database 12c Release 2をOracle Database Cloud Service上で一足早く触って頂きましたが如何でしたでしょうか?ちょっと、12.2の色を感じて頂く演習問題がほとんどなかったので不完全燃焼かもしれませんが、マルチテナント・アーキテクチャが採用されている等、今後も触りがいのありそうな印象です。また、各種データベースの設定値やORAChkのスコアを確認して頂きましたが、デフォルト設定でも直ぐにでも十分に活躍してくれそうなベスト・プラクティスが反映されている構成になっていたかと思います。ここがOracle Databaseを開発している会社が提供しているCloudの強みなのかなとも思います。って、自社製品を持ち上げすぎですかね?ごめんなさーい。ということで、今回は以上となります。

最後になりましたが、皆様のおかげで記念すべき連載5周年 & 50回目を迎えることができました。本当に感謝しております。正直、いつ止めるのかを正直考えることもありましたが、皆様からの温かい応援を頂けることで続けることができました。そして、まだもう少し続けてみようと考えておりますので、引き続きご愛読のほど、よろしくお願いします。

 


ページトップへ戻る▲

 

しばちょう先生の試して納得!DBAへの道 indexページ▶▶