ORACLE体系结构---日志文件管理

日志文件管理(联机重做)

1.日志文件作用
记录用户做的DML,部分DDL操作
主要用做数据库的恢复


2.日志文件的工作原理
通过lgwr 进程将我们日志缓冲区的内容,顺序的写入到日志文件中
状态:
a.current ---当前正在使用的日志组
缓冲区的内容写到这个状态下的日志,此状态下的文件丢失,必定丢数据

b.active ---活动状态,记录在这种日志组下的信息有可能没有写入到数据文件,数据库恢复时还要使用
还未写入到数据文件中,此状态下的文件丢失,也会丢数据

c.inactive ---非活动状态,记录在这种状态日志组下信息全部记录在数据文件
信息已全部写入数据文件中,丢失不会导致丢数据

d.unused ---没有使用过的



日志组:一个数据库中至少要有两个日志组,一个日志组下的成员为日志文件
日志文件:一个日志组下至少要有一个日志文件,一个组下的成员记录的内容是一样的,互为镜像关系。一个组下的成员的大小必须一样。
lsn:(log system number) 日志系统变更编号 用来区分每一个日志成员的信息


>>>desc v$log
>>>select group#,status from v$log; //查看有几个日志组
>>>select group#,member from v$logfile


3.日志文件在项目中的规划
至少3个组
一个组下至少有两个日志成员,且要分开存放,不在同一个文件夹或磁盘

 disk1disk2disk3
group1r1.logr11.logr12.log
group2r2.logr21.logr22.log
group3r3.logr31.logr32.log


日志在15-30分钟切换一次才正常
>>>desc v$log_history //查看切换日志的时间

4.日志文件的管理
a.日志组增加

alter database add logfile group <名字为number型,且系统中不存在> ('/',‘/’ 增加两个日志文件) size <单个日志文件的大小>;

>>>alter system switch logfile ; //手动切换日志
b.日志组删除
current----不能被删除
active-----不能被删除
一个数据库中只有最后两个日志组,不能被删除
>>> alter database drop logfile group 1/2/.... //删除日志组,物理文件需要rm删除

c.日志组下增加成员
alter database add logfile member '/' to group <>; //项目中保证两个以上,一般是三个



d.日志组下删除成员
alter database drop logfile member '/';

1.一个日志组下只有最后一个日志成员时不能删除
2.current,active日志成员不能被删除

怎样将日志组从50m-100m
新建100m的日志组,手动切到100m的日志组,然后删掉50m的组

日志丢失的处理:
数据库在打开情况下:
1.inactive ---物理文件被其他人删掉
alter database clear logfile group<>; //这条命令会重现建会日志文件,但是是清空的方式建回来

2.active ---物理文件被其他人删掉
alter system checkpoint; //手动触发ckpt,让数据缓冲区的文件写入到日志文件中,切换我们的active数据库为inactive
alter database clear logfile group <>
3.current---物理文件被其他人删掉
alter system switch logfile;
alter system checkpoint;
alter database clear logfile group<>

数据库关闭情况下:
1.active --在数据开启的情况下删掉active的日志文件,然后马上关机,重启数据库,无法正常重启,只能到mount这一步


 

>>>show parameter ground查看告警日志

NAME      TYPE  VALUE
------------------------------------ ----------- ------------------------------
background_core_dump      string  partial
background_dump_dest      string  /opt/u01/oracle/diag/rdbms/maxdb/maxdb/trace   //日志存放的地方



[oracle@up12 maxdb]$ cd  /opt/u01/oracle/diag/rdbms/maxdb/maxdb/trace
[oracle@up12 trace]$ vim alert_maxdb.log 



>>>recover database until cancel; //表示不使用日志文件恢复实例
>>>alter database open resetlogs;//重新开始编日志序列号
>>>select sequence# from v$log
>>>select sequence# from v$log_history


5.日志文件相关的视图
v$log
v$logfile
v$log_history



 

归档日志archivelog
inactive----触发arc-----写入到归档日志中----current
归档日志为日志文件的备份
arc 进程中一般使用1-3个
db_recovery_file_dest= //默认放到该目录下,即闪回区
log_archived_dest= //指定归档日志往哪里放

验证是否打开归档功能
archive log list; //archive mode 为归档功能已开
select log_mode from v$database; //查看归档功能是否打开,archivelog为打开

select sequence# from v$log;//序列号小的inactive 下一次成为current

打开归档
startup mount //数据库启动到mount 下
alter database archivelog; //启动归档
alter database noarchivelog; //关闭归档
alter database open; //设置好后,打开数据库,项目中一定要打开归档


show parameter db_recovery_file_dest ;//查看归档信息
select name from v$archived_log; //可以查看归档日志的详细信息

转载于:https://my.oschina.net/liubaizi/blog/801576

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值