oracle日志文件的整理

在上大学期间王强老师的课程中的整理以及修改,对日志文件的管理讲解很详细,

一、增加日志组

实例1:为oracle数据库增加一个重做日志组,组号自动分配,组中包含两个日志成员,大小为10M,并查询动态性能视图确定能否成功。操作步骤如下:

1. 以系统管理员身份登入:

      sqlplusw   sys/jlfx  as  sysdba

sqlplusw  sys/wangwang as sysdba


2. 增加日志组:

      alter database jlfx add logfile ('d:\log\log4a.log','d:\log\log4b.log') size 10M;

alter database dog  add logfile ('d:\log\log4a.log','d:\log\log4b.log') size 10M;


3. 查询日志信息(包括组号,成员数,成员,每个成员的大小)


SQL> col member format a50

SQL> select a.group#,a.members,a.bytes,b.member from v$log a, v$logfile b where a.group#=b.group#;


GROUP#    MEMBERS      BYTES                          MEMBER

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

3          1       10485760       D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO03.LOG

   2          1       10485760       D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO02.LOG

1          1       10485760       D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO01.LOG

SQL> select group#,member from v$logfile;

GROUP#           MEMBER

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

    3    D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO03.LOG

    2    D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO02.LOG

    1    D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO01.LOG


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


   GROUP#    MEMBERS      BYTES

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

        1          1          10485760

        2          1          10485760

        3          1          10485760



实例2:为oracle数据库再增加一个重做日志组,指定组号,组中包含两个日志成员,大小为10M,并查询动态性能视图确定能否成功操作步骤如下:

1. 以系统管理员身份登入:

      sqlplusw   sys/jlfx  as  sysdba


2. 增加日志组:

      SQL> alter database jlfx add logfile group 5 ('d:\log\log5a.log','d:\log5b.log') size 10M;

      SQL> alter database dog add logfile group 5 ('d:\log\log5a.log','d:\log5b.log') size 10M;


3. 查询日志信息:

      SQL> col member format a50

      SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group# order by a.group#;

SQL> select group#,member from v$logfile;

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


二、增加日志成员

实例3:为oracle服务器的第4个重做日志组增加一个日志成员"log4c.lg".

操作步骤如下:

1. 以系统管理员身份登入:

      sqlplusw   sys/jlfx  as  sysdba


2. 增加日志成员:

      SQL> alter database  jlfx add logfile member 'd:\log\log4c.log' to group 4;

SQL> alter database  dog add logfile member 'd:\log\log4c.log' to group 4;

3. 查询日志信息:

      SQL> col member format a50

      SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;

SQL> select group#,member from v$logfile;(显示用户数据库日志组和成员)

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


练习:为每个日志组添加一个日志成员。



三、删除日志组(注意:current/active状态下或只有两个日志组都不能删除该日志组)

实例4:删除日志组4

操作步骤如下:

1. 以系统管理员身份登入:

      sqlplusw   sys/jlfx  as  sysdba


2. 查看日志组的状态(只有INACTIVEUNUSED状态的可删除)

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


3. 删除日志组4(下面的命令只是逻辑删除,要物理删除得用os命令)

      SQL> alter database jlfx drop logfile group 4;

      SQL> alter database dog drop logfile group 4;

此时不能再往日志组4中添加成员,如:

      alter database  dog add logfile member 'd:\log\log4d.log' to group 4;

出现错误信息:

1 行出现错误:

      ORA-00359: 日志文件组 4 不存在


如果2号日志组是当前日志组,执行删除2号日志组的操作,则会出现错误。

SQL> alter database dog drop logfile group 2;

错误提示信息如下:

alter database dog drop logfile group 2

*

1 行出现错误:

ORA-01623: 日志 2 是实例 dog (线程 1) 的当前日志 - 无法删除

ORA-00312: 联机日志 2 线程 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DOG\REDO02.LOG'


4. 查询日志信息:

      SQL> col member format a50

      SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;

SQL> select group#,member from v$logfile;

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




四、删除日志成员(注意:current状态下或日志组中只有一个日志成员时不能删除)

实例5:删除日志组5中的第2个日志组成员

操作步骤如下:

1. 以系统管理员身份登入:

      sqlplusw   sys/jlfx  as  sysdba


2. 查看日志组的状态

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


3. 删除日志组4中的第23个日志组成员

      SQL> alter database dog drop logfile member 'd:\log\log4b.log', 'd:\log\log4c.log';


4. 查询日志信息:

      SQL> col member format a50

      SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;

SQL> select group#,member from v$logfile;

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


注意:日志组中只有一个日志成员时不能删除,如:

      SQL> alter database dog drop logfile member 'd:\log\log4a.log';

此时,出现如下信息:

1 行出现错误:

      ORA-00361: 无法删除最后一个日志成员 d:\log\log4a.log ( 4)



五、清空重做日志

实例6:清空重做日志组4

操作步骤如下:

1. 以系统管理员身份登入:

      sqlplusw   sys/jlfx  as  sysdba

2. 关闭数据库

      SQL> shutdown immediate

删除4号日志组的所有成员,再启动则出现错误:

3. 启动数据库

SQL> startup

ORACLE 例程已经启动。

错误提示信息如下:

Total System Global Area  285212672 bytes

Fixed Size                  1248552 bytes

Variable Size              71303896 bytes

Database Buffers          205520896 bytes

Redo Buffers                7139328 bytes

数据库装载完毕。

ORA-00313: 无法打开日志组 4 (用于线程 1) 的成员

ORA-00312: 联机日志 4 线程 1: 'D:\LOG\LOG4A.LOG'

ORA-00312: 联机日志 4 线程 1: 'D:\LOG\LOG4C.LOG'

ORA-00312: 联机日志 4 线程 1: 'D:\LOG\LOG4B.LOG'


查看数据库的启动状态:

SQL> select status from v$instance;

直接启动数据库到加载状态(特别注意)

      SQL> startup  mount

4. 清空重做日志组4,恢复该日志组的成员

      SQL> alter database  clear logfile  group 4;


5. 查询日志信息:

      SQL> col member format a50

      SQL> select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;

SQL> select a.group#,a.status,a.members from v$log a,v$logfile b where a.group#=b.group#;

6.改变日志的模式

SQL> alter system switch logfile;


六、移动日志文件

实例7:移动日志文件,观察日志文件丢失时的现象,并重新定位。

操作步骤如下:

1. 以系统管理员身份登入:

      sqlplusw   sys/jlfx  as  sysdba

2. 关闭数据库

      shutdown

3. 物理移动日志成员到目标位置

将文件d:\oracle\product\10.2.0\oradata\jlfx\REDO03.log 移动到 d:\REDO03.log;

4. 打开数据库

      startup;

5. 执行rename命令,重新定位日志文件

      alter  database  jlfx  rename  file 'd:\oracle\product\10.2.0\oradata\jlfx\REDO03.log' to 'd:\REDO03.log';

alter  database  dog  rename  file 'd:\log\log4b.log' to 'd:\log4b.log';


6. 打开数据库

      alter database open;

7. 查询日志信息:

      col member format a50

      select a.group#,a.status,a.members,a.bytes,b.member from v$log a,v$logfile b where a.group#=b.group#;


七、手工日志切换

实例8:强制切换日志,显示日志状态

操作步骤如下:

1. 以系统管理员身份登入:

      sqlplusw   sys/jlfx  as  sysdba

2. 查看日志组的状态

      select group#,sequence#,members,status from v$log;

3. 手工日志切换(open状态下操作)

      alter system switch logfile;

4. 查看日志组及成员的状态

      select group#,sequence#,members,status from v$log;


八、日志归档(归档模式:archivelog,非归档模式:noarchivelog)

注意:数据库只有在加载状态下才能修改日志模式

实例9:查看数据库的日志操作模式,然后将数据库修改为归档模式

操作步骤如下:

1. 以系统管理员身份登入:

      sqlplusw   sys/jlfx  as  sysdba

2. 关闭数据库,然后加载数据库

      shutdown immediate

      startup mount

3. 查看归档模式

      archive log list;

select  name,log_mode  from  v$database;

4. 修改归档模式

      alter database archivelog(开启数据库的归档模式)

      alter database noarchivelog(关闭数据库的归档模式)



你可能感兴趣的:(oracle,database,member,wangwang)