2006-01-01から1年間の記事一覧

AntがOutOfMemoryエラーでコンパイルできない場合の対処

実行→外部ツール→外部ツール→JRE→VM引数 に -Xmx256m とか 環境変数のANT_OPTSを設定してみたけど、関係なかったのは内緒 Eclipse本体のVM引数はインストールディレクトリにあるeclipse.iniに設定 設定/Java/インストール済みのJRE/JREの編集 にあるデフォル…

サーバー構成

DBCA新機能 SYSAUX(10g必須表領域)の自動インストール フラッシュリカバリ領域の実装 フラッシュバックアップ、リカバリ計画の策定 自動ワークロードリポジトリ、自動統計収集 自動LDAP登録 簡素化されたシードデータベース ASM構成 EMを使用する コンソー…

インストール

※赤字が新機能っぽいところ データベース記憶域オプション OSファイルシステム(通常) ASM(Automatic Storage Management)(主にRAC) RAWデバイス(RAC) 新しくなったEMのデータベース管理オプション EM Grid Control(統合管理) EM Database Control…

データベースリソースの効率的な管理

データベースリソースマネージャ システムの負荷やユーザー数に関係なく、適切なリソースをグループ単位で管理する ALTER SYSTEMでリソースプランを動的に変更可能 日中と夜間のリソース割当を変える、という管理が可能 管理可能な項目 CPU時間をパーセンテ…

共有サーバ構成のチューニング

専用サーバと共有サーバの検討 専用サーバー 大量に更新を行うバッチ処理 データベースに処理が集中する作業(DSS) データベースの起動・停止(SYSDBA作業) 共有サーバー ほとんどの時間を顧客との会話に費やす対話式アプリケーション(OLTP) メモリ・リ…

アプリケーションのチューニング

索引 B*Tree 少量の行を選択する問合せ ビットマップ カーディナリティが低い列 AND/ORなどの演算が入る場合 エントリ・レベルではなく、ビットマップ・セグメント・レベルでロックがかかるため、OLTPには向いていない(同時に多くの列がロックされるため競…

SQLチューニング(3) --- ストアドアウトライン

ストアドアウトラインを使用する目的 プランスタビリティ(実行計画の安定化) 次のような環境変化があっても、CBOが算出する実行計画を変えないようにする Oracleバージョン 統計再収集 初期化パラメータの変更 データベース再編成 スキーマの変更 アプリケ…

SQLチューニング(2) --- オプティマイザ&統計

RBOとCBO ルールベースオプティマイザ あらかじめOracleサーバで持っているルール情報に基づいてアクセスパスを決定する 10gからは非サポート コストベースオプティマイザ アクセスパスのコストを見積り、コストが低いものを選択する 定期的に統計情報を取得…

SQLチューニング(1) --- 診断ユーティリティ

診断ユーティリティ STATSPACKのSQLレポートで怪しいSQLを確認 取得順(SQL ordered by Gets) 物理読み込み順(SQL ordered by Reads) 実行順(SQL ordered by Executions) 解析コール順(SQL ordered by Parse) EXPLAIN PLANコマンドで怪しいSQL文の実…

ロック競合の診断

ロックのメカニズム Oracleでは行レベルロックを採用しているためデッドロックが起こりにくい DML文では 排他行ロック 共有表ロック を取得する Oracleにおいて、ロックはエンキュー・メカニズムによって管理される エンキュー・メカニズムが追跡、記録して…

ロールバックセグメントのチューニング(あまり出ない)

ロールバックセグメントのサイズ 1つのトランザクションでは1つのセグメントのみ使う エクステントは循環利用 delete > update(索引つき) > update > insert の順でロールバックセグメントを消費する truncateはロールバックセグメントを消費しない ロールバ…

ソート領域のチューニング

ソート処理を必要とするSQL 索引の作成(通常) ANALYZEコマンド order by group by distinct UNION、INTERSECT、MINUS演算子 ソートマージ結合 ※どのタイプのjoin(ハッシュマップ、ソートマージ、ネストループ)が使われるかは実行計画で決まる ソート処理…

もえたん でるたん(前半のみ)

2章 診断およびチューニング用のユーティリティ STATSPACKのコマンド statspack.snap PERFSTATユーザでspreport.sql 3章 共有プールのチューニング 動的SGAは? データベース・バッファ・キャッシュ 共有プール ライブラリ・キャッシュで再ロード多発の原因 …

データブロックの効率的な使用(3) --- 索引のチューニング(索引走査)

索引の診断 変更が多く行われる表では、表のセグメントだけでなく、索引のセグメントも断片化を起こす 索引は完全に空となった索引ブロックのみ空きリストに登録され、再利用可能となる(表のように”PCTUSEDを下回ったら”ではない) 診断方法 ANALYZE INDEX …

データブロックの効率的な使用(2) --- エクステントのチューニング(全表走査)

エクステントのサイズ エクステントのサイズは主に全表走査のパフォーマンスに影響する 索引走査の場合は関係ない 大きくするメリット 動的拡張が起こりにくい(動的拡張はコスト大) マルチブロック・リードを減らすことができる(どんなにマルチにしても、…

Frickrのタグを一括削除する便利機能

http://www.lifehacker.com/software/top/mass-delete-your-flickr-tags-191094.php Login into Flickr. Type in this link into the address bar of your browser: http://flickr.com/photos/me/tags/tagtodelete/delete (Of course, change tagtodelete to…

データブロックの効率的な使用(1) --- データブロックのチューニング

データブロックのサイズ大小 小さいデータブロックサイズは一行のデータ量が少なくランダムアクセスが多いOLTP系向き 大きいデータブロックサイズは大量のデータに順次アクセスするDSS向き 小 大 説明 ブロック競合 ○少 ×大 データブロックあたりの行数が多…

データベースファイルの構成とI/Oの診断(3) --- チェックポイントのチューニング

チェックポイントの処理 DBWn:使用済みバッファをデータファイルに書き込む CKPT:データファイルヘッダと制御ファイルのSCNを更新する チェックポイント(リカバリ)状況を調べるには、V$INSTANCE_RECOVERY チェックポイント頻度を高めればリカバリ時間は…

データベースファイルの構成とI/Oの診断(2) --- 表アクセス、ディスクI/Oに関する統計

全表走査の関する統計 フルスキャンはディスクI/O増加に直結するので、不必要に行わないよう調整 索引やSQLチューニングで解決されることも多々ある 全表走査がメインのバッチなどのセッションは、DB_FILE_MULTIBLOCK_READ_COUNTを一時的に大きくするのも効…

データベースファイルの構成とI/Oの診断(1) --- ファイル分散

表領域の使用方法 Oracleの構造上はSYSTEM表領域だけでDBは構成できるが、通常は最低下図のレベルに表領域を分けることを検討する。 表領域のタイプは、ローカル管理表領域を検討する。エクステント割当のパフォーマンスも良く、断片化の解消も必要ない。 デ…

SGAその他のチューニング(2) --- Javaプール

初期化パラメータ JAVA_POOL_SIZE(デフォルト20MB):OracleJVMを使用しない場合は無駄なので0に変更しておく JAVA_SOFT_SESSIONSPACE_LIMIT:Java使用メモリがこのサイズを超えるとアラーとファイルに警告される。アプリケーションは続行可能。 JAVA_MAX_S…

SGAその他のチューニング(1) --- ラッチ

ラッチ概要 メモリ構造を保護する機構(メモリの割当・開放) 低レベルなロック(早い者勝ち) SGA ラッチ名 効能 要求モード 共有プール shared pool 共有プール内のメモリ管理 Willing-to-wait library cache 共有プール内でSQL検索の管理 Willing-to-wait…

REDOログバッファのチューニング

バッファサイズの設定 LOG_BUFFER初期化パラメータ(最小64KB、デフォルト512KB) LGWR書込みタイミング COMMIT バッファの1/3に達したとき タイムアウト(3秒) DBWnの書込み時 REDOログバッファの診断 待機イベント(v$session_wait) log buffer space RE…

データベースバッファキャッシュのチューニング(2) --- チューニング目標、診断方法

チューニング目標 ディスクI/Oは負荷が高いのでなるべく減らすことが重要 OLTP系システム:バッファヒット率90%以上 DSS系システム:ディスクから読み込むことがほとんどなので、メモリよりもI/Oチューニング重視する 他のプロセスのためのメモリも必要なの…

データベースバッファキャッシュのチューニング(3) --- 表のキャッシュ

表のキャッシュ フルスキャンされる小さな参照表が対象 フルスキャンはLRUリストの末尾に置かれるため、すぐなくなってしまいI/Oが増える。それを防止するのが目的 キャッシュ方法はcreate table ... cache|alter table ... cache|select /*+cache*/ どの…

データベースバッファキャッシュのチューニング(4) --- 複数バッファプール

複数バッファプールの概要 オブジェクトごとにデータブロックが読み込まれるキャッシュを使い分ける アプリケーションのアクセス特性が分散している場合に検討 LRUリストもそれぞれに用意される メモリ側の設定とセグメント側の設定が必要 複数バッファプー…

データベースバッファキャッシュのチューニング(5) --- その他

空きリスト競合の解決 空きリストの数を設定した表を再作成して、データを移動する ALTER TABLEコマンドで空きリストの数を変更する 複数I/Oスレーブ DBWR_IO_SLAVESパラメータ:DBW0に対するスレーブプロセス数(default:0) BACKUP_TAPE_IO_SLAVES:RMANで…

データベースバッファキャッシュのチューニング(1) --- アーキテクチャ

バッファ管理方法 LRUリスト:最近使用されたブロックを管理する 使用済みリスト:データブロックの内容は変更されたが、まだディスクに書き出してないブロックを管理する データブロックの状態 空きバッファ:ディスク=メモリ(再利用可) 使用済みバッフ…

共有プールのチューニング(5) --- UGA、ラージプール

共有サーバとUGA UGA=カーソル情報+セッションデータ(ソート領域、プライベートSQL領域) 専用サーバ接続のときはPGAにUGAが格納される 共有サーバ接続のときは、共有プールまたはラージプールにUGAが格納される ラージプール LARGE_POOL_SIZE初期化パラ…

共有プールのチューニング(4) --- ディクショナリキャッシュのチューニング

チューニングの目標 Oracleはライブラリキャッシュよりもディクショナリキャッシュを優先して格納する なのでディクショナリキャッシュのチューニングはあまり行わなくて良い キャッシュミス率はV$ROWCACHEで確認。ミス率SUM(GETMISSES)/SUM(GETS)が15%未満…