2011年11月28日月曜日

[ASMLIB]EMC PowerPathの場合のお作法_6

前回:[ASMLIB]EMC PowerPathの場合のお作法_5


今回はまとめや参考情報について

1.EMC PowerPath環境でのASMLIBの設定方法
 通常のoracleasmコマンドを使用するとエラーになったりするので、
 emcpowerの時はasmtoolコマンドを使用する。
 投稿はこちら

2.マルチパスと(マルチデバイスパス)とは
 疑似デバイスとも言われるが、LU(ディスク)へのパスが複数存在しており、
 冗長化やI/Oの効率化を図ること出来る仕組み。
 特徴としては、1つのLUに対してパス+マルチパス分の複数デバイスが存在するように、
 OS上からは見える。/dev/配下など
 投稿はこちら

3.マルチパス環境におけるASMLIBのお作法
 /etc/sysconfig/oracleasmのORACLEASM_SCANORDERと
 (または)ORACLEASM_SCANEXCLUDEを設定して、
 誤ってシングルパスを読み込まないように、マルチパス優先して読み込ませたり、
 シングルパスを読み込ませない設定を行う。
 投稿はこちら

4.その他参考情報
 <参考資料>
 ・Oracle Databaseストレージ管理者ガイド 11gリリース1(11.1)マニュアル
 ・Dell™ PowerEdge™ Systems Oracle® Database on Enterprise Linux® x86_64
  Troubleshooting Guide Version 4.3 (p14ページ)

 ・Dell PowerEdge Systems Oracle 11g R2 Database on Enterprise Linux x86_64
  Getting Started Guide


 <参考情報>
 My Oracle Support情報
 ・ASMLib: oracleasm createdisk command fails:
  Device '/dev/emcpowera1 is not a partition [Failed] [ID 469163.1]

 ・Collecting The Required Information For Support To Troubleshot ASM/ASMLIB Issues.
  [ID 869526.1]

 ・Troubleshooting a multi-node ASMLib installation [ID 811457.1]

[ASMLIB]EMC PowerPathの場合のお作法_5

前回:[ASMLIB]EMC PowerPathの場合のお作法_4


前回は、はまらないためには?
って話を書きました。


今回はその他色々を見ていきます。

1.マルチパスと/proc/partitions
 /proc/partitionsの内容を見るとなんとなく、
 マルチパスとそれを構成しているパーティション、
 シングルデバイスパスの関係が見えてきます。
 
# cat /proc/partitions
major minor #blocks name

8 0 292421632 sda
8 1 104391 sda1
8 2 100663290 sda2
8 3 191647417 sda3
8 32 1059840 sdc --emocpoweraを構成するシングルパス1●
8 16 10598400 sdb --emocpowerbを構成するシングルパス1▲
8 48 1059840 sdd --emocpoweraを構成するシングルパス2●
8 64 1048780804 sde --emocpowerdを構成するシングルパス1★
8 80 1048780804 sdf --emocpowerdを構成するシングルパス2★
8 96 10598400 sdg --emocpowerbを構成するシングルパス2▲
8 112 52439040 sdh --emocpowercを構成するシングルパス1■
8 128 52439040 sdi --emocpowercを構成するシングルパス2■
253 0 1059840 emcpowera --●で構成されるマルチデバイスパス
253 1 10598400 emcpowerb --▲で構成されるマルチデバイスパス
253 2 52439040 emcpowerc --■で構成されるマルチデバイスパス
253 3 1048780804 emcpowerd --★で構成されるマルチデバイスパス

sdc,sdb,emcpoweraは同じブロック数です。
なんとなく想像できますが、実際のLUだとかパーティションは1つですが、
同一のパーティションに対して2つのパスがあるので
sdc、sdbという形でデバイス(orパーティション)が見えており、
その二つのパスを束ねたマルチパスemcpoweraも見えています。
ls -l /dev/*で確認すると/dev/sdbcや/dev/emcpowera等が確認できます。
また、LU(ディスク)までの経路でポートなどが冗長化されている場合は、
4つ等に見える場合にもあります。


2./proc/partitionsと/dev/oracleasm/disks
 /dev/oracleasm/disks配下にはASMLIBでラベルマーキングした、
 ラベル名のブロックデバイスが存在します。

# ls -l /dev/oracleasm/disks
合計 0
brw-rw---- 1 grid asmadmin 253, 0 11月 28 02:00 CRS
brw-rw---- 1 grid asmadmin 253, 1 11月 28 02:00 DG1
brw-rw---- 1 grid asmadmin 253, 2 11月 28 02:00 DG2
brw-rw---- 1 grid asmadmin 253, 3 11月 28 02:00 DG3 

真ん中のの数字は/proc/partitionsにも似たようなのがありました。

デバイス番号 253,0 = CRS用ディスク(ラベル) = emcpoweraディスク(orデバイス)
というの関係が読み取れます。
ディスクスキャン時に誤ってシングルデバイスパスを読み込んでしまうと、
この部分の関係が崩れることによってトラブルが発生します。


また、DELLさんのEqualLogicの場合は、/dev/mapper配下のブロックデバイスを
ORACLEASM_SCANORDERに指定しますが、
この場合もデバイス番号から、
/dev/mapper/配下のブロックデバイスとマルチデバイスパス、
ASMディスクの関係を読み取ることが出来ます。

# cat /proc/partitions grep dm
253 0 1059840 dm-0 --マルチデバイスパス
253 1 10598400 dm-1 --マルチデバイスパス
253 2 52439040 dm-2 --マルチデバイスパス
253 3 1048780804 dm-3 --マルチデバイスパス

# ls -l /dev/mapper/db*
合計 0
brw-rw---- 1 root disk 253, 0 11月 28 02:00 db-crs
brw-rw---- 1 root disk 253, 3 11月 28 02:00 db-data
brw-rw---- 1 root disk 253, 1 11月 28 02:00 db-redo
brw-rw---- 1 root disk 253, 2 11月 28 02:00 db-arc

# ls -l /dev/oracleasm/disks
合計 0
brw-rw---- 1 grid asmadmin 253, 0 11月 28 02:00 CRS
brw-rw---- 1 grid asmadmin 253, 1 11月 28 02:00 DG1
brw-rw---- 1 grid asmadmin 253, 2 11月 28 02:00 DG2
brw-rw---- 1 grid asmadmin 253, 3 11月 28 02:00 DG3


3.ASMLIBによるディスクスキャン時のログファイル
 /var/log/oracleasmファイルから、
 ASMLIBによるディスクスキャン時のログを見ることが出来ます。


以上、取りとめなく書きましたが、次回はまとめ

2011年11月22日火曜日

[ASMLIB]EMC PowerPathの場合のお作法_4

前回:[ASMLIB]EMC PowerPathの場合のお作法_3


前回は、どんな時になぜはまるのか?
って話を書きました。

今回は、はまらないための話

ASMの設定ファイルとして、/etc/sysconfig/oracleasmというファイルがあります。
このファイルに、優先して読み込むべきデバイス名や読み込む対象から除外する
デイバス名を指定することにより、擬似デバイスを優先して読み込むか、
シングルデバイスを読み込まない設定を行います。

# cat /etc/sysconfig/oracleasm

==================================================
#
# This is a configuration file for automatic loading of the Oracle
# Automatic Storage Management library kernel driver. It is generated
# By running /etc/init.d/oracleasm configure. Please use that method
# to modify this file
#

# ORACLEASM_ENABELED: 'true' means to load the driver on boot.
ORACLEASM_ENABLED=true

# ORACLEASM_UID: Default user owning the /dev/oracleasm mount point.
ORACLEASM_UID=grid

# ORACLEASM_GID: Default group owning the /dev/oracleasm mount point.
ORACLEASM_GID=asmadmin

# ORACLEASM_SCANBOOT: 'true' means scan for ASM disks on boot.
ORACLEASM_SCANBOOT=true

# ORACLEASM_SCANORDER: Matching patterns to order disk scanning
ORACLEASM_SCANORDER=""

# ORACLEASM_SCANEXCLUDE: Matching patterns to exclude disks from scan
ORACLEASM_SCANEXCLUDE=""
==================================================
※ASMのセットアップが終わった状態のファイルになります。

簡単な英語なので読めば分かると思いますが、
変更するのは、ORACLEASM_SCANORDERと(または)ORACLEASM_SCANEXCLUDE。


■設定例

例)以下のようなデバイスが見えている場合
/dev/sdc -----------擬似デバイス/dev/emcpoweraを構成するシングルデイバスパス
/dev/sdd -----------擬似デバイス/dev/emcpoweraを構成するシングルデイバスパス
/dev/sde -----------擬似デバイス/dev/emcpoweraを構成するシングルデイバスパス
/dev/sdf -----------擬似デバイス/dev/emcpoweraを構成するシングルデイバスパス
/dev/emcpowera ----上記4つのシングルデバイスから構成される擬似デバイス

-------------------------------
ORACLEASM_SCANORDER="emcpower" ←emcpoweraもbもこれ1つでOK
ORACLEASM_SCANEXCLUDE="sd"   ←sdb sdc sde,sdfもこれ1つでOK
-------------------------------
と編集して保存。
複数指定したい場合はスペース入れて複数記述。

この設定は、ラベル後でも前でもOKだけど、
サーバの再起動前にはやっておく。

知ってれば、それまでの内容ですね。

ちなみに、DELLさんのEqualLogicの場合は、
/dev/mapper配下のブロックデバイスをORACLEASM_SCANORDERに指定するようです。
(しました。)
出典:Dell PowerEdge Systems Oracle 11g R2 Database on Enterprise Linux x86_64 Getting Started Guide


次回は、ASMLIB周りのその他色々を書いていきます。

[ASMLIB]EMC PowerPathの場合のお作法_3

前回:[ASMLIB]EMC PowerPathの場合のお作法_2


前回は、そもそもemcpowera1やらマルチパスって何?
って話を書きました。


さて、はまりポイント。

===========================================
ASMとマルチパス化の併用

ASMでディスクの複数のデバイス・パスを検出するとエラーが発生します。
マルチパス構成では単一のディスクが複数回現れる可能性があるため、
マルチパス・ディスクのみを検出するようにASMを構成する必要があります。


ASMでは、初期化パラメータASM_DISKSTRINGの値を、
マルチパス・ディスクを表す疑似デバイス名に設定することにより、
マルチパス・ディスクを確実に検出できます。
たとえば、EMC PowerPathマルチパス化ソフトウェアを使用している場合は、
ASM_DISKSTRINGを'/dev/rdsk/emcpower*'に設定できます。
I/Oが疑似デバイスへ送られると、マルチパス・ドライバはそれを検出し、
基礎となるサブパスにロード・バランシングを提供します。
Linux上でASMとともにASMLIBを使用する場合は、マルチパス・ディスクを最初に
スキャンするようにASMを構成するか、またはスキャン時にシングルパス・ディスクを
除外するようにASMを構成することにより、マルチパス・ディスクを確実に検出できます。
===========================================
出典:Oracle Databaseストレージ管理者ガイド 11gリリース1(11.1)


つまり、ASMLIBが間違えることなく複数のディスクの中から、
正しいマルチデバイスパス(擬似デバイス)を認識出来るように設定してね。
って言っています。

ASMLIBで特定デバイスにラベルを設定すると、
OSが起動後にinit.dのからASMLIBのディスク検出などが実行されます。
その際にマルチパス環境では、ASMLIBが誤って異なるシングルデバイス
(マルチパスを構成している内の1つ)をラベルした擬似デバイスと誤って、
検出してしまう。
そうすると色々と問題が発生します。

小生が遭遇した事象はサーバの再起動後にラベルが吹っ飛び、
ラベルしたASMLIBとして正常に認識されなくなりました。。
再度ラベルリングしようとすると既に使用済みだと言われ
るし。。。


では、どうすればよかったか?

(上のマニュアルに記載されていますが)、
[ASMLIB]EMC PowerPathの場合のお作法_4に続く

[ASMLIB]EMC PowerPathの場合のお作法_2

[ASMLIB]EMC PowerPathの場合のお作法

書きっ放しでした。
続きを書こう書こうとして滞ってました。

前回の投稿見て設定して、別の問題にはまった人がいたらすみません。
前回の内容だけだとはまります。。


では、気を取り直して。

正確にはマルチパスのお話になりますが、その2

emcpoweraやマルチパスとは次のような状態です。

マルチパス化ソリューションは、冗長な物理パス・コンポーネントを使用することで
フェイルオーバーを提供します。
これらのコンポーネントとして、サーバーとストレージ・サブシステムの間に存在するアダプタ、
ケーブルおよびスイッチなどがあります。
これらのコンポーネントの1つ以上に障害が発生した場合、
アプリケーションは引き続きデータにアクセスできるため、ストレージ・エリア・ネットワーク(SAN)、
ホスト・バス・アダプタ、インタフェース・ケーブル、またはマルチポート・ストレージ・アレイ上の
ホスト・ポートでのシングル・ポイント障害はなくなります。

マルチパス化は、オペレーティング・システムのデバイス・ドライバ・レベルで実装される
ソフトウェア・テクノロジです。マルチパス化では疑似デバイスが作成され、
使用可能なすべてのI/Oパスの間でI/O操作を共有し、それらの操作のバランスを取ることが
容易になります。
また、使用可能なすべてのパスにI/O負荷を分散させることで
システムのパフォーマンスも向上します。
その結果、自動フェイルオーバーやフェイルバックによる、
より高いレベルのデータ可用性が提供されます。

出典:Oracle Databaseストレージ管理者ガイド 11gリリース1(11.1)


要は、1つのLUやディスクに対して複数のI/Oパスをボンディングしているような状態。
特定パスが切れても、ディスクへのアクセスを継続できるし、
I/Oパス間でI/O負荷をいい感じにしてくれる。
そのようにしてボンディングされた状態のディスクパスが、
擬似デバイスやらマルチ・ディスクやらと言われる。
emcpoweraもそのひとつ。


はまりポイントになるのは、
OS上では1つのLUやディスクが、複数のデバイス(ディスク)に見えていること。
(LUへのデバイスパス分+擬似デバイスパス)

ASMLIBではもちろん、/dev/emcpoweraという擬似デバイスを指定するのですが、、、


[ASMLIB]EMC PowerPathの場合のお作法_3につづく

2011年11月15日火曜日

Oracle DBA & Developer Days 2011の資料が公開されましたよっ♪

ほんとは、参加したセミナーの感想なんて書かずに、
学んだ知識を備忘録として書きとめていけばいいのですが、
なんとなく書いておきます。

2011/11/14(月)の本日、Oracle DBA & Developer Days 2011の資料が
以下のサイトからダウンロード出来るようになりました↓
Oracle DBA & Developer Days 2011資料ダウンロードサイト
惜しくも参加出来なかった方は、是非ダウンロードして勉強してみてはどうでしょうか?

さて、小生は早期申し込みで4200円を払って三日間行ってきました。
お昼のお弁当やデザートが三日間分付いてこの価格なので、
ちょっと高目のお昼を3食とった金額でOracleの技術を勉強できるのは、
大変お得だった気がします。

小生は真面目に勉強すべく、セミナーを呟かせたら神クラスの@yoshikawさんと並んで
ほんとんどのセッションを最前列の席で受けました。

ちなみに、Macを颯爽と駆ってスマートに呟いているのが@yoshikawさんで、
その隣で携帯をポチポチやって呟いていたダサ男
(見様によっては最前列で携帯いじっている態度の悪い奴)が小生でした。

・・・

まぁ、そんなことはどうでもよく、全てのセッションが大変面白かったのですが、
小生が受けた中で、お勧めのセッションを以下に記載しておきます。
※あくまでも個人的なお勧めです。

E-4:オラクルコンサルが語る!Exadataの性能を最大限に引き出すための性能管理Tips
 ⇒Exadataのチューニング等をされる方にはとても面白い内容です。

B-5:シバタツ流!チューニングの極意「パフォーマンス・チューニングの勘どころ」
 ⇒とてもベーシックな内容ですが、それ故、
  パフォーマンス・チューニングは小手先のテクニックではなく
  基本や基礎を身につけておくことが重要だと再認識させられます。
  小生が受けた中では一番面白いセッションでした。

C-13:サポートエンジニアが語る!RAC 環境のトラブルシューティング
 ⇒RACにおける11.2.0.2.0での仕様変更やトラブル時の注目すべきログや
  メッセージについてのセッションで、とても勉強になる内容です。
 
B-14:オラクルコンサルが語る!新しいチューニング&運用アプローチ
 ⇒結構挑戦的な内容ではあったのですが、
  講師の「Oracleの仕様(あるいは仕様変更)なので、良くも悪くも知っておくべきことです。」
  という言葉(考え方)にはとても共感を覚えました。
  11.2.0.1.0以降で知っておくべきことが書いてあります。


あとは、受けてないですが、ここらへんも面白そうでした。
B-2:実践!Oracle Data Guard の導入から有効活用までのポイント解説
B-3:解説!Oracle RACへの接続ロードバランスと接続フェイルオーバー
D-5:実践!高可用性システム構築 ~RAC詳細編 ~


また、特にキーワードとして引っ掛かった(押しが強かった)のは、
SQL Plan Management(EE+Diag+Tuning),SQLリアルタイム監視(EE+Diag+Tuning)、
Oracle Application Testing Suite、SQL Developer
の気がします。


等々、来年も是非参加したいと思った三日間でした。


※セミナー会場で見かけたりしたら、気軽に声掛けて下さいね。
 セッションの感想やOracle話などで盛り上がりましょう(^o^)/
 ↑これが書きたかっただけかも。。

2011年11月13日日曜日

HugePagesとその設定_8

前回はこちら:Hugepagesとその設定_7

まぁ、よくもHugepagesだけでダラダラ8回も書いたものです。。
小生なりのまとめです。(この回だけ書きゃいいじゃん。という感じです。。。)

1.HugePagesって?
 Linuxカーネル2.4から使用できる1ページのサイズが大きいページ。
 Oracleでは、9.2.0.1以降のリリースから使えるよ。


2.HugePagesのメリットデメリット、注意点
1)メリット
 ・OSの仮想メモリの管理負荷が低減する
  -とても大きいサイズのSGA環境において、デフォルトのスモールページ4KBによる
   ページ管理では、メモリの管理負荷が高い。
 ・ページをメモリー内にロックでき、スワップ・アウトをさせない。
  -SGAのような共有メモリーがRAMに残ります。

2)デメリット
 ・Oracleの自動メモリ管理機能(AMM≒memory_target)が使用できなくなる。

3)注意点
 ・HugePagesを設定することにより、物理メモリをHugePagesとして取得(予約)する。
  あまりに大きいサイズを設定すると、他のプロセスで使用できるメモリ量が減少することや
  予約してるが使用していないなどの無駄使いには注意が必要。
 ・HugePagesを使用するのSGA領域。
  PGAやサーバプロセスなどは通常メモリ領域から取得される。
  HugePages≒MEMORY_TARGETではないので、
  SGA_TARGETやPGA_AGGREGATE_TARGETの設定値には注意

3.設定手順
0)現状のHugePagesの設定確認
1)memlockの値確認ならびに修正(物理メモリ以下、SGA_TARGET以上の値に設定)
2)AMM(MEMORY_TARGET等)の設定解除、
 SGA_TARGET・PGA_AGGREGATE_TARGETの修正

 2-1)spfileからPfileの作成
 2-2)MEMORY_TARGET(or MEMORY_MAX_TARGET)の記述削除
 2-3)SGA_TARGET・PGA_AGGREGATE_TARGETの修正または設定
 2-4)インスタンス停止
 2-5)pfileからspfileの再作成
 2-6)インスタンス起動
 2-7)/dev/shmのumount(必要に応じて)

3)hugepage見積もり用スクリプトの作成
4)hugepage見積もり用スクリプト実行により、vm.nr_hugepagesの推奨値を取得
5)コマンドまたはsysctl.confにvm.nr_hugepagesを設定
 -sysctl.conに設定した場合はsysctl -pでOKだと思います。
6)HugePagesの値確認
7)インスタンスの再起動
8)HugePagesを使用しているか確認

4.その他
 ・新規導入の場合の見積もりは?
  -想定のSGA_TARGETで起動してみて、スクリプトを実行してみるか、
   他のインスタンスやミドルウェア等がなければ、
   想定のSGA_TARGETの値を2MBで割った値を設定でいい気もする。

5.参考文献
Oracle® Database管理者リファレンス
11g リリース2(11.2)for Linux and UNIX-Based Operating Systems

 -Hugepages概要&設定手順&制限事項
Slow Performance with High CPU Usage on 64-bit Linux with Large SGA[ID 361670.1]
 -大規模SGAを通常のページで使用するとCPUが高騰する問題について
HugePages on Oracle Linux 64-bit [ID 361468.1]
 -HugePages概要&設定手順&制限事項&設定時のトラブルシュート
HugePages on Linux: What It Is... and What It Is Not... [ID 361323.1]
 -HugePagesって何?(メモリの使用状況の図解が載ってて分かりやすい)
USE_LARGE_PAGES 初期化パラメータについて[KROWN#153045]


ここ最近は、大規模メモリ環境がどんどん手に入り易くなっている(と感じています)。
環境やシステム内容に応じてHugePagesを検討してみてはどうでしょう?

HugePagesとその設定_7

前回はこちら:Hugepagesとその設定_6

ベースはOracle® Database管理者リファレンス
11g リリース2(11.2)for Linux and UNIX-Based Operating Systems
の手順に沿っています。


今回で纏めの予定だったのですが、
ちょっと書き漏らしたので、諸々補足回とします。


1.USE LARGE_PAGES初期化パラメータ
上記マニュアルからはkernel 2.6以上がうんぬんと書いてありますが、
設定サイズ確認用スクリプト等諸々見ると2.4においても使用できるようです。
というのはおいといて、11.2.0.2.0以上では初期化パラメータによって
HugePagesの使用可否を設定できます。


 11.2.0.2.0以上のリリースに存在するパラメータになります。
 TRUE(デフォルト):Hugepagesが使用可能であれば使用する。
              使用不可の場合は、通常のsmall Pageを使用して起動
        FALSE:Hugepagesを使用しない
          ONLY:Hugepagesを使用して起動する。
              使用不可の場合は、エラーを出力してインスタンスは起動しない。

11.2.0.2.0未満はどうか?という話ですが、
9.2.0.1.0以上でHugePagesが使用可能な状態であれば使用するようです。

出典:HugePages on Oracle Linux 64-bit [ID 361468.1]


2.HugePagesを使用状態の確認方法?
 検証内では、HugePagesのFreeやRsvdが減ったから使ってるっぽいぜ?
 と結構いい加減にやりましたが、以下の方法で確認できます。

■alertログを見る!
 とてもシンプル・・・(>_<;)

A.HugePagesを使用してインスタンスが起動した場合の出力例
****************** Huge Pages Information *****************
Huge Pages memory pool detected (total: 5123 free: 5123)
DFLT Huge Pages allocation successful (allocated: 5121)
***********************************************************

やっぱり、Rsvdと同じ値5121ページしか獲得していないようですね。


B.HugePagesの獲得に失敗してインスタンスが起動した場合の出力例
※出力例はmemlockを設定していなかった場合の例

****************** Huge Pages Information *****************
Huge Pages memory pool detected (total: 5123 free: 5123)
Memlock limit too small: 32768 to accommodate segment size: 10739515392
Huge Pages allocation failed (free: 5123 required: 5121)
Allocation will continue with default/smaller page size
**********************************************************

とても分かりやすくて、優しさを感じる英語文ですね(笑)


ということで、次回こそ最終回

2011年11月11日金曜日

HugePagesとその設定_6

前回はこちら:Hugepagesとその設定_5

ベースはOracle® Database管理者リファレンス
11g リリース2(11.2)for Linux and UNIX-Based Operating Systems
の手順に沿っています。

前回は
HugePages_Total: 5123
HugePages_Free: 4673
HugePages_Rsvd: 4671

HugePages_Total-HugePages_Free=5123-4679=444ページ=使用済みHugePage?
使用済みhugepaeメモリ=444*2MB=888MB
SGA_MAX_SIZEは10GBなのに???

というところで終わりました。


まぁ、DB起動したばっかりだし、
色々トランザクションをかけてみます。

・・・・

# cat /proc/meminfo |grep Huge
HugePages_Total: 5123
HugePages_Free: 4407
HugePages_Rsvd: 4405
Hugepagesize: 2048 kB

増えてる!

HugePages_Free前回との差分=4679-4407=272ページ
HugePages_Rsvdの差分=4677-4405=272ページ

おっ!ぴったり!!

HugePages_Total-HugePages_Free:使用済みHupage数
HugePages_Total-HugePages_Free=5123-4407=716ページ=716*2MB=1432MB
というところか。。。

HugePages_Rsvd:獲得済みHugepeだが使用されていないHugepage?
HugePages_FreeとHugePages_Rsvdの差分(2ページ8MB)はなんだろう・・・


という謎を残したまま、次回はまとめと補足(笑)

HugePagesとその設定_5

前回はこちら:HugePagesとその設定_4

ベースはOracle® Database管理者リファレンス
11g リリース2(11.2)for Linux and UNIX-Based Operating Systems
の手順に沿っています。

前回はHugePagesを設定できたはずなのに、なんかオカシイ気がする・・・
ということろで終わりました。

今回は原因を調べてみます。

といっても、彼のOracle社が誤った情報を流したり、
手順が抜けてたりする筈がないんです!!
きっと小生が悪いに違いないんです!!

マニュアルを読み直します。(本当に昔に比べて質が高くなった。)

・・・・

あれ?関係ないと思って読み飛ばした上の方を呼んでみると・・・

G.1.4 Oracle DatabaseのVery Large Memoryの構成
/etc/security/limits.confファイルを編集し、次のエントリを追加して、メモリー・ロックの上限値を大きくします。
soft memlock 3145728
hard memlock 3145728

メモリ・ロック。。。なんか関係ありそう。。


5.メモリー・ロックの上限値を大きくする。
 memlockの値は物理メモリ以下でSGAやHugePagesのサイズより大きいサイズがいいよな。
 /etc/security/limits.confファイルを編集し、次のエントリを追加して、
 メモリー・ロックの上限値を設定または編集します。(単位はKB)
 今回は15GBを設定。

oracle soft memlock 15728640
oracle hard memlock 15728640

もちろん、設定したら一度sudoし直します。
$ exit
# su - oracle
$ ulimit -l
15728640

よし!!

6.インスタンスの起動
SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 1.0689E+10 bytes
Fixed Size 2235904 bytes
Variable Size 2650800640 bytes
Database Buffers 8019509248 bytes
Redo Buffers 16928768 bytes
データベースがマウントされました。
データベースがオープンされました。

7.HugePagesの使用状況を確認します。
cat /proc/meminfo |grep Huge
HugePages_Total: 5123
HugePages_Free: 4673
HugePages_Rsvd: 4671
Hugepagesize: 2048 kB

YES!!きたきたきたきた!!!

# free -m
(DB起動前)
total used free shared buffers cached
Mem:24109 12048 12061    0 294 1079

(DB起動後)
   total used free shared buffers cached
Mem:24109 12127 11982   0 294 1079

数十MBしか変化なし!
HugePagesを使うのはSGAだけだったはず。
正常な動作っぽいぞ。



・・・・でも、この値は何を意味しているのだろう。。
HugePages_Total: 5123
HugePages_Free: 4673
HugePages_Rsvd: 4671

HugePages_Total-HugePages_Free=5123-4679=444ページ=使用済みHugePage?
使用済みhugepaeメモリ=444*2MB=888MB
SGA_MAX_SIZEは10GBなのに???

HugePages_Rsvd: 4677 は何????



HugePagesとその設定_6に続く。。。

HugePagesとその設定_4

前回はこちら:HugePagesとその設定_3

ベースはOracle® Database管理者リファレンス
11g リリース2(11.2)for Linux and UNIX-Based Operating Systems
の手順に沿っています。

ちょっと寄り道して、データベースを停止します。
SQL> shutdown immediate

# free -m
total used free shared buffers cached
Mem:24109 1795 22314 0 294 1071
22GB前後空いてます。


さてカーネルパラメータvm.nr_hugepagesの設定をしていきます。

3.カーネルパラメータ vm.nr_hugepagesの設定

コマンド)
# sysctl -w vm.nr_hugepages=5123

または

コンピュータの再起動時に常にこのパラメータ値が使用されるようにするには、
/etc/sysctl.confファイルを編集して、次のエントリを追加します。
vm.nr_hugepages=5123


4.変更後の使用可能なHugePagesを確認します。

# cat /proc/meminfo |grep Huge
HugePages_Total: 5123
HugePages_Free: 5123
HugePages_Rsvd: 0
Hugepagesize: 2048 kB

HugePagesページは2MBで、5123ページ空いてます。
5123ページ×2MB=10246MB≒10.005859375GB≒SGA_MAX_SIZEの値!!

おぉーーー
ちゃんとHugePagesとして獲得できているかのかしら?

total used free shared buffers cached
Mem:24109 12048 12061    0 294 1079

おぉー!!DBは起動していないのに、10GB位なんか使ってるっぽい。
よしっ!いける!!

5.インスタンスの起動
SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 1.0689E+10 bytes
Fixed Size 2235904 bytes
Variable Size 2650800640 bytes
Database Buffers 8019509248 bytes
Redo Buffers 16928768 bytes
データベースがマウントされました。
データベースがオープンされました。

6.hugepagesの使用状況を確認します。
# cat /proc/meminfo |grep Huge
HugePages_Total: 5123
HugePages_Free: 5123
HugePages_Rsvd: 0
Hugepagesize: 2048 kB

変化なし???こんなもんなの?

# free -m
total used free shared buffers cached
Mem:24109 12771 11338 0 294 1724

ありりり???
DB起動しただけなのに700MBも使ってる。。。
HugePagesが取得したメモリ領域にSGA取ってくれるんじゃなかったの????


HugePagesとその設定_5に続く。。。。

2011年11月10日木曜日

HugePagesとその設定_3

前回はこちら:Hugepagesとその設定_2

前回は手順通りやったはずなのに見事に失敗。。。なぜ!?

よくよくマニュアル読むと。。。

G.2.3 HugePages構成の制限
 HugePagesを使用した場合の制限は次のとおりです。
 自動メモリー管理(AMM)とHugePagesは、互換性がありません。
 AMMを使用すると、SGAメモリー全体は/dev/shmの下にファイルを
 作成することによって割り当てられます。
 Oracle Databaseがこの方法でSGAを割り当てると、HugePagesは予約されません。
 HugePagesを使用するには、Oracle Database 11gでAMMを無効にする必要があります。

AMM(memory_target)は/dev/shm配下にファイルを作って割り当てるのか。。

# ls -l /dev/shm
-rw-r----- 1 oracle oinstall 32M 11月 10 22:35 ora_orcl_2293761_0
-rw-r----- 1 oracle oinstall 32M 11月 10 22:35 ora_orcl_2293761_1
・・・・ずっと続く
うわぁ・・・めちゃくちゃある。

AMM(memory_target)は/dev/shm配下にファイルを作って割り当てるってあるから、
共有メモリの獲得方法とはちょっと違うのかな・・・
memory_targetやめてみるか。

SQL> create pfile='/home/oracle/pfile.ora' from spfile;

$ vi pfile.ora
memory_targetとmemory_max_targetの行を削除

SQL> create spfile from pfile='/home/oracle/pfile.ora'
SQL> startup



環境
=========================================================
CPU: Intel(R) Xeon(R) CPU E5630 @ 2.53GHz×4
メモリ:24GB
OS:Red Hat Enterprise Linux Server release 5.4 (Tikanga)
カーネル:2.6.18-164.el5
Bit:64
# df -h |grep shm
shmfs 15G 766M 15G 5% /dev/shm

#free -m
   total used  free shared buffers cached
Mem:24109 12838 11271     0 293 1819
=========================================================
Oracle:11.2.0.2
Bit:64
MEMORY_MAX_TRAGET:14GB ====> 0
SGA_TARGET:10GB
PGA_AGGREGATE_TARGET:3GB
=========================================================

2.hugepages_settings.shスクリプトを実行して、hugepages構成の値を計算します。
$ ./hugepages_settings.sh
Recommended setting: vm.nr_hugepages = 5123

ふぅ・・・5123ね。OKOK。


#ls -l /dev/shm

もう使わないし、
#umount /dev/shm


HugePagesとその設定_4からvm.nr_hugepagesを設定していきます。

HugePagesとその設定_2

前回はこちら:HugePagesとその設定_1

ベースはOracle® Database管理者リファレンス
11g リリース2(11.2)for Linux and UNIX-Based Operating Systems
の手順に沿っています。

では設定していきます。

環境
=========================================================
CPU: Intel(R) Xeon(R) CPU E5630 @ 2.53GHz×4
メモリ:24GB
OS:Red Hat Enterprise Linux Server release 5.4 (Tikanga)
カーネル:2.6.18-164.el5
Bit:64
# df -h |grep shm
shmfs 15G 766M 15G 5% /dev/shm

#free -m
total used free shared buffers cached
Mem:24109 12838 11271 0 293 1819
=========================================================
Oracle:11.2.0.2
Bit:64
MEMORY_MAX_TRAGET:14GB
SGA_TARGET:10GB
PGA_AGGREGATE_TARGET:3GB
=========================================================

0.現状の確認(未設定)
# cat /proc/meminfo |grep Huge
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB

HugePages_Total: < 確保されているHugepageの数 >
HugePages_Free: < 空きHugepageの数 >
HugePages_Rsvd: < 予約済みHugepageの数 >
Hugepagesize: < 1 Hugepageのサイズ >

1.現行の共有メモリー・セグメントのhugepages構成の推奨値を計算する
 スクリプトを作成します。

 OracleR Database管理者リファレンス
 11g リリース2(11.2) for Linux and UNIX-Based Operating Systems
 G.2.2 RHEL/ Oracle LinuxでのHugePagesの構成
からコピって作ります。

 割愛します。

2.hugepages_settings.shスクリプトを実行して、hugepages構成の値を計算します。
 $ ./hugepages_settings.sh
 Recommended setting: vm.nr_hugepages = 1


あれれれれれ????
1って。。


HugePagesとその設定_3につづく

HugePagesとその設定_1

2011/11/09のOracle DBA & Developer Days 2011のE-5セッション
シバタツ流!チューニングの極意「パフォーマンス・チューニングの勘どころ」でも
シバタツさんが説明されていたので、ちょうど前日検証していたところもあり、
書いておきたいと思います。


■HugePages
 Linuxカーネル2.6に統合された機能です。これは大きいページを使用する方法で、
 大規模メモリーで作業する際に便利です。
 32ビットおよび64ビット構成の両方で使用できます。HugePageサイズは、
 カーネル・バージョンおよびハードウェア・アーキテクチャに応じて、
 2MBから256MBと異なります。
 Oracle Databaseの場合、HugePagesを使用すると、
 ページ状態のオペレーティング・システム・メンテナンスが軽減され、
 Translation Lookaside Buffer(TLB)ヒット率が向上します。

■なぜ大規模メモリにHugePagesなのか?
 HugePagesを使用しない場合、1ページ当たり4KBのメモリーがオペレーティング・システムに
 保持され、SGAに割り当てられる際に、
 ページのライフサイクル(ダーティ、空き、プロセスにマップ済など)が
 オペレーティング・システム・カーネルによって最新に保たれます。
 HugePagesを使用する場合、各ページ表エントリが2MBから256MBのページを指すため、
 オペレーティング・システム・ページ表(仮想メモリーから物理メモリーへのマッピング)は
 小さくなります。
 また、カーネルでは、ライフサイクルを監視する必要があるページが少なくなります。

⇒Oracleが何を言いたいかと言うと、大きな物理メモリを積んでいるようなマシンで、
 Oracleに割り当てるでっかいメモリ領域(SGA)を4KB単位とのページを
 OSが管理するのは負荷(CPU負荷)が高いんです。
 なので、1ページが大きいHugePagesを使用した方がOSの管理負荷(CPU負荷)が
 低減されてよいんです。と言っているんだと思う。

また、HugePagesを使うと以下のメリットがあります。

1.TLBヒットが増加することによってパフォーマンスが向上します。
2.ページがメモリー内でロックされ、スワップ・アウトされないため、
 SGAのような共有メモリーがRAMに残ります。
3.連続するページを事前に割り当てるため、
 System V共有メモリー(SGAなど)以外に使用できなくなります。
4.より大きなページ・サイズによる仮想メモリーの部分のため、カーネル用の記録操作が
  削減されます。

⇒2.がポイントかしら。要は、SGAをメモリ上にロックできるんですね。
 それにより、スワップ・イン/スワップ・アウトを食らわなくてすむ。
 SGAの情報は常にRAM上にキャッシュできる。
 (そもそも、キャッシュ上のデータ管理はSGAのLRUがあるし。)
 ⇒OSのページ管理による負荷(CPU負荷)を軽減できる。


なお、大規模メモリ環境におけるOSのページ管理による負荷(CPU負荷)は
MOSでも障害として取り上げられています。
[ID 361670.1]Slow Performance with High CPU Usage on 64-bit Linux with Large SGA

大規模メモリ&大規模SGAを積んでる環境で、なんかSYSTEM CPU負荷が高いんだけど。。。
という環境は確認&検討してみるといいかもですね。
※大規模メモリ:シバタツさんのセミナーでは32GBが目安とご説明されていました。


ちなみに、HugePagesはmemory_targetでは使えないので注意が必要。
でも、それは次回のHugepagesとその設定_2で。。。


出典:Oracle® Database管理者リファレンス 11g リリース2(11.2)
  for Linux and UNIX-Based Operating Systems

2011年9月24日土曜日

[GI]2ノード目以降のノードでroot.shが失敗する

root.shネタをもう一つ。

問題:
Grid Infrastructureのインストール時に、
2ノード目以降のノードでroot.shが失敗する

発生環境(実際はOSの種類より、OS/ネットワーク周りの設定に依存):
OS:SUSE Linux Enterprise Server 11 SP1 (11.1.1-1.152) 64bit
Oracle: 11.2.0.2.0 64bit
構成:2ノードRAC

エラー:
Failed to start Oracle Clusterware stack
Failed to start Cluster Synchorinisation Service in clustered mode at /opt/app/11.2.0/grid/crs/install/crsconfig_lib.pm line 1016.
/opt/app/11.2.0/grid/perl/bin/perl -I/opt/app/11.2.0/grid/perl/lib -I/opt/app/11.2.0/grid/crs/install /opt/app/11.2.0/grid/crs/install/rootcrs.pl execution failed


root.sh実行時のログ(どちらのノードでも発生):
----------------------------------------
geeko2:/opt/app/11.2.0/grid # ./root.sh
Running Oracle 11g root script...

The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /opt/app/11.2.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /opt/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
LOCAL ADD MODE
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
OLR initialization - successful
Adding daemon to inittab
ACFS-9459: ADVM/ACFS is not supported on this OS version: 'sles-release-11.1-1.152
'
ACFS-9201: Not Supported
ACFS-9459: ADVM/ACFS is not supported on this OS version: 'sles-release-11.1-1.152
'
CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node geeko1, number 1, and is terminating
An active cluster was found during exclusive startup, restarting to join the cluster
Failed to start Oracle Clusterware stack
Failed to start Cluster Synchorinisation Service in clustered mode at /opt/app/11.2.0/grid/crs/install/crsconfig_lib.pm line 1016.
/opt/app/11.2.0/grid/perl/bin/perl -I/opt/app/11.2.0/grid/perl/lib -I/opt/app/11.2.0/grid/crs/install /opt/app/11.2.0/grid/crs/install/rootcrs.pl execution failed

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

原因:
(1)インターコネクトに使用しているネットワークにおいてマルチキャスト通信が有効になっていない
   or
(2)製品の不具合
   11.2.0.2.0のインターコネクト内で使用するチェック対象のポートが
   アドレス 230.0.1.0(ポート 42424)※ の 1つのみとなっていることが不具合。
   アドレス 230.0.1.0(ポート 42424) を既に使用してる、またはどこかで閉じられているため
   チェック時にポートの競合が発生している、
   またはそれ以外の理由で230.0.1.0(ポート 42424)で通信ができない
   ※HAIPとはまた別で使っている。


対応策:
(1)インターコネクトに使用してるネットワーク(ネットワークデバイスや通信)において、
  マルチキャスト通信を有効化する。
   or
(2)Patch 9974223 を適用する
   Patch 9974223は、11.2.0.2.3 Grid Infrastructure Patch Set Update(GI PSU)
   であるp12419353_112020_Linux-x86-64.zipに入っているのだが、
   いかんせん適用前のインストール段階でこのエラーが発生してしまう。。。
   対応手順としては、oraInstroot.shを両ノード実行後に、両ノードにPatch 9974223を適用
   root.shを両ノードで実行。
   ※1.なお、11.2.0.2.3適用時にもちろんコンフリクトするので、rollbackしてから11.2.0.2.3を
     当てる必要がある。
   ※2.11.2.0.3.0でFIXされているかは現時点で不明
     (List of Bugs Fixedがまだ公開されてない)


問題切り分け方法:
Doc:1212703.1に記載があるがocssdのログに同じメッセージがループするのでチェック
Doc:1212703.1KROWN#152943どちらにも記載があるが、
ポートチェックモジュールが用意されており、事象に合致しているかの確認が可能


モジュールインストール後、root.sh前にパッチ当てたり、
なんかリンク張ったりとか昔もあったような?
root.shこけると精神的ダメージでかいですよね・・・

[GI]root.sh実行時にACFS-9459、ACFS-9459が発生

くだらないけど。メモメモ。

問題:
Grid Infrastructureインストール後、
root.sh実行時にACFS-9459、ACFS-9459発生

環境
OS:SUSE Linux Enterprise Server 11 SP1 (11.1.1-1.152) 64bit
Oracle: 11.2.0.2.0 64bit
構成:2ノードRAC

エラー:
ACFS-9459: ADVM/ACFS is not supported on this OS version: 'sles-release-11.1-1.152'
ACFS-9201: Not Supported
ACFS-9459: ADVM/ACFS is not supported on this OS version: 'sles-release-11.1-1.152'

root.sh実行時のログ(どちらのノードでも発生):
----------------------------------------
geeko2:/opt/app/11.2.0/grid # ./root.sh
Running Oracle 11g root script...

The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /opt/app/11.2.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /opt/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
LOCAL ADD MODE
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
OLR initialization - successful
Adding daemon to inittab
ACFS-9459: ADVM/ACFS is not supported on this OS version: 'sles-release-11.1-1.152'
ACFS-9201: Not Supported
ACFS-9459: ADVM/ACFS is not supported on this OS version: 'sles-release-11.1-1.152'
---------------------------

原因:サポートしてないもんはサポートしてない!!

以下、
Oracle Grid Infrastructureインストレーション・ガイド 11gリリース2(11.2)for Linux 
B56271-03
より

--------------------------
注意:
Oracle ASM 11gリリース2(11.2)for Linux以上では、Oracle ACFSおよび
Oracle ASM動的ボリューム・マネージャ(Oracle ADVM)は、
次の環境でのみサポートされます。

・Red Hat and Oracle Linux 5、32-bit
・Red Hat and Oracle Linux 5、64-bit

Oracle Virtualization(OVM)環境には、
Red HatまたはOracle Linux 5 Update 4以上が必要です。

Oracle ASM 11gリリース2(11.2.0.2)for Linux以上では、
次のプラットフォームでもOracle ACFSおよびADVMがサポートされます。

・SUSE Enterprise Linux 10 Service Pack 3(x86_64)以上
・SUSE Enterprise Linux 11は現時点ではサポートされていません。
・IBM: Linux on System zでは、Oracle ACFSはサポートされていません。



てなわけで、対応は無視ということで。

SUSE LinuxでACFSを使いたい人は、
SUSE Enterprise Linux 10 Service Pack 3(x86_64)にしましょうね(笑)

2011年9月23日金曜日

Oracle PSR11.2.0.3.0がダウンロード可能になりましたよっ♪

x86系なんて儲かんないから、やってらんねーやっぱ、ハイエンドっしょ。
Exadataより下のランクで、拡張可能なDatabase Applianceも出しちゃうぜ。
つーか、SPARC T4まじ速いからwww

とまぁ、相変わらずの帝王発言で騒然な昨今ですが、地味ネタをひとつ。

------

@wmo6hashさんが21日にでるんじゃない?と呟いていたので、
MOSを見てみたら、、、

おおぉぉーー、出とる。出とる。

11.2.0.3.0出とる。
最終更新が2011年9月24日(明日)とかなってる(笑)

Linux x86とx86_64はダウンロードできるなぁ。
Windows版はまだ出てないみたい。。
Solaris SPAC版もw

ダウンロードモジュールの復習をしとくと、、
■Oracle Database
 (includes Oracle Database and Oracle RAC)
・p10404530_112030_platform_1of7.zip
・p10404530_112030_platform_2of7.zip

■Oracle Grid Infrastructure
 (includes Oracle ASM, Oracle Clusterware, and Oracle Restart)
・p10404530_112030_platform_3of7.zip

■Oracle Database Client
・p10404530_112030_platform_4of7.zip

■Oracle Gateways
・p10404530_112030_platform_5of7.zip

■Oracle Examples
・p10404530_112030_platform_6of7.zip

■Deinstall
・p10404530_112030_platform_7of7.zip


まぁ、1、2、3があればいっしょ。

Readmeを軽く流し読みすると、
新規で11.2.0.3.0からインストール出来まっせ。(11.2.0.2.0からそうですが)
おススメしないけど、既存のOracleモジュールに適用もできるし、
既存と別の場所に新規でインストールもできるぜ。(別ORACLE_HOMEっすな)と。


今回は、11.2.0.2.0の時の様な、めちゃくちゃな新機能の追加はないのかしら?

詳しくは
"Oracle Database 11g Release 2 (11.2.0.3) New Features" in Oracle Database New Features Guide
を読め。

って書いてあるけど、ドキュメントどこにあるかしら・・・?


追記
---------
wmo6hashさんのコメントを受けて追記
> wmo6hashさん
ありがとうございま~す。

結論から言うと11.2.0.3.0は11.2.0.2.0の様な、
PSRレベルを大幅に超えた(笑)新機能追加はない。
(と個人的には思う)

ざっくり記載すると、以下3点。

1)ACFS関連の強化
2)XML関連の強化/変更
3)Oracle Warehouse Builder関連の強化

出典:Oracle® Database New Features Guide 11g Release 2 (11.2) Part Number E22487-02

2011年9月4日日曜日

[ASMLIB]EMC PowerPathの場合のお作法

ASMLIBの設定は、基本は前回のやり方だが、
EMC PowerPathの場合はお作法があるので書き留めておく。

前回の方法でやってみると、、

# /etc/init.d/oracleasm createdisk CRS /dev/emcpowera1
Marking disk "/dev/emcpowera1" as an ASM disk: asmtool: Device "/dev/emcpowera1" is not a partition [FAILED]

えっ・・・!!

とかなる。

EMC PowerPath version 5.0.1-5.3はoracleasmコマンドのi/o callを
サポートしていないのが原因だそうです。。。


対応方法は以下の通り。

1.以下のasmtoolコマンドを実行します。
/usr/sbin/asmtool -C -l /dev/oracleasm -n <volumename> -s /dev/<emc device> -a force=yes

例)
/usr/sbin/asmtool -C -l /dev/oracleasm -n CRS -s /dev/emcpowera1 -a force=yes

実行結果は、、、

asmtool: Device "/dev/emcpowera1" is not a partition
asmtool: Continuing anyway

なんだよ。。結局エラーみたいな結果返してきやがる(-_-")
まぁ、正しいと信じるしかない。


2./dev/oracleasm/disks配下のファイルの権限が"root: root"と
なっていることを確認する

# /sbin/service oracleasm restart
も一応実行

それでも権限が変わらないなら、リブートを実行

3.残りのノードでマーキング情報を読み込み
# /etc/init.d/oracleasm scandisks
Scanning the system for Oracle ASMLib disks:
[ OK ]

上記2を一応実施

以上、なんだかなぁ・・

参考資料:Doc#469163.1 (My Oracle Support見れる場合はこっち)
Dell™ PowerEdge™ Systems Oracle® Database on Enterprise Linux® x86_64 Troubleshooting Guide Version 4.3 (p14ページ)

いまさら(?)だけどASMLIB導入方法

ASMLIB:ASMLIBは、オラクル社が開発したApplication Program Interface(API)であり、
オペレーティング・システムとデータベースの間のインタフェースを簡素化し、
Linuxベースのシステム上でベンダーのストレージ・アレイの機能を活用する。
(Oracle Databaseストレージ管理者ガイド 11gリリース2(11.2)用語集より)

大まかに言うと、ストレージ管理の簡略化とI/O処理がいい感じになる。らしい。
実際どうなのよというのは、インサイトテクノロジーさんの「ASMLibに関する検証」を
見てみるのがいいかと。

でもまぁ、こんな話もあるからどうなのよって感じなんですけどね。
OracleがRed Hat Enterprise Linuxのサポート中止を計画?

・・・

というのは置いといて、気を取り直してメモメモ


■ASMLib 2.0は、3つのLinuxパッケージとして構成されている。
・oracleasmlib-2.0: Oracle ASMライブラリ
・oracleasm-support-2.0: ASMLibの管理に必要なユーティリティ
・oracleasm: Oracle ASMライブラリ用のカーネル・モジュール


■ダウンロード元
http://www.oracle.com/technetwork/topics/linux/asmlib/index-101839.html?ssSourceSiteId=otnjp


■インストール方法
1.カーネルのバージョンを調べる。
# uname -rm
2.6.18-238.el5xen x86_64

2.ダウンロード
ダウンロードサイトからOS種別やバージョンから選び、
上記、ASMライブラリとユーリティ、
1.で調べたカーネルに該当するカーネルモジュールをダウンロード

なお、SuSE Linux Enterprise Server 11のカーネルモジュールは、
SuSE Linux Enterprise Server 11のインストールメディアに入っている。

3.インストール
# rpm -ivh oracleasmlib-2.0.4-1.el5.x86_64.rpm oracleasm-2.6.18-238.el5xen-2.0.5-1.el5.x86_64.rpm oracleasm-support-2.1.7-1.el5.x86_64.rpm
準備中... ########################################### [100%]
1:oracleasm-support ########################################### [ 33%]
2:oracleasm-2.6.18-238.el########################################### [ 67%]
3:oracleasmlib ########################################### [100%]


■ASMLIBのセットアップとDiskマーキング
1.ASMLIBのセットアップ
# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting without typing an
answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: grid  ←←←←環境に合わせて
Default group to own the driver interface []: asmadmin ←←環境に合わせて
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done

2.Oracle ASMの候補ディスク・パーティションのマーキング
# /etc/init.d/oracleasm createdisk  ASMマーキング用の名前  ディスク・デバイス名

例)
# /etc/init.d/oracleasm createdisk CRS /dev/sdb
Marking disk "CRS" as an ASM disk: [ OK ]

/etc/init.d/oracleasm listdisks
CRS

3.残りのノードでマーキング情報を読み込み

# /etc/init.d/oracleasm scandisks
Scanning the system for Oracle ASMLib disks:
[ OK ]


マーキングしたディスクは ORCL:ASMディスク・グループ名という形で
v$asm_diskのPATH名やasmcaなどに表示される。

例) ORCL:CRS


以上、ここまで。

参考資料:Oracle® Grid Infrastructureインストレーション・ガイド11gリリース2(11.2)for Linux


いつまで使われるのやら・・・。

2011年7月21日木曜日

ASMインスタンスが使用するメモリサイズについて

OTNで以下の質問を見かけました。
ASMインスタンスが使用するメモリ(SGA等)サイズてMEMORY_TARGETのデフォルトで十分なものなのですか?

なんか質問の書き方があまり好きになれなかったので、
こちらに回答を書いてみようかと思います。


[環境]
OS:Linux Redhat Linux 5.6(2.6.18-238.el5) 64bit
Oracle:11.2.0.2.0 64bit SE
環境:2node RAC


経験的にはDiskGroup(DG)の数が大量に存在するorサイズが大きいとかがない限り、
標準のMEMORY_TARGETで良いと思います

DGの数が大量orサイズが大き目の場合、
LARGE_POOLやMEMORY_TARGETの引き上げを検討するのも悪くないと思います。


過去の経験で、asmcmdからのDGリストア、DGのマウント時にORA-4031が発生し
ASMが起動しなかったことがあります。
数が大量orサイズが大き目と書きましたが、
なお、その時はDGが7つ合計サイズが1.5TB弱でした。


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

本問題はORA-4031なので、正確にはMEMORY_TARGETではなく
LARGE_POOLが足りてないのが原因ですが。

その時の状況はこんな感じでした。
ASMによるDGのリカバリでORA-4031⇒ASMが正常に起動できない⇒
crsd.binが起動しない⇒CRSが正常に起動しない。
(CRSのDGを読み取れないからかな。と思った記憶があります。)

また、SPFILEがASM上に格納されており、
ASMインスタンスが起動しないためalter文で変更も出来ず、
悲惨な状況になりました。


その時は、素直にLARGE_POOLだけを100MBに引き上げましたが、
メモリに余裕があるのであれば、MEMORY_TARGETも
引き上げてもいいかもしれません。
(LARGE_POOLが少ないとDGの復旧時間や
CRS起動時の時間にも影響しそうな気もするし。 )


------------
(余談)
上記障害時にSPFILEがASM上に格納されており、
ASMインスタンスが起動しないためと書きましたが、
じゃあどうしたかというと

DOC ID:1062983.1
「How to restore ASM based OCR after complete loss of the CRS diskgroup」

を参考にCRSを制限モードで起動、ASM用のPFILEをALERT.logから手動で作成し
(LARGE_POOLを100MBにしたPFILE)で起動。
ALTER文でSPFILE作成。

あと、ASMのalert.logを見るとORA-20が出てたりもするので、
processesを引き上げたりもしてるかも。
(これもDGが多い場合に見られる気が。。)



------------
(個人的な結論)
基本的にそんなにでかいメモリ領域が必要なわけではないのでだから、
カットオーバー前にしっかりテストやalertを見て、
必要に応じて変更されたらどうなんでしょうかね?


どなたか他にご意見アドバイスがあれば、
コメントいただくかOTNに回答してみてください(笑)

2011年7月15日金曜日

SE環境で取得したコールドバックアップを EE環境にリストアする事は可能か?

モジュール入れ間違っちゃったり、
ライセンス変更になったりって、ありますよね。
(あるか?)

そんなときは、
KROWN#50822

Standard EditionのコールドバックアップをEnterprise Editionへ
リストアするのはサポートされます。

もし、SE環境をEE環境に入れ直したいけど、
もうデータ入れちゃってんだよなぁ。。。

というときには、、

1. SE 環境のコールドバックアップを取得します。
2. SEをOUIから消します。
3. EEを入れ直します。
4.事前に取得したコールドバックアップをEE環境にリストアします。※別環境なら
* 各ファイルのパスは同一にします。
5. EE環境にてデータベースを起動します。
6. catalog.sql, catproc.sql を実行します。

逆に、Enterprise Edition (EE) 環境のデータベースを
Standard Edition (SE) 環境に変更(移行)するには、
Export/Import で対応。

EE 環境で取得したコールドバックアップを SE 環境にリストアする
ことはサポートされない。

My Oracle Support 5.3 とKROWN

さーて、Oracleの関係マニュアルも一通り読んだし
KROWNでバグやらマニュアルバグをチェックしよっかなー


!!!!


MOSのナレッジタブの中に日本語ナレッジ・ベースがない!!

KROWNがない!!

ない、ない、ない。

キョロ(・・ )( ・・)キョロ(.. )( ..)キョロ(¨ )( ¨)キョロ


なんて、

ちゃんと、Oracle Support Japanでアナウンスされてましたね。
(Twitterでなんとなく見たのを覚えていてよかったぁ)

ということで、詳細はこちら

Oracle Support Japan
My Oracle Support 5.3 にて日本語ナレッジ・ベースを利用する方法

HAIP(Highly Available virtual IP)その5



HAIP(Highly Available virtual IP)その4のつづき

HAIPの話も最後、追記とその他よもや話

=================================
・oifcfg setifコマンドを使用して、インタフェースをプライベートで設定した
 インタフェースに対して、1から4つの高可用性IP(HAIP)アドレスが作成される。
 データベースやASMは「高可用性」かつ「ロード・バランスされたハートビートや
 キャッシュフュージョンなどの通信を実現する。
=================================

実はさっきの検証でIPが一個しかないのはおかしいと思ってました(苦笑)
なのでcrsを再起動したところ、、、、

eth1 Link encap:Ethernet HWaddr 00:0C:29:EC:22:AE
inet addr:10.0.0.136 Bcast:255.255.255.255 Mask:254.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:445151 errors:0 dropped:0 overruns:0 frame:0
TX packets:522844 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:233173632 (222.3 MiB) TX bytes:345513311 (329.5 MiB)

eth1:1 Link encap:Ethernet HWaddr 00:0C:29:EC:22:AE
inet addr:169.254.2.227 Bcast:169.254.127.255 Mask:255.255.128.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth2 Link encap:Ethernet HWaddr 00:0C:29:EC:22:B8
inet addr:192.168.102.136 Bcast:192.168.102.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:86100 errors:0 dropped:0 overruns:0 frame:0
TX packets:84814 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:41051983 (39.1 MiB) TX bytes:37303876 (35.5 MiB)

eth2:1 Link encap:Ethernet HWaddr 00:0C:29:EC:22:B8
inet addr:169.254.252.248 Bcast:169.254.255.255 Mask:255.255.128.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

ですよね(笑)

ということで、設定後はcrsの再起動もお忘れなく


その他 インターコネクト障害からの自動復旧時のおまじないな話

通常、インターコネクト障害発生後にNICやらケーブルやらの問題を解決すると、
障害時に落とされたノード(ノード番号が大きい方)は、
自動的にClusterに復帰しようとします。
この時、インターコネクト障害がノード2の際に発生するバグが。。。

Bug 11894981

1. IPC Send timeoutがASM、DBで発生。
2. ORA-29740を受けて、ノード2のASMが異常終了
  つられて、ノード2のインスタンスがORA-15064でダウン
3. DBは再起動されるも、他ノードのインスタンスと通信できず、
  lmonの異常終了により起動せず。
4. ノード2のASMも自動起動しようとするが、ノード1のASMからkillされてしまう。

この動作が繰り返し発生

IPC Sendタイムアウトによるものだが、ハートビートエラーが
ocssd.logに出てこない。。

うぅ。。カオス・・・

では、どうればいいか。
インターコネクトの障害復旧時にはノード2を止めておく。

0.ノード1 or ノード2のインターコネクト障害により、
 ノード2のCRSリソースが停止される
1.ノード2の停止
2.インターコネクト障害の解消
3.ノード2を起動

おまじないかもしれないが、
インターコネクトの自動復旧は、HAIPが新しく追加されたこともあるので、
個人的にはおススメしない。

ちなみにひどいケースだと、
ノード2がclusterに復帰しようとして、
ノード1のCRSが異常終了したり、ASMが落ちたりというケースも・・・。
DB全停止の悪夢・・・

ちなみにBug 11894981、現時点ではバッチも修正バージョンも出てないようです。。

HAIP(Highly Available virtual IP)その4

高可用IP:HAIP(Highly Available virtual IP)その3の続き

障害時の動きを確認します。

[環境]
OS:Linux Redhat Linux 5.6(2.6.18-238.el5) 64bit
Oracle:11.2.0.2.0 64bit
環境:RAC

1.現状の確認
[root@zaku-2 ~]# ifconfig

eth1 Link encap:Ethernet HWaddr 00:0C:29:EC:22:AE
inet addr:10.0.0.136 Bcast:255.255.255.255 Mask:254.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:67867 errors:0 dropped:0 overruns:0 frame:0
TX packets:58530 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:47764460 (45.5 MiB) TX bytes:36241394 (34.5 MiB)

eth1:1 Link encap:Ethernet HWaddr 00:0C:29:EC:22:AE
inet addr:169.254.166.30 Bcast:169.254.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth2 Link encap:Ethernet HWaddr 00:0C:29:EC:22:B8
inet addr:192.168.102.136 Bcast:192.168.102.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13292 errors:0 dropped:0 overruns:0 frame:0
TX packets:17989 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6075352 (5.7 MiB) TX bytes:10999457 (10.4 MiB)


HAIP(169.254.166.30)がeth1にバインドされているのが分かります。


2.eth1をリンクダウンします
[root@zaku-2 ~]# ifconfig eth1 down

・・・・

通常なら、これでインターコネクト障害が発生し、
ノード番号の大きいzaku-2のCRSリソースの停止やVIPのフェイルオーバーが
発生するはず。

が、何も起きません。

HAIPがeth2にフェイルオーバーしたことにより、
継続稼働出来ていると思われます。


3.状況の確認
[root@zaku-2 ~]# ifconfig

eth2 Link encap:Ethernet HWaddr 00:0C:29:EC:22:B8
inet addr:192.168.102.136 Bcast:192.168.102.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17986 errors:0 dropped:0 overruns:0 frame:0
TX packets:20421 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10152673 (9.6 MiB) TX bytes:12136130 (11.5 MiB)

eth2:1 Link encap:Ethernet HWaddr 00:0C:29:EC:22:B8
inet addr:169.254.166.30 Bcast:169.254.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

想定通り、eth2にHAIP(169.254.166.30)がフェイルオーバーしています。


[/var/log/messages]
avahi-daemon[3938]: Interface eth1.IPv4 no longer relevant for mDNS.
avahi-daemon[3938]: Leaving mDNS multicast group on interface eth1.IPv4 with address 10.0.0.136.
avahi-daemon[3938]: Withdrawing address record for 169.254.166.30 on eth1.
avahi-daemon[3938]: Withdrawing address record for 10.0.0.136 on eth1.
avahi-daemon[3938]: Registering new address record for 169.254.166.30 on eth2.

HAIPを移動させているのが分かります。

ocssd.logを見ると色々やっているのが分かりますが、
メッセージ量が多いので割愛します。


4.eth1のリンクアップ後の動き
[root@zaku-2 ~]# ifconfig eth1 up

[root@zaku-2 ~]# ifconfig

eth1 Link encap:Ethernet HWaddr 00:0C:29:EC:22:AE
inet addr:10.0.0.136 Bcast:255.255.255.255 Mask:254.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:198102 errors:0 dropped:0 overruns:0 frame:0
TX packets:217713 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:114094624 (108.8 MiB) TX bytes:143149783 (136.5 MiB)

eth1:1 Link encap:Ethernet HWaddr 00:0C:29:EC:22:AE
inet addr:169.254.166.30 Bcast:169.254.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth2 Link encap:Ethernet HWaddr 00:0C:29:EC:22:B8
inet addr:192.168.102.136 Bcast:192.168.102.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:44973 errors:0 dropped:0 overruns:0 frame:0
TX packets:50754 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:21009571 (20.0 MiB) TX bytes:27365175 (26.0 MiB)


HAIPがeth1に自動的にフェイルバックしています。
なお、HAIPのethの移動は、両ノードで発生します。

---------

ということで、HAIPの動きは分かったわけですが、
通常ネットワーク機能で冗長化を図っているインターコネクトですが、
ソフト機能であるHAIPも使ってインターコネクトの可用性を高めるのは、
いささか冗長な気がします。

ネットワーク機能ではなく、HAIPを使えということなんだろうか・・・?

HAIP(Highly Available virtual IP)その3

高可用IP:HAIP(Highly Available virtual IP)その2の続き

実際設定してみます。

[環境]
OS:Linux Redhat Linux 5.6(2.6.18-238.el5) 64bit
Oracle:11.2.0.2.0 64bit
環境:RAC

1.現状の確認
[grid@zaku-1 ~]$ oifcfg iflist
eth1 10.0.0.0
eth1 169.254.0.0
eth2 192.168.102.0
virbr0 192.168.122.0
eth0 192.168.101.0

iflistコマンドは、オペレーティング・システムに問い合せ、
このノードに存在するネットワーク・インタフェースを検出します

インターフェイスが4つあることが分かります。


[grid@zaku-1 ~]$ oifcfg getif
eth1 10.0.0.0 global cluster_interconnect
eth0 192.168.101.0 global public

setifコマンドによってインタフェース・タイプが定義されているインタフェースを、
インタフェースのタイプとともに示します。

eth1がインターコネクト用、eth0がパブリック用であることが分かります。
Oracleとしては、eth2は使用していない状態です。




2.eth2にクラスターインターコネクトを設定します。
[grid@zaku-1 ~]$ oifcfg setif -global eth2/192.168.102.0:cluster_interconnect

oifcfg setifは、インタフェースのインタフェース・タイプ
(パブリックまたはクラスタ・インターコネクト)を設定します。


[grid@zaku-1 ~]$ oifcfg getif
eth1 10.0.0.0 global cluster_interconnect
eth0 192.168.101.0 global public
eth2 192.168.102.0 global cluster_interconnect

eth2がcluster_interconnectとして追加されました。



なお、インストール時に設定することも可能です。

次回は実際に障害時の動作を見ていきます。

HAIP(Highly Available virtual IP)その2

高可用IP:HAIP(Highly Available virtual IP)その1の続き

11.2.0.2.0から、インターコネクトの仕様変更に関する情報

KROWN#152202より
※1)は正確にはHAIPの機能ではなく仕様変更

1)11.2.0.2 でインターコネクト障害時にOSリブートが発生しなくした
仕様変更の理由は、そのノード上で他のアプリが動いている可能性もあるしね。
インターコネクト障害時には、CRSリソースの停止やVIPのフェイルオーバー、
残存ノードでのインスタンスリカバリーが発生。
でも、ノードは落ちない。
Voting Disk に対するアクセス障害が発生した場合も、CRS リソースの停止が行えれば、
リブートは発生しない。

2)HAIP は自動でフェイルバックする
障害時には、クラスターインターコネクトに指定された他のインターフェイスに
自動的にフェイルオーバー。復旧時には自動的に元のインターフェイスにフェイルバック。
サブネットが違う可能性があるので、両ノードセットでHAIPが移動する。

3)11.2.0.2 よりマルチキャスト通信
HAIPで複数のネットワークアドレスを使用してノード間通信を行うためです。

4)11.2.0.2 以降の初期化パラメータcluster_interconnects設定時の動き
DB同士のキャッシュフュージョンは、cluster_interconnectsに設定したプライベート IP
アドレスで通信が行われる。
たとえば、複数インスタンス環境で使用するインターコネクトを分ける場合等には、
cluster_interconnectsを使用。

だが、Grid Infrastructure のプロセス(例:CSS)が使用するプライベート IP アドレスは、
OCR にcluster_interconnect として登録されている プライベート IP アドレスが使用されます。
つまり、ハートビートはHAIP のプライベート IP アドレスが使用される


次回は実際に試してます。

HAIP(Highly Available virtual IP)その1

高可用IP:HAIP(Highly Available virtual IP)

11.2.0.2.0からの新機能で一言で言うと、冗長化可能なインターネクト用仮想IPかしら。

インターコネクトの仕様変更により、インターコネクト用に指定したインターフェースにHAIPである169.254.x.xをバインド。
DBやASMは169.254.x.xを使用して、キャッシュフュージョンとハートビートを行う※
※デフォルトだと

機能や動きは、クラスターインターコネクトを複数のインタフェースに設定しておくと、
169.254.x.xがバインドされているインタフェースが停止や疎通が出来なくなった場合に、
クラスターインターコネクトに指定した別のインタフェースに自動的に移動し、
インターコネクト障害を回避する



マニュアルより
Oracle® Clusterware管理およびデプロイメント・ガイド11gリリース2(11.2)

・oifcfg setifコマンドを使用して、インタフェースをプライベートで設定したインタフェースに対して、
1から4つの高可用性IP(HAIP)アドレスが作成される。
データベースやASMは「高可用性」かつ「ロード・バランスされたハートビートや
キャッシュフュージョンなどの通信を実現する。

・11.2.0.2以上のOracle RAC、Oracle ASMおよびOracle ACFSは、
デフォルトで、そのトラフィックすべてにこれらのHAIPアドレスを使用。
これにより、設定されたクラスタ・インターコネクト・インタフェースのセット全体で
ロード・バランシングが可能となる。
定義済クラスタ・インターコネクト・インタフェースの1つに障害が発生するか、
その通信が不能になると、Oracle Clusterwareは、該当するHAIPアドレスを機能している
残りのインタフェースの1つに透過的に移動する。

注意:
・Oracle Clusterwareが使用するインタフェースは定義されているインタフェースの数に関係なく、
常に最大で4つ。
あるインタフェースに障害が発生すると、HAIPアドレスは定義されたセット内の
別の構成済インタフェースに移動。

・HAIPアドレスが1つのみで、選択するインタフェースが複数ある場合、
HAIPアドレスの移動先のインタフェースは、そのアドレスが構成された元のインタフェースでは
なくなる。
Oracle Clusterwareは、HAIPアドレスの追加先として、数が最も小さいサブネットの
インタフェースを選択する。


長くなってきたので、次回にHAIP情報をもう少し続けます。

2011年7月9日土曜日

ASMとLOG_ARCHIVE_DEST

LOG_ARCHIVE_DESTにディスク・グループが指定されている場合
(例)LOG_ARCHIVE_DEST = +dgroup1
LOG_ARCHIVE_FORMATは無視されます。

LOG_ARCHIVE_DESTをディスク・グループ名に設定した場合、
LOG_ARCHIVE_FORMATは無視されます。
アーカイブ・ログには、Oracle Databaseによって一意の名前が自動的に作成されます。
LOG_ARCHIVE_DESTをディスク・グループ内のディレクトリに設定した場合、
LOG_ARCHIVE_FORMATには通常のセマンティクスが設定されます。


Oracle Database 管理者ガイド10gリリース2(10.2)


11gR2もルールは一緒。


ASMにおける、完全修飾されたASMファイル名のfile_typeとテンプレート、
別名ASMファイル名の関係、
不完全ASMファイル名と_DESTの関係は別途纏めよっと。

RDA4.24とダウンロードの話し

RDA(Remote Diagnostic Agent)
RDA とはオラクル導入環境のシステム構成やOracle関連情報、稼動状況、
ログ等の詳細な情報を収集することができる、オラクル社と保守契約結んでいる場合に
無料で使用できる便利なツール。

米国時間 6月14日 に RDA 4.24 がリリースされたそうです。
Grid Infrastructure 環境における /etc/oracle/olr.loc を使用した
ORA_CRS_HOME の検出処理への対応などなど。

[機能改良についての詳細]
RDA 4 Release Notes [ID 414970.1]

[ネタ元]
Oracle Support Japan
RDA 4.24 がリリースされました


ところで、「OiSCは、2011年6月30日を以てサービスを終了しました。」なわけで、
RDAのダウンロードサイトもMy Oracle Supportのみに↓

Remote Diagnostic Agent (RDA) 4 - Getting Started [ID 314422.1]


使い方とかのお勉強はココからがいいかも。
RDA (Remote Diagnostic Agent) の紹介

2011年7月5日火曜日

Oracleクラスタウェア(OIFCFG)からネットワーク・インターフェース リストを取得できませんエラー

Oracleクラスタウェア(OIFCFG)からネットワーク・インターフェース リストを取得できませんエラー

[環境]
OS:Linux Redhat Linux 5.6(2.6.18-238.el5) 64bit
Oracle:11.2.0.2.0 64bit
環境:RAC

[発生事象]
GRIDインストール後にOUIからデータベース製品インストール時に、
モジュールインストール直前のベリファイチェック開始直後に発生。
OKボタン押下後、OUI異常終了

[エラーメッセージ]
クラスタ検証フレームワークで内部エラーが発生しました
Oracleクラスタウェア(OIFCFG)からネットワーク・インターフェース
リストを取得できません。

or

NFO: Nodes are prepared for verification.
SEVERE: [FATAL] An internal error occurred within cluster verification framework
Unable to obtain network interface list from Oracle Clusterware (OIFCFG).
Refer associated stacktrace #oracle.install.commons.util.exception.DefaultErrorAdvisor:763※

※行は、OUIのログより。また、763は755のケースもあるかも

[解決策]
同様の事象と合致するログ情報等なし。
DOC ID:1050472.1のログとは一致しなかったが、
oifcfgが原因臭いので、ORA_NLS10を外して実行して回避


発生原因、解決策共に微妙な結果に。。。

ASMLIB+GRID11.2.0.2.0インストールでのエラー

[環境]
OS:Linux Redhat Linux 5.6(2.6.18-238.el5) 64bit
Oracle:11.2.0.2.0 64bit
環境:RAC

【GRIDインストール直前のベリファイで以下のエラーが発生】
----------------------------------------------------------------------------------------------------------------
失敗したノードの検証結果: test-01
 エラーのリスト
 
 - PRVF-5150: パスORCL:DISK1は、すべてのノードで有効なパスではありません
   - Cause:
   - Action:
  
失敗したノードの検証結果: test-02
 エラーのリスト
 
 - PRVF-5150: パスORCL:DISK1は、すべてのノードで有効なパスではありません
   - Cause:
   - Action:

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


英語のメッセージだと
PRVF-5150:Path ORCL:XXX is not a valid path


【原因】
バグ。。。
詳細は、DOC ID:1210863.1

【対処】
胸に手を当て心当たりがなければ、己を信じて、「全て無視」にチェックを入れ進む。

『この道をいけばどうなるものか危ぶむなかれ 危ぶめば道はなし踏み出せばその一歩が道となり その一足が道となる迷わず行けよ 行けばわかるさ』 一休宗純

ASMLIBメモ

ASMLIBに関するメモ

【ASMLIBダウンロードサイト】

Linuxであれば、「uname -rm」の実行結果で出力されるカーネルバージョンを確認して
以下の3種類のファイルをダウンロード



[Library and Tools]
oracleasm-support-version.arch.rpm
oracleasmlib-version.arch.rpm
oracleasm-kernel-version.arch.rpm

マニュアルは以下を参照


【ざっくり手順】
1.ダウンロードしたrpmのインストール
2.スクリプトの環境設定&作成(ユーザとかグループとかも設定します。)
3.oracleasmカーネル・モジュールをロード
4.ディスクをOracle ASMディスクとしてマークキング[どれか1ノードで実行]
5.マーキングされたASMディスクを他のノードで使用可能にする[残りのノードで実行]

【注意点】
4でマーキングするディスクは、
事前にfdiskとかでディスク・デバイスに、単一のディスク全体パーティションを作成しとく。
事前にやっとかないと失敗する。

/var/log/oracleasmというログファイルには、以下のメッセージが出力される。
 「devaice デバイス名 is not a partition」



実際の実行手順や結果はまた今度。

2011年6月22日水曜日

PGA_AGGREGATE_TARGETの話

先進的?マニアック?なことじゃなく(笑)、ベーシックなことを書いていきたいと思う。
つまらないかもしれないけど基本がないとDB診断とか判断ミスしちゃうこともあるし。
自分自身用のメモとしても、一応書いていく。
誰かの役に立てばいいな。


今回のテーマ「初期化パラメータ PGA_AGGREGATE_TARGET


マニュアルを噛み砕くと

サーバー・プロセスが使用するPGAメモリーの合計値の目標を指定。
0以外の値に設定すると、WORKAREA_SIZE_POLICYパラメータがAUTOに自動的に設定される。
ソート、グループ化、ハッシュ結合、ビットマップ・マージ、ビットマップ作成のための
メモリ領域を自動的に調整して、全体の合計値が設定値辺りになるように頑張ってくれる。
SGAの20%または10MBのいずれか大きい方に設定されるため、0以外の値がデフォルト。
0に設定すると、WORKAREA_SIZE_POLICYパラメータはMANUALに自動的に設定される。
つまり、*_AREA_SIZEパラメータを設定してね。


★彡覚えておきたいポイント
1)設定値はあくまでも「目標値」
 設定値以上の値を取得することもありあり。
2)動的変更可能
3)Oracle起動時等に設定値分OSメモリを先取りするわけではない
 必要になったら獲得し、キープしつつOSに返したり返さなかったり。。 
4)1サーバプロセスで使用できる領域には制限がある


長くなるので、1)~4)の詳細は次回以降で。


内容に誤りあったら、生温かくご指摘お願いしますm(_ _)m