インストラクターからのワンポイントアドバイス
~運用管理のちょっとした小技~

今回は神戸会場の講師の方々より運用管理で使える小技をご紹介いただきました。

*このページの情報は2008年9月時点での情報です。

講師 写真【講師データ】

大亀義尚 講師(写真右)

社会人1年目(Oracle8)からOracleデータベースを触っています。ORACLE MASTER Platinum Oracle Database 10gも保有しています。座右の銘は「昨日の自分よりすごい今日の自分」

日比淳 講師(写真左)

大亀と同様に、Oracle8からデータベースと関わっています。開発者向けの社内教育を行い教育に目覚めました。座右の銘は「鶏口となるも牛後となるなかれ」

ポイント SQL*Plusコマンド、(g)login.sqlを活用しよう!

SQL*Plusコマンドって意外に使えるのご存知でしたか?その一例をご紹介させて頂きます!

コマンド 内容 使用例

set sqlp '文字列'

SQL*Plusのプロンプトを文字列に変更

set sqlp '&_user &_connect_identifier >'
⇒自分が今どこにどのユーザで接続しているかが一目瞭然!
※10g~事前定義変数を利用

set colsep 文字列

出力結果の列と列の間を指定文字列に変更

set colsep ,
⇒CSV形式で『,』区切りで結果が出力でき便利!

col 列名 for 書式

列の表示形式を指定

col table_name for a25
⇒管理でよく調査するtable_name,index_nameなど予めlogin.sqlなどに指定しておくと便利!

col 列名 new_v 変数

列の値を変数に格納

col done_time new_v d_done_time noprint
select to_char(sysdate,’yyyymmdd_hh24miss’) done_time from dual;
spool /tmp/&d_done_time.delete_policy.log

定期メンテナンスなどでspoolログに日付を格納するようsqlファイルに組み込むと管理がし易い!

spool ファイル名 app

10g~追加されたログ出力の追記

spool creata_table.log app
9iまでは、spoolしたファイルへの追記ができなかったが、10gからappオプションを使用して追記が可能に。不意に作業途中でspoolが終了した時などに便利!

set time on

SQL*Plusのプロンプトに時刻を表示

メンテナンス作業を、spoolを併用してログに時間を残す事で、作業実績やトラブル時の操作履歴としても使用できるので是非とも使用しましょう

set lin 幅

SQL*Plusの表示幅調整

set lin 150
デフォルトは80なので列数や列サイズなどが多い場合は見辛いので調整しましょう

set pages 行数

SQL*Plusの結果表示行数調整

set pages 10000
デフォルトは14行表示なので、結果行が多い場合は見辛いので調整しましょう

 

その他にも「へぇ~!」って思う使えるSQL*Plusコマンドが色々あります。マニュアルなど見て参考にして下さい。これらをSQL*Plusにログインした時から有効にしたい場合は、glogin.sqlもしくはlogin.sqlに記載しましょう!これらのファイルはSQL*Plusを起動した時にどのような状態で起動するかを設定するファイルです。頻繁に使用するSQL*Plusコマンドは、これらのファイルに事前に登録しておけば非常に便利です。
※glogin.sqlは全体に影響するので注意して下さい!(参考KROWN:13564)

ポイント  dbstart/dbshutを活用しよう!

複数のデータベースを管理している場合に、1つ1つ起動・停止するのは大変ですよね。そこで今回は、dbshut/dbstartというユーティリティを紹介します。

これらは名前のとおり、データベースを起動・停止出来るコマンドですが、ちょっとした設定の追加・変更ですぐに使用できます。事前設定は一つ。下記のように/etc/oratabへの設定が必要です。

# $ORACLE_SID:$ORACLE_HOME:<N|Y>
orcl:/u01/app/oracle/product/10.2.0/db_1:Y

第3引数をYにすることで、そのデータベースが自動起動の対象になります。上記の例だと、orclというデータベースですね。これで、dbstart 、dbshutとOSから実行することで、データベースの起動停止が1つのコマンド実行で出来るようになります。oratabに複数インスタンスを登録していれば、複数一気に起動停止もできて便利です。

■dbstartの例

[18:20:09 oracle /u01/app/oracle/product/10.2.0/db_1/bin(orcl)]dbstart
Processing Database instance "orcl": log file /u01/app/oracle/product/10.2.0/db_1/startup.log

■dbshutの例

[18:20:25 oracle /u01/app/oracle/product/10.2.0/db_1/bin(orcl)]dbshut

dbstart、dbshutを実行したログはそれぞれ、startup.log、shutdown.logという名称で、$ORACLE_HOMEに生成されるので、起動・停止後は念のためチェックしておいてください。

作業の自動化は手作業でのミスを防ぐことにもつながりますので、ぜひ活用してみてください!

 

神戸会場 写真神戸会場(株式会社システムサポート)

JR神戸駅から徒歩1分の立地。プロメトリック公認テストセンターも併設していますのでスキルアップに是非ご利用下さい。受講後も講習範囲内でしたら3ヶ月間メールでのQAを行っていますので是非活用して下さい!