Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。 如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。 数据库使用归档方式运行时才可以进行灾难性恢复。 归档日志模式和非归档日志模式的区别: 非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复. 归档模式可以做热备份,并且可以做增量备份,可以做部分恢复. 用ARCHIVE LOG LIST 可以查看期模式状态时归档模式还是非归档模式.
归档日志即归档重做日志,将重做日志进行归档存储,可以用来进行数据库恢复。
登陆oracle,通过命令archive log list查看,Automatic archival可以看到是disabled的,表示未开启。
[oracle@oracledb ~]$ sqlplus / as sysdba
...省略部分输出...
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 2
Current log sequence 4
打开归档模式,需要将数据库打开到mount状态下更改。
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup mount
ORACLE instance started.
Total System Global Area 834666496 bytes
Fixed Size 8798264 bytes
Variable Size 595595208 bytes
Database Buffers 222298112 bytes
Redo Buffers 7974912 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL>
SQL> alter database open;
Database altered.
SQL> select status from v$instance;
STATUS
------------
OPEN
先关闭数据库,然后打开到mount状态,再关闭归档重做日志。再将数据库打开到open状态。
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 834666496 bytes
Fixed Size 8798264 bytes
Variable Size 595595208 bytes
Database Buffers 222298112 bytes
Redo Buffers 7974912 bytes
Database mounted.
SQL> alter database noarchivelog;
Database altered.
SQL> alter database open;
Database altered.
注意:oracle的默认归档存储目录是在闪回区目录中,通过命令show parameter db_recovery;查看db_recovery_file_dest的所在目录
SQL> show parameter db_recovery;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/fast_recovery_
area/cdb1
db_recovery_file_dest_size big integer 2780M
查看v$recovery_file_dest视图,可得知fast_recovery_area的空间限制、已使用的空间、文件数等。
SQL> col NAME format a40
SQL> select * from v$recovery_file_dest;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES CON_ID
---------------------------------------- ----------- ---------- ----------------- --------------- ----------
/u01/app/oracle/fast_recovery_area/cdb1 2915041280 0 0 0 0
SQL>
SQL> alter system set db_recovery_file_dest='/u01/archivelog' scope=spfile;
System altered.
SQL> show parameter db_recov
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/fast_recovery_
area/cdb1
db_recovery_file_dest_size big integer 2780M
SQL>
SQL> alter system set db_recovery_file_dest_size=40960M scope=spfile;
System altered.
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup open;
ORACLE instance started.
Total System Global Area 834666496 bytes
Fixed Size 8798264 bytes
Variable Size 595595208 bytes
Database Buffers 222298112 bytes
Redo Buffers 7974912 bytes
Database mounted.
Database opened.
SQL> show parameter db_reco
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/archivelog
db_recovery_file_dest_size big integer 40G
先查看一下闪回区的使用情况
SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES CON_ID
----------------------- ------------------ ------------------------- --------------- ----------
CONTROL FILE 0 0 0 0
REDO LOG 0 0 0 0
ARCHIVED LOG 0 0 0 0
BACKUP PIECE 0 0 0 0
IMAGE COPY 0 0 0 0
FLASHBACK LOG 0 0 0 0
FOREIGN ARCHIVED LOG 0 0 0 0
AUXILIARY DATAFILE COPY 0 0 0 0
8 rows selected.
SQL>
设置log_archive_dest_1变量的值用于存储归档日志
SQL> alter system set log_archive_dest_1='location=/u01/newarchivelog' scope=both;
System altered.
SQL> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
log_archive_dest string
log_archive_dest_1 string location=/u01/newarchivelog
log_archive_dest_10 string
重启数据库使新配置生效。