9.3.2 切换日志模式
数据库服务器可以在归档模式和非归档模式之间进行切换。在切换日志模式时,需要将数据库服务器关闭,然后启动到MOUNT状态,在这种状态下切换日志模式,最后将数据库服务器启动到OPEN状态。例如,以下命令序列用于将数据库服务器从非归档模式切换到归档模式:
SQL>SHUTDOWN;
SQL>STARTUP MOUNT;
SQL>ALTER DATABASE ARCHIVELOG;
SQL>ALTER DATABASE OPEN;
以下命令序列用于将数据库服务器从归档模式切换到非归档模式:
SQL>SHUTDOWN
SQL>STARTUP MOUNT
SQL>ALTER DATABASE NOARCHIVELOG;
SQL>ALTER DATABASE OPEN;
在归档模式下,需要对每个重做日志组进行归档。Oracle有两种归档方式:手工归档和自动归档。在默认情况下,数据库服务器将启动若干个ARCH进程,对重做日志文件自动进行归档。通过下面的SELECT语句可以确定自动归档功能是否已经启动:
SQL>SELECT archiver FROM v$instance;
如果数据库处于归档模式下,利用ARCH进程对重做日志文件进行归档,这是最佳的选择。然而也可以采用手工归档方式,即数据库管理员需要执行命令,对重做日志文件进行归档。如果希望采用手工归档方式,那么需要对归档方式进行设置。在数据库服务器处于MOUNT状态时,执行下面的命令:
SQL>ALTER DATABASE ARCHIVELOG MANUAL;
然后把数据库服务器启动到OPEN状态。从这时候开始,对重做日志文件进行归档的操作全部要由数据库管理员通过命令完成。例如,以下语句对当前重做日志组进行归档:
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
在对当前重做日志组进行归档之前,数据库服务器首先进行一次日志切换,然后对切换前所使用的重做日志组进行归档。以下语句用于归档所有尚未归档的重做日志组:
SQL>ALTER SYSTEM ARCHIVE LOG ALL;
手工归档的任务是由数据库管理员完成的,在这种情况下数据库管理员需要监视重做日志的使用情况和切换情况。如果某个重做日志组没有被及时归档,那么当数据库服务器再次切换到该重做日志组时,将因为等待它的归档而停止运行。在大多数情况下,对重做日志文件不应该进行手工归档,而应该进行自动归档。
在归档模式下,如果启动了自动归档功能,重做日志的归档是由后台进程ARCH自动完成的。在默认情况数据库服务器只启动2个ARCH进程。当重做日志组的切换非常频繁时,可能需要多个ARCH进程同时工作。初始化参数LOG_ARCHIVE_MAX_PROCESSES用于指定启动的ARCH进程数目。在一个数据库服务器中最多可以启动30个ARCH进程(ARC0—ARC29)。例如,以下设置将使数据库服务器启动5个ARCH进程:
SQL>ALTER SYSTEM SET log_archive_max_processes=5;
对于一个重做日志组,最近所需要进行的归档是否已经进行,可以通过下面的语句查询:
SQL>SELECT group#,archived FROM v$log;
如果一个重做日志组的归档已经完成,那么本次归档所产生的归档日志文件可以通过下面的语句查询:
SQL>SELECT name FROM v$archived_log;