暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle DB归档模式

Oracle微学堂 2020-07-07
1799

  • ARCHIVELOG模式

当对数据库中的数据进行修改后,重做数据会写出到联机重做日志文件中。指定系统在给定时间写入到的文件。当此文件写满后,归档进程(ARCn) 会将该联机日志文件复制到其它位置,作为该文件的归档,保留时间由用户决定。这便提供了更多的恢复机会,因为可以保存、备份和还原生成的所有归档重做日志。

因为系统以循环方式重用联机重做日志文件,所以有一个协议用于控制何时可以重用文件。

ARCHIVELOG模式下,数据库只在联机重做日志文件归档后向其写入数据。这样可确保每个重做日志文件都有机会得以归档。

  • 配置ARCHIVELOG模式

要将数据库置于ARCHIVELOG模式,请执行下列步骤:

使用Oracle EnterpriseManager

选中“ARCHIVELOG ModeARCHIVELOG 模式)复选框。

单击“Apply(应用)只有处于MOUNT状态时才能将数据库设置为ARCHIVELOG

系统询问是否重新启动数据库时,请单击“Yes(是)

使用SQL 命令

装载数据库。

发出ALTER DATABASEARCHIVELOG命令。

打开数据库。

配置ARCHIVELOG模式

将数据库置于ARCHIVELOG模式可防止重做日志在归档之前被覆盖。

Oracle EnterpriseManager 中,通过导航到“Availability > Recovery Settings(可用性> 恢复设置)并选中“ARCHIVELOG ModeARCHIVELOG 模式)复选框可实现上述目的。在进行此更改后,必须重新启动数据库。

要发出SQL 命令将数据库置于ARCHIVELOG模式,数据库必须处于MOUNT模式。如果数据库当前处于打开状态,必须将其完全关闭(不是中止),然后进行装载。

下面显示的命令可以关闭打开的数据库,将其置于ARCHIVELOG模式,然后再将其打开:

SQL> SHUTDOWN IMMEDIATE

SQL> STARTUP MOUNT

SQL> ALTER DATABASE ARCHIVELOG;

SQL> ALTER DATABASE OPEN;

数据库处于NOARCHIVELOG模式(默认模式)时,只能恢复到最后一次备份时的状态。在该备份之后执行的所有事务处理都会丢失。

ARCHIVELOG模式下,可一直恢复到最后一次提交时的状态。多数生产数据库都在ARCHIVELOG模式下运行。

注:在切换到ARCHIVELOG模式后备份数据库,原因是数据库只能从在该模式下执行的第一次备份进行恢复。

  • 配置归档日志目标位置 

最佳做法提示:应该创建多个归档日志目标位置,因为如果只有一个目标且将填满,则数据库将停止。

本地目标和远程目标:通过设置LOG_ARCHIVE_DEST_n初始化参数的集合指定本地目标和远程目标。共有十个初始化参数,因此n可以是1 10

为了指定本地存储位置,应为其中一个变量的值提供本地目录名称,即提供“LOCATION=”字符串。例如,要指定/disk3/arch目录,

按以下方式设置其中一个变量:

LOG_ARCHIVE_DEST_1 ='LOCATION=/disk3/arch'

如果要为备用数据库指定远程位置,在值中使用SERVICE关键字,如下例所示,

其中standyby1是备用数据库实例的网络服务名:

LOG_ARCHIVE_DEST_2 = 'SERVICE=standby1'.

仅本地目标:使用标准版的Oracle DB,可以将LOG_ARCHIVE_DESTLOG_ARCHIVE_DUPLEX_DEST参数设置为本地磁盘目录。

因此,最多可以有两个归档日志文件位置。例如:

LOG_ARCHIVE_DEST = '/disk1/arch'

LOG_ARCHIVE_DUPLEX_DEST = '/disk2/arch'

如果适用,Oracle 建议使用LOG_ARCHIVE_DEST_n方法,因为此方法在目标类型和目标数量方面具有最大的灵活度。

  • 确保归档日志成功

如果为归档日志文件指定了多个目标,则应指定至少有多少个目标获得成功才认为归档是成功的。可使用LOG_ARCHIVE_MIN_SUCCEED_DEST初始化参数执行此操作。将其设置为必须成功接收归档日志文件的目标数量。

只有满足此数量,才可以重用联机日志文件。

上图示例中,有三个指定的目标:两个是本地目标,一个是远程目标。

LOG_ARCHIVE_MIN_SUCCEED_DEST设置为2,表示只要至少有两个目标成功,即可覆盖联机重做日志文件。该示例显示目标1 已失败。这并不会使数据库停止,因为其中两个已成功。

如果在LOG_ARCHIVE_DEST_n模型中使用此参数,则此参数的值可以介于1 10 之间。

如果在LOG_ARCHIVE_DEST模型中使用此参数,则值可以为1 2,因为在这种情况下只能指定两个目标。

指定MANDATORYOPTIONAL

定义某个目标时,可以指定该目标为必需目标。在指定位置后,通过指定MANDATORYOPTIONAL关键字可实现上述目的。

下面是一个示例:

LOG_ARCHIVE_DEST_1 = 'LOCATION=/disk3/archMANDATORY'

默认值为OPTIONAL

系统尤为关注必需目标。如果任一必需目标失败,则Oracle DB 认为日志归档尚未成功,不允许覆盖联机重做日志文件。

在此情况下,它将忽略LOG_ARCHIVE_MIN_SUCCEED_DEST参数。

LOG_ARCHIVE_DEST指定的任何目标都是必需的。

如果LOG_ARCHIVE_MIN_SUCCEED_DEST=1,则LOG_ARCHIVE_DUPLEX_DEST声明的所

有目标都是可选的,如果LOG_ARCHIVE_MIN_SUCCEED_DEST=2,则目标都是必需的。

以下来配置archivelog模式:

1、确定当前数据库以哪种归档模式运行。

sys@TESTDB> archive log list;

Database log mode No Archive Mode

Automatic archival Disabled

Archive destinationUSE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 5

Current log sequence 7

2、由于只有在mount状态下才可以更改archive模式,所以先关闭数据库。

sys@TESTDB> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

3、启动数据库到mount状态。

sys@TESTDB> startup mount;

ORACLE instance started.

Total System Global Area 2505338880 bytes

Fixed Size 2230952 bytes

Variable Size 553649496 bytes

Database Buffers 1929379840 bytes

Redo Buffers 20078592 bytes

Database mounted.

4、将数据库更改为使用archivelog模式

sys@TESTDB> alter database archivelog;

Database altered.

5、打开数据库。

sys@TESTDB> alter database open;

Database altered.

6、查看是否成功配置归档模式

sys@TESTDB> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destinationUSE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 5

Next log sequence to archive 7

Current log sequence 7

 

扫描二维码关注我的微学堂

搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!


 

文章转载自Oracle微学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论