這次驗證分別oracle 11.2.0.2 RAC與oracle 11.2.0.4 RAC中進行驗證。
隱藏參數‘_datafile_write_errors_crash_instance’是在Oracle 11.2.0.1開始導入的,
主要的機能是在,數據文件(sysytem以外表空間)I/O讀寫錯誤被發現時,對實例的down進行管理。
Oracle 11.2.0.1 的初始值是
_datafile_write_errors_crash_instance = FALSE
數據文件(sysytem以外表空間)I/O讀寫錯誤被發現時,在歸檔模式下,發生錯誤的數據文件
被OFFLINE,實例不會down。
Oracle 11.2.0.2開始初始值變成TRUE
_datafile_write_errors_crash_instance = TRUE
因爲I/O錯誤,數據文件讀寫失敗被發現時,ORA-63999錯誤出力,實例down。
但是,在我的驗證環境重新驗證之後,發現在Oracle 11.2.0.2 RAC環境與Oracle 11.2.0.3 RAC環境中
就算這個隱藏參數=FALSE,數據庫也會被down。
可是,在Oracle 11.2.0.4 RAC環境中,就不會發生這個現象。只有發生錯誤的數據文件被OFFLINE,
其它數據文件可以使用,實例不會發生任何問題。
實例再啓動後,對指定的數據文件進行recover datafile與alter database datafile‘’ONLINE。
驗證:
(客戶驗證環境爲日語系統)
--驗證環境準備
SQL> conn use1/pwdora
接続されました。
SQL> create table tal01 (id number,t01 varchar2(20)) tablespace user2;
表が作成されました。
SQL> declare
2 temp varchar2(20):='aaa';
3 i number;
4 begin
5 for i in 1..1000 loop
6 insert into tal01 (id,t01) values (i,temp);
7 end loop;
8 end;
9 /
PL/SQLプロシージャが正常に完了しました。
SQL> commit;
コミットが完了しました。
SQL> alter system switch logfile;
システムが変更されました。
SQL> conn / as sysdba
接続されました。
SQL> select
x.ksppinm name,
y.ksppstvl value,
y.ksppstdf isdefault,
decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj
from
sys.x$ksppi x,
sys.x$ksppcv y
where
x.inst_id = userenv('Instance') and
y.inst_id = userenv('Instance') and
x.indx = y.indx and
x.ksppinm='_datafile_write_errors_crash_instance'; 2 3 4 5 6
7 8 9 10 11 12 13
NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
ISDEFAULT ISADJ
--------------------------- ---------------
_datafile_write_errors_crash_instance
FALSE
FALSE FALSE
SQL> exit
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing optionsとの接続が切斷されました。
--1.磁盤組強制dismount
[grid@ol655v11rac1 ~]$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.4.0 Production on 金 12月 13 00:28:21 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
に接続されました。
SQL> alter diskgroup CRS2 dismount force;
Diskgroup altered.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit
Production
With the Real Application Clusters and Automatic Storage Management options
[grid@ol655v11rac2 ~]$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.4.0 Production on Fri Dec 13 00:28:57 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> alter diskgroup CRS2 dismount force;
Diskgroup altered.
SQL>
[grid@ol655v11rac1 ~]$ crsctl status res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRS1.dg
ONLINE ONLINE ol655v11rac1
ONLINE ONLINE ol655v11rac2
ora.CRS2.dg
OFFLINE OFFLINE ol655v11rac1 ★
OFFLINE OFFLINE ol655v11rac2 ★
ora.DATA.dg
ONLINE ONLINE ol655v11rac1
ONLINE ONLINE ol655v11rac2
ora.LISTENER.lsnr
ONLINE ONLINE ol655v11rac1
ONLINE ONLINE ol655v11rac2
ora.LISTENER_TEST.lsnr
ONLINE ONLINE ol655v11rac1
ONLINE ONLINE ol655v11rac2
ora.REC.dg
ONLINE ONLINE ol655v11rac1
ONLINE ONLINE ol655v11rac2
ora.asm
ONLINE ONLINE ol655v11rac1 Started
ONLINE ONLINE ol655v11rac2 Started
ora.gsd
OFFLINE OFFLINE ol655v11rac1
OFFLINE OFFLINE ol655v11rac2
ora.net1.network
ONLINE ONLINE ol655v11rac1
ONLINE ONLINE ol655v11rac2
ora.ons
ONLINE ONLINE ol655v11rac1
ONLINE ONLINE ol655v11rac2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE ol655v11rac2
ora.cvu
1 OFFLINE OFFLINE
ora.oc4j
1 OFFLINE OFFLINE
ora.ol655v11rac1.vip
1 ONLINE ONLINE ol655v11rac1
ora.ol655v11rac2.vip
1 ONLINE ONLINE ol655v11rac2
ora.racdb.db
1 ONLINE ONLINE ol655v11rac1 Open
2 ONLINE ONLINE ol655v11rac2 Open
ora.scan1.vip
1 ONLINE ONLINE ol655v11rac2
--2.對於強制dismount的磁盤組管理的表空間的表,進行插入操作時,錯誤發生
[oracle@ol655v11rac1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 金 12月 13 00:30:50 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
に接続されました。
SQL> conn use1/pwdora
接続されました。
SQL> insert into tal01(id,t01) values (1234,4321);
insert into tal01(id,t01) values (1234,4321)
*
行1でエラーが発生しました。:
ORA-01115: ファイル(ブロック番號)からの読取りI/Oエラーが発生しました。 ORA-01110:
データファイル10: '+CRS2/racdb/datafile/user2.257.834020569'
ORA-15078: ASMディスクグループが強制ディスマウントされました
SQL> conn / as sysdba
接続されました。
SQL> alter system checkpoint;
システムが変更されました。
SQL> exit
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing optionsとの接続が切斷されました。
[oracle@ol655v11rac1 ~]$
--DBを再起動する
[grid@ol655v11rac1 ~]$ crsctl stop res ora.racdb.db
CRS-2673: 'ora.racdb.db'('ol655v11rac1')の停止を試行しています
CRS-2673: 'ora.racdb.db'('ol655v11rac2')の停止を試行しています
CRS-2677: 'ora.racdb.db'('ol655v11rac1')の停止が成功しました
CRS-2677: 'ora.racdb.db'('ol655v11rac2')の停止が成功しました
[grid@ol655v11rac1 ~]$ crsctl start res ora.racdb.db
CRS-2672: 'ora.CRS2.dg'('ol655v11rac1')の起動を試行しています
CRS-2672: 'ora.CRS2.dg'('ol655v11rac2')の起動を試行しています
CRS-2676: 'ora.CRS2.dg'('ol655v11rac2')の起動が成功しました
CRS-2672: 'ora.racdb.db'('ol655v11rac2')の起動を試行しています
CRS-2676: 'ora.CRS2.dg'('ol655v11rac1')の起動が成功しました
CRS-2672: 'ora.racdb.db'('ol655v11rac1')の起動を試行しています
CRS-2676: 'ora.racdb.db'('ol655v11rac2')の起動が成功しました
CRS-2676: 'ora.racdb.db'('ol655v11rac1')の起動が成功しました
--3.雙節點的實例再啓動後,V$datafile確認
[oracle@ol655v11rac1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 金 12月 13 00:34:42 2013
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
に接続されました。
SQL> select NAME,STATUS from v$datafile;
NAME
--------------------------------------------------------------------------------
STATUS
---------------------
+DATA/racdb/datafile/system.290.825681213
SYSTEM
+DATA/racdb/datafile/sysaux.291.825681213
ONLINE
+DATA/racdb/datafile/undotbs1.292.825681215
ONLINE
NAME
--------------------------------------------------------------------------------
STATUS
---------------------
+DATA/racdb/datafile/users.293.825681215
ONLINE
+DATA/racdb/datafile/undotbs2.298.825681663
ONLINE
+DATA/racdb/datafile/users2.302.829645083
ONLINE
NAME
--------------------------------------------------------------------------------
STATUS
---------------------
+DATA/racdb/datafile/users3.303.829699671
ONLINE
+DATA/racdb/datafile/users6.304.829700059
ONLINE
+CRS2/racdb/datafile/user2.256.833962583
RECOVER
NAME
--------------------------------------------------------------------------------
STATUS
---------------------
+CRS2/racdb/datafile/user2.257.834020569
RECOVER
10行が選択されました。
SQL> recover datafile '+CRS2/racdb/datafile/user2.256.833962583';
ORA-00279: 変更9796286(12/13/2013 00:00:14で生成)にはスレッド2が必要です ORA-00289:
検討すべきログファイル:/oracle/app/oracle/product/11.2.0.4/dbs/arch2_232_82568
1360.dbf
ORA-00280: 変更9796286(スレッド2)は順序番號232に存在します。
ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ログが適用されました。
メディアリカバリが完了しました。
SQL> recover datafile '+CRS2/racdb/datafile/user2.257.834020569';
ORA-00279: 変更9796305(12/13/2013 00:00:14で生成)にはスレッド2が必要です ORA-00289:
検討すべきログファイル:/oracle/app/oracle/product/11.2.0.4/dbs/arch2_232_82568
1360.dbf
ORA-00280: 変更9796305(スレッド2)は順序番號232に存在します。
ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ログが適用されました。
メディアリカバリが完了しました。
SQL> select count(*) from use1.tal01;
select count(*) from use1.tal01
*
行1でエラーが発生しました。:
ORA-00376: ファイル10を読み込むことはできません。 ORA-01110:
データファイル10: '+CRS2/racdb/datafile/user2.257.834020569'
SQL> select NAME,STATUS from v$datafile;
NAME
--------------------------------------------------------------------------------
STATUS
---------------------
+DATA/racdb/datafile/system.290.825681213
SYSTEM
+DATA/racdb/datafile/sysaux.291.825681213
ONLINE
+DATA/racdb/datafile/undotbs1.292.825681215
ONLINE
NAME
--------------------------------------------------------------------------------
STATUS
---------------------
+DATA/racdb/datafile/users.293.825681215
ONLINE
+DATA/racdb/datafile/undotbs2.298.825681663
ONLINE
+DATA/racdb/datafile/users2.302.829645083
ONLINE
NAME
--------------------------------------------------------------------------------
STATUS
---------------------
+DATA/racdb/datafile/users3.303.829699671
ONLINE
+DATA/racdb/datafile/users6.304.829700059
ONLINE
+CRS2/racdb/datafile/user2.256.833962583
OFFLINE
NAME
--------------------------------------------------------------------------------
STATUS
---------------------
+CRS2/racdb/datafile/user2.257.834020569
OFFLINE
10行が選択されました。
--4.數據文件ONLINE後,對象表可以正常訪問
SQL> alter database datafile '+CRS2/racdb/datafile/user2.256.833962583' online;
データベースが変更されました。
SQL> alter database datafile '+CRS2/racdb/datafile/user2.257.834020569' online;
データベースが変更されました。
SQL> select count(*) from use1.tal01;
COUNT(*)
----------
1000