Oracle Database を運用するときに使う手順をリストアップしてみた。
別途、マニアックなコマンドのまとめをしたくなってきた。oerr、Prelim Connection、oradebug、bbed とか。ほとんど使ったことないので、調べがてらに。
環境・前提条件
手順
凡例
$ command ... : oracle ユーザで OS コマンドを実行 # command ... : root ユーザで OS コマンドを実行 SQL> command ... : sqlplus で sqlplus コマンドまたは SQL を実行
データベース起動・停止
- 起動
$ sqlplus / as sysdba SQL> startup SQL> exit $ lsnrctl start
- 停止
$ emctl status dbconsole # EM Database Control が起動していないか確認する $ emctl stop dbconsole # 起動している場合は停止する $ lsnrctl stop $ sqlplus / as sysdba SQL> shutdown immediate SQL> exit
Enterprise Manager Database Control の起動・停止
- 起動
$ emctl start dbconsole
- 停止
$ emctl stop dbconsole
OS起動・停止
- 起動
# mount -t ext3 -o data=ordered,noatime /dev/sdb1 /u02 # mount # su - oracle $ sqlplus / as sysdba SQL> startup SQL> exit $ lsnrctl start
- 停止
$ emctl status dbconsole # EM Database Control が起動していないか確認する $ emctl stop dbconsole # 起動している場合は停止する $ lsnrctl stop $ sqlplus / as sysdba SQL> shutdown immediate SQL> exit $ su - # shutdown -h now
稼働状況確認
- データベースの状態を確認する。
SQL> set linesize 200 SQL> col host_name for a10 SQL> select host_name, instance_name, status from v$instance
- リスナーの状態を確認する。
$ lsnrctl status
$ lsnrctl services lsnrctl services
- Enterprise Manager Database Control の状態を確認する。
$ emctl status dbconsole
- プロセスを確認する。
$ ps -f -U oracle
- アラートログを確認する。
$ sqlplus / as sysdba SQL> show parameter background_dump_dest NAME TYPE VALUE ------------------------------------ ----------- -------------------------------- background_dump_dest string /u01/app/oracle/admin/orcl/bdump SQL> exit $ cd /u01/app/oracle/admin/orcl/bdump $ perl -wnle 'BEGIN{%h=();}/([A-Z]{3}-[0-9]+)/ and $h{$1}++;END{map{print "$_:$h{$_}"} keys %h;}' alert_$ORACLE_SID.log ORA-00001:15 ORA-01400:20 ORA-12899:7 ... $ less alert_$ORACLE_SID.log
- バックグラウンドプロセスのトレースファイルを確認する。
$ sqlplus / as sysdba SQL> show parameter background_dump_dest NAME TYPE VALUE ------------------------------------ ----------- -------------------------------- background_dump_dest string /u01/app/oracle/admin/orcl/bdump SQL> exit $ cd /u01/app/oracle/admin/orcl/bdump $ ls $ less $ORACLE_SID_<プロセス名>_<PID>.trc
- サーバープロセスのトレースファイルを確認する。
$ sqlplus / as sysdba SQL> show parameter user_dump_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ user_dump_dest string /u01/app/oracle/admin/orcl/udump SQL> exit $ cd /u01/app/oracle/admin/orcl/udump $ ls $ less $ORACLE_SID_<プロセス名>_<PID>.trc
- リスナーログを確認する
$ lsnrctl status ... Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log ... $ cd /u01/app/oracle/product/10.2.0/db_1/network/log $ perl -wnle 'BEGIN{%h=();}/([A-Z]{3}-[0-9]+)/ and $h{$1}++;END{map{print "$_:$h{$_}"} keys %h;}' listener.log
- データベースに接続しているセッションを確認する。
$ sqlplus / as sysdba SQL> set pagesize 1000 SQL> set linesize 250 SQL> select machine||' '||username from v$session order by 1;
- 無効なオブジェクトがないか確認する。
$ sqlplus / as sysdba SQL> set pagesize 1000 SQL> set linesize 250 SQL> select object_name from dba_objects where status = 'INVALID' order by 1;
- 表領域の使用率を確認する。
$ sqlplus / as sysdba SQL> set pagesize 1000 SQL> set linesize 250 SQL> select total.tablespace_name, total.s/1024/1024 "total(MB)", (total.s-free.s)/1024/1024 "used(MB)", free.s/1024/1024 "free(MB)", (1-free.s/total.s)*100 "pctused(%)" from (select tablespace_name, sum(bytes) s from dba_data_files group by tablespace_name) total, (select tablespace_name, sum(bytes) s from dba_free_space group by tablespace_name) free where total.tablespace_name = free.tablespace_name(+);