我们知道Oracle中 重做日志文件被分为若干组,当一组重做日志被写满,ORACLE就开始写下一组,这叫做日志切换。切换是以循环的方式进行的,即当最后一组写满后又从第一组开始写。所以如果只有重做日志,即oracle运行在非归档模式下,当遇到数据文件丢失或损坏时,oracle很难保证能够完全恢复数据库,因为可能所需的重做记录因为因重做日志循环被覆盖掉了。但在归档方式下,归档日志进程会把切换后的重做日志文件复制到归档日志文件,我们可以把归档日志文件看成是重做日志文件的备份,但归档日志文件是脱机的,即除了在进行复制时,ORACLE数据库在正常运行时是不会关注归档日志文件的。
所以我们应该把数据库改为归档模式。
1。关闭数据库
SQL> shutdown immediate;
2。启动数据库到mount状态
SQL> startup mount;
3。启用归档模式
SQL> alter database archivelog;
4。查看修改后的数据库备份和恢复策略及归档文件的位置
SQL> archive log list;
5.修改相应的初始化参数
Oracle10g之前,你还需要修改初始化参数使数据库处于自动归档模式。
可用SQL> show parameter log_archive_start;查看
NAME TYPE VALUE
------------------------------------ ----------- --------------
log_archive_start boolean FALSE
SQL> alter system set log_archive_start=true scope=spfile;
重启数据库此参数生效,此时数据库处于自动归档模式。
当然你也可以不做第5步,直接
SQL>archive log start
使数据库启用自动归档,但是重启后数据库仍然处于手工归档模式。
现在你可以用RMAN备份数据库了
附:
1。如果要从归档模式变为非归档模式,使用alter database noarchivelog 命令
2。使用show parameter db_recovery_file_dest;查看备份文件的目录及其大小
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string C:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size big integer 2G
3。使用show parameter log_archive_start;查看数据库是否出于自动归档模式
文章出处:DIY部落(http://www.diybl.com/course/7_databases/oracle/oraclexl/20090304/158063.html)
来源:oschina
链接:https://my.oschina.net/u/15340/blog/1298