Home  >  Article  >  Database  >  Oracle 重建联机日志

Oracle 重建联机日志

WBOY
WBOYOriginal
2016-06-07 17:06:24923browse

一个重做日志组可以包括一个或多个日志成员,这多个成员应该放再不同的磁盘上,作为磁盘日志镜像,同一组的成员的内容是一样的,

一个重做日志组可以包括一个或多个日志成员,这多个成员应该放再不同的磁盘上,作为磁盘日志镜像,同一组的成员的内容是一样的,目的是防止某个磁盘失败造成联机日志的全部丢失。如果没有多个磁盘,没有必要为重做日志组建立多个日志成员。

联机日志的特点是:当一组都写满时开始归档,使用下一日志组,当日志组都写满又轮回到第一日志组时,如果第一日志组归档完毕就覆盖它,若没有就只能使用日志缓冲区等待归档完毕之后才能使用它。

如果归档很慢而且日志文件很大时你可以提前强制归档:

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

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn