Oracle 重建联机日志
一个重做日志组可以包括一个或多个日志成员,这多个成员应该放再不同的磁盘上,作为磁盘日志镜像,同一组的成员的内容是一样的,
一个重做日志组可以包括一个或多个日志成员,这多个成员应该放再不同的磁盘上,作为磁盘日志镜像,同一组的成员的内容是一样的,目的是防止某个磁盘失败造成联机日志的全部丢失。如果没有多个磁盘,没有必要为重做日志组建立多个日志成员。
联机日志的特点是:当一组都写满时开始归档,使用下一日志组,当日志组都写满又轮回到第一日志组时,如果第一日志组归档完毕就覆盖它,若没有就只能使用日志缓冲区等待归档完毕之后才能使用它。
如果归档很慢而且日志文件很大时你可以提前强制归档:
ALTER SYSTEM SWITCH LOGFILE;
归档日志用于rman恢复,如果不做rman恢复,不需要保存日志,可以直接删除。
启动或关闭归档
启动数据库到mount状态
startup mount
如果要启用归档模式,此处使用
〉alter database archivelog 命令
如果需要停止归档模式,此处使用:
〉alter database noarchivelog 命令。
为避免频繁切换日志文件,可以增加日志文件大小,默认为1M
1. 进入sqlplus
2. ALTER DATABASE ADD LOGFILE GROUP 4 ('/Oracle/dbs/log1c.rdo') SIZE 10m;
也可以不指定路径:alter database add logfile group 4 size 30m;
3. 路径你自己指定(/oracle/dbs/redo4a.log', '/oracle/dbs/redo5a.rdo)
4.查看 select * from v$log; 察看日志组状态
Select * from v$logfile; 察看日志组成员文件
设置联机重做日志的大小,使得至少大约15分钟切换一次,这个值开始可能很难估计。
如何修改在线重做日志文件大小
方法
加入新的大的日志文件,然后删掉旧的小的日志文件
假设现有三个日志组,每个组内有一个成员,,每个成员的大小为1MB,现在想把此三个日志组的成员大小都改为10MB
1、创建2个新的日志组
SQL> alter database add logfile group 4('/oracle/oradata/orcl/redo04.rdo') size 10m;
SQL> alter database add logfile group 5('/oracle/oradata/orcl/redo05.rdo') size 10m;
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中的文件
rm /oracle/oradata/orcl/redo01.rdo
rm /oracle/oradata/orcl/redo01.rdo
rm /oracle/oradata/orcl/redo01.rdo
5、重建日志组1、2、3
alter database add logfile group 1('/oracle/oradata/orcl/redo01.rdo') size 10m;
alter database add logfile group 2('/oracle/oradata/orcl/redo02.rdo') size 10m;
alter database add logfile group 3('/oracle/oradata/orcl/redo03.rdo') size 10m;
6、切换日志组
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
7、删除中间过渡用的日志组4
alter database drop logfile group 4;
alter database drop logfile group 5;
错误:
SQL> alter database drop logfile group 4;
alter database drop logfile group 4
*
ERROR at line 1:
ORA-01624: log 4needed for crash recovery of instance orcl (thread 1)
ORA-00312: online log 4thread 1: '/oracle/oradata/orcl/redo04.rdo'
解决:
先查看要删除的日志组的状态: select * from v$log
当日志组状态为active,或current状态时不能删除日志组,需切换日志。
8、到操作系统下删除原日志组4中的文件
9、备份当前的最新的控制文件
SQL> connect internal
SQL> alter database backup controlfile to trace resetlogs