日志文件记录了所有数据的改变过程,主要目的是为了提高数据的可恢复性
ORACLE的日志采用循环日志组的方式,数据库有多组日志,采用循环写。
日志组的分布:
1、把日志放到最快的磁盘上
2、归档日志、联机日志、甚至数据文件等分开放
3、奇偶组分开
日志组的创建:
ALTER DATABASE ADD LOGFILE [GROUP n] 文件名 SIZE 大小
SQL> alter database add logfile '/u01/app/oracle/oradata/orcl/redo04.log'
size 50m;
查看日志信息
v$log
v$logfile
SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;
日志切换:
一般情况下是自动切换的,写满一组后,自动切到下一组,切换按 SEQUENCE# 顺序
可以输入
SQL> alter system switch logfile;
手工切换
添加日志组成员
创建时:
ALTER DATABASE ADD LOGFILE (多个文件名) ......
SQL> alter database add logfile
2 ('/u01/app/oracle/oradata/orcl/redo05a.log',
3 '/u01/app/oracle/oradata/orcl/redo05b.log')
4 size 50m;
创建后添加:
SQL> alter database add logfile member
2 '/u01/app/oracle/oradata/orcl/redo03b.log' to group 3;
SQL> alter database add logfile member
2 '/u01/app/oracle/oradata/orcl/redo01b.log' to group 1,
3 '/u01/app/oracle/oradata/orcl/redo02b.log' to group 2,
4 '/u01/app/oracle/oradata/orcl/redo04b.log' to group 4;
删除成员:
SQL> alter database drop logfile member
'/u01/app/oracle/oradata/orcl/redo01b.log';
注意:以上的操作仅是在控制文件中,将日志信息给修改了,操作系统上的文件还在,需要手工清理
另每个组至少要保留一个成员
删除日志组:
删除日志组时,只能删除 inactive 状态的日志组,active 和 current 的日志组不能删除
SQL> alter database drop logfile group 1;
清除(初始化)日志文件
SQL> alter database clear unarchived logfile group 2;
有时日志文件损坏时可以采用此方法修复
archive_lag_target 参数可控制日志文件的自动切换日志
SQL> alter system set archive_lag_target=600;
与日志损坏有关的隐含参数:
一般情况下,如果 active 和 current 日志损坏(在停库时),是没办法打开数据库的
"_allow_resetlogs_corruption"=true
与之类似的参数还有:
_corrupted_rollback_segments
_offline_rellback_segments
OMF管理联机日志文件
OMF (Oracle Managed File) 是从9i开始引入的,该方法简化了操作系统层上的文件管理
OMF要用的话,要设置几个参数
db_create_file_dest
db_create_online_log_dest_1
db_create_online_log_dest_2
db_create_online_log_dest_3
db_create_online_log_dest_4
db_create_online_log_dest_5
SQL> alter system set db_create_online_log_dest_1='/u02/';
SQL> alter system set db_create_online_log_dest_2='/u03/';
如果上面的参数不设置的话,OMF会把文件放在闪回区中
使用OMF
SQL> alter database add logfile; 默认大小100M
SQL> alter database add logfile size 50m;
查看日志生成量信息
1、set autotrace on --语句级
然后执行一些操作,有日志生成量的统计
2、通过 v$mystat 查看一段时间当前用户的日志生成量
SQL> select a.name,b.value from v$statname a,v$mystat b
2 where a.STATISTIC#=b.STATISTIC# and a.name='redo size';
NAME VALUE
------------------------------------------- ----------
redo size 88328
3、查看实例生成的日志量(v$sysstat)
SQL> select * from v$sysstat where name='redo size';
ORACLE的日志采用循环日志组的方式,数据库有多组日志,采用循环写。
日志组的分布:
1、把日志放到最快的磁盘上
2、归档日志、联机日志、甚至数据文件等分开放
3、奇偶组分开
日志组的创建:
ALTER DATABASE ADD LOGFILE [GROUP n] 文件名 SIZE 大小
SQL> alter database add logfile '/u01/app/oracle/oradata/orcl/redo04.log'
size 50m;
查看日志信息
v$log
v$logfile
SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;
日志切换:
一般情况下是自动切换的,写满一组后,自动切到下一组,切换按 SEQUENCE# 顺序
可以输入
SQL> alter system switch logfile;
手工切换
添加日志组成员
创建时:
ALTER DATABASE ADD LOGFILE (多个文件名) ......
SQL> alter database add logfile
2 ('/u01/app/oracle/oradata/orcl/redo05a.log',
3 '/u01/app/oracle/oradata/orcl/redo05b.log')
4 size 50m;
创建后添加:
SQL> alter database add logfile member
2 '/u01/app/oracle/oradata/orcl/redo03b.log' to group 3;
SQL> alter database add logfile member
2 '/u01/app/oracle/oradata/orcl/redo01b.log' to group 1,
3 '/u01/app/oracle/oradata/orcl/redo02b.log' to group 2,
4 '/u01/app/oracle/oradata/orcl/redo04b.log' to group 4;
删除成员:
SQL> alter database drop logfile member
'/u01/app/oracle/oradata/orcl/redo01b.log';
注意:以上的操作仅是在控制文件中,将日志信息给修改了,操作系统上的文件还在,需要手工清理
另每个组至少要保留一个成员
删除日志组:
删除日志组时,只能删除 inactive 状态的日志组,active 和 current 的日志组不能删除
SQL> alter database drop logfile group 1;
清除(初始化)日志文件
SQL> alter database clear unarchived logfile group 2;
有时日志文件损坏时可以采用此方法修复
archive_lag_target 参数可控制日志文件的自动切换日志
SQL> alter system set archive_lag_target=600;
与日志损坏有关的隐含参数:
一般情况下,如果 active 和 current 日志损坏(在停库时),是没办法打开数据库的
"_allow_resetlogs_corruption"=true
与之类似的参数还有:
_corrupted_rollback_segments
_offline_rellback_segments
OMF管理联机日志文件
OMF (Oracle Managed File) 是从9i开始引入的,该方法简化了操作系统层上的文件管理
OMF要用的话,要设置几个参数
db_create_file_dest
db_create_online_log_dest_1
db_create_online_log_dest_2
db_create_online_log_dest_3
db_create_online_log_dest_4
db_create_online_log_dest_5
SQL> alter system set db_create_online_log_dest_1='/u02/';
SQL> alter system set db_create_online_log_dest_2='/u03/';
如果上面的参数不设置的话,OMF会把文件放在闪回区中
使用OMF
SQL> alter database add logfile; 默认大小100M
SQL> alter database add logfile size 50m;
查看日志生成量信息
1、set autotrace on --语句级
然后执行一些操作,有日志生成量的统计
2、通过 v$mystat 查看一段时间当前用户的日志生成量
SQL> select a.name,b.value from v$statname a,v$mystat b
2 where a.STATISTIC#=b.STATISTIC# and a.name='redo size';
NAME VALUE
------------------------------------------- ----------
redo size 88328
3、查看实例生成的日志量(v$sysstat)
SQL> select * from v$sysstat where name='redo size';
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21175589/viewspace-755713/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21175589/viewspace-755713/