SQL*Plus上でタイムスタンプを取得する
はじめに
Oracleサーバの管理をする際に、クライアントがSQL*Plusしかないことがよくある。SQL*Plusでは、実行タイムスタンプを取得するコマンドがなく、作業ログをファイル出力する際などに困る。本エントリでは、SQL*Plus上で実行タイムスタンプを取得する方法を示す。
_DATE事前定義変数を使う方法(おそらく正統派)
1. NLS_DATE_FORMATを変更する(※)
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYYMMDD_HH24MISS';
2. _DATE事前定義変数を使う(※)
SQL> SPOOL hoge-&_DATE..log
COLUMNコマンドを使う方法(おそらくトリッキー)
1. COLUMNコマンドで、SELECT文実行結果の列値をユーザー変数に格納するよう指定する
SQL> COL WORK_DATE_TIME NEW_V V_WORK_DATE_TIME
2. 現在日時をSELECTする(※)
SQL> SELECT TO_CHAR(SYSDATE, 'YYYYMMDD_HH24MISS') AS WORK_DATE_TIME FROM DUAL;
3. ユーザー変数を使う
SQL> SPOOL hoge-&V_WORK_DATE_TIME..log