归档模式是oracle数据库非常重要的保护数据,恢复数据的手段
简单的开启归档的操作非常简单,但是最好还是要规范的开启归档
改变数据库归档模式,需要使用alter database archivelog|noarchivelog语句,链接用户的权限必须是as sysdba。
1.查看数据库是否是归档模式
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 56
Current log sequence 58
USE_DB_RECOVERY_FILE_DEST说明了使用的是快速恢复区
2.关闭数据库实例
shutdown immediate
在改变归档模式前必须关闭数据库。如果有数据文件需要介质恢复,不能更改归档模式。
3.备份数据库
在对数据库做任何较大的变更之前,最好要备份数据库。因为在改动数据库的时候不总是任何问题都没有的,作为一个dba的本职工作就是要做好备份,保护数据安全,这也是最容易忽略也最重要的步骤。
4.编辑参数文件指定归档日志的路径(也可以使用命令的方式更改)
默认情况使用的是快速恢复区
SQL> show parameter recover
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/fast_recovery_
area
db_recovery_file_dest_size big integer 8G
db_unrecoverable_scn_tracking boolean TRUE
recovery_parallelism integer 0
SQL>
除了快速恢复区外,10g及以上版本提供了LOG_ARCHIVE_DEST_n 参数(1-31个路径),可以使用多个路径,可以备份到其他磁盘。使用了DB_RECOVERY_FILE_DEST,DB_RECOVERY_FILE_DEST_SIZE启用快速恢复区就不能启用其他归档路径。使用LOG_ARCHIVE_DEST_n跟快速恢复区不同,是不用设置大小的
SQL> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_11 string
log_archive_dest_12 string
log_archive_dest_13 string
…
归档日志的默认名
SQL> show parameter format
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_format string %t_%s_%r.dbf
%t:进程号(thread)
%s:日志序列号(sequence)
%r:resetlogs ID
5.启动实例到mount阶段
SQL> startup mount
ORACLE instance started.
Total System Global Area 1048059904 bytes
Fixed Size 2235000 bytes
Variable Size 310379912 bytes
Database Buffers 729808896 bytes
Redo Buffers 5636096 bytes
Database mounted.
6.更改数据库
SQL> alter database archivelog
2 /
Database altered.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 56
Next log sequence to archive 58
Current log sequence 58
归档模式已启用
更改路径(可选)
SQL> alter system set log_archive_dest_1='location=/home/oracle' scope=both;
System altered.
7.关闭数据库
8.备份数据库
更改数据库归档更新了控制文件,在更改数据库归档模式后,必须备份所有数据库文件和控制文件。之前noarchivelog模式的备份就不再使用了。
9.打开数据库,检查配置
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /home/oracle
Oldest online log sequence 58
Next log sequence to archive 60
Current log sequence 60
SQL> alter system switch logfile;
System altered.
SQL> select name from v$archived_log;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/product/11.2/dbs/arch2_58_947085344.dbf -----做的测试(如果不使用快速恢复区且没有设置log_archive_dest_n的情况下归档日志会在这)
/home/oracle/1_59_947085344.dbf
已经没有启用快速恢复区了,使用的是log_archive_dest_1的指定路径