DB

OracleLinux7 に Oracle Database 12c をインストール

以下の環境に対してOracleDatabase12cをインストールした。

環境

■OS



Oracle Linux 7.1 64bit



※Oracle Vritual Boxを用いて仮想環境で実行



 



■Oracle



Oracle Database 12c Release 1 (12.1.0.1.0) for Linux x86-64



 

インストール手順

1.ユーザー作成

<br />
	groupadd -g 54321 oinstall<br />
	groupadd -g 54322 dba<br />
	groupadd -g 54323 oper<br />
	groupadd -g 54324 backupdba<br />
	groupadd -g 54325 dgdba<br />
	groupadd -g 54326 kmdba<br />
	groupadd -g 54327 asmdba<br />
	groupadd -g 54328 asmoper<br />
	groupadd -g 54329 asmadmin<br />
	

<br />
	useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba oracle<br />
	passwd oracle<br />
	

※パスワードは好きな文字列で設定

2.リソース制限の変更



<code>/etc/security/limits.confに以下を追加</code>



 oracle soft nproc <span class="synConstant">2047</span> oracle hard nproc <span class="synConstant">16384</span> oracle soft nofile <span class="synConstant">1024</span> oracle hard nofile <span class="synConstant">65536</span> oracle soft stack<span class="synConstant"> </span>10240 oracle hard stack<span class="synConstant"> </span>32768</pre> 

Oracleのパフォーマンス障害についてのメモ

Oracle9iの頃はあんまり無かったが、10gになってから
パフォーマンスに関する障害がよく起こる。
その際の原因と対応策についてメモしとく。

##あくまで経験上の話であり、絶対正しい分けではないので注意!

○現象
特定のSQL実行時にCPUが100%に張り付き、
処理が完了しない。
##SQL自体は正常時には数秒で返ってくる程度

○原因
実行計画の不備と思われる。
主にCPUに負荷のかかる実行計画で実行され、
速度遅延を起こしている。
根本原因は統計情報の不足。

○対応策
案としては下記の2つが上げられる。

①使用するテーブルをアナライズ
Oracle10gではWeb板のEnterpriseManager(以後EMとする)で統計情報の取得が
実行できるのでそれを使用すると楽かも。
あと10gからDBMS_STATS.GATHER_SCHEMA_STATS等のオプションの
デフォルト値が変わり、デフォルトではno_invalidate(実行計画の再生成の有無)が
oracle任せになっているので注意。
アナライズを行っても実行計画が変わらない可能性があるのでFalseにすること。
##no_invalidateオプションはEMではカーソルの無効化という名前になっています。

なおOracle10gではデフォルトでアナライズを行うジョブが登録されているが、
統計情報が失効したオブジェクトのみ、カーソルの無効化もoracle任せになっている。
理論的には統計情報が失効したオブジェクトのアナライズのみでも問題なさそうだが
常に最適な実行計画をoracleが判断してくれることを考えると独自で
アナライズジョブを作成し、全てのオブジェクトに対し即カーソルの無効化をさせるように
設定したほうがよいと思われる。

②SQLチューニング・アドバイザ
oracle10gからSQLチューニング・アドバイザなるものがある。
簡単に説明すると障害の発生したSQLを分析し、こうしたら早くなるよ~っと
アドバイスしてくれる機能である。
今回はそのアドバイスの中に出てくる(出てこない場合もある)実行計画の変更を
利用する。出てきた実行計画を「実装」させることにより、そのSQLのみ実装した
実行計画で実行されるようになる。
上記①だと場合によっては長時間かかることがあり、もし運用での切羽詰った状況では
アナライズできない場合もある。
それに比べ②は時間もかかっても数分なので助かる。

実行の仕方はEMからアラート等に表示されている特定の遅いSQLをクリックし、
「SQLチューニング・アドバイザのスケジュール」等で実行する。
その後診断結果が出るのでその中にある統計情報?を実装させてやればよい。