SELECT i.name AS index_name ,o.name AS table_name ,col.name AS column_name FROM sysindexkeys ik ,sysobjects o ,syscolumns col ,sysindexes i WHERE ik.id = o.id AND ik.id = col.id AND ik.colid = col.colid AND ik.id = i.id AND ik.indid = i.indid AND o.xtype = 'U' ORDER BY i.name ,ik.id ,ik.indid ,ik.keyno
2010/01/23
【SQL Server】インデックスの一覧を抽出するSQL
2010/01/19
【Oracle】CPU使用時間の長いクエリを特定するためのSQL
SELECT
last_load_time:最後に読み込まれた日時
executions:実行回数
cpu_time:CPU使用時間
sql_text:SQL(全てじゃない)
※例はワーカープロセス(w3wp.exe)からのアクセスで、2010年01月01日の00時00分00秒以降にCPU負荷が高かったクエリを抽出するもの。
【要調査なSQL】
* FROM ( SELECT sql_id ,last_load_time ,executions ,cpu_time ,cpu_time / executions / 1000000 ,sql_id ,TRANSLATE( sql_text, '#' || CHR(13) || CHR(10), '#' ) sql_text FROM v$SQL WHERE module = 'w3wp.exe' AND executions > 0 AND last_load_time>='2010-01-01/00:00:00' ORDER BY cpu_time / executions DESC ) WHERE rownum <= 30;
last_load_time:最後に読み込まれた日時
executions:実行回数
cpu_time:CPU使用時間
sql_text:SQL(全てじゃない)
※例はワーカープロセス(w3wp.exe)からのアクセスで、2010年01月01日の00時00分00秒以降にCPU負荷が高かったクエリを抽出するもの。
【要調査なSQL】
- 1回当たりのCPU仕様時間(cpu_time/executions) の値が異常に高いもの(数十秒とか)
- 1回当たりのCPU仕様時間(cpu_time/executions) が1秒以上で実行回数(executions)が多いもの
2010/01/16
2フェーズ・コミットとインダウト・トランザクション
2フェーズ・コミット
2フェーズ・コミットは準備フェーズ、コミットフェーズの2つのフェーズでトランザクションを処理することでトランザクションの原子性を保障するメカニズムです。■ 2フェーズ・コミットを採用しない場合
2フェーズ・コミットを採用しない場合、下図のように原子性が保障できません。
■ 2フェーズ・コミットでは
2フェーズ・コミットでは、準備フェーズでDBはコミット準備を行いトランザクション・マネージャへコミット可能票を投票し、コミットフェーズで全てのDBがコミット可能票を投票した場合コミットします。
拒否票が1票でも投票された場合はロールバックします。
2フェーズ・コミットでは、このように2つのフェーズでトランザクションの原子性を保障します。
※図中の不確定区間(インダウト)はコミット/ロールバックのどちらを行うかが確定していない区間を指します。
インダウト・トランザクション
2フェーズ・コミットのコミットフェーズで障害が発生した場合、DBのトランザクションがコミット/ロールバックが確定しないインダウト状態となります。
このインダウト状態が発生したトランザクションをインダウト・トランザクションと言います。
インダウト・トランザクションはリカバリするまでアクセスしていたデータをロックし続けます。そのため早期な検出、リカバリが必要になります。
下図ではDB2でインダウト状態が発生しています。
このインダウト状態が発生したトランザクションをインダウト・トランザクションと言います。
インダウト・トランザクションはリカバリするまでアクセスしていたデータをロックし続けます。そのため早期な検出、リカバリが必要になります。
下図ではDB2でインダウト状態が発生しています。
MSDTC×Oracleの環境ではOracle MTS Recovery Service、リカバリ・ジョブ(DBMS_JOBパッケージで登録するジョブ)で自動リカバリを実現します。
MSDTC×Oracleの自動リカバリについてはいずれ詳細をPOSTします。
2010/01/15
SSISパッケージのProtectionLevel
SSISパッケージの編集を複数の開発環境で行う場合はProtectionLevelに注意。
【単一の開発環境でパッケージを編集する場合】
EncryptAllWithUserKey、またはEncryptSensitiveWithUserKey
【複数の開発環境でパッケージを編集する場合】
EncryptAllWithPassword、またはEncryptSensitiveWithPassword
※当然、開発時、配置時、運用時で適切なProtectionLevelを設定するべき。
参考:http://msdn.microsoft.com/ja-jp/library/ms141747.aspx
- DontSaveSensitive:接続文字列中のパスワードなど機微なプロパティが空白に置き換えられる
- EncryptAllWithPassword:パッケージ全体をパスワードを使って暗号化する。
- EncryptAllWithUserKey:パッケージ全体をユーザープロファイルを使って暗号化する。
- EncryptSensitiveWithPassword:接続文字列中のパスワードなど機微なプロパティをパスワードを使って暗号化する。
- EncryptSensitiveWithUserKey:接続文字列中のパスワードなど機微なプロパティをユーザープロファイルを使って暗号化する。
【単一の開発環境でパッケージを編集する場合】
EncryptAllWithUserKey、またはEncryptSensitiveWithUserKey
【複数の開発環境でパッケージを編集する場合】
EncryptAllWithPassword、またはEncryptSensitiveWithPassword
※当然、開発時、配置時、運用時で適切なProtectionLevelを設定するべき。
参考:http://msdn.microsoft.com/ja-jp/library/ms141747.aspx
2010/01/13
登録:
投稿 (Atom)




