[ID 414043.1]
修改时间 20-OCT-2010 类型 BULLETIN 状态 PUBLISHED
Role Transitions for Data Guard Configurations Using Mixed Oracle Binaries
Summary
Beginning with Oracle Database 10g, there are certain configurations
where Data Guard Redo Apply (physical standby) can support different
Oracle binaries between primary and standby databases as long as all
systems in the Data Guard configuration are running the same OS family.
For example, you may have a primary database with 32bit Oracle binaries
on Red Hat 32bit, and a physical standby database with 64bit Oracle
binaries on Red Hat 64bit. Such configurations must follow additional
procedures during Data Guard role transitions (switchover and failover)
as described in this MetaLink note, below. If these procedures are not
followed then errors will occur when trying to open the new primary
database. One example error sequence would be:
ORA-00604: error occurred at recursive SQL level 1
ORA-06553: PLS-801: internal error [56327]
<>
\
For additional information on how Data Guard supports configurations in
which the primary database/system may not be identical to its standby
database(s)/system(s), please see MetaLink Note 413484.1
Restrictions
SQL Apply (logical standby) always requires that the bit-ness of the
Oracle Database is identical on all systems in a Data Guard
configuration. Continuing with the example provided in the summary above
of a Red Hat 32bit/64bit primary/standby, if you are using SQL Apply
you must use 32 bit Oracle binaries on both primary and standby.
The bit-ness of the Oracle database must be identical if you are using
any Oracle release before Oracle Database 10g for both SQL Apply and
Redo Apply. Continuing with the example provided in the summary above of
a Red Hat 32bit/64bit primary/standby, if you are using Oracle9i you
must use 32 bit Oracle binaries on both primary and standby (either
physical or logical standby).
The Data Guard Broker does not support different binaries in the same
Data Guard configuration in Oracle Database 10g. All such configurations
must be managed from the SQL*Plus command line. Beginning with Data
Guard 11g onward, this restriction is lifted and the Data Guard Broker
does support Oracle 11g databases of mixed word-size in the same Data
Guard configuration.
Data Guard Fast-start Failover will failover in a mixed Oracle binary
configuration but it will be unable to open the new primary database
until the procedure below is followed.
Additional Role Transition Procedures when using mixed Oracle binaries:
If you are running a physical standby configuration where the primary
and standby have different Oracle binaries you will need to follow the
instructions below on the new primary as part of any Data Guard role
transition (switchover or failover) after a standby becomes a primary
database (supported configurations are defined in MetaLink Note
413484.1). This procedure is necessary when transitioning roles in
either direction.
Note: If you are using Oracle OLAP then you must also follow MetaLink
Note 352306.1 . Additionally, as a precaution for a failover, you may
want to backup/export the user-created AW's ahead of time and
periodically.
1. Shutdown the new primary database
If using RAC then set database to unclustered: SQL> alter system set cluster_database=false scope=spfile;
SQL> shutdown immediate
2. Startup the new primary in UPGRADE mode
SQL> startup upgrade
3. Invalidate existing PL/SQL modules in preparation to convert the
format required by the new primary. Note that there should be no other
DDL on the database while running the script. Not following
thisrecommendation may lead to deadlocks.
SQL> spool utlirp.log
SQL> @?/rdbms/admin/utlirp
SQL> spool off
4. Restart the database
If using RAC then set database back to clustered:
SQL> alter system set cluster_database=true scope=spfile;
SQL> shutdown immediate
SQL> startup
5. Recompile all invalid PL/SQL modules to be in the format required by the new primary database.
SQL> spool utlrp.log
SQL> @?/rdbms/admin/utlrp
SQL> spool off
6. Verify that all expected packages and classes are valid.
SQL> SELECT count(*) FROM dba_objects WHERE status='INVALID';
SQL> SELECT distinct object_name FROM dba_objects WHERE status='INVALID';
相关内容
产品
Oracle Database Products > Oracle Database > Oracle Database > Oracle Server - Enterprise Edition
关键字
DATAGUARD
返回页首