So-net無料ブログ作成

Oracleのロックの調査と解消(V$LOCK、V$SESSION、V$LOCKED_OBJECT) [Oracle]

ロックの調査

ロック競合が発生している可能性がある場合は、V$LOCK、V$SESSION、V$LOCKED_OBJECT(V$LOCKのビュー)でロックの情報を取得しALTER SYSTEM KILL SESSIONでセッションを開放しロックを開放します。 セッション(SID)、ユーザー、オブジェクト及びプログラム等の項目を調査しロックの解消と原因を調べます。
ロックのセッション、ユーザ、オブジェクト及びプログラム名を表示

Oracle8iの場合は、下記で参照します。

ロックの基本情報を表示

ロックを起こしているセッションのSQLを表示

ロックの解消 ロックの解消は、ロックが発生したセッションを開放します。
セッションの強制終了


ORACLEファイルの移動方法 [Oracle]

データの増加に伴いORACLE環境のディスクを変更する必要がある場合下記の手順で変更します。

本来は初期設計で十分にディスクスペースを取る問い思いますが初期予定よりデータの伸びが多いときには、環境を
変える必要が有ります。

非SYSTEM表領域

手順 操作
表領域を確認にする select name from v$datafile
表領域をオフラインにする alter tablespace TableSpaceDiskPath offline
データファイルを移動する OSなどのコマンドで移動する
データベースでファイル名前を変更 alter tablespace USERDATA rename datafile 'XXXXXXX.ora' to 'YYYYY.ora';
表領域をオンライン状態 alter tablespace TableSpaceDiskPath online

SYSTEM表領域

手順 操作
表領域を確認にする select name from v$datafile
データベースを停止する shutdown
データファイルを移動する OSなどのコマンドで移動する
データベースをマウントする startup mount
データベースでファイル名前を変更 alter databas rename file 'XXXXXXX.dbf' to 'YYYYY.dbf'
データベースを起動 startup

SYSTEM表領域

手順 操作
データベースを停止する shutdown
制御ファイルを移動先にコピー OSのコマンドなどによりコピー
初期化パラメータファイルの修正 control_filesで指定しているファイルパスを修正
データベースを起動 startup

REDOログファイル

手順 操作
データベースを停止する shutdown
REDOログファイルの確認 select member from v$logfile
REDOログファイルを移動先にコピー OSのコマンドなどによりコピー
初期化パラメータファイルの修正 ALTER DATBASE RENAME FILE 'XXXXXXX.LOG' to 'YYYYY.LOG'
データベースを起動 startup

特権付きユーザの接続方法


コールドバックアップ [Oracle]

コールドバックアップの手順
ORACLEを停止することになりますが、確実に早くバックアップを取りたい場合に使用しています。

バックアップ

手順 操作
表領域を確認にする select name from v$datafile
アーカイブログを確認にする INITORCL.ORAのLOG_ARCHIVE_DEST
コントロールファイルを確認にする INITORCL.ORAのCONTROL_FILES
データベースを停止する shutdown
表領域、ログ及びコントロールファイルを移動する OSなどのコマンドで移動する
データベースを起動 startup

リストア

手順 操作
データベースを停止する shutdown
表領域、ログ及びコントロールファイルを削除する OSなどのコマンドで削除する
表領域、ログ及びコントロールファイルを移動する OSなどのコマンドで移動する
データベースを起動 startup


OARCLEのデフォルトユーザ [Oracle]


通常はインストール時にパスワードを変更するのですが、覚えていると思わぬところで何故か役に立ちます。

何ででしょう?

ユーザ名 デフォルトパスワード 概要
SYS CHANGE_ON_INSTALL ほぼ全ての権限を所有しています
SYSTEM MANAGER データベース管理用ユーザ
INTERNAL ORACLE SYSの別名

INDEX_FFSヒントの使用 [Oracle]


INDEX_FFSヒントの使用

select count(*) from tableは、テーブル全件走査が行われてしまう為、なるべく使わないようにしたいSQLです。しかし、どうしても必要がある場合は、"/*+ index_ffs(表名 プライマリキー名) */"を使用します。 ヒントに加えて、キーに全件を検索する条件を与えます。 これにより、高速全索引走査が実行されます。

*INDEX_FFSのアクセス方法はマルチブロックアクセスでデータの順番は保証されません。


テーブル全件走査の割合(V$SYSSTAT) [Oracle]


テーブル全件走査の割合

インデックスが適切に作成されているかをテーブル全件走査の割合から判断します。 テーブル全件走査は、10%未満を目安に判断します。10%を超えた場合は、インデックス及びSQL文を見直す必要が有ります。

* 全表走査では1回のI/O走査で複数ブロックをまとめてメモリに読み込みます。(初期化パラメータDB_FILE_MULTIBLOCK_READ_COUNTで設定) したがって、OSの最大読み込みサイズの合わせてブロックサイズを設定するとI/Oを最小限に抑えることができます。


Shared_Pool_Sizeの計算方法 [Oracle]


Shared_Pool_Sizeの計算方法

共有プールは、ライブラリ・キャッシュ,ディクショナリ・キャッシュ,制御情報に使用されます。 共有POOLの空きメモリが少ない場合は、データベースはディスク・アクセス数が多くなりパフォーマンスが低下します。 大よその計算ですが下記項目を加算した数値より大きい値に設定する必要があります。

共有プールのサイズ

内訳
カーソル・メモリ(ユーザ単位)× 同時ユーザー数
セッション情報メモリ
(MTS使用時はソートエリアが取られる)
共有SQL領域
(動的SQLを使用している場合は分も加える)
キャッシュ・オブジェクトの共有領域
30% 程度の空き領域

カーソル・メモリ(ユーザ単位)

セッション情報メモリ(MTS使用時)

共有SQL領域

動的SQL分の共有SQL領域

キャッシュ・オブジェクトの共有領域


Oracleのロールバックセグメントの競合調整(v$waitstat、v$rollstat、sys.dba_segments) [Oracle]


ロールバックセグメントの競合調整

 OracleはデータベースにCOMMITされていない変更を元に戻すために、ROLLBACK SEGMENTに変更したレコードを書き込みます。 待機回数がデータ要求回数の1%を上回る場合、ロールバックセグメントを増設することを検討する必要があります。ロールバックセグメントの待機回数はv$waitstatから、データ要求の回数はv$sysstatから取得し、データを比較しロールバックセグメントの増設を検討します。

・ロールバックセグメントの拡張エラー回避
 UNDOレコードが1エクステントで格納できないくなおかつ全てのエクステントが使用されていた場合は新規にエクステントを追加します。  基本的にロールバックセグメントの拡張を避けるために、エクステントのサイズを大きく取るようにします。
・読み取り一貫性エラーの回避
 ロールバックセグメントの数を増やす、大きなロールバックセグメントを用意する。

ロールバックセグメントの待機回数

競合が有る場合は、ロールバックセグメントの数を増やす必要があります。

データ要求の総数

ロールバックセグメントの監視

UNDOセグメントの監視(XACTSの数)

一般的な推奨値 n < 16 の場合 4、16 <= n < 32 の場合 8、32 <= n の場合 n/4(但し50以下)が推奨されています。


最大同時接続数(v$license、v$parameter) [Oracle]


最大同時接続数

インスタンス起動時から現時点までの期間における最大同時接続数です。最大同時接続数は、V$LICENSE ビュー の SESSIONS_HIGHWATER 列 で確認することができます。

SESSIONS_HIGHWATER

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

               127

 

Oracleに設定している現在の最大同時接続数は下記のSQLで取得できます。

NAME                VALUE

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

processes           1000


Oracle ディスクI/O(v$datafile、v$filestat、dba_free_space) [Oracle]


Oracle ディスクI/O

データベースではデータがディスクに配置された複数のデータファイルに格納されます。データベースサーバが同時に複数のディスクにアクセス可能なサーバを使用している場合は、テーブルスペースを複数のディスクに分散することでディスクI/Oの競合によるパフォーマンス低下を防ぐことができます。

 データファイルへの読み書き回数取得SQL

* READTIM、WRITETIMのデータを取得する場合は、INIT.ORAファイルのTIMED_STATISTICSパラメータをTRUEに設定します。 


表領域の断片化 表領域に複数の断片化したEXTENTができた場合、データアクセスに余分な負荷がかかります。  表領域情報を取得し空きスペースの合計と最大のエクステントを比較してください。最大のエクステントが空きスペースに占める割合が小さければ、フラグメンテーションが起きている可能性があります。
表領域情報取得処理

・ディスクがRAID構成の時の注意点
ストライプサイズはOracleでの読み込みサイズを考慮して、設定しなければなりません。
Oracleの読み込みサイズを計さし、この値の整数倍にストライプサイズを設定します。
この値より小さい場合はOracleの読み込みのたびに、複数回の物理読み込みが発生します。
Oracleの読み込みサイズの計算


メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。