Oracle
- 使用するRBSを明示指定する。
使用するRBSをrbs1に指定する(ディクショナリ管理のみ)。
SQL> set transaction user rollback segment rbs1;
- アーカイブモードのチェック
現在のアーカイブモードを確認する(sysdba権限が必要)。
SQL> archive log list
- 変数の使用方法
define cur_user_id=10101 col new_user_id new_value v_user_id spool &cur_user_id..log SELECT MAX(user_id)+1 AS new_user_id FROM user_data; SELECT &cur_user_id,&v_user_id FROM DUAL;
- 月曜日だったら改行を入れる
set recsep off SELECT DECODE(TO_CHAR(reg_date,'D'),'2',chr(10),'') ||TO_CHAR(reg_date,'DY') FROM time_master;
- V$表の参照権限付与
GRANT SELECT ON v_$session TO user;
- ディクショナリの参照権限付与
GRANT SELECT ANY DICTIONARY TO master;
- 詳細情報
- deadlock(ORA-60)のシューティング
- alertファイルのチェック
alertファイルより詳細情報がロギングされているtrcファイルをチェック。
- trcファイルのチェック
"Current SQL"の項目で問題のクエリーを特定。
"Rows waited on:"にレポートされている両者のobjnをチェック。
objnはuser_object.object_idになっているので、問題のobjectを特定。
※9.2以降であれば…
"OTHER waiting sessions:"のレポートで、衝突したクエリーをチェック。
- Listenerログのローテート
$ lsnrctl LSNRCTL> set current_listener LISTENER_NAME LSNRCTL> show log_file NEWFILE.log LSNRCTL> set log_file NEWFILE.log LSNRCTL> exit
- ProcedureからDDLの発行
以下のコマンドでProcedureからDDLを発行できる。
EXECUTE IMMEDIATE 'TRUNCATE TABLE test_table';
- リモートDBのProcedureを実行
リモートのDBに対して実施する場合は、以下のようなプロシージャをリモートDBに登録。
CREATE OR REPLACE PROCEDURE REMOTE_DDL(ddl IN VARCHAR2)
IS
BEGIN
EXECUTE IMMEDIATE ddl;
END;以下のコマンドでこのプロシージャをキックする。
EXECUTE remote_ddl@remotedb('TRUNCATE TABLE test_data')- DBMS_OUTPUTパッケージによるバッファを設定する
以下のコマンドでDBMS_OUTPUTパッケージのバッファを1000000に設定。
DBMS_OUTPUT.ENABLE(1000000);
- 日付のフォーマット変更
TO_CHARでも変更できるがセッション単位で変更したい場合
ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';
- 特殊文字コード
- chr(9) : タブ
- chr(10) : 改行(\n)
- chr(13) : 改行(\r)
- 改行コードの削除
id name
--- ---------------------
100 日本語文字列
のデータ上記のように日本語の後に改行が入っているものを
id name --- --------------------- 100 日本語文字列のデータ
と表示する。
SELECT
id,
REPLACE(name,chr(10),'')
FROM
test_data;この結果
id name --- --------------------- 日本語文字列のデータ
このように表示される場合は
SELECT
id,
REPLACE(name,chr(13)||chr(10),'')
FROM
test_data;- パッケージのリコンパイル
ALTER PACKAGE package_name COMPILE; ALTER PACKAGE package_name COMPILE BODY;
- SQL*Plusのコマンド
- sqlplus -S
サイレントモードでsqlplusを起動
$ sqlplus -S USERNAME/PASSWORD@CONNECT_STRING
- spool
/tmp/sql.logに出力をロギングする。
SQL> spool /tmp/sql.log
- show
カレントのユーザー名を表示する。
SQL> show user
"db_"で始まる初期パラメータの一覧を表示する。
SQL> show parameter db_
- col
クエリー結果のusername(varchar2)を10文字までで表示する。
SQL> col username format a10
クエリー結果のuser_id(number)を4文字までで表示する。
SQL> col user_id format 9999
- set
一行の文字数を150文字にする。
SQL> set lin 150
カラムヘッダを1000行ごとに表示する。
SQL> set pages 1000
クエリー終了時のレポートを表示しない。
SQL> set feed off
クエリーの出力結果を表示しない(バックグラウンドのみ)。
SQL> set term off
クエリーの処理時間を表示する。
SQL> set timi on
カラムヘッダを表示しない。
SQL> set hea off
LONG型カラムの表示文字数を2000文字にする。
SQL> set long 2000
DBMS_OUTPUTパッケージの出力を許可する。
SQL> set serveroutput on
&を置換しないようにエスケープする。
SQL> set escape \ SQL> SELECT 'test ' FROM DUAL;
