如何维护redo logfile
Oracle的联机日志文件(Online redo logfile)循环记录了数据库所有的事(transaction),它的大小、个数和存储位置对数据库性能和恢复有重要影响。
1. 查看日志文件信息
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- -------
1 ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10\REDO01.LOG
2 ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10\REDO02.LOG
3 ONLINE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10\REDO03.LOG
2. 查看日志文件当前的状态
SQL> select group#,status from v$log;
GROUP# STATUS
------- --------------
1 INACTIVE
2 CURRENT
3 INACTIVE
一个时间只有一组logfile group是工作状态(current), redo logfile满了后会自动切换到下一个logfile group, 如果数据库是归档方式同时写到归档日志文件。
如果想知道当前数据库redo logfile的最大数值是多少,重新生成控制文件, 就可以知道。
SQL>alter database backup controlfile to trace;
此时在$ORACLE_BASE/admin/dbname/udump/路径下生成当前时间的一个*.trc文件, 也就是数据库的控制文件, 用文本编辑器, 即可看到数据库创建时用的一些参数, 包括redo logfile的最大数(maxlogfiles)。
3. 如何增加redo logfile的大小
假如原来有3个小的redo log file, 下面是UNIX环境下的一个例子:
3.1. 向数据库添加三个redo logfile
SQL> ALTER DATABASE ADD LOGFILE GROUP 4
('/dev/rlv_redo41',
'/dev/rlv_/redo42') SIZE 100M reuse;
SQL> ALTER DATABASE ADD LOGFILE GROUP 5
('/dev/rlv_redo51',
'/dev/rlv_redo52') SIZE 100M reuse;
SQL> ALTER DATABASE ADD LOGFILE GROUP 6
('/dev/rlv_redo61',
'/dev/rlv_redo62') SIZE 100M reuse;
3.2. 手工做log switch, 使新建的redo logfile起作用.
SQL>alter system switch logfile;
此操作可以执行一到几次, 使旧的redo logfile成inactive状态.
3.3. 删除原来旧的redo logfile.
SQL> ALTER DATABASE DROP LOGFILE GROUP 1;
SQL> ALTER DATABASE DROP LOGFILE GROUP 2;
SQL> ALTER DATABASE DROP LOGFILE GROUP 3;
4. 如何增加日志成员
oracle强烈建议每个数据库有多组日志,每组日志至少有2个成员。
可以用如下语法在线给日志组1、2、3各增加一个成员:
SQL> ALTER DATABASE ADD LOGFILE MEMBER
'/dev/rlv_redo13' TO GROUP 1,
'/dev/rlv_redo23' TO GROUP 2,
'/dev/rlv_redo33' TO GROUP 3;
-- Windows机器用下面的添加:
SQL> ALTER DATABASE ADD LOGFILE MEMBER
'D:\oracle\product\10.2.0\oradata\ora10\REDO04.LOG' TO GROUP 1,
'D:\oracle\product\10.2.0\oradata\ora10\REDO05.LOG' TO GROUP 2,
'D:\oracle\product\10.2.0\oradata\ora10\REDO06.LOG' TO GROUP 3;
(给日志组增加成员时不需要指定rodo logfile的大小,oracle会自动将新成员的大小建成同原成员一样大。)
5. 删除某个日志组的成员(各个日志组成员的数量可以不相同):
SQL> ALTER DATABASE DROP LOGFILE NUMBER ‘/dev/rlv_redo13’ ;
注意,日志文件是oracle数据库最重要的物理文件之一,如果某组的所有成员都已损坏或被删除,丢失数据是不可避免的。因此除非确实有需要,否则请不要做任何删除redo logfile或redolog group的操作。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>