oracle-dba- 重做日志管理

作用数据恢复。
用户更改的信息会暂时存放在数据库高速缓冲区中,是为了提高读写的速度。当达到一定的容量,DBWR就把变化的数据写到数据库中。中间假如出现了down就会数据无法恢复。所以引入重做日志管理,LGWR进程负责把用户更改的数据优先写到重做日志中。称为日志写优先。Down机后,重启时,数据库系统会从重做日志文件中读取变化的数据。
为了提高磁盘效率,并为了防止重做日志文件的损坏。Oracle引入了一种重做日志结构
重做日志文件结构由3个重做日志组组成,每个日志组有2个重做日志成员(文件),可以设置更多。数据库优先使用日志组1,该组写满后,切换到日志组2并为该日志组设置一个日志序列号,在写满后切换到日志组3,然后循环使用日志组1。
Oracle规定每个数据库实例最少要有2个重做日志组,每个重做日志组有一个重做日志成员。每个重做日志成员内容相同。
没有启动归档日志,当一个循环结束,在次使用之前的重做日志组。覆盖形式写入数据。
非归档模式下,重新使用心得联机重做日志前,dbwr进程会将所有的数据写入数据文件中。称为dbwr归档。
归档模式下,日志写满后,oracle会关闭当前的日志文件,ARCH进程把旧的重做日志文件中的数据移动到归档重做日志文件中。寻找下一个可用重做日志组。进行写操作。归档进程并不是一直存在。
再归档模式下, oracle无法使用一个已经关闭的重做日志,所以需要等待arch释放了联机重做日志后,数据库才能工作。

读取重做日志文件信息
Vlog视图  
记录当前数据库的日志组号,日志序列号,每个日志文件的大小(字节单位),每个日志组的成员数量,以及日志组的当前状态。  
Select group#,sequence#,bytes,members,archived,status from v
log;
输出说明,
当前有3个日志组,每个日志文件对应的日志序列号(全局唯一,同一个日志组中的日志序列号相同),每个日志组成员数量,状态(CURRENT表示当前正在使用),ARChive表示是否归档模式
Vlogfile视图  
记录当前日志组号,状态,类型和成员信息  
Col mumber for a10  
Select group#,status,type,member from v
logfile;
Status参数的含义
 Stale:该文件内容不完整
 空白:该日志组正在使用
 Invalid:该文件不能被访问
 Deleted:该文件不在使用
Type:online表示联机状态

归档模式
查看当前数据库是否处于归档模式
Archive log list;
设置数据库为归档模式
1:关闭数据库,到mount状态
2:修改
Shutdown immediate
Startup nomount;
Alter database mount;
Alter database archivelog;

上述可知,存档终点:USE_DB_RECOVERY_FILE_DEST
查看USE_DB_RECOVERY_FILE_DEST指定的文件目录,与大小
Show parameter db_recovery_file_dest;

Oracle9i设置归档模式
设置相同的步骤,另外修改参数log_archive_start=true
可以修改init.ora,开启log_archive_start=true。
第二个是使用spfile.

重做日志组及其管理
添加重做日志组格式
ALTER DATABASE [database_name]
ADD LOGFILE [GROUP number] filename SIZE n
[,ADD LOGFILE [GROUP number] filename SIZE n…..]

ALTER DATABASE ADD LOGFILE GROUP 6
(‘G:\oracleDB\temp\redo.log’ , ‘G:\oracleDB\temp\redo2.log’)
size 11m;
不选择group参数,默认在原有日志组号的基础上自动增长。

删除重做日志组
ALTER DATABASE [database_name]
DROP LOGFILE{GROUP n|(‘filename’[,’filename’]…)}
{GROUP n|(‘filename’[,’filename’]…)}…
Alter database drop logfile group 4,group 5,group 6;
注意:删除重做日志组后,作为重做日志组成员的操作系统文件还在。

重做日志成员及维护
添加重做日志成员
格式:
ALTER DATABASE [databasename]
ADD LOGFILE MEMBER
[‘filename’ [REUSE] [, ‘filename’ [REUSE]] …
TO {GROUP n | (‘filename’ [ , ‘filename’]…)}…
]…
Alter database add logfile member
‘G:\oracleDB\temp\a1.log’ to group 1,
‘G:\oracleDB\temp\a2.log’ to group 2,
‘G:\oracleDB\temp\a3.log’ to group 3;

查看成员个数
Select group#,sequence#,bytes,members,archived,status from vlog;  
查看重做日志组以及对应成员信息  
Select group#,status,type,member from v
logfile;
注意:添加日志成员文件已存在,则需要使用reuse参数。日志成员要使用绝对路径,否则oracle数据库会在默认路径下建立该重做日志文件

删除联机重做日志成员
格式如下
ALTER DATABASE [database_name]
DROP LOGFILE MEMBER ‘filename’ [,’filename’]…
只需要知道重做日志成员的目录和文件名,但是操作系统中该成员文件没删除
Alter database drop logfile member ‘A2.LOG’;
删除限制
 删除的日志成员是日志组最后一个有效成员,不能删除
 该日志组正在使用。
 数据库运行在ARCHIVELOG模式,并且要删除的日志成员所属的日志组没有归档
重设联机重做日志的大小
Oracle没有提供直接修改联机重做日志大小的方法。
可以使用删除日志文件所在日志组,新建一个日志文件设置大小,来间接的达到目的
切换日志并删除当前没有使用的日志组
alter system switch logfile;
如果该日志组处于inactive,可以直接删除。如果处于active,继续使用日志切换指令加速重做日志组的归档工作。或者此时强制加入一个检查点。Alter database checkpoint。使得要删除的重做日志组处于inactive状态。因为强制检查点使DBWR将保存在联机重做日志中已经变化的内容写到了数据文件中。
清除联机重做日志
在数据库处于归档模式(ARCHIVELOG)时,如果当前正在使用的重做日志组中的重做日志文件损坏,则该重做日志不能完成归档,导致数据库因无法归档而挂起。
解决方案:通过清除联系机重做日志来重新初始化联机重做日志文件。
ALTER DATABASE CLEAR LOGFILE GROUP n;
注意:使用指令后,已删除的重做日志组中重做日志的序列号变为0,所以此时需要做数据库的全备份。因为oracle在进行数据库恢复时,需要连续的序列号。

日志切换和检查点事件
当一组重做日志组写满或者用户发出alter database switch logfile时,就会触发日志切换。此时oralce寻找下一个可用的重做日志组,如果数据库处于归档模式,则在将当前写满的日志组归档完成前不会使用新的重做日志组。
检查点事件是oracle减少数据库实例恢复时间而设置的一个事件。当该事件发生时LGWR进程将重做日志缓冲区中的数据写入重做日志文件中。而同时通知DBWR进程将数据库高速缓存中的已经提交的数据写到数据文件。所以检查点时间越频繁则用于数据库恢复的重做数据就越少。检查点事件也会修改数据文件头信息和控制文件信息。以记录检查点的SCN
强制启动检查点事件
ALTER DATABASE checkpoint;
如果不是强制性的产生检验点事件,检验点事件由DBWR数据库写进程触发。
归档重做日志
是联机重做日志的脱机备份。当数据库处于归档模式,发生日志切换或者日志写满,就会触发归档进程ARCH把重做日志文件中的数据移动到归档重做日志中。归档完毕,归档进程自动关闭。
归档日志文件存储在参数文件SPFILE或init.ora(log_archive_dest_n)文件参数指定的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值