ラベル ORACLE の投稿を表示しています。 すべての投稿を表示
ラベル ORACLE の投稿を表示しています。 すべての投稿を表示

2010/06/23

【ORACLE】パッケージ、プロシージャのコンパイル

地味にハマッたのでメモ。PL/SQL Developerで実行したらPLSQL_DEBUGがTRUEなんさ・・・。




-- FLASEにしておかないとDEBUGモードでコンパイルされてしまう。
ALTER SESSION SET PLSQL_DEBUG = FALSE ;
 
 
-- パッケージのコンパイル
ALTER PACKAGE [パッケージ名] COMPILE PACKAGE;;
-- パッケージBODYのコンパイル
ALTER PACKAGE [パッケージ名] COMPILE BODY;
 
-- パッケージもパッケージBODYもコンパイル
ALTER PACKAGE [パッケージ名] COMPILE;
 
 
-- プロシージャのコンパイル
ALTER PROCEDURE [プロシージャ] COMPILE;



2010/02/05

【Oracle】sqlplusで実行結果をファイルに出力する。

意外と知らない人が多いことに気づいたので、ちょっとメモ。
本番環境でOracle SQL Developerが起動しているのを見ると残念な気分になる。。。


外部ファイルへの出力開始
sql>spool [ファイル名]




外部ファイルへの出力終了
sql>spool off


2010/01/19

【Oracle】CPU使用時間の長いクエリを特定するためのSQL

SELECT
*
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)が多いもの



2009/12/01

SQL*Plus TIPS

このエントリは思いつく都度追記していく予定。。


■1行の長さを変更する(LINESIZE)

構文
SET LINESIZE [文字数]

利用例
SQL> SET LINESIZE 10000


■キャラクタセットの設定(NLS_LAG)

構文
NLS_LANG = language_territory.charset

利用例(Windowsの場合)
SET NLS_LANG=Japanese_Japan.JA16SJIS

■接続数の確認

利用例
SELECT
     module
   , terminal
   , count(*) 
FROM 
   v$SESSION
GROUP BY
     module
   , terminal
/

2009/11/28

RACでの分散トランザクション

RACで分散トランザクションを行う場合は、同じ分散トランザクションの異なるブランチはかならず1つのインスタンスに置くように処理を転送する必要がある

同じ分散トランザクションの異なるブランチがRACデータベースの異なるインスタンスに置かれる状態をスプリット・ブランチといい、スプリット・ブランチが発生すると分散トランザクションは正しく処理されない。

スプリット・ブランチを避けるためには、優先インスタンスを1つだけ持つシングルトン・サービスを作成する。






参考:RACでXAを使用するためのベスト・プラクティス
http://otndnld.oracle.co.jp/products/database/clustering/pdf/bestpracticesforxaandrac.pdf