others linux服务器运维 django3 监控 k8s golang 数据库 大数据 前端 devops 理论基础 java oracle 运维日志

oracle 归档模式查看与开启

访问量:1640 创建时间:2020-03-06

Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。 如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。 数据库使用归档方式运行时才可以进行灾难性恢复。 归档日志模式和非归档日志模式的区别: 非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复. 归档模式可以做热备份,并且可以做增量备份,可以做部分恢复. 用ARCHIVE LOG LIST 可以查看期模式状态时归档模式还是非归档模式.

查看oracle是否开启归档

归档日志即归档重做日志,将重做日志进行归档存储,可以用来进行数据库恢复。

登陆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 归档日志存储位置更改及空间大小限制

注意: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

重启数据库使新配置生效。

登陆评论: 使用GITHUB登陆