Oracle在线重做日志文件详解

点击打开链接

Oracle在线重做日志文件详解
1:查看数据库在线重做日志文件的归档方式
ARCHIVE LOG list;
2:查看日志组
SELECT * FROM v$log;
3:查看日志组成员
SELECT * FROM v$logfile;
--备注:经分系统BONCBI数据库日志没做归档就不说了,既然只有3个日志组,而且既然每个日志组只有一个成员,悲剧啊!
4:新增一个日志组:
ALTER DATABASE ADD LOGFILE GROUP 4 ('/dev/rlv_vgdb9_data22','/dev/rlv_vgdb9_data23','/dev/rlv_vgdb9_data24') SIZE 8191m;
--这样,就最增一个日志组,且这个日志组里有3个成员每个成员8191MB大小。
5:给某个日志组新增一个成员
ALTER DATABASE ADD LOGFILE MEMBER '/dev/rlv_vgdb9_data25' TO GROUP 4;
--注意,这里不需要指定日志组成员的大小。
6:删除日志组
ALTER DATABASE DROP LOGFILE GROUP 4;
--注意:当前日志组不能删,活动的日志组不能删,没有归档的日志组不能删。
7:删除日志组成员
ALTER DATABASE DROP LOGFILE MEMBER '/dev/rlv_vgdb9_data25';
--注意:每个组至少要保留一个成员;
8:两个概念需要注意:
8.1:日志切换
ALTER SYSTEM SWITCH LOGFILE;
--所谓日志切换就是停止写当前组,转而写一个新组,系统可以自动发生,也可以手工完成。
--当发生SWITCH LOGFILE时,系统会在后台完成CHECKPOINT的操作
--手动切换日志组
--日志组A:当前正在写。
--日志组B:可写。
--CHECKPOINT保证控制文件,数据文件头,日志文件头的SCN一致是数据库保持数据完整性的一个重要机制
--手动切换日志组后,ORACLE开始往日志组B写日志,并进行一次CHECKPOINT,把日志组A里没有经过CHECKPOINT的那部分日志对应的DIRTY BUFFER从BUFFER CACHE里写到
--数据文件里。CHECKPOING完成后
--日志组A:可写。
--日志组B:当前正在写。
--另外,ALTER TABLESPACE USER BEGIN BACKUP,DROP TABLE,TRUNCATE TABLE都会引发CHECKPOINT操作
--除了以上所手动,及自动CHECKPOINT之外,还可以通过一些参数来控制CHECKPOINT
--FAST_START_MTTR_TARGET(MTTR:数据恢复的时间间隔)
--checkpoints用来同步,同步频率越高,发生系统错误时所需RECOVERY时间越短
--同步相关的参数:FAST_START_MTTR_TARGET(数据库通过它来改变后面3个参数),fast_start_io_target,log_checkpoint_interval,log_checkpoint_timeout
9:初始化日志文件
ALTER DATABASE CLEAR LOGFILE GROUP 1;
ALTER DATABASE CLEAR LOGFILE '/dev/rlv_vgdb9_data25';
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 5(清空没有归档的日志文件,实际备份产生断点)
10:重命名日志文件
1>:在操作系统上把文件改名或移动(如果有OMF就不需要这样做了)
2>:ALTER DATABASE RENAME FILE '/dev/rlv_vgdb9_data25' TO '/dev/rlv_vgdb9_data26';
11:通过OMF管理REDO LOG 文件
SHOW PARAEMTERS DB_CREATE_ONLINE
ALTER SYSTEM SET DB_CREATE_ONLINE_LOG_DEST_1='/ORACLE/ORALOG/OMF';
ALTER DATABASE ADD LOGFILE GROUP 6;(名子由ORACLE派生,大小100M)
ALTER DATABASE DROP LOGFILE GROUP 6;(自己删除)


两个专题
一:查看oracle数据库是否归档和修改归档模式
首先查看数据库现有模式可使用以下语句
select name,log_mode from v$database;
也可以用下面的语句
archive log list;(该方法需要as sysdba)
对于非归档模式的数据库该为归档模式(主要以Oracle 10g为参考通过OMF来管理)使用以下步骤:
1. SQL> alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';
该语句含义是确定归档日志的路径,实际上Oracle 10g可以生成多份一样的日志,保存多个位置,以防不测
例如再添加一个日志位置可使用以下语句
SQL>alter system set log_archive_dest_2='location=/oracle/oracle10g/log2/archive_log';
2.关闭数据库
SQL> shutdown immediate 
3.启动数据mount状态:
SQL> startup mount;
4、修改数据库为归档模式:
SQL> alter database archivelog; 
5、打开数据库,查询:
SQL> alter database open;
修改日志文件命名格式:
SQL> alter system set log_archive_max_processes = 5;
SQL> alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;
修改完成后可以查看日志模式是否修改成功!
特别指出的是在Oracle 9i中还要修改参数log_archive_start = true才能生效,oracle 10g中已经废除了该参数,所以不需要设置该参数。


二:修改oracle日志文件大小 
1、创建2个新的日志组
alter database add logfile group 4 ('D:ORACLEORADATAORADBREDO04_1.LOG') size 1024k;
alter database add logfile group 5 ('D:ORACLEORADATAORADBREDO05_1.LOG') size 1024k;
2、切换当前日志到新的日志组
alter system switch logfile;
alter system switch logfile;
3、删除旧的日志组
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
4、操作系统下删除原日志组1、2、3中的文件
5、重建日志组1、2、3
alter database add logfile group 1 ('D:ORACLEORADATAORADBREDO01_1.LOG') size 10M;
alter database add logfile group 2 ('D:ORACLEORADATAORADBREDO02_1.LOG') size 10M;
alter database add logfile group 3 ('D:ORACLEORADATAORADBREDO03_1.LOG') size 10M;
6、切换日志组
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
7、删除中间过渡用的日志组4、5
alter database drop logfile group 4;
alter database drop logfile group 5;
8、到操作系统下删除原日志组4、5中的文件
9、备份当前的最新的控制文件
SQL> connect / as sysdba
SQL> alter database backup controlfile to trace resetlogs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值