2012年4月8日日曜日

ORA-01102を発生できるか試してみる(1)

|ω・`).oO( 宿題は残念ながら見れていないけど、面白そうなので ablogの記事をパクって試してみた。

■ 参考にさせていただいたブログ
ablog
http://d.hatena.ne.jp/yohei-a/20120407/1333782974

■ 環境
  - Oracle Enterprise Linux 5.6 x86
  - Oracle Database 11.2.0.3

■ ORA-01102を起こせるかなテスト

・lkDEMOファイルのロックがないことを確認
[root@mame ~]# date; fuser /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkDEMO
2012年  4月  8日 日曜日 04:24:33 JST

・lkDEMOファイルをロックしてみる
[oracle@mame dbs]$ date; perl -e 'open(FH,">> /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkDEMO") and flock(FH,2) and sleep(300)'
2012年  4月  8日 日曜日 04:24:42 JST

・lkDEMOファイルがロックされていることを確認
[root@mame ~]# date; fuser /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkDEMO
2012年  4月  8日 日曜日 04:24:49 JST
/u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkDEMO: 10506

・データベースを起動!
[oracle@mame ~]$ date; sqlplus / as sysdba
2012年  4月  8日 日曜日 04:25:15 JST
SQL*Plus: Release 11.2.0.3.0 Production on 日 4月 8 04:25:15 2012
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
アイドル・インスタンスに接続しました。

SQL> startup
ORACLEインスタンスが起動しました。
Total System Global Area  422670336 bytes
Fixed Size                  1345380 bytes
Variable Size             285214876 bytes
Database Buffers          130023424 bytes
Redo Buffers                6086656 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL>

|д・`) あれ?起動できちゃった…?

・lkDEMOファイルのロック状態を確認
[root@mame ~]# date; fuser /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkDEMO
2012年  4月  8日 日曜日 04:26:04 JST
/u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkDEMO: 10506 10593 10597 10607 10615 10623 10627 10631 10635 10639 10643 10647 10651

|ω・`) Databaseからのロックが増えてます。

・Databaseを停止してみる
SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。

・lkDEMOファイルのロック状態を確認
[root@mame ~]# date; fuser /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkDEMO
2012年  4月  8日 日曜日 04:26:43 JST
/u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkDEMO: 10506

元のだけになってる…。なぜ?
ファイルのロックの仕方が悪いのかなぁと思い、色々試してみたけどうまくいかず。
flock /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkDEMO sleep 300


■ 腹がたったのでlkDEMOファイルを削除してみる

・lkDEMOファイルを確認
[oracle@mame dbs]$ date; ls -l
2012年  4月  8日 日曜日 04:27:55 JST
合計 20
-rw-rw---- 1 oracle oinstall 1544  4月  8 04:26 hc_demo.dat
-rw-r--r-- 1 oracle oinstall 2851  5月 15  2009 init.ora
-rw-r----- 1 oracle oinstall   24  3月 10 05:46 lkDEMO
-rw-r----- 1 oracle oinstall 1536  3月 10 06:06 orapwdemo
-rw-r----- 1 oracle oinstall 2560  4月  8 04:25 spfiledemo.ora

・ファイルをリネーム
[oracle@mame dbs]$ date; mv lkDEMO lkDEMO.org
2012年  4月  8日 日曜日 04:28:08 JST

・Databaseを起動してみる
[oracle@mame ~]$ date; sqlplus / as sysdba
2012年  4月  8日 日曜日 04:28:27 JST
SQL*Plus: Release 11.2.0.3.0 Production on 日 4月 8 04:28:27 2012
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
アイドル・インスタンスに接続しました。

SQL> startup
ORACLEインスタンスが起動しました。
Total System Global Area  422670336 bytes
Fixed Size                  1345380 bytes
Variable Size             285214876 bytes
Database Buffers          130023424 bytes
Redo Buffers                6086656 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL>

|ω・`#) 起動できる!

・lkDEMOファイルを確認してみる
[oracle@mame dbs]$ date; ls -l
2012年  4月  8日 日曜日 04:32:43 JST
合計 24
-rw-rw---- 1 oracle oinstall 1544  4月  8 04:28 hc_demo.dat
-rw-r--r-- 1 oracle oinstall 2851  5月 15  2009 init.ora
-rw-r----- 1 oracle oinstall   24  4月  8 04:28 lkDEMO
-rw-r----- 1 oracle oinstall   24  3月 10 05:46 lkDEMO.org
-rw-r----- 1 oracle oinstall 1536  3月 10 06:06 orapwdemo
-rw-r----- 1 oracle oinstall 2560  4月  8 04:28 spfiledemo.ora

再作成されている。。

1 件のコメント:

  1. ロックが増えた、じゃなくてアクセスが増えたに書き直さないと。

    返信削除