2012年4月8日日曜日

資料やエラー情報の検索の仕方など

Oracle OpenWorld のJPOUGのセッションに触発されて。

私もGoogleでよくマニュアルやエラーメッセージを検索しています。
以前だとマニュアルもPDFだったので、Googleで「Oracle ドキュメントライブラリ 11.2 filetype:pdf」等で検索していました。

※今はPDFのマニュアルがなかったり、マニュアル以外のPDF資料が引っかかることが多いかもしれません。。

他にはエラーメッセージをダブルクォーテーションでくくることで完全一致で検索するのもおすすめかと思います。

・余談
今、下記のサイトからマニュアルを検索しようとしたら、エラーになっちゃいました。 https://blogs.oracle.com/oracle4engineer/entry/oracle11gr2112














一度開けると、そのままうまく見れたりもするのですが…
|ω・`) 最近たまに見かけるので、何とかならないもんかなぁ。

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

|д・`) ロックの件はさておき、むりくり事象を再現してみた。

・demoインスタンスを起動
[oracle@mame ~]$ echo $ORACLE_SID
demo

[oracle@mame ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on 日 4月 8 06:34:53 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
データベースがマウントされました。
データベースがオープンされました。

・orclインスタンスを起動
[oracle@mame ~]$ echo $ORACLE_SID
orcl

[oracle@mame ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on 日 4月 8 06:35:26 2012
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
アイドル・インスタンスに接続しました。
SQL> startup
ORACLEインスタンスが起動しました。
Total System Global Area  238530560 bytes
Fixed Size                  1344144 bytes
Variable Size              83889520 bytes
Database Buffers          150994944 bytes
Redo Buffers                2301952 bytes
ORA-01102: ????????????????????????????

・アラートログを確認
[oracle@mame ~]$ tail -10 /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
Sun Apr 08 06:35:32 2012
MMNL started with pid=16, OS id=9227
Sun Apr 08 06:35:32 2012
ALTER DATABASE   MOUNT
sculkget: failed to lock /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkORCL exclusive
sculkget: lock held by PID: 9012
ORA-09968: ??????????????
Linux Error: 11: Resource temporarily unavailable
Additional information: 9012
ORA-1102 signalled during: ALTER DATABASE   MOUNT...

・今回はロックファイルを上記2インスタンスで使用していたため発生
[oracle@mame dbs]$ ls -l
合計 36
-rw-rw---- 1 oracle oinstall 1544  4月  8 06:13 hc_demo.dat
-rw-rw---- 1 oracle oinstall 1544  4月  8 06:33 hc_orcl.dat
-rw-r--r-- 1 oracle oinstall 2851  5月 15  2009 init.ora
-rw-r--r-- 1 oracle oinstall   35  4月  8 05:55 lkDEMO
lrwxrwxrwx 1 oracle oinstall    6  4月  8 06:34 lkORCL -> lkDEMO
-rw-r----- 1 oracle oinstall   24  4月  8 06:16 lkORCL.org
-rw-r----- 1 oracle oinstall 1536  3月 10 06:06 orapwdemo
-rw-r----- 1 oracle oinstall 1536  4月  8 06:16 orapworcl
-rw-r----- 1 oracle oinstall 2560  4月  8 06:13 spfiledemo.ora
-rw-r----- 1 oracle oinstall 2560  4月  8 06:31 spfileorcl.ora

Linuxのflockがわからん

後で調べる。

・端末1でロック取得
[oracle@mame dbs]$ flock -x /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkDEMO sleep 300

・端末2でさらにロック取得 - 待ち
[oracle@mame dbs]$ flock lkDEMO LOCK_EX
sleep時間経過後、以下のメッセージ
flock: LOCK_EX: Success

・ロック待機中にfuser
[root@mame ~]# fuser /u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkDEMO
/u01/app/oracle/product/11.2.0/dbhome_1/dbs/lkDEMO:  6881  6882  6883

・さらにロック待機中にDatabaseを起動してみる
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
データベースがマウントされました。
データベースがオープンされました。

|ω・`) 起動できちゃう。
flock、よくわからん…

Cで書いて試してみたいけどめんどくさい(ノ)・ω・(ヾ)ムニムニ

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

再作成されている。。