如何维护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的操作。

 

你可能感兴趣的:(oracle,职场,redo,logfile,休闲,数据库性能)