・【テーブル構造取得】 ・【インデックス情報を取得】 ・【ビューの定義情報取得】 ・【マテリアライズド・ビューの定義情報取得】 ・【基本的な再帰(ANSI SQL)】 ・【連続レコード発生】 ・【CSV形式のデータを各フィールドに分解】 ・【カラムのコメントを取得】 ・【全角文字を半角文字に変換】 ・【SID 取得】 ・【ユーザー名 取得】 ・【アプリケーション 取得】 ・【セッション情報 取得】 ・【実行中のSQL取得(のぞき見)】 ・【実行中のSQL取得(集約)】 ・【実行中のSQL取得(集約)古いやり方Oracleの制約により完全な復元が困難】 ・【セッション実行状況取得】 ・【実行中のSQLの実行計画を取得】 ・【実行プラン取得(コミットコントロールの元で実施がおすすめ、取得完了後にロールバックが必要、消し忘れを防ぐ)】 【テーブル構造取得】SELECT distinct /* テーブル構造取得 */ a.TABLE_NAME ,a.COLUMN_ID ,a.COLUMN_NAME ,a.DATA_TYPE ,a.DATA_LENGTH ,a.DATA_PRECISION ,a.DATA_SCALE ,case when a.NULLABLE = 'Y' then 'NULL' when a.NULLABLE = 'N' then 'NOT NULL' end as NULLS ,a.CHARACTER_SET_NAME ,cast(substr(b.COMMENTS,1,128) as varchar2(255)) as COMMENTS FROM ALL_TAB_COLUMNS a left outer join USER_COL_COMMENTS b on a.TABLE_NAME = b.TABLE_NAME and a.COLUMN_NAME = b.COLUMN_NAME WHERE 1=1 --and a.TABLE_NAME like 'xxxxxxxxxx' ORDER BY a.TABLE_NAME,a.COLUMN_ID TABLE_NAMEに指定したテーブルの構造を取得 【インデックス情報を取得】SELECT /* インデックス情報を取得 */ ALL_IND_COLUMNS.TABLE_NAME ,ALL_IND_COLUMNS.INDEX_NAME ,ALL_IND_COLUMNS.COLUMN_POSITION ,SUBSTR(ALL_IND_COLUMNS.COLUMN_NAME,1,64) as COLUMN_NAME ,ALL_INDEXES.UNIQUENESS from ALL_IND_COLUMNS left outer join ALL_INDEXES on ALL_INDEXES.OWNER = ALL_IND_COLUMNS.INDEX_OWNER and ALL_INDEXES.INDEX_NAME = ALL_IND_COLUMNS.INDEX_NAME where 1=1 --and TABLE_NAME = 'xxxxxxxxxx' ORDER BY ALL_IND_COLUMNS.INDEX_OWNER ,ALL_IND_COLUMNS.TABLE_NAME ,ALL_IND_COLUMNS.INDEX_NAME ,ALL_IND_COLUMNS.COLUMN_POSITION TABLE_NAMEと関係のあるインデックス情報を取得します 【ビューの定義情報取得】select /* ビューの定義情報取得 */ OWNER ,VIEW_NAME ,TEXT ,TEXT_VC ,TEXT_LENGTH ,length(TEXT_VC) ,ORIGIN_CON_ID from ALL_VIEWS where 1=1 order by OWNER ,VIEW_NAME ビューの定義情報を取得します、 4000バイト以下であれば「TEXT_VC」の内容でOK 4001バイト以上かつ「ORIGIN_CON_ID=3」であれば「TEXT」の内容を使うのがおすすめ 【マテリアライズド・ビューの定義情報取得】select /* マテリアライズド・ビューの定義情報取得 */ OWNER ,MVIEW_NAME ,QUERY from ALL_MVIEWS where 1=1 マテリアライズド・ビューの定義情報を取得します、 【基本的な再帰(ANSI SQL)】--select /* 基本的な再帰(ANSI SQL) */ with ListNo(p) as ( select 1 as p from dual union all select p+1 from ListNo where p < 5 ) select p from ListNo Oracle Database 11g R2 以降でのバージョンでのみ実行可能(らしい?) 【連続レコード発生】select RowNum from dual connect by Level <= 100 1〜100の番号を持つレコードを発生させています 年間の日付を作る時などに便利 ↓↓↓こんな感じ↓↓↓ select /* 連続レコード発生 */ cast('20120101' as date) + RowNum-1 as 日付 from dual where cast('20120101' as date) + RowNum-1 < cast('20130101' as date) connect by Level <= 400 【CSV形式のデータを各フィールドに分解】--select /* CSV形式のデータを各フィールドに分解 */ with dt as ( select '123,456,789,"ABC","E,"","",FG","HIJ",0' as csv from dual union all select '000,456,789,"ABC","E,"","",FG","HIJ",0' as csv from dual union all select '999,456,789,"ABC","E,"","",FG","HIJ",0' as csv from dual union all select '789,456,789,"ABC","E,"","",FG","HIJ",0' as csv from dual union all select '123,456,789,"ABC","E,"","",FG","HIJ",0' as csv from dual ), dta as ( select r ,csv ,no ,substr(csv,no,1) as c from (select RowNum as r,','||csv||',' as csv from dt) dt left outer join (select RowNum as no from dual connect by Level <= 400) b on no <= length(csv) ) select R ,CSV ,max(case when G_SEQ = 001 then CSV_ZZZ end) as val001 ,max(case when G_SEQ = 002 then CSV_ZZZ end) as val002 ,max(case when G_SEQ = 003 then CSV_ZZZ end) as val003 ,max(case when G_SEQ = 004 then CSV_ZZZ end) as val004 ,max(case when G_SEQ = 005 then CSV_ZZZ end) as val005 ,max(case when G_SEQ = 006 then CSV_ZZZ end) as val006 ,max(case when G_SEQ = 007 then CSV_ZZZ end) as val007 ,max(case when G_SEQ = 008 then CSV_ZZZ end) as val008 ,max(case when G_SEQ = 009 then CSV_ZZZ end) as val009 ,max(case when G_SEQ = 010 then CSV_ZZZ end) as val010 ,max(case when G_SEQ = 011 then CSV_ZZZ end) as val011 ,max(case when G_SEQ = 012 then CSV_ZZZ end) as val012 ,max(case when G_SEQ = 013 then CSV_ZZZ end) as val013 ,max(case when G_SEQ = 014 then CSV_ZZZ end) as val014 ,max(case when G_SEQ = 015 then CSV_ZZZ end) as val015 from ( select R ,CSV ,NO ,ROW_NUMBER() OVER (PARTITION BY R,CSV ORDER BY NO) as G_SEQ ,CSV_ZZZ ,NEXT_NO from ( select R ,CSV ,NO ,ROW_NUMBER() OVER (PARTITION BY R,CSV,(no + length(CSV_ZZZ)) ORDER BY NO) as g_seq ,cast(replace(replace(replace(substr(CSV_ZZZ,2),'""','^%%^'),'"',''),'^%%^','"') as varchar(50)) as CSV_ZZZ ,no + length(CSV_ZZZ) as next_no from ( select R ,substr(CSV,2,length(CSV)-2) as CSV ,NO ,case when substr(csv,no,2) = ',"' then substr(csv,no,instr(replace(substr(csv,no),'""','^^'),'",')) else substr(csv,no,instr(replace(substr(csv,no+1),'""','^^'),',')) end as CSV_zzz from dta a where substr(csv,no,1) = ',' ) a ) a where g_seq = 1 ) group by R ,CSV order by 1,2,3 1つのフィールドに入っているCSV形式のデータを個別のフィールドに分解し格納 上記のSQLはそのまま実行できます。 上記SQL with句の「dt」ビューを実際のテーブルに置き換えればフィールド分割可能 【カラムのコメントを取得】SELECT distinct /* カラムのコメントを取得 */ a.TABLE_NAME ,a.COLUMN_NAME ,cast(substr(b.COMMENTS,1,128) as varchar2(255)) as COMMENTS FROM ALL_TAB_COLUMNS a left outer join USER_COL_COMMENTS b on a.TABLE_NAME = b.TABLE_NAME and a.COLUMN_NAME = b.COLUMN_NAME WHERE a.TABLE_NAME like '%xxxxx%' ORDER BY a.TABLE_NAME ,a.COLUMN_ID 【全角文字を半角文字に変換】--select with 変換表 as ( select cast(' ' as varchar2(2)) as 全角,cast(' ' as varchar2(2)) as 半角 from dual union select cast('ァ' as varchar2(2)) as 全角,cast('ァ' as varchar2(2)) as 半角 from dual union select cast('ア' as varchar2(2)) as 全角,cast('ア' as varchar2(2)) as 半角 from dual union select cast('ィ' as varchar2(2)) as 全角,cast('ィ' as varchar2(2)) as 半角 from dual union select cast('イ' as varchar2(2)) as 全角,cast('イ' as varchar2(2)) as 半角 from dual union select cast('ゥ' as varchar2(2)) as 全角,cast('ゥ' as varchar2(2)) as 半角 from dual union select cast('ウ' as varchar2(2)) as 全角,cast('ウ' as varchar2(2)) as 半角 from dual union select cast('ェ' as varchar2(2)) as 全角,cast('ェ' as varchar2(2)) as 半角 from dual union select cast('エ' as varchar2(2)) as 全角,cast('エ' as varchar2(2)) as 半角 from dual union select cast('ォ' as varchar2(2)) as 全角,cast('ォ' as varchar2(2)) as 半角 from dual union select cast('オ' as varchar2(2)) as 全角,cast('オ' as varchar2(2)) as 半角 from dual union select cast('カ' as varchar2(2)) as 全角,cast('カ' as varchar2(2)) as 半角 from dual union select cast('ガ' as varchar2(2)) as 全角,cast('ガ' as varchar2(2)) as 半角 from dual union select cast('キ' as varchar2(2)) as 全角,cast('キ' as varchar2(2)) as 半角 from dual union select cast('ギ' as varchar2(2)) as 全角,cast('ギ' as varchar2(2)) as 半角 from dual union select cast('ク' as varchar2(2)) as 全角,cast('ク' as varchar2(2)) as 半角 from dual union select cast('グ' as varchar2(2)) as 全角,cast('グ' as varchar2(2)) as 半角 from dual union select cast('ケ' as varchar2(2)) as 全角,cast('ケ' as varchar2(2)) as 半角 from dual union select cast('ゲ' as varchar2(2)) as 全角,cast('ゲ' as varchar2(2)) as 半角 from dual union select cast('コ' as varchar2(2)) as 全角,cast('コ' as varchar2(2)) as 半角 from dual union select cast('ゴ' as varchar2(2)) as 全角,cast('ゴ' as varchar2(2)) as 半角 from dual union select cast('サ' as varchar2(2)) as 全角,cast('サ' as varchar2(2)) as 半角 from dual union select cast('ザ' as varchar2(2)) as 全角,cast('ザ' as varchar2(2)) as 半角 from dual union select cast('シ' as varchar2(2)) as 全角,cast('シ' as varchar2(2)) as 半角 from dual union select cast('ジ' as varchar2(2)) as 全角,cast('ジ' as varchar2(2)) as 半角 from dual union select cast('ス' as varchar2(2)) as 全角,cast('ス' as varchar2(2)) as 半角 from dual union select cast('ズ' as varchar2(2)) as 全角,cast('ズ' as varchar2(2)) as 半角 from dual union select cast('セ' as varchar2(2)) as 全角,cast('セ' as varchar2(2)) as 半角 from dual union select cast('ゼ' as varchar2(2)) as 全角,cast('ゼ' as varchar2(2)) as 半角 from dual union select cast('ソ' as varchar2(2)) as 全角,cast('ソ' as varchar2(2)) as 半角 from dual union select cast('ゾ' as varchar2(2)) as 全角,cast('ゾ' as varchar2(2)) as 半角 from dual union select cast('タ' as varchar2(2)) as 全角,cast('タ' as varchar2(2)) as 半角 from dual union select cast('ダ' as varchar2(2)) as 全角,cast('ダ' as varchar2(2)) as 半角 from dual union select cast('チ' as varchar2(2)) as 全角,cast('チ' as varchar2(2)) as 半角 from dual union select cast('ヂ' as varchar2(2)) as 全角,cast('ヂ' as varchar2(2)) as 半角 from dual union select cast('ッ' as varchar2(2)) as 全角,cast('ッ' as varchar2(2)) as 半角 from dual union select cast('ツ' as varchar2(2)) as 全角,cast('ツ' as varchar2(2)) as 半角 from dual union select cast('ヅ' as varchar2(2)) as 全角,cast('ヅ' as varchar2(2)) as 半角 from dual union select cast('テ' as varchar2(2)) as 全角,cast('テ' as varchar2(2)) as 半角 from dual union select cast('デ' as varchar2(2)) as 全角,cast('デ' as varchar2(2)) as 半角 from dual union select cast('ト' as varchar2(2)) as 全角,cast('ト' as varchar2(2)) as 半角 from dual union select cast('ド' as varchar2(2)) as 全角,cast('ド' as varchar2(2)) as 半角 from dual union select cast('ナ' as varchar2(2)) as 全角,cast('ナ' as varchar2(2)) as 半角 from dual union select cast('ニ' as varchar2(2)) as 全角,cast('ニ' as varchar2(2)) as 半角 from dual union select cast('ヌ' as varchar2(2)) as 全角,cast('ヌ' as varchar2(2)) as 半角 from dual union select cast('ネ' as varchar2(2)) as 全角,cast('ネ' as varchar2(2)) as 半角 from dual union select cast('ノ' as varchar2(2)) as 全角,cast('ノ' as varchar2(2)) as 半角 from dual union select cast('ハ' as varchar2(2)) as 全角,cast('ハ' as varchar2(2)) as 半角 from dual union select cast('バ' as varchar2(2)) as 全角,cast('バ' as varchar2(2)) as 半角 from dual union select cast('パ' as varchar2(2)) as 全角,cast('パ' as varchar2(2)) as 半角 from dual union select cast('ヒ' as varchar2(2)) as 全角,cast('ヒ' as varchar2(2)) as 半角 from dual union select cast('ビ' as varchar2(2)) as 全角,cast('ビ' as varchar2(2)) as 半角 from dual union select cast('ピ' as varchar2(2)) as 全角,cast('ピ' as varchar2(2)) as 半角 from dual union select cast('フ' as varchar2(2)) as 全角,cast('フ' as varchar2(2)) as 半角 from dual union select cast('ブ' as varchar2(2)) as 全角,cast('ブ' as varchar2(2)) as 半角 from dual union select cast('プ' as varchar2(2)) as 全角,cast('プ' as varchar2(2)) as 半角 from dual union select cast('ヘ' as varchar2(2)) as 全角,cast('ヘ' as varchar2(2)) as 半角 from dual union select cast('ベ' as varchar2(2)) as 全角,cast('ベ' as varchar2(2)) as 半角 from dual union select cast('ペ' as varchar2(2)) as 全角,cast('ペ' as varchar2(2)) as 半角 from dual union select cast('ホ' as varchar2(2)) as 全角,cast('ホ' as varchar2(2)) as 半角 from dual union select cast('ボ' as varchar2(2)) as 全角,cast('ボ' as varchar2(2)) as 半角 from dual union select cast('ポ' as varchar2(2)) as 全角,cast('ポ' as varchar2(2)) as 半角 from dual union select cast('マ' as varchar2(2)) as 全角,cast('マ' as varchar2(2)) as 半角 from dual union select cast('ミ' as varchar2(2)) as 全角,cast('ミ' as varchar2(2)) as 半角 from dual union select cast('ム' as varchar2(2)) as 全角,cast('ム' as varchar2(2)) as 半角 from dual union select cast('メ' as varchar2(2)) as 全角,cast('メ' as varchar2(2)) as 半角 from dual union select cast('モ' as varchar2(2)) as 全角,cast('モ' as varchar2(2)) as 半角 from dual union select cast('ャ' as varchar2(2)) as 全角,cast('ャ' as varchar2(2)) as 半角 from dual union select cast('ヤ' as varchar2(2)) as 全角,cast('ヤ' as varchar2(2)) as 半角 from dual union select cast('ュ' as varchar2(2)) as 全角,cast('ュ' as varchar2(2)) as 半角 from dual union select cast('ユ' as varchar2(2)) as 全角,cast('ユ' as varchar2(2)) as 半角 from dual union select cast('ョ' as varchar2(2)) as 全角,cast('ョ' as varchar2(2)) as 半角 from dual union select cast('ヨ' as varchar2(2)) as 全角,cast('ヨ' as varchar2(2)) as 半角 from dual union select cast('ラ' as varchar2(2)) as 全角,cast('ラ' as varchar2(2)) as 半角 from dual union select cast('リ' as varchar2(2)) as 全角,cast('リ' as varchar2(2)) as 半角 from dual union select cast('ル' as varchar2(2)) as 全角,cast('ル' as varchar2(2)) as 半角 from dual union select cast('レ' as varchar2(2)) as 全角,cast('レ' as varchar2(2)) as 半角 from dual union select cast('ロ' as varchar2(2)) as 全角,cast('ロ' as varchar2(2)) as 半角 from dual union select cast('ヮ' as varchar2(2)) as 全角,cast('ワ' as varchar2(2)) as 半角 from dual union select cast('ワ' as varchar2(2)) as 全角,cast('ワ' as varchar2(2)) as 半角 from dual union select cast('ヰ' as varchar2(2)) as 全角,cast('イ' as varchar2(2)) as 半角 from dual union select cast('ヱ' as varchar2(2)) as 全角,cast('エ' as varchar2(2)) as 半角 from dual union select cast('ヲ' as varchar2(2)) as 全角,cast('ヲ' as varchar2(2)) as 半角 from dual union select cast('ン' as varchar2(2)) as 全角,cast('ン' as varchar2(2)) as 半角 from dual union select cast('ヴ' as varchar2(2)) as 全角,cast('ヴ' as varchar2(2)) as 半角 from dual union select cast('ヵ' as varchar2(2)) as 全角,cast('カ' as varchar2(2)) as 半角 from dual union select cast('ヶ' as varchar2(2)) as 全角,cast('ケ' as varchar2(2)) as 半角 from dual union select cast('!' as varchar2(2)) as 全角,cast('!' as varchar2(2)) as 半角 from dual union select cast('”' as varchar2(2)) as 全角,cast('"' as varchar2(2)) as 半角 from dual union select cast('#' as varchar2(2)) as 全角,cast('#' as varchar2(2)) as 半角 from dual union select cast('$' as varchar2(2)) as 全角,cast('$' as varchar2(2)) as 半角 from dual union select cast('%' as varchar2(2)) as 全角,cast('%' as varchar2(2)) as 半角 from dual union select cast('&' as varchar2(2)) as 全角,cast('&' as varchar2(2)) as 半角 from dual union select cast('’' as varchar2(2)) as 全角,cast('''' as varchar2(2)) as 半角 from dual union select cast('(' as varchar2(2)) as 全角,cast('(' as varchar2(2)) as 半角 from dual union select cast(')' as varchar2(2)) as 全角,cast(')' as varchar2(2)) as 半角 from dual union select cast('*' as varchar2(2)) as 全角,cast('*' as varchar2(2)) as 半角 from dual union select cast('+' as varchar2(2)) as 全角,cast('+' as varchar2(2)) as 半角 from dual union select cast(',' as varchar2(2)) as 全角,cast(',' as varchar2(2)) as 半角 from dual union select cast('−' as varchar2(2)) as 全角,cast('-' as varchar2(2)) as 半角 from dual union select cast('.' as varchar2(2)) as 全角,cast('.' as varchar2(2)) as 半角 from dual union select cast('/' as varchar2(2)) as 全角,cast('/' as varchar2(2)) as 半角 from dual union select cast('0' as varchar2(2)) as 全角,cast('0' as varchar2(2)) as 半角 from dual union select cast('1' as varchar2(2)) as 全角,cast('1' as varchar2(2)) as 半角 from dual union select cast('2' as varchar2(2)) as 全角,cast('2' as varchar2(2)) as 半角 from dual union select cast('3' as varchar2(2)) as 全角,cast('3' as varchar2(2)) as 半角 from dual union select cast('4' as varchar2(2)) as 全角,cast('4' as varchar2(2)) as 半角 from dual union select cast('5' as varchar2(2)) as 全角,cast('5' as varchar2(2)) as 半角 from dual union select cast('6' as varchar2(2)) as 全角,cast('6' as varchar2(2)) as 半角 from dual union select cast('7' as varchar2(2)) as 全角,cast('7' as varchar2(2)) as 半角 from dual union select cast('8' as varchar2(2)) as 全角,cast('8' as varchar2(2)) as 半角 from dual union select cast('9' as varchar2(2)) as 全角,cast('9' as varchar2(2)) as 半角 from dual union select cast(':' as varchar2(2)) as 全角,cast(':' as varchar2(2)) as 半角 from dual union select cast(';' as varchar2(2)) as 全角,cast(';' as varchar2(2)) as 半角 from dual union select cast('<' as varchar2(2)) as 全角,cast('<' as varchar2(2)) as 半角 from dual union select cast('=' as varchar2(2)) as 全角,cast('=' as varchar2(2)) as 半角 from dual union select cast('>' as varchar2(2)) as 全角,cast('>' as varchar2(2)) as 半角 from dual union select cast('?' as varchar2(2)) as 全角,cast('?' as varchar2(2)) as 半角 from dual union select cast('@' as varchar2(2)) as 全角,cast('@' as varchar2(2)) as 半角 from dual union select cast('A' as varchar2(2)) as 全角,cast('A' as varchar2(2)) as 半角 from dual union select cast('B' as varchar2(2)) as 全角,cast('B' as varchar2(2)) as 半角 from dual union select cast('C' as varchar2(2)) as 全角,cast('C' as varchar2(2)) as 半角 from dual union select cast('D' as varchar2(2)) as 全角,cast('D' as varchar2(2)) as 半角 from dual union select cast('E' as varchar2(2)) as 全角,cast('E' as varchar2(2)) as 半角 from dual union select cast('F' as varchar2(2)) as 全角,cast('F' as varchar2(2)) as 半角 from dual union select cast('G' as varchar2(2)) as 全角,cast('G' as varchar2(2)) as 半角 from dual union select cast('H' as varchar2(2)) as 全角,cast('H' as varchar2(2)) as 半角 from dual union select cast('I' as varchar2(2)) as 全角,cast('I' as varchar2(2)) as 半角 from dual union select cast('J' as varchar2(2)) as 全角,cast('J' as varchar2(2)) as 半角 from dual union select cast('K' as varchar2(2)) as 全角,cast('K' as varchar2(2)) as 半角 from dual union select cast('L' as varchar2(2)) as 全角,cast('L' as varchar2(2)) as 半角 from dual union select cast('M' as varchar2(2)) as 全角,cast('M' as varchar2(2)) as 半角 from dual union select cast('N' as varchar2(2)) as 全角,cast('N' as varchar2(2)) as 半角 from dual union select cast('O' as varchar2(2)) as 全角,cast('O' as varchar2(2)) as 半角 from dual union select cast('P' as varchar2(2)) as 全角,cast('P' as varchar2(2)) as 半角 from dual union select cast('Q' as varchar2(2)) as 全角,cast('Q' as varchar2(2)) as 半角 from dual union select cast('R' as varchar2(2)) as 全角,cast('R' as varchar2(2)) as 半角 from dual union select cast('S' as varchar2(2)) as 全角,cast('S' as varchar2(2)) as 半角 from dual union select cast('T' as varchar2(2)) as 全角,cast('T' as varchar2(2)) as 半角 from dual union select cast('U' as varchar2(2)) as 全角,cast('U' as varchar2(2)) as 半角 from dual union select cast('V' as varchar2(2)) as 全角,cast('V' as varchar2(2)) as 半角 from dual union select cast('W' as varchar2(2)) as 全角,cast('W' as varchar2(2)) as 半角 from dual union select cast('X' as varchar2(2)) as 全角,cast('X' as varchar2(2)) as 半角 from dual union select cast('Y' as varchar2(2)) as 全角,cast('Y' as varchar2(2)) as 半角 from dual union select cast('Z' as varchar2(2)) as 全角,cast('Z' as varchar2(2)) as 半角 from dual union select cast('[' as varchar2(2)) as 全角,cast('[' as varchar2(2)) as 半角 from dual union select cast('¥' as varchar2(2)) as 全角,cast('\' as varchar2(2)) as 半角 from dual union select cast(']' as varchar2(2)) as 全角,cast(']' as varchar2(2)) as 半角 from dual union select cast('^' as varchar2(2)) as 全角,cast('^' as varchar2(2)) as 半角 from dual union select cast('_' as varchar2(2)) as 全角,cast('_' as varchar2(2)) as 半角 from dual union select cast('‘' as varchar2(2)) as 全角,cast('`' as varchar2(2)) as 半角 from dual union select cast('a' as varchar2(2)) as 全角,cast('a' as varchar2(2)) as 半角 from dual union select cast('b' as varchar2(2)) as 全角,cast('b' as varchar2(2)) as 半角 from dual union select cast('c' as varchar2(2)) as 全角,cast('c' as varchar2(2)) as 半角 from dual union select cast('d' as varchar2(2)) as 全角,cast('d' as varchar2(2)) as 半角 from dual union select cast('e' as varchar2(2)) as 全角,cast('e' as varchar2(2)) as 半角 from dual union select cast('f' as varchar2(2)) as 全角,cast('f' as varchar2(2)) as 半角 from dual union select cast('g' as varchar2(2)) as 全角,cast('g' as varchar2(2)) as 半角 from dual union select cast('h' as varchar2(2)) as 全角,cast('h' as varchar2(2)) as 半角 from dual union select cast('i' as varchar2(2)) as 全角,cast('i' as varchar2(2)) as 半角 from dual union select cast('j' as varchar2(2)) as 全角,cast('j' as varchar2(2)) as 半角 from dual union select cast('k' as varchar2(2)) as 全角,cast('k' as varchar2(2)) as 半角 from dual union select cast('l' as varchar2(2)) as 全角,cast('l' as varchar2(2)) as 半角 from dual union select cast('m' as varchar2(2)) as 全角,cast('m' as varchar2(2)) as 半角 from dual union select cast('n' as varchar2(2)) as 全角,cast('n' as varchar2(2)) as 半角 from dual union select cast('o' as varchar2(2)) as 全角,cast('o' as varchar2(2)) as 半角 from dual union select cast('p' as varchar2(2)) as 全角,cast('p' as varchar2(2)) as 半角 from dual union select cast('q' as varchar2(2)) as 全角,cast('q' as varchar2(2)) as 半角 from dual union select cast('r' as varchar2(2)) as 全角,cast('r' as varchar2(2)) as 半角 from dual union select cast('s' as varchar2(2)) as 全角,cast('s' as varchar2(2)) as 半角 from dual union select cast('t' as varchar2(2)) as 全角,cast('t' as varchar2(2)) as 半角 from dual union select cast('u' as varchar2(2)) as 全角,cast('u' as varchar2(2)) as 半角 from dual union select cast('v' as varchar2(2)) as 全角,cast('v' as varchar2(2)) as 半角 from dual union select cast('w' as varchar2(2)) as 全角,cast('w' as varchar2(2)) as 半角 from dual union select cast('x' as varchar2(2)) as 全角,cast('x' as varchar2(2)) as 半角 from dual union select cast('y' as varchar2(2)) as 全角,cast('y' as varchar2(2)) as 半角 from dual union select cast('z' as varchar2(2)) as 全角,cast('z' as varchar2(2)) as 半角 from dual union select cast('{' as varchar2(2)) as 全角,cast('{' as varchar2(2)) as 半角 from dual union select cast('|' as varchar2(2)) as 全角,cast('|' as varchar2(2)) as 半角 from dual union select cast('}' as varchar2(2)) as 全角,cast('}' as varchar2(2)) as 半角 from dual union select cast(' ̄' as varchar2(2)) as 全角,cast('~' as varchar2(2)) as 半角 from dual ) ,pos as ( select RowNum as p ,RowNum+1 as nx from dual connect by Level <= 300 ) ,args as ( select 'タダsyuu' as in_val from dual ) select cast(replace(VAL,'^','') as varchar(64)) out_val from ( select p ,nx ,ROW_NUMBER() OVER (PARTITION BY in_val ORDER BY p desc) as n ,sys_connect_by_path(nvl(半角,substr(in_val,p,1)),'^') as val from args cross join pos left outer join 変換表 on 全角 = substr(in_val,p,1) where p<=length(in_val) start with p=1 connect by prior nx = p ) a where n =1 上記のSQLはそのまま実行できます。 in_valに全角文字を含む文字列を設定すれば半角に変換された文字列が取得できます UTL_I18N.TRANSLITERATE関数が少々遅いようなのでSQLのみで変換可能にしてみました iPad等では半角カタカナの入力ができないようなので検索の際半角に変換するのに使えるかも、 【SID 取得】select LPAD(' ',3-length(SID),' ')||SID||' '||OSUSER as SID from V$SESSION 【ユーザー名 取得】select distinct OSUSER as OSUSER from V$SESSION 【アプリケーション 取得】select distinct PROGRAM as PROGRAM from V$SESSION 【セッション情報 取得】select SID,USERNAME,OSUSER,MACHINE,PROGRAM,LOGON_TIME from V$SESSION 【実行中のSQL取得(のぞき見)】select sid ,piece ,osuser ,username ,MACHINE ,PROGRAM ,LOGON_TIME ,replace(replace(sql_text,CHR(13)||CHR(10),CHR(10)),CHR(10),CHR(13)||CHR(10)) as sql_text from v$session s left outer join V$SQLTEXT_WITH_NEWLINES t on s.sql_address =t.address where 1=1 --and sid= " + SIDStr + " and sid= 623 order by sid ,address ,piece 【実行中のSQL取得(集約)】--select with sql_T as ( select sid ,piece ,osuser ,username ,MACHINE ,PROGRAM ,LOGON_TIME ,replace(replace(sql_text,CHR(13)||CHR(10),CHR(10)),CHR(10),CHR(13)||CHR(10)) as sql_text from v$session s left outer join V$SQLTEXT_WITH_NEWLINES t on s.sql_address =t.address where 1=1 --and sid= " + SIDStr + " --and sid= 748 ) SELECT sid --,piece ,osuser ,username ,MACHINE ,PROGRAM ,LOGON_TIME ,LISTAGG(sql_text, '') WITHIN GROUP (ORDER BY piece) sql_text FROM sql_T where sql_text is not null GROUP by sid --,piece ,osuser ,username ,MACHINE ,PROGRAM ,LOGON_TIME 【実行中のSQL取得(集約)古いやり方Oracleの制約により完全な復元が困難】--select with sql_T as ( select sid ,piece ,piece + 1 as Next_piece ,osuser ,username ,MACHINE ,PROGRAM ,LOGON_TIME ,replace(replace(replace(sql_text,CHR(13)||CHR(10),CHR(10)),CHR(10),CHR(13)||CHR(10)),'^','@#@') as sql_text from v$session s left outer join V$SQLTEXT_WITH_NEWLINES t on s.sql_address =t.address where 1=1 --and sid= " + SIDStr + " --and sid= 748 ) ,cat_sql as ( select sid ,piece ,Next_piece ,osuser ,username ,MACHINE ,PROGRAM ,LOGON_TIME ,sql_text ,Level ,sys_connect_by_path(sql_text,'^#^') as Path from sql_T start with piece = 0 connect by prior next_piece = piece and prior SID = SID ) select replace(replace(PATH,'^#^',''),'@#@','^') from cat_sql where exists( select 1 from ( select SID ,max(PIECE) as max_PIECE from sql_T group by SID ) ex where ex.SID = cat_sql.SID and ex.max_PIECE = cat_sql.PIECE ) 【セッション実行状況取得】select a.SID ,to_char(cast(b.SOFAR/b.TOTALWORK*100 as number(3,0)) , '990')||'%' as 状況 ,to_char(24*60*60*to_number(b.LAST_UPDATE_TIME - b.START_TIME),'99,990')||'秒' as 経過時間 ,cast(substr(b.MESSAGE,1,255) as varchar2(255)) as 実施内容 from V$SESSION a left outer join V$SESSION_LONGOPS b on a.PREV_SQL_ADDR = b.SQL_ADDRESS where 1=1 --and a.SID = " + SIDStr + L" and b.TIME_REMAINING > 0 【実行中のSQLの実行計画を取得】SELECT b.SID ,b.OSUSER ,ID ,cast( substr( LPAD(' ',DEPTH*2,' ') ||case when OPTIMIZER = 'ANALYZED' then '<'||OBJECT_NAME||'>' when OPTIMIZER is null and OBJECT_NAME is not null then '<'||OBJECT_NAME||'>' when OPTIMIZER is null then NULL else null end ||' ' ||case when OPTIMIZER = 'ANALYZED' then OPERATION||' '||NVL2( OPTIONS, OPTIONS, null ) when OPTIMIZER is null and OPTIONS is not null then OPERATION||'('||OPTIONS||')' when OPTIMIZER is null then OPERATION else OPERATION end || case when OPTIMIZER <> 'ANALYZED' and OPTIMIZER is not null then '(Optimizer='||OPTIMIZER||')' end ,1,150) as varchar2(100) ) as 計画 ,COST ,BYTES ,OPTIMIZER FROM v$sql_plan a left outer join v$session b on b.SQL_HASH_VALUE = a.hash_value and b.SQL_ADDRESS = a.address where 1=1 and a.child_number = 0 --and b.SID = " + SIDStr + " and b.SID is not null ORDER BY a.ADDRESS, a.HASH_VALUE, a.CHILD_NUMBER, a.ID 【実行プラン取得(コミットコントロールの元で実施がおすすめ、取得完了後にロールバックが必要、消し忘れを防ぐ)】--実行プラン取得の手順1 EXPLAIN PLAN SET STATEMENT_ID = (select username||to_char(sysdate,'yyyymmddhhmiss') from user_users) --ユニークとなるキーを指定 INTO PLAN_TABLE FOR select * from ALL_VIEWS --実行計画を取得したいSQLを指定 --実行プラン取得の手順2 SELECT case when id=0 then '' else LPAD(' ',2*(level-1)) end ||case when OPTIMIZER = 'ANALYZED' then '<'||OBJECT_NAME||'>' when OPTIMIZER is null and OBJECT_NAME is not null then '<'||OBJECT_NAME||'>' when OPTIMIZER is null then NULL else null end ||' ' ||case when OPTIMIZER = 'ANALYZED' then OPERATION||' '||NVL2( OPTIONS, OPTIONS, null ) when OPTIMIZER is null and OPTIONS is not null then OPERATION||'('||OPTIONS||')' when OPTIMIZER is null then OPERATION else OPERATION end || case when OPTIMIZER <> 'ANALYZED' and OPTIMIZER is not null then '(Optimizer='||OPTIMIZER||')' end as 計画 FROM plan_table CONNECT BY PRIOR id = parent_id AND PRIOR TIMESTAMP = TIMESTAMP AND statement_id = (select username||to_char(sysdate,'yyyymmddhhmiss') from user_users) --1で指定したキーを指定 START WITH id = 0 AND statement_id = (select username||to_char(sysdate,'yyyymmddhhmiss') from user_users) --1で指定したキーを指定 |