Oracle 增加重做日志
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle 增加重做日志
如果发现LGWR经常处于等待状态,则就需要考虑添加日志组及其成员,一个数据库最多可以拥有MAXLOGFILES个日志组。增加重做日志是使用ALTER DA TABASE语句完成的,执行该语句时要求用户必须具有ALTER DATABASE系统权限。
1.增加重做日志组
当管理重做日志时,为防止后台进程LGWR等待写入日志组,DBA必须选择合适的日志组个数。要增加重做日志组,可以使用带ADD LOGFILE子句的ALTER DATABASE语句。例如,下面的语句向数据库中添加了一个新的重做日志组:
SQL> alter database add logfile
2 ('d:\app\Administrator\oradata\orcl\redo04.log',
3 'e:\oradata\orcl\redo04b.log')
4 size 10m;
数据库已更改。
新增的重做日志组具有两个成员,每个成员文件的大小均为10MB。一般情况下,日志文件的大小在10MB到50MB之间,Oracle默认的日志文件大小为50MB。
如果在ALTER DA TABASE ADD LOGFILE语句指定GROUP子句,Oracle将自动为新建的重做日志组设置编号,例如:下面的语句可以在创建日志组时指定为第4组:SQL> alter database add logfile group 4
2 ('d:\app\Administrator\oradata\orcl\redo04.log',
3 'e:\oradata\orcl\redo04b.log')
4 size 10m;
数据库已更改。
使用组号可以更加方便地管理重做日志组,但是,对日志组的编号必须为连续的,不要跳跃式地指定日志组编号。也就是说,不要将组号编为10,20,30等这样不连续的数。否将会耗费数据库控制文件中的空间。
如果要创建一个非复合的重做日志文件,则可以使用如下的语句:
alter database add logfile
'd:\app\Administrator\oradata\orcl\redo01.log' reuse;
如果要创建的日志文件已经存在,则必须在ALTER DTABASE语句中使用REUSE子句,覆盖已有的操作系统文件。在使用了REUSE的情况下,不能再使SIZE子句设置重做日志文件的大小,重做日志文件的大小将由已存在日志文件的大小决定。
2.创建日志成员文件
建立日志组时,至少要为日志组指定一个日志成员。为了防止日志成员损坏而导致日志组无法使用,Oracle建议每个日志组至少包含两个或两个以上的日志成员。如果日志组只有一个日志成员,并且该日志成员出现损坏,那么当后台进程LGWR切换到该日志组时,Oracle 会停止工作,并对该数据库执行不完全恢复。
为重做日志组添加新的成员时,只需要使用带ADD LOG MEMBER子句的ALTER DA TABASE语句即可。例如,下面示例为第1组重做日志添加了一个新的成员日志文件:SQL> alter database add logfile member
2 'e:\oradata\orcl\redo01b.log' to group 1;
数据库已更改。
此外,也可以通过指定重做日志组中的其他成员的名称,以确定要添加的成员所属的重做日志组。例如,下面的语句为第2组添加一个新成员:
SQL> alter database add logfile member
2
'e:\oradata\orcl\redo02b.log' to
3 ('d:\app\Administrator\oradata\orcl\redo02.log'); 数据库已更改。
注意为日志组添加新的成员时,必须指定文件名,但是不可以指定大小,新成员的大小是由组中其他成员的大小决定。