oracle的一個bug
本來是想測試連線日誌檔案刪除時,oracle例項會出現什麼問題。結果沒成想,一測試居然測試出了oracle的一個bug。
os:redhat linux 9.0
oracle: 9.2.0.4
首先測試的是noarchive模式下的情形。
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 UNUSED
2 UNUSED
3 CURRENT
SQL> select member from v$logfile where group#=3;
MEMBER
--------------------------------------------------------------------------------
/orasoft/ora9/oradata/ora9i/redo03.log
SQL> host rm /orasoft/ora9/oradata/ora9i/redo03.log
SQL> host
[oracle@linuxsrv ora9i]$ ll redo*
-rw-r----- 1 oracle dba 10486272 May 28 16:37 redo01.log
-rw-r----- 1 oracle dba 10486272 May 28 16:37 redo02.log
[oracle@linuxsrv ora9i]$ exit
exit
SQL> insert into t select * from user_objects;
13684 rows created.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered.
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 UNUSED
3 ACTIVE
SQL>
我執行insert以後,並commit,照理來說,應該會把redo buffer裡的redo entry重新整理到current的redo log file ,也就是redo03.log裡。
但是該檔案都已經給刪除了,oracle居然沒有報錯。
然後我又測試了archive模式下的情形。將current的redo log刪除,居然也能生成current的redo log對應的archive log file。
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /orasoft/ora9/product/9.2/dbs/arch
Oldest online log sequence 2
Next log sequence to archive 3
Current log sequence 3
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 CURRENT
3 UNUSED
SQL> select member from v$logfile where group#=2;
MEMBER
--------------------------------------------------------------------------------
/orasoft/ora9/oradata/ora9i/redo02.log
SQL> host rm /orasoft/ora9/oradata/ora9i/redo02.log
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 CURRENT
3 UNUSED
SQL> select count(*) from t;
COUNT(*)
----------
27368
SQL> insert into t select * from user_objects;
13684 rows created.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered.
SQL> select name from v$archived_log;
NAME
--------------------------------------------------------------------------------
/orasoft/ora9/product/9.2/dbs/arch1_2.dbf
SQL>
這樣看來,將資料庫設定為archive模式,當switch log file時將online redo log file生成archive log file時並不是實際開啟
current redo log file,讀取內容,然後寫入archived log file。否則,如果是會開啟current redo log file的話,那應該會發現該
redo log file已經不存在了。
在commit成功以後,如果這時instance crash了,那麼提交的資料就丟失了。
我試過在commit以後,立即shutdown abort,再startup以後,提交的資料已經沒有了。
這真可算是oracle的一個bug了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9842/viewspace-156308/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 10.2.0.2.0的一個BUGOracle
- Oracle關於nvl的一個BugOracle
- 一個oracle查詢引起的bugOracle
- 一個oracle bug的簡單驗證Oracle
- oracle的兩個bugOracle
- oracle 10gR2 RAC 的一個BUGOracle 10g
- oracle9i replace clob 的一個bugOracle
- Oracle的又一巨型bugOracle
- Oracle9i高階複製的一個bugOracle
- ORACLE Active dataguard 一個latch: row cache objects BUGOracleObject
- 關於Oracle中重啟資料庫的一個bugOracle資料庫
- 一不小心,又中了 oracle 一個 bug :Bug 12610689 - ohasd is rebooted !Oracleboot
- 一個排序引發的BUG排序
- 一個關於recyclerView的bugView
- Hive partition prune的一個BugHive
- Android assets的一個bugAndroid
- 關於UIInterfaceOrientation的一個bugUI
- 圖靈社群的一個BUG圖靈
- 一個bug造就的經典遊戲....遊戲
- 發現Mapstruct的一個bugStruct
- FluentData Mysql分頁的一個BUGMySql
- 今天遇到一個VERITAS NBU的BUG
- smon程式互為死鎖案例--oracle一個bug處理Oracle
- [BUG反饋]AdminController類的一個小bugController
- oracle 9i for linux 9.2.0.4 中開啟autotrace中的一個bug。OracleLinux
- Oracle分析函式多層使用時的一個bug及其解決方案Oracle函式
- 遇著個oracle 10g bugOracle 10g
- 記一個RxJava使用bugRxJava
- Oracle groupby的bugOracle
- NDK clang編譯器的一個bug編譯
- onethink安裝時的一個bug
- java log4j 的一個bugJava
- 找到Intel手冊裡的一個bugIntel
- solaris 10安裝oracle 10g到86%時一個BUGOracle 10g
- Solaris10上啟動Oracle11g例項遇到的一個bugOracle
- PL/SQL Develop的一個Bug[Oracle資料庫中慎用小寫表名]SQLdevOracle資料庫
- oracle bugOracle
- Oracle srvctl的小bugOracle