2009年06月29日
11g logical standby的一個bug
在測11g的 logical standby 遇到一個 ORA-600 ,沒想到最終的解決還是要先重做一次 logical standby了....
不過oracle也太不厚道了,從9i就知道這個問題,到11g了還有這個問題="=
metalink_link
不過oracle也太不厚道了,從9i就知道這個問題,到11g了還有這個問題="=
metalink_link
| Subject: | GETTING ORA-00600: [KRVXBPX20], [1], [33244], [56], [16] IN SQL APPLY | |||
| Doc ID: | 761661.1 | Type: | PROBLEM | |
| Modified Date : | 14-MAY-2009 | Status: | PUBLISHED | |
| In this Document
Applies to:Oracle Server - Enterprise Edition - Version: 9.2.0.2 to 11.1.0.7This problem can occur on any platform. SymptomsCustomer has dataguard environment including a primary database, a physical standby database and a logical standby database. Customer did a switchover between the primary and the physical standby database. After that, the logical standby starts getting ORA-00600 [KRVXBPX20] when starting the sql apply.ChangesSwitchover or failover from primary to physical standby, then logical standby sql apply errors out with ORA-00600 [KRVXBPX20].CauseThe ORA-00600: [KRVXBPX20] indicates that logical standby builder detects IMU (In Memory Undo) in the redo streams. Logical standby does not support IMU and enabling supplemental logging disables the IMU.In customer's case, supplemental logging is enabled in the original primary database, but it is not enabled in the original physical standby database. Prior to 11.2 (which has not been released yet at the time of writing), supplemental logging DDLs are not propagated to the physical standby database. Thus they had a situation where the primary has supplemental logging set, but the physical standby did not. Once they switched over or failover to the physical standby, it started generating redo without supplemental logging (including IMU), and hence the logical standby ran into the problem. The same problem can also happen in an environment with only primary and logical standby. Consider the following scenario: 1). Start with a primary database A with supplemental logging enabled and physical standby B without supplemental logging enabled. 2). Switchover, which brings A to physical standby (with supplemental logging enabled) and B to primary (without supplemental logging enabled). 3). Convert the new physical standby A to logical standby. Because now primary B does not have supplemental logging enabled, the logical standby A is exposed. So whenever logical standby is involved, we need to make sure supplemental logging is enabled on primary before it is open for business. Use the queries in next section to help achieve this. SolutionIf customer has run into ORA-00600 [KRVXBPX20], they have to rebuild the logical standby. Setting _in_memory_undo=false or enabling supplemental logging after running into this error will not help to get rid of this error, because the redo stream has already had the IMU. Using skip_transaction will not help either.Solution: Rebuild logical standby. In the future, make sure the supplemental logging is enabled on new primary after the switchover. Follow the steps below to make sure supplemental logging is enabled on new primary: Instead of opening the original physical standby database following a switchover or a failover (once you have converted the physical standby to the primary by issuing "ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY" and you have issued a shutdown of the instance), do the following: SQL> STARTUP MOUNT; SQL> SELECT SUPPLEMENTAL_LOG_DATA_MIN AS SUPP_LOG, SUPPLEMENTAL_LOG_DATA_PK as SUPP_PK, SUPPLEMENTAL_LOG_DATA_UI as SUPP_UI FROM V$DATABASE; SUPP_LOG SUPP_PK SUPP_UI -------- ------- -------- NO NO NO If any of the column returns NO, enable minimal and primary key/unique index supplemental logging at the database level: SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS; Now open the database SQL> ALTER DATABASE OPEN; At this point, the new primary database is ready for business. |
引用URL
http://cgi.blog.roodo.com/trackback/9337627