Oracle数据库归档模式的开启和关闭

 

 

 

一、Oracle环境

 

Oracle服务器:oracle11g

oracle版本:11.2.0.1.0

操作系统版本:Red Hat Enterprise Linux Server release 7.6 (Maipo)

 


二、归档模式介绍
       oracle是款高安全性的数据库,刚安装好的数据库一般没有开启归档模式,我们需要开启归档模式,特别是业务数据库,开启归档后,故障发生时才可以实现数据库的完全恢复。

       在实际应用中,我们需要实现对数据的备份,其实现方式主要有冷备份和热备份两种。现在我们主要讨论热备份的具体操作。热备份也称为联机备份,在数据库的归档模式下进行备份。oracel数据库默认归档模式为关闭状态,要实现数据的热备份,需要改变数据库的归档模式,将其打开。并且需要注意的是数据库的归档模式的操作需要在MOUNT实例中进行,且数据库不能处于OPEN状态。

 

三、打开归档模式

 

步骤一:首先用sys登录数据库,查看oracle是否开启归档模式(su - oracle切换用户,然后sqlplus / as sysdba进入sql模式)

输入archive log list来查看是否开启,如下说明不是归档模式

[oracle@oracle11g ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 18 00:48:26 2020

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn /as sysdba

Connected.

SQL> archive log list; 

Database log mode              No Archive Mode

Automatic archival             Disabled                   /*目前不是归档模式

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     7

Current log sequence           9

 

步骤二:需要将数据库归档更改为enable,使用shutdown immediate来关闭数据库(因为不能在open状态下进行操作)

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

 

步骤三:使用startup mount来启动数据库实例(当数据库处于这个模式时,可以执行一些管理的任务,像恢复操作)

SQL> startup mount

ORACLE instance started.

Total System Global Area 1068937216 bytes

Fixed Size                  2220200 bytes

Variable Size             281022296 bytes

Database Buffers          780140544 bytes

Redo Buffers                5554176 bytes

Database mounted.

 

步骤四:修改归档位置

SQL>alter system set log_archive_dest_1='location=/nbumedia-store' scope=spfile;       /*可创建指定的归档目录

System altered.

 

步骤五:alter database archivelog开启归档模式

SQL> alter database archivelog;

Database altered.


步骤六:alter database open打开数据库,此模式为数据库的正常模式.

 

SQL> alter database open;

Database altered.

 

步骤七:此时查看归档状态,已经变为enable,已经开启归档

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /nbumedia-store

Oldest online log sequence     7

Next log sequence to archive   9

Current log sequence           9

SQL> exit

 

四、关闭归档模式

前面已经提到,数据的存档模式的操作必须要在mount实例中进行,且数据库要处于非open状态。所有关闭存档模式前,我们需要查看当前数据库的状态,并且关闭数据库,启动mount实例,才可进行操作。其具体操作为:

 

步骤一:使用SQL:select status from v$instance;查看当前数据库的状态,正常情况下一般都处于open状态。

SQL> select status from v$instance;

STATUS

------------

OPEN

SQL> 

 

步骤二:使用SQL:shutdown immediate;   --关闭数据库,因为数据库当前状态为open

                 startup mount;   --启动mount实例--

                 alter database noarchivelog;   --改变数据库存档模式为非存档模式

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;    

ORACLE instance started.

 

Total System Global Area 1068937216 bytes

Fixed Size                  2220200 bytes

Variable Size             281022296 bytes

Database Buffers          780140544 bytes

Redo Buffers                5554176 bytes

Database mounted.

SQL> alter database noarchivelog;

Database altered.

 

步骤三:此时使用SQL:archive log list 查看,存档模式已经变更为非存档模式。

 

SQL> archive log list;   

Database log mode              No Archive Mode

Automatic archival             Disabled

Archive destination            /nbumedia-store

Oldest online log sequence     9

Current log sequence           11

SQL> 

 

步骤四:再次使用SQL:select status from v$instance;进行查看数据库的当前状态,当前状态为mount状态。

SQL> select status from v$instance;

STATUS

------------

MOUNTED

SQL> 

 

步骤五:最后别忘记使用SQL:alter database open;打开数据库。

SQL> alter database open;

Database altered.

 

步骤六:再次使用SQL:select status from v$instance;查看数据库状态,为open状态。

SQL> select status from v$instance;

STATUS

------------

OPEN

最后使用快捷键Crtl + C 退出sqlplus。

 

查看归档模式

 创建归档目录

 修改归档目录和归档格式

 

SQL> alter system set log_archive_format= 'cjcdb_%t_%s_%r.arc' scope=spfile sid='*';

SQL> alter system set log_archive_dest_1='location=+ARCH/arch' scope=spfile sid='*';

 

 

 2 设置恢复目录/归档目录(仅节点1)

 


- 正确设置
  归档文件可以放在本地,也可以放在asm共享磁盘中,RAC环境要放ASM中。
  
- 如果是ASM
  SQL>alter system set log_archive_dest_1='location=+DATA';
  
- 如果是文件系统
  SQL>alter system set log_archive_dest_1='location=/archivelog';
  
- 错误设置
  SQL>alter system set db_recovery_file_dest_size=500g;
  SQL>alter system set db_recovery_file_dest='+DATA';
  
  原因分析:如果归档盘是500g,快满的时候就需要手动增加容量;
  如果归档空间满了,数据库就会报归档错误,应用无法连接。

- 设置数据库为非集群模式(仅节点1)
  SQL>show parameter cluster
  SQL>alter system set cluster_database=false scope=spfile;
  
- 节点1和2关闭数据库
  关闭数据库,启动后mount(仅节点1)
  SQL>shutdown immediate
  
- 仅在节点1操作
  SQL>startup mount
  SQL>alter database archivelog;
  SQL>alter database open;
  
- 查看归档状态
  SQL>archive log list;
  
设置数据库为集群模式(仅节点1)


SQL>alter system set cluster_database=true scope=spfile;


此前是在节点1操作,节点2并没有开启归档,选择打开集群模式后,重新数据库,节点二也就打开了归档

 

 

重启数据库,并打开(仅节点1)
节点1:
SQL>shutdown immediate;
SQL>startup

 


先等节点一启动完成后,再启动节点二

节点2:
SQL>startup

检查节点2的归档模式:
SQL>archive log list;

 

 

 

 

 

Oracle 19c RAC开归档

 

 

 

7、配置归档日志删除脚本和定时任务

mkdir -p /home/oracle/scripts/

vi /home/oracle/scripts/del_arch.sh

##添加以下脚本

 

复制代码
!/bin/bash

source ~/.bash_profile

deltime=`date +"20%y%m%d%H%M%S"`

rman target / nocatalog msglog /home/oracle/scripts/del_arch_${deltime}.log<<EOF
crosscheck archivelog all;
delete noprompt archivelog until time 'sysdate-7';
delete noprompt force archivelog until time 'SYSDATE-10';

EOF
复制代码

 

posted @   chengxuyonghu  阅读(1631)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示