结论:
数据库版本Release 9.0.1 to 10.1,启动归档模式需要设置CLUSTER_DATABASE参数。
数据库版本10.2 and higher version,启动归档模式可以不需要设置CLUSTER_DATABASE参数。
那么CLUSTER_DATABASE参数有什么作用呢?
cluster_database
当想要多个实例同时mount数据库,CLUSTER_DATABASE参数必须是TRUE;
当CLUSTER_DATABASE参数为FALSE时,同时只能有一个实例能mount数据库。
If Oracle Database allows multiple instances to mount the same database concurrently, then the CLUSTER_DATABASE initialization parameter setting can make the database available to multiple instances. Database behavior depends on the setting:If CLUSTER_DATABASE is false (default) for the first instance that mounts a database, then only this instance can mount the database.If CLUSTER_DATABASE is true for the first instance, then other instances can mount the database if their CLUSTER_DATABASE parameter settings are set to true. The number of instances that can mount the database is subject to a predetermined maximum specified when creating the database.
测试启动11.2.0.4.0版本数据库归档模式
查看归档模式
SQL> archive log list;Database log mode No Archive ModeAutomatic archival DisabledArchive destination /u01/app/oracle/product/11.2.0/db_1/dbs/archOldest online log sequence 26Current log sequence 27
创建归档目录
[grid@rac01 ~]$ asmcmdASMCMD> lsARCH/DATA/OCR/ASMCMD> cd ARCHASMCMD> lsASMCMD> mkdir arch
修改归档目录和归档格式
SQL> alter system set log_archive_format= 'cjcdb_%t_%s_%r.arc' scope=spfile sid='*';SQL> alter system set log_archive_dest_1='location=+ARCH/arch' scope=spfile sid='*';
停止数据库
[oracle@rac01 ~]$ srvctl stop database -d cjcdb[oracle@rac01 ~]$ srvctl status database -d cjcdbInstance cjcdb1 is not running on node rac01Instance cjcdb2 is not running on node rac02
挂载数据库
[oracle@rac01 ~]$ srvctl start database -d cjcdb -o mount[oracle@rac01 ~]$ srvctl status database -d cjcdb -vInstance cjcdb1 is running on node rac01. Instance status: Mounted (Closed).Instance cjcdb2 is running on node rac02. Instance status: Mounted (Closed).
启动归档模式
[oracle@rac01 ~]$ sqlplus / as sysdbaSQL> alter database archivelog;
重启数据库
[oracle@rac01 ~]$ srvctl stop database -d cjcdb[oracle@rac01 ~]$ srvctl start database -d cjcdb
查看归档
[oracle@rac02 ~]$ sqlplus / as sysdbaSQL> archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination +ARC/archOldest online log sequence 1Next log sequence to archive 2Current log sequence 2
参考:Doc ID 235158.1和Doc ID 1186764.1
10.1和之前版本启动归档模式
How To Enable/Disable Archive Log Mode in Real Application Cluster Environment (Doc ID 235158.1)APPLIES TO:Oracle Database - Enterprise Edition - Version 9.0.1.0 to 10.1.0.5 [Release 9.0.1 to 10.1]Information in this document applies to any platform.1. Shut down all instances.2. Set the CLUSTER_DATABASE parameter to false on one instance in the parameter file. If using the server parameter file, make an entry for this: *.CLUSTER_DATABASE= FalseFor Modifying server parameter file (SPFILE):Alter system set cluster_database=FALSE scope=spfile sid='*';See Document 137483.1 How to Modify the Content of a SPFILE Parameter File3. Set the LOG_ARCHIVE_START parameter to true. 4. Set the LOG_ARCHIVE_FORMAT and make sure the parameter containing the %t parameter includes the thread number in the archived logfile name.5. Set the cluster database wide LOG_ARCHIVE_DEST_1 parameter in the parameter file as follows:LOG_ARCHIVE_DEST_1='LOCATION=$ORACLE_BASE/oradata//archive' Note: You can multiplex the destination to up to ten locations, refer to:Document 66433.1 Oracle8i - Multiple Archive Destinations and Remote Archival To specify the archive log destinations on a per instance basis for a two-instance cluster database, for example, set the parameter as follows: .LOG_ARCHIVE_DEST_1='LOCATION=$ORACLE_BASE/oradata//archive' .LOG_ARCHIVE_DEST_1='LOCATION=$ORACLE_BASE/oradata//archive' 6. Mount the database (in exclusive mode) for the instance on which you have set CLUSTER_DATABASE to false. 7. Set the database in ARCHIVELOG mode : SQL> ALTER DATABASE ARCHIVELOG; 8. Shutdown the instance. SQL> SHUTDOWN IMMEDIATE;9. Change the value of the CLUSTER_DATABASE parameter back to true.10. Startup all instances.To disable archive logging, follow the same steps but use the NOARCHIVELOG clause of the ALTER DATABASE statement.
10.2版本开始启动归档模式
How To Enable/Disable Archive Logging In RAC Environment for 10.2 and higher version (Doc ID 1186764.1)APPLIES TO:Oracle Database Cloud Service - Version N/A and laterOracle Database - Enterprise Edition - Version 10.2.0.1 and laterOracle Database Cloud Schema Service - Version N/A and laterOracle Database Exadata Express Cloud Service - Version N/A and laterOracle Database Exadata Cloud Machine - Version N/A and laterInformation in this document applies to any platform.SOLUTION1. The following steps need to be taken to enable archive logging in a RAC database environment:-- shutdown immediate all database instances$ srvctl stop database -d -- startup database in mount mode$ srvctl start database -d -o mount-- enable archive logging$ sqlplus / as sysdbasql> alter database archivelog;sql> exit;-- stop database$ srvctl stop database -d -- restart all database instances$ srvctl start database -d -- verify archiving is enabled/disabled by means of:sql> archive log list;You might need to set your log_archive_dest(_n) parameters to a shared location in each spfile, but the log_archive_start parameter does not need to be set anymore as of 10g (see Note 274302.1). 2. To disable archive logging, follow the same steps but use the NOARCHIVELOG clause of the ALTER DATABASE statement.
更多数据库相关学习资料,可以查看我的ITPUB博客,网名chenoracle:
http://blog.itpub.net/29785807/