4_1_Oracle逻辑结构篇之重做日志和归档日志管理-日志文件增加日志组、重定位、删除重做日志、清除重做日志

增加日志组

要创建一个新的联机重做日志文件组,请使用下面的SQL 命令:
ALTER DATABASE [database] ADD LOGFILE [GROUP integer] filespec [, [GROUP integer] filespec]...]
可以通过filespec 来指定成员名称和位置。可以选择每个重做日志文件组的GROUP 参数值。如果省略了该参数,Oracle 服务器自动生成其值。
SQL> alter database add logfile group 1 ('/u01/app/oracle/oradata/orcl/redo01a.log', '/u01/app/oracle/oradata/orcl/redo01b.log') size 8m;
增加日志成员
有时,DBA 可能需要为已有重做日志组添新的成员日志文件,比如,由于某个磁盘损坏,导致每个重做日志组都丢失了一个成员日志文件,这时,需通过手工方式为每重做日志组增加一个新日志成员文件。可以使用下面的ALTER DATABASE ADD LOGFILE MEMBER
命令向现有的重做日志文件组添加新成员,命令格式如下:
ALTER DATABASE [database] ADD LOGFILE MEMBER [ 'filename' [REUSE][, 'filename' [REUSE]]...TO {GROUP integer|('filename'[, 'filename']...)}]...
最好使用日志文件成员的绝对路径名;否则将在数据库服务器缺省目录下创建该文件。
如果该文件已经存在,其大小必须与指定值相同,并且必须指定REUSE 选项。可以通过指定一个或多个组内成员或者指定组号来识别目标组。

SQL> alter database add logfile member '/u01/app/oracle/oradata/orcl/redo01c.log' to group 1;

日志文件重定位

在重做日志文件创建以后,有时还需改变它们名称和位置,假设原来数据库系统中只有一个硬盘,因此重做日志的所有成员都保存在同一个硬盘中,后来又增加一个硬盘,这时可将重做日志组中的一部分成员移动到新的硬盘中。有两种方法可实现重定位或重命名重做日
志文件:
1)ALTER DATABASE RENAME FILE 命令。
2)添加新成员并删除旧成员。

使用ALTER DATABASE RENAME FILE 命令的步骤如下:

1)关闭数据库
2)使用操作系统命令COPY 重做日志文件到新位置
3)启动数据库到mount 状态
4)执行ALTER DATABASE RENAME FILE 命令
5)打开数据库

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> !mv '/u01/app/oracle/oradata/orcl/redo01.log' '/u01/app/oracle/arch/log/redo01.log'

SQL> startup
ORACLE instance started.

Total System Global Area  368263168 bytes
Fixed Size                  1345016 bytes
Variable Size             255855112 bytes
Database Buffers          104857600 bytes
Redo Buffers                6205440 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 24106
Session ID: 1 Serial number: 5

SQL> exit    
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@ocm ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Mon Jul 24 22:30:09 2017

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup mount
ORACLE instance started.

Total System Global Area  368263168 bytes
Fixed Size                  1345016 bytes
Variable Size             255855112 bytes
Database Buffers          104857600 bytes
Redo Buffers                6205440 bytes
Database mounted.
SQL> alter database rename file '/u01/app/oracle/oradata/orcl/redo01.log' to '/u01/app/oracle/arch/log/redo01.log';

Database altered.

SQL> alter database open ;

Database altered.

删除重做日志

如果日志组尺寸设置不合理,需要改日志组尺寸,但是ORACLE 数据库中,已存在的日志组的尺寸是不能改变的,这时可通过增加新日志组,然后删除原有的日志组来实现改变日志组尺寸的目的。如果某个重做日志组不再需要使用,也可以将整个重做日志组删除。删除一个重做日志组时,其中成员日志文件将都被删除。在删除重做日志组之前,应首先考虑如下几个问题:
• 无论组中有多少成员,一个数据库至少需要使用两个重做日志组,因此,如果在数据库中只包含两个日志组时,不能进行删除日志组的操作。
• 只能删除处于INACTIVE 状态的重做日志组,如果要删除CURRENT 状态的重做日志组,必须执行一次手工日志切换,将它切换到INACTIVE 状态。
• 如果数据库处于归档模式下,在删除重做日志组之前,必须确定它已经被归档。

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

    GROUP# ARC STATUS
---------- --- ----------------
         1 YES INACTIVE
         2 YES INACTIVE
         3 NO  CURRENT
         4 YES INACTIVE
         5 YES INACTIVE
         6 YES INACTIVE

6 rows selected.

SQL> alter database drop logfile group 1;

Database altered.

SQL> alter database drop logfile group 2;

Database altered.

SQL> alter database drop logfile group 4;

Database altered.

SQL> alter database drop logfile group 6;

Database altered.

若要增大或者减小联机重做日志文件组的大小,请添加新的联机重做日志文件组(具有新的大小),然后删除原来日志组。

注意:删除日志组时并不删除操作系统文件。

除了需要删除重做日志组外,更为常见的情况是仅需要删除重做日志组中的某个成员日志文件。比如,由于存放日志文件的硬盘发生物理损坏导致日志成员发生损坏或丢失时,该日志成员将无法访问,此时需要将它从重做日志组中删除。如果要删除一个或多个特定的联机重做日志文件

SQL> set linesize 300
SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                                       IS_
---------- ------- ------- ------------------------------------------------------------ ---
         3         ONLINE  /u01/app/oracle/oradata/orcl/redo03.log                      NO
         5         ONLINE  /u01/app/oracle/oradata/orcl/redo05a.log                     NO
         5         ONLINE  /u01/app/oracle/oradata/orcl/redo05b.log                     NO


SQL> alter database drop logfile member '/u01/app/oracle/oradata/orcl/redo05b.log';

Database altered.

删除日志组成员有如下限制:
• 如果要删除的日志组只包含一个成员或者只包含一个有效的成员时,那么不能删除该成员。
• 如果该组是当前组,那么必须先强制执行日志文件切换,然后才能删除该成员。
• 如果数据库正运行在ARCHIVELOG 模式下并且未将该成员所属日志文件组归档,那么无法删除该成员。

清除重做日志

在数据库运行过程中,联机重做日志文件可能会因为某些原因而损坏。如果出现这种情况,数据库最终会由于无法将损坏的重做日志文件归档而停止。或者当一个联机重做日志文件组中的所有成员都已经被破坏时,数据库会因为无法切换到损坏的日志组而停止。如果发生种情况,可以在不关闭数据库情况下,手工清空损坏的重做日志文件的内容,以避免出现
停止运行的情况。
清空重做日志文件就是将重做日志文件中的内容全部初始化,相当于删除该重做日志文件,然后各方面重建它。即使数据库只拥有两个重做日志组,或者要清空的重做日志组是当前日志组,都可以成功执行清空操作。

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                                       IS_
---------- ------- ------- ------------------------------------------------------------ ---
         3         ONLINE  /u01/app/oracle/oradata/orcl/redo03.log                      NO
         5         ONLINE  /u01/app/oracle/oradata/orcl/redo05a.log                     NO

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

    GROUP# ARC STATUS
---------- --- ----------------
         3 NO  CURRENT
         5 YES INACTIVE

SQL> alter database clear logfile group 5;

Database altered.

-- 如果日志组5 尚未归档,则必须指定UNARCHIVED 子句。指定UNARCHIVED 子句后,Oracle 将避免对5 号日志组进行归档。

SQL> alter database clear unarchived logfile group 5;

Database altered.

在数据库打开时不能清除当前日志组,为了清除当前日志组,可以对日志进行切换或将数据库置成MOUNT 状态。

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

    GROUP# ARC STATUS
---------- --- ----------------
         3 NO  CURRENT
         5 YES INACTIVE

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  368263168 bytes
Fixed Size                  1345016 bytes
Variable Size             255855112 bytes
Database Buffers          104857600 bytes
Redo Buffers                6205440 bytes
Database mounted.
SQL> alter database clear unarchived logfile group 3;

Database altered.

SQL> alter database open;

Database altered.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容