在ORACLE9i和10G置归方式略有差别,不过差别不是很大。如果不小心可能会导致数据库不能打开,所以在此做了一些总结,供大家参考。
在数据库打开后,用SHOW parameter spfile命令查看当前是否是由SPFILE打开数据库。如果数据库是使用SPFILE则会显示具体的路径和SPFILE名,否则显示结果为空,表示使用了INIT参数文件。推荐最好使用SPFILE,因为我们在置归档的时候会动态修改参数,这样会更方便一些。
9I:
1.备份初始化参数文件
sql> create pfile from spfile;
我们备份参数文件的目的是为了避免在置归档过程中的误操作对数据库造成故障,以便能够使用我们备份的参数文件来恢复数据库。如果不加参数文件的目标路径,在WINDOWS中,默认会放在ORACLE_HOME/DATABASE中,如果是LINUX则会在ORACLE_HOME/dbs中。
2.配置归档日志的名称格式
sql>alter system set log_archvie_format='%S_%T.log' scope=spfile
3.配置归档位置
sql>alter system set log_archive_dest_1='location=e:/oracle/oradata/archive' scope=spfile
在ORACLE 9I企业版里还可以配置多个归档路径,log_archvile_dest_n(其中n可以为1-10)。而在9I标准版里只能设置两个归档路径,另一个的参参数为log_archive_dest_duplex="PATH"
4.设置归档进程自动启动
sql>alter system set log_archive_start=true scope=spfile
如果没有将归档设置为自动启动,则在归档里程会出错
5. 置归档模式
将数据库正常关闭
sql>shutdown immediate
启动到MOUNT模式
SQL>startup mount
置为归档模式
SQL>alter database archivelog
打开数据库
SQL>alter database open
查看数据库是否归档
SQL> archive log list;
如果显示为ENABLE则表示已成功归档
或 SQL>select log_mode from v$database;
如果为ARCHIVELOG则表示已成功归档
10G:
从ORACLE10G开始,改变日志模式已经变得很简单,很容易管理。在10G中,默认情况下,归档日志会存放到快速恢复区所对应的目录(
对应初始化参数db_recovery_file_dest),并且会按照特定的格式生成归档日志文件名。当想要将归档日志放在默认的路径下是,只需要参MOUNT状态执行Alter database archivelog即可。在10G中不需要对归档设置自动启动,因为这个参数已经10G摒弃掉,只要执行Alter database archivelog 就会自动置为自动归档。如果不想将归档日志放到默认路径,请执行下列步骤
1.备份初始化参数文件
sql> create pfile from spfile;
2.配置归档日志的名称格式
sql>alter system set log_archvie_format='%S_%T_%R.log' scope=spfile
在10G中设置日志格式时,一定要加%R参数,否则一定会出错
3.配置归档位置
sql>alter system set log_archive_dest_1='location=e:/oracle/oradata/archive' scope=spfile
在ORACLE 10G企业版里还可以配置多个归档路径,log_archvile_dest_n(其中n可以为1-10)
4. 置归档模式
将数据库正常关闭
sql>shutdown immediate
启动到MOUNT模式
SQL>startup mount
置为归档模式
SQL>alter database archivelog
打开数据库
SQL>alter database open
查看数据库是否归档
SQL> archive log list;
如果显示为ENABLE则表示已成功归档
或 SQL>select log_mode from v$database;
如果为ARCHIVELOG则表示已成功归档
(其它人的说明)
如果是9i中,因为数据库启动是使用的spfile参数文件,
所以要修改spfile参数文件中LOG_ARCHIVE_START=TRUE,
而不是init.ora文件,修改方法如下:
SQL>conn sys/password as sysdba;
SQL>startup;
SQL>alter system set log_archive_start=true scope=spfile;
再关闭数据库重启动:
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;