oracle運用tips大放出! ~ rac環境のrmanのパラレル化を極める 編 ~ @2016-02-23...
TRANSCRIPT
2016.02.23
NTTデータ先端技術株式会社
大田 祐也
~ RAC環境のRMANパラレル化を極める 編 ~
Oracle運用Tips大放出!
【メイントーク】
RAC環境のRMANバックアップを
パラレル化で高速にするTips
あるシステムでのおはなし
・ RAC 3node環境
・ orcl データベースが存在(DBは11.2.0.4環境)
- orcl データベースは日次でRMANフルバックアップを取得
- RMANバックアップはnode1で実行
・ 『RMAN処理を高速にしたい、どうすればいいだろう』
- パラレル化(RMANチャネルの複数割り当て)
- マルチセクションバックアップ
- 表圧縮/RMANのバックアップ圧縮
- 読み取り専用表領域の使用
- 不要表領域の除外
- ASM上へのRMANバックアップ取得
- 増分バックアップ/高速増分バックアップ
RMANの実行時間が長時間化しつつあり…
今回詳しく お話するところです
RMAN> BACKUP DATABASE ~ ;
早速パラレル化してみましょう!
RMAN> RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK ;
ALLOCATE CHANNEL ch2 DEVICE TYPE DISK ;
ALLOCATE CHANNEL ch3 DEVICE TYPE DISK ;
BACKUP DATABASE ~ ;
}
早速パラレル化してみましょう!
実行ノード(今回はnode1) でのパラレル化 任意のチャネル名と
することが可能
RMAN> RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK CONNECT ‘sys/<password>@orcl1’ ;
ALLOCATE CHANNEL ch2 DEVICE TYPE DISK CONNECT ‘sys/<password>@orcl2’ ;
ALLOCATE CHANNEL ch3 DEVICE TYPE DISK CONNECT ‘sys/<password>@orcl3’ ;
BACKUP DATABASE ~ ;
}
早速パラレル化してみましょう!
各ノードに分散したパラレル化
パスワードを明示指定した チャネルでの接続が必須
パラレル化をする際に考慮すること
考慮すること1: チャネル指定をどこまで行うか(パラレル度)
・ 1つのチャネルでは最大で1CPUコアを使用します。
⇒ 高速化のためには複数チャネルでのバックアップが望ましいため、
システムのCPU空き状況を踏まえ、検証を行いながらI/O性能を
最大限引き出せるようチャネル数を設定してください。
・ では、チャネル数を多くすればするほど高速化が望めるのでしょうか?
必ずしもそうではなく、気を付けたいポイントがあります。
⇒ 各チャネルはどのようにバックアップを取っているのでしょうか?
考慮すること1: チャネル指定をどこまで行うか(パラレル度)
・ 各チャネルはどのようにバックアップを取っているのでしょうか?
⇒ データファイルごとにバックアップを取得しています。
⇒ つまり、大きなデータファイルが存在する場合、そのチャネルでの
バックアップ時間がネックとなります。 ← ココです!
考慮すること1: チャネル指定をどこまで行うか(パラレル度)
・ ここで力を発揮するのが、マルチセクションバックアップ機能です。
⇒ 大規模なデータファイルを、セクション単位に分割してバックアップ
する機能です。
⇒ 分割するセクションサイズは指定可能です(デフォルトでは1GB)
・ このように使います。
RMAN> BACKUP SECTION SIZE 100M DATABASE ~ ;
考慮すること1: チャネル指定をどこまで行うか(パラレル度)
・ マルチセクションバックアップ機能を使用することで…
⇒ 大規模データファイルのバックアップがネックとならなくなります。
⇒ パラレル化とマルチセクションバックアップはセットで検討しましょう。
考慮すること1: チャネル指定をどこまで行うか(パラレル度)
・ マルチセクションバックアップ機能を使用することで…
⇒ 大規模データファイルのバックアップがネックとならなくなります。
⇒ パラレル化とマルチセクションバックアップはセットで検討しましょう。
考慮すること2: 障害発生時の動きについて
・ バックアップ取得中にどれか1チャネルが停止した場合、RMANバック
アップ処理はエラー終了します。
⇒ RMANバックアップ処理の再実行の考慮が必要です。
⇒ このシステムでは、DBA調査を行ってから個別対応とするため、
自動再実行にはしませんでした。
考慮すること3: 停止ノードのチャネル指定を行わないようにする
・ ALLOCATE CHANNEL指定を行う際、正常起動しているノードの
チャネル指定を行う必要があります。停止ノードのチャネル指定を行う
と、バックアップ取得はRMAN起動時点で失敗します。
⇒ 停止ノードのチャネル指定を行わないような考慮が必要です。
⇒ このシステムでは、ノード(インスタンス)の起動判定を行った上で
チャネル設定を行うようにしました。
考慮すること4: 【番外編】 パスワードを埋め込みたくない場合
RMAN> RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK CONNECT ‘sys/<password>@orcl1’ ;
ALLOCATE CHANNEL ch2 DEVICE TYPE DISK CONNECT ‘sys/<password>@orcl2’ ;
ALLOCATE CHANNEL ch3 DEVICE TYPE DISK CONNECT ‘sys/<password>@orcl3’ ;
BACKUP DATABASE ~ ;
} パスワードを明示指定した チャネルでの接続が必須
なのですが…
RMAN> RUN {
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK CONNECT ‘/@orcl1’ ;
ALLOCATE CHANNEL ch2 DEVICE TYPE DISK CONNECT ‘/@orcl2’ ;
ALLOCATE CHANNEL ch3 DEVICE TYPE DISK CONNECT ‘/@orcl3’ ;
BACKUP DATABASE ~ ;
}
考慮すること4: 【番外編】 パスワードを埋め込みたくない場合
Oracle Walletを利用すればこのようにパスワードを
隠匿可能です!
【30秒小ワザ】
SQL*Plusで簡単に問合せ結果を
Excel形式で出力するTips
SQL*Plusで簡単に問合せ結果をExcel形式で出力するTips
・ SQLの問い合わせ結果をExcelで参照したいとき、みなさんは
どのようにされていますか?CSV形式で出力してExcelに貼り付けて
区切ってゴニョゴニョ.. といった方法でしょうか?
・ でも、CSV形式で出力するのは少し面倒ですよね…
⇒ set colsep ‘,’ を使うと簡単ですが、固定長になってしまう…
⇒ select A || ‘,’ || B || ‘,’ || C from ~ といった方法だと
可変長で綺麗に出力されるものの、SQL作成が少し面倒…
そこで
簡単に問合せ結果をExcel形式で出力できる方法をご紹介します!
SQL*Plusで簡単に問合せ結果をExcel形式で出力するTips
・ 簡単に問合せ結果をExcel形式で出力できる方法をご紹介します!
⇒ set markup html on を使います!
SQL> set pages 9999 SQL> set trimspool on ⇒ ここはご自由に設定してください SQL> set term off ⇒ ここはご自由に設定してください SQL> set markup html on ⇒ ココです! SQL> spool <FileName>.xls ⇒ 拡張子をxlsとするのがミソです! <br>
SQL> <Select文>
SQL> set markup html off
<br> SQL> spool off
SQL*Plusで簡単に問合せ結果をExcel形式で出力するTips
・ 出力したファイルをExcelで開いてみましょう!
⇒ ファイル形式うんぬんのポップアップがでますが、”はい” を押します。 ⇒ 下記のように、列毎に綺麗に表示されます。 あとは、みなさんのお好きなように編集してください。
【さいごに】
本日のお礼
2016.02.23
NTTデータ先端技術株式会社
大田 祐也
このような機会を頂いたことに
とても感謝しております!
みなさまの運用が少しでもHappyになる
エッセンスとなれば幸いです!
本日はご清聴いただきありがとうございました!