OracleTips

SQLトレースの取得

SYSユーザで接続

$ sqlplus /nolog
SQL> conn sys/xxxx as sysdba

対象セッション確認

SQL> SELECT sid,serial#,username,program,machine,status FROM v$session;

トレース開始

SQL> EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION([sid],[serial#],TRUE);
udumpディレクトリ配下のトレースファイルを参照。

トレース終了

SQL> EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION([sid],[serial#],FALSE);

サーバー・パラメータ・ファイル(SPFILE)情報の参照

SQL> SHOW PARAMETER SPFILE
もしくは
SQL> SELECT VALUE FROM V$PARAMETER WHERE NAME = 'spfile' ;

サーバー・パラメータ・ファイル(SPFILE)の変更

SQL> ALTER SYSTEM SET name = 'value' SCOPE=[SPFILE | MEMORY | BOTH];
静的パラメータの場合、"SCOPE=SPFILE"とし、データベースを再起動後に有効となる。


コールドバックアップ対象のファイル一覧

set echo off;
set termout off;
set heading off;
set feedback off;
set linesize 256;
set flush off;
set pagesize 0;
set trimspool on;

[spool スプールファイル]

select ddf.file_name from dba_tablespaces dt, dba_data_files ddf
  where dt.tablespace_name = ddf.tablespace_name;
select dtf.file_name from dba_tablespaces dt, dba_temp_files dtf
  where dt.tablespace_name = dtf.tablespace_name;
select MEMBER  from v\$logfile;
select NAME    from v\$controlfile;
select value   from v\$system_parameter where name ='spfile';

SQL*Plusでの列表示属性の制御

set col [列名] format [表示形式]
set col [列名] justify [left/center/right]  左寄せ/中央寄せ/右寄せ
set col [列名] null [null文字]  値がnullの場合に[null文字]に指定した文字を表示
set col [列名] new_value [変数名] [表示形式]

【表示形式】
文字列:A[文字数]  例:set col c1 format a10
日付時刻列:A[文字数]
数値列:[数値書式]

【数値書式(代表的な物)】
9:有効桁数表示
0:有効桁数表示で前0詰め
B:値が0の場合に空白を表示
,:カンマを表示

【new_valueについて】
[列名]で指定した列の値が[変数名]で指定した変数に格納される。
例えば…
SQL> COL YMD NEW_VALUE FILENAME
SQL> SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') || 'spool.txt' YMD FROM DUAL;
     →この結果「FILENAME」変数にシステム日付+'spool.txt'がセットされる。
SQL> spool &FILENAME

高速INSERT

SQL> INSERT /*+ APPEND */ INTO [追加先テーブル] SELECT * FROM [追加元テーブル];
この後は、COMMITかROLLBACKしかできない。

テーブルスペースの断片化調査

SELECT *
  FROM (
SELECT DFILE.TABLESPACE_NAME TABLESPACE_NAME,
       DFILE.FILE_ID         FILE_ID,
       DFILE.BYTES           ALL_BYTES,
       DFILE.BLOCKS          ALL_BLOCKS,
       EXT.SEGMENT_NAME      SEGMENT_NAME,
       EXT.SEGMENT_TYPE      SEGMENT_TYPE,
       EXT.BLOCK_ID          BLOCK_ID,
       EXT.BLOCKS            BLOCKS,
       EXT.BYTES             BYTES
  FROM DBA_DATA_FILES DFILE,
       DBA_EXTENTS EXT
 WHERE DFILE.TABLESPACE_NAME = '[調査したいテーブルスペース名]'
   AND EXT.FILE_ID = DFILE.FILE_ID
UNION
SELECT DFILE.TABLESPACE_NAME TABLESPACE_NAME,
       DFILE.FILE_ID         FILE_ID,
       DFILE.BYTES           ALL_BYTES,
       DFILE.BLOCKS          ALL_BLOCKS,
       'FREE_SPACE'          SEGMENT_NAME,
       'FREE_SPACE'          SEGMENT_TYPE,
       DFREE.BLOCK_ID        BLOCK_ID,
       DFREE.BLOCKS          BLOCKS,
       DFREE.BYTES           BYTES
  FROM DBA_DATA_FILES DFILE,
       DBA_FREE_SPACE DFREE
 WHERE DFILE.TABLESPACE_NAME = '[調査したいテーブルスペース名(上と同じ)]'
   AND DFREE.FILE_ID = DFILE.FILE_ID
) AAA
 ORDER BY FILE_ID,BLOCK_ID
最終更新:2009年02月20日 19:30