日志文件
一般ORACLE数据库实例创建完成后就已创建里3组日志文件,每组有两个日志文件,它们记录同样的信
息。当日志写进程写满某一组时会自动写下一组,这种由一组跳到另外一组的过程称为日志切换(switch
logfile)。DBA也可用“alter system switch logfile;”命令强行进行日志切换。
1、查看日志文件所在路径及组号:
select * from v$logfile;
3 ONLINE D:\ORACLE\ORACLE_10G\ORADATA\ORA10\REDO03.LOG NO
2 STALE ONLINE D:\ORACLE\ORACLE_10G\ORADATA\ORA10\REDO02.LOG NO
1 STALE ONLINE D:\ORACLE\ORACLE_10G\ORADATA\ORA10\REDO01.LOG NO
1 INVALID ONLINE D:\ORACLE\ORACLE_10G\ORADATA\ORA10\REDO01C.LOG NO
2、查看日志文件组号、大小及当前状态
select * from v$log;
1 1 26 52428800 2 NO INACTIVE 1151341 2008/06/12
2 1 27 52428800 1 NO INACTIVE 1176548 2008/07/01
3 1 28 52428800 1 NO CURRENT 1207977 2008/07/01
status=current 表示该日志组正在被使用。
3、创建新日志文件
alter database ora10 add logfile group 4
('D:\Oracle\Oracle_10g\oradata\ora10\redo04a.log',
'D:\Oracle\Oracle_10g\oradata\ora10\redo04b.log') size 10M;
4、增加新日志文件成员到个组
alter database add logfile member
'D:\Oracle\Oracle_10g\oradata\ora10\redo01b.log' to group 1,
'D:\Oracle\Oracle_10g\oradata\ora10\redo02b.log' to group 2;
5、删除日志文件
alter database drop logfile group 4;
alter database drop logfile member 'D:\ORACLE\ORACLE_10G\ORADATA\ORA10\REDO04B.LOG';
6、日志文件切换
alter system switch logfile; 开始写新的日志文件组,不管当前日志文件组是否满了
alter system archive log all; 手工归档所有的日志文件组
alter system archive log current; 手工归档活动的日志文件组
alter system checkpoint; 强迫oracle进行一次检查点,确保所有提交的事务的改变都被写
到磁盘数据文件上
7、清除日志文件组
当数据库实例处于打开方式时,可能存在由于日志文件与归档日志文件发生冲突而最终导致数据库实
例不能工作,这时,用ALTER DATABASE CLEAR LOGFILE GROUP N;初始化日志文件组。
select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 30 NO CURRENT
2 27 NO INACTIVE
3 28 NO INACTIVE
4 29 NO INACTIVE
ARC为NO表示该组未归档
ALTER DATABASE CLEAR (unarchived) LOGFILE GROUP N;
8、重新命名或移动日志文件,也可以删掉再建。
SQL> shutdown immediate;
SQL> $move D:\ORACLE\ORACLE_10G\ORADATA\REDO04A.LOG D:\ORACLE\ORACLE_10G\ORADATA
\ora10\REDO04A.LOG;
SQL> startup mount;
SQL> alter database rename file 'D:\ORACLE\ORACLE_10G\ORADATA\REDO04A.LOG ' to 'D:\ORACLE
\ORACLE_10G\ORADATA\ORA10\REDO04A.LOG ';
SQL> alter database open;
归档日志
1、检查当前日志操作模式
select log_mode from v$database;
2、改变日志操作模式
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
注意:从Oracle 10g开始,当将数据库转变为archivelog模式时,会自动启动ARCn进程,Oracle 10g
之前,必须将初始化参数log_archive_start设置为TRUE。
3、查看归档日志
SQL> col name format a50
SQL> select name,first_change#,next_change# from v$archived_log;
NAME FIRST_CHANGE# NEXT_CHANGE#
-------------------------------------------------- ------------- ------------
D:\ORACLE\ORACLE_10G\FLASH_RECOVERY_AREA\ORA10\ARC 1182355 1201731
HIVELOG\2008_07_10\O1_MF_1_27_47D18PWS_.ARC
D:\ORACLE\ORACLE_10G\FLASH_RECOVERY_AREA\ORA10\ARC 1201731 1201792
HIVELOG\2008_07_10\O1_MF_1_28_47D1D7KL_.ARC
4、日志历史记录
SQL> select sequence#,first_change#,first_time,next_change# from v$log_history;
or v$loghist;
SEQUENCE# FIRST_CHANGE# FIRST_TIME NEXT_CHANGE#
---------- ------------- -------------- ------------
23 1086958 25-5月 -08 1107378
24 1107378 25-5月 -08 1129544
25 1129544 08-6月 -08 1151341
26 1151341 09-7月 -08 1182355
27 1182355 10-7月 -08 1201731
28 1201731 10-7月 -08 1201792
29 1201792 10-7月 -08 1210311
5、配置其他归档参数
当数据库处于archivelog模式,并且进行日志切换时,后台进程ARCH会自动生成归档日志,从Oracle
10g开始,默认情况下,归档日志会存放到快速恢复区所对应的目录(对应于初始化参数
bd_recovery_file_dest),并且会按照特定格式生成归档日志文件名。为了改变归档日志的位置和名称格式,
必须改变相应的初始化参数。
初始化参数log_archive_format用于指定归档日志的文件名格式
%s 日志序列号
%S 日志序列号(带有前导0)
%t 重做线程编号
%T 重做线程编号(带有前导0)
%a 活动ID号
%d 数据库ID号
%r resetlogs的ID值
alter system set log_archive_format='arch_%r_%t_%s.dbf' scope=spfile;
alter system set log_archive_dest_1='LOCATION=+DATA2/ora10';
shutdown immediate;
startup;
如果归档日志被存放在快速恢复区,那么归档日志文件名不会采用log_archive_format的格式。
使用log_archive_dest_n配置归档位置
显示归档信息
1、archive log list;
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 28
下一个存档日志序列 30
当前日志序列 30
2、使用select name,first_change# from v$archived_log;显示归档日志信息
3、显示归档日志位置
SQL> col destination format a25
SQL> col dest_name format a20
SQL> select dest_name,destination,status from v$archive_dest;
DEST_NAME DESTINATION STATUS
-------------------- ------------------------- ---------
LOG_ARCHIVE_DEST_1 INACTIVE
LOG_ARCHIVE_DEST_2 INACTIVE
LOG_ARCHIVE_DEST_3 INACTIVE
LOG_ARCHIVE_DEST_4 INACTIVE
LOG_ARCHIVE_DEST_5 INACTIVE
LOG_ARCHIVE_DEST_6 INACTIVE
LOG_ARCHIVE_DEST_7 INACTIVE
LOG_ARCHIVE_DEST_8 INACTIVE
LOG_ARCHIVE_DEST_9 INACTIVE
LOG_ARCHIVE_DEST_10 USE_DB_RECOVERY_FILE_DEST VALID
修改oracle日志文件大小
1、创建2个新的日志组
alter database add logfile group 4 ('D:\ORACLE\ORADATA\ORADB\REDO04_1.LOG') size 1024k;
alter database add logfile group 5 ('D:\ORACLE\ORADATA\ORADB\REDO05_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:\ORACLE\ORADATA\ORADB\REDO01_1.LOG') size 10M;
alter database add logfile group 2 ('D:\ORACLE\ORADATA\ORADB\REDO02_1.LOG') size 10M;
alter database add logfile group 3 ('D:\ORACLE\ORADATA\ORADB\REDO03_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
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17012874/viewspace-694216/ ,如需转载,请注明出处,否则将追究法律责任。