Oracle数据库备份与恢复配置(2)

Oracle数据库备份与恢复配置(文件)2

重做日志(redo)

--对日志组进行管理使用的是alter命令

alter database add logfile group --添加日志组,group 后面不加编号的话,新生成的日志组会按照现有的日志组编号顺序排列,手动添加编号就会按照编号生成对应日志组顺序。

alter database add logfile group 4 ('/u01/redo04-1.log','/u01/redo04-2.log','/u01/redo04-3.log') size 100M; --新建日志组并增加是三个重做日志文件,结合上一章说讲,一个日志组内建议创建三个以上的日志文件,所以我在/u01路径下创建了三个重做日志,创建完后可以通过v$log和v$logfile查看是否创建成功。

alter database drop logfile group 4; --删除日志组,但不会删除已经在硬盘上创建的物理日志文件,需要手动进入到该目录下自行删除。(可以加入include的参数,执行alter同时可以把物理文件也一并删除)

alter database add logfile member '/u01/redo04-4.log' to 
group  4; --为日志组4增加一个重做日志,建议在新的数据库上线时,可以直接删除整个日志组,再添加新的日志文件。

alter database drop logfile member '/u01/redo04-4.log'; --删除现有日志组内的重做日志。

以上基本就是对日志组和重做日志的基本管理,::有一点需要说明的是,在删除现有的重做日志时,我们可以先用alter system switch logfile;先切换到新的日志组让数据库进行写入再删除,避免正在写入的同时删除日志组内的日志文件造成数据丢失;::
在数据库前期设计规划的时候,我们可以将数据库自带的三个重做日志组删除,创建一个新的日志组作为当前使用状态(CURRENT),再创建其他的日志组和日志文件,::为什么要这么做?因为我们可以指定日志文件存放在不同的磁盘路径下,避免多个日志组或多个日志文件都存放在同一个磁盘路径下,遇到突发情况或故障导致所有日志不可用的情况发生🚫::
⚠️有一点需要注意,删除日志文件前,检查是否有备份。

归档模式下管理重做日志(redo)

首先要说的一点,建议大家数据库都采用“归档模式”,没有什么理由选择非归档模式。


——————————————和归档相关的一些参数––––––––––––––––––––
show parameter log_archive_%;
首先我们上面这条语句的结果看到,有个name名为log_archive_dest的记录,这里的dest是代表destination(目的地)的意思,意思就是归档日志的存放地址;而我们会发现它有31个log_archive_dest_数字的name,因为数据库可以将归档日志备份成31处路径,由此可见归档日志对于数据库的重要性,但是归档日志路径是需要手动设置的。

--接下来介绍下怎么设置归档日志路径
1. 首先在服务器路径下创建两个文件夹,mkdir /u01/11 22(我创建了11和22两个名字的文件夹)
2. 接着回到sqlplus,用管理员身份登陆
3. alter system set log_archive_dest_1 ='LOCATION=/u01/11 mandatory'; --这里说明一下,我为log_archive_dest_1这一处路径设置归档日志保存路径,地址为我在第一步创建的/u01/11文件夹内,而 mandatory的意思:上一章就讲到当日志组内的日志文件都已经满的时候,会回头到第一个日志组重新写入,这时如果开启了归档模式,就会先将第一个日志组内的重做日志备份后再进行写入;这里有一个问题:如果数据库正准备对正在进行归档重做日志的时候写入呢?意思是归档需要时间,但是这时数据库又满了,就会选择覆盖写入,那这时能不能允许它写入呢。
这里针对上面这种情况就会涉及到三个参数选项:
optional:(默认值,再不添加任何参数的情况下会数据库选择的值)如果在设置LOACATION后面加上此块参数,就会告诉数据库,无论是否归档完成,还是正在归档,都会覆盖写入新的数据到日志组内的日志文件中。
mandatory:在LOCATION后面加上此块参数,就会告诉数据库,必须要等归档完成后,才能进行对日志文件的覆盖写入。
reopen:这个是跟mandatory参数一起使用,意思是归档的频率,默认为300秒。
4. 这里我将(log_archive_dest_2也设置了一个路径,目前是已经设置了两个归档日志存放路径)alter system set log_archive_dest_2 ='LOCATION=/u01/22 mandatory';
5. 目前已将两个归档日志路径设置完成,现在去刚刚创建的文件夹下发现还是没有任何文件,因为只有才触发归档的时候,才会产出文件。
6. 这里我们做个实验,手动归档;什么情况下会归档:
	(1)日志组内的日志文件写满的时候。
	(2)手动切换日志组,在ACTIVE(活动)的状态下。
我们采用第二种方法:
alter system switch logfile;--切换日志组并且切换前的日志组还处于活动状态,这个时候再回到刚刚创建的11和22两个文件夹下面就会发现已经生成了两个dbf的归档日志文件了。
7. ⚠️建议归档日志存放路径放在不同硬盘下面,避免意外发生导致全部归档文件不可用。

这里目前思考两个问题:

  • 刚刚我们已经设置了两个归档日志存放路径,这时有个情况,其中一个路径的挂载的硬盘损坏了?!但是这时数据库还是会将日志归档在这两个路径下,怎么样可以避免这种情况发生呢?
    ::答:在show parameter log_archive_%;这个参数中还有一个name(log_archive_dest_state_数字),数量也跟我们的归档日志存放路径也是一样,都是31个路径地址,但是唯一不同的是它们的value是有值的,而且全都是enable,这时应该可以猜出来,没错,这个带state的31条记录就是对应我们31处路径的“开关”,如果像刚刚上面这种情况,我们可以通过::
    ::alter system set log_archive_dest_state_1=defer;将我刚刚指定的第一个归档路径关闭,这时数据库只会往我二的路径下进行归档,而不会往一了,如果硬盘修复好了,可以通过::
    ::alter system set log_archive_dest_state_1=enable;重新开启对这个归档路径的开关。::

对本章的扩充知识点

  • 大家有没有想过当我们对重做日志文件进行归档的时候是哪个进程正在执行这个归档工作?
  • 可以通过select program from v$process where program like '%ARC%'查询,这里的ARC(就是archive的简写,表示归档的意思),通过这个我们可以查看到会有四条记录,数据库实例拼接(ARC0-4),表示会有四条归档进程同时进行归档工作。
  • 那么是哪个参数控制归档进程数的呢?答案是:show parameter log%max;
    查询出的结果是log_archive_max_processes,value值是4,就是这个参数控制归档进程数,可以通过alter system set log_archive_max_processes =10设置归档进程,目前我将归档进程数量上限设置为10,现在通过v$process再查询就会看到是(ARC0-9)了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值