丁保国的博客

收集整理工作生活,点点滴滴

  :: :: 博问 :: 闪存 :: :: :: :: 管理 ::

Chapter 5 重做日志文件

除了回复之外还要考虑效率,数据库中日志文件是一个频繁操作的文件,文件越大效率越低,为了确保效率,日志文件尽可能的小,但是小容易被填满,所以引入了分组。

NOTE

1.       同组中每个成员所存的信息完全相同。

2.       LGWR在同一时刻只能写一组重做日志组。

当前组叫做Current,LGWR把相同的信息从rodo log buffer中复制到该组的每个重做日志文件Member中,他以循环方式写重做日志组的。当一组写满时,开始写下一组,称之为日志切换(Switch)

 

一圈下来后,我们要将内容archived(归档),这样不会被覆盖掉。

 

 

重做日志组是联机的,也就是说ORACLE在运行的时候是要管理他们的,

归档日志是脱机的,是不需要管理的。

 

当前重做日志组的所有成员都坏了,ORACLE会关闭系统。所以DBA要经常看报警文件,发现问题及时修复。

 

 

5.4 日志切换和检查点

强制性产生重做日志切换的命令为:alter system switch logfile

强制产生检查点的命令为:alter system checkpoint

Fast_start_mttr_target = 900

 

 

5.5获取重做日志的信息

SQL> select group#,sequence#,members,bytes,status,archived from v$log;

 

    GROUP#  SEQUENCE#    MEMBERS      BYTES STATUS           ARC

---------- ---------- ---------- ---------- ---------------- ---

         1        121          3   15728640 CURRENT          NO

         2        118          3   15728640 INACTIVE         NO

         3        119          3   15728640 INACTIVE         NO

         4        120          3   15728640 INACTIVE         NO

         5        117          3   15728640 INACTIVE         NO

Status:

inactive:表示实例回复已不再需要这组联机重做日志组了。

active:表示这组联机重做日志组是活动的,但不是当前组,在实例恢复时需要这组联机重做日志组。如这组重做日志正在归档。

current:表示这组联机重做日志组是当前组,隐含是active的。

unused:表示ORACLE服务器从来没有写过这组重做日志。

 

 

SQL> set line 150

SQL> col member for a50;

SQL> select * from v$logfile;

 

    GROUP#STATUS  TYPE  MEMBER  IS_

---------- ------- ------- -------------------------------------------------- ---

         3 STALE ONLINE D:\DISK3\ORCL\ONLINELOG\REDO03A.LOG NO

         2         ONLINE  D:\DISK3\ORCL\ONLINELOG\REDO02A.LOG NO

         1         ONLINE  D:\DISK3\ORCL\ONLINELOG\REDO01A.LOG NO

         1         ONLINE  D:\DISK6\ORCL\ONLINELOG\REDO01B.LOG NO

         2         ONLINE  D:\DISK6\ORCL\ONLINELOG\REDO02B.LOG NO

         3 STALE   ONLINE  D:\DISK6\ORCL\ONLINELOG\REDO03B.LOG NO

         4 STALE   ONLINE  D:\DISK3\ORCL\ONLINELOG\REDO04A.LOG NO

         4 STALE   ONLINE  D:\DISK6\ORCL\ONLINELOG\REDO05A.LOG NO

         4 STALE   ONLINE  D:\DISK9\ORCL\ONLINELOG\REDO04A.LOG NO

         5 STALE   ONLINE  D:\DISK3\ORCL\ONLINELOG\REDO05A.LOG NO

         5 STALE   ONLINE  D:\DISK6\ORCL\ONLINELOG\REDO04A.LOG NO

 

    GROUP# STATUS  TYPE    MEMBER IS_

---------- ------- ------- -------------------------------------------------- ---

         5 STALE   ONLINE  D:\DISK9\ORCL\ONLINELOG\REDO05A.LOG NO

         3 STALE   ONLINE  D:\DISK9\ORCL\ONLINELOG\REDO03C.LOG NO

         2         ONLINE  D:\DISK9\ORCL\ONLINELOG\REDO02C.LOG NO

         1         ONLINE  D:\DISK9\ORCL\ONLINELOG\REDO01C.LOG NO

 

已选择15行。

l       空白:表示该文件正在使用

l       Stale:表示该文件中的内容是不完全的

l       Invalid: 表示该文件不可以访问

l       Deleted:表示该文件已不再有用了

 

5.6 添加和删除联机重做日志文件组

SQL> alter database add logfile

  2  ('D:\Disk3\redo04a.log','D:\Disk6\redo04b.log')

  3  size 15M;

 

SQL> select group#,sequence#,members,bytes,status,archived from v$log;

 

    GROUP#  SEQUENCE#    MEMBERS  BYTES STATUS  ARC

---------- ---------- ---------- ---------- ---------------- ---

         1        121          3   15728640 CURRENT          NO

         2        118          3   15728640 INACTIVE         NO

         3        119          3   15728640 INACTIVE         NO

         4        120          3   15728640 INACTIVE         NO

         5        117          3   15728640 INACTIVE         NO

SQL> select * from v$logfile;

 

    GROUP# STATUS  TYPE    MEMBER IS_

---------- ------- ------- -------------------------------------------------- ---

         3 STALE   ONLINE  D:\DISK3\ORCL\ONLINELOG\REDO03A.LOG  NO

         2         ONLINE  D:\DISK3\ORCL\ONLINELOG\REDO02A.LOG NO

         1         ONLINE  D:\DISK3\ORCL\ONLINELOG\REDO01A.LOG NO

         1         ONLINE  D:\DISK6\ORCL\ONLINELOG\REDO01B.LOG NO

 

SQL> alter database drop logfile group 4;

 

数据库已更改。

 

5.7 添加和删除联机重做日志成员(文件)

SQL> alter database add logfile member

  2  'D:\Disk3\redo01b.log' to group 1,

  3  'D:\Disk3\redo02b.log' to group 2,

  4  'D:\Disk3\redo03b.log' to group 3;

 

alter database drop logfile member

'D:\Disk3\redo03b.log';

 

 

5.8 清除联机重做日志文件

 

重新初始化日志文件:

ALTER DATABASE CLEAR LOGFILE GROUP 组号;

清除崩溃的重做日志文件:

ALTERDATABASE CLEAR UNARCHIVED LOGFILE GROUP 组号;

 

 

 

以下是一个数据库备份和清除一个重做日志文件的步骤:

1.

SQL> col name for a25

SQL> select * from v$controlfile;

 

STATUS  NAME  IS_ BLOCK_SIZE FILE_SIZE_BLKS

------- ------------------------- --- ---------- --------------

        D:\DISK3\CONTROL01.CTL    NO       16384            430

        D:\DISK6\CONTROL02.CTL    NO       16384            430

        D:\DISK9\CONTROL03.CTL    NO       16384            430

2.

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

3.控制文件、数据文件和重做日志文件备份

SQL> host copy C:\oracle\product\10.2.0\oradata\orcl\*.* D:\Backup\

C:\oracle\product\10.2.0\oradata\orcl\CONTROL01.CTL

C:\oracle\product\10.2.0\oradata\orcl\CONTROL02.CTL

C:\oracle\product\10.2.0\oradata\orcl\CONTROL03.CTL

C:\oracle\product\10.2.0\oradata\orcl\REDO01.LOG

C:\oracle\product\10.2.0\oradata\orcl\REDO02.LOG

C:\oracle\product\10.2.0\oradata\orcl\REDO03.LOG

C:\oracle\product\10.2.0\oradata\orcl\SYSAUX01.DBF

C:\oracle\product\10.2.0\oradata\orcl\SYSTEM01.DBF

C:\oracle\product\10.2.0\oradata\orcl\TEMP01.DBF

C:\oracle\product\10.2.0\oradata\orcl\UNDOTBS01.DBF

C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF

已复制        11 个文件。

 

3.       口令文件和参数文件

SQL> host copy C:\oracle\product\10.2.0\db_2\database\*.* D:\backup\

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_1028_tid_x75C_2009_7_16_19_27_9.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_1040_tid_x770_2009_7_16_20_16_54.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_1044_tid_x478_2009_7_18_21_4_21.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_1080_tid_x448_2009_8_3_23_2_34.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_1088_tid_x790_2009_7_19_16_4_11.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_1092_tid_x498_2009_8_6_21_52_52.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_1112_tid_x2B0_2009_8_3_8_23_35.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_1144_tid_x4B8_2009_8_14_17_19_11.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_1360_tid_x1AC_2009_7_19_7_30_23.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_1672_tid_x75C_2009_7_14_22_35_53.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_1720_tid_x49C_2009_8_3_6_16_36.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_1748_tid_x7D0_2009_7_18_12_4_15.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_2032_tid_x2AC_2009_7_14_6_30_29.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_236_tid_x14C_2009_7_14_20_14_20.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_3432_tid_xDC4_2009_7_13_22_36_15.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_612_tid_x274_2009_7_23_15_42_32.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_616_tid_x2A8_2009_8_9_22_29_48.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_620_tid_x3A4_2009_8_8_18_14_36.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_660_tid_x6D0_2009_7_14_19_37_52.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_684_tid_x48C_2009_8_11_21_21_38.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_704_tid_x448_2009_7_18_23_17_45.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_724_tid_x2F4_2009_8_1_7_37_43.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_724_tid_x300_2009_7_30_23_42_7.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_732_tid_x308_2009_8_1_15_41_44.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_740_tid_x308_2009_7_30_20_11_1.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_744_tid_x304_2009_7_31_19_43_53.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_752_tid_x308_2009_7_31_6_57_21.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_760_tid_x318_2009_8_2_14_11_48.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_776_tid_x324_2009_8_2_15_25_52.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_784_tid_x338_2009_7_16_19_5_48.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_784_tid_x338_2009_7_17_19_31_13.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_800_tid_x384_2009_7_19_7_54_55.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_808_tid_x424_2009_7_27_9_58_6.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_816_tid_x350_2009_7_20_19_46_57.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_816_tid_x350_2009_7_27_20_33_59.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_816_tid_x364_2009_8_13_20_54_18.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_820_tid_x358_2009_7_26_14_16_40.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_828_tid_x35C_2009_7_24_20_49_3.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_828_tid_x36C_2009_8_12_21_20_24.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_828_tid_x36C_2009_8_14_20_59_21.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_832_tid_x35C_2009_7_21_19_4_7.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_832_tid_x368_2009_8_5_8_27_26.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_836_tid_x36C_2009_8_16_9_0_14.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_840_tid_x148_2009_7_27_22_38_37.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_840_tid_x36C_2009_8_9_22_24_48.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_844_tid_x330_2009_8_6_9_48_42.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_848_tid_x37C_2009_8_8_9_43_29.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_848_tid_x380_2009_8_10_20_37_16.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_848_tid_x380_2009_8_15_17_25_5.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_868_tid_x38C_2009_8_13_11_18_34.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_872_tid_x424_2009_7_29_21_20_38.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_876_tid_x388_2009_8_12_6_50_0.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_884_tid_x394_2009_8_13_11_34_10.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_904_tid_x3B8_2009_8_4_8_23_27.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_924_tid_x3CC_2009_7_23_21_46_53.log

C:\oracle\product\10.2.0\db_2\database\core_orcl_pid_980_tid_xC40_2009_7_14_22_32_26.log

C:\oracle\product\10.2.0\db_2\database\hc_orcl.dat

C:\oracle\product\10.2.0\db_2\database\initorcl.ora

C:\oracle\product\10.2.0\db_2\database\oradba.exe

C:\oracle\product\10.2.0\db_2\database\oradim.log

C:\oracle\product\10.2.0\db_2\database\PWDorcl.ora

C:\oracle\product\10.2.0\db_2\database\sqlnet.log

已复制        62 个文件。

 

 

4.       启动

SQL> startup

ORACLE 例程已经启动。

 

Total System Global Area  612368384 bytes

Fixed Size                  1250428 bytes

Variable Size             251661188 bytes

Database Buffers          352321536 bytes

Redo Buffers                7135232 bytes

数据库装载完毕。

数据库已经打开。

 

5.

SQL> alter database clear logfile group 3;

 

数据库已更改。

 

5.       再来一个全备份

 

NOTE: 在这个过程中,要常常Check v$logfile & v$log;

 

 

5.9    利用OMF(Oracle Managed Files) 来管理联机重做日志文件

 

SQL> alter system set DB_CREATE_ONLINE_LOG_DEST_1='D:\Disk3';

系统已更改。

 

SQL> alter system set DB_CREATE_ONLINE_LOG_DEST_2='D:\Disk6';

系统已更改。

 

SQL> alter system set DB_CREATE_ONLINE_LOG_DEST_3='D:\Disk9';

系统已更改。

 

SQL> alter database add logfile;

数据库已更改。

 

SQL> alter database drop logfile group 4;

数据库已更改。

 

 

 

 

 

 

 

 

 

posted on 2009-08-23 16:59  丁保国  阅读(287)  评论(0编辑  收藏  举报