JMU Oracle 实验五

问的问题

  • 看了一下log和logfile,就是重做日志组和日志文件的地址信息
  • 看了归档的地址
  • 如何执行归档,就是switch那个语句

1. 查询Oracle数据库当前使用的联机重做日志文件组及成员信息

  • v$log:记录有关重做日志文件组相关的信息。

  • v$logfile:记录有关重做日志文件成员的信息,比如日志成员的路径和名称。

  • GROUP#:日志组的编号

  • SEQUENCE#:日志序列号

  • MEMBERS :组成员数

  • STATUS:重做日志文件组的状态

    • ACTIVE:有效状态,指实例恢复时要用这组重做日志文件
    • CURRENT:当前状态,指LGWR(服务器进程)当前正在写入这组日志文件
    • INACTIVE:无效状态,实例恢复不再需要这组日志文件CLEARING。说明执行ALTER DATABASE CLEAR LOGENLE语句后,系统正在清除重做日志文件中的内容
    • UNUSED:未使用过。新添加的重做日志文件组或者被清空之后的重做日志文件组。
SQL> desc v$log
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 GROUP#                                             NUMBER
 THREAD#                                            NUMBER
 SEQUENCE#                                          NUMBER
 BYTES                                              NUMBER
 BLOCKSIZE                                          NUMBER
 MEMBERS                                            NUMBER
 ARCHIVED                                           VARCHAR2(3)
 STATUS                                             VARCHAR2(16)
 FIRST_CHANGE#                                      NUMBER
 FIRST_TIME                                         DATE
 NEXT_CHANGE#                                       NUMBER
 NEXT_TIME                                          DATE
 CON_ID                                             NUMBER
# 查询数据库中的重做日志组
SQL> select GROUP#,SEQUENCE#,MEMBERS,STATUS from v$log;

    GROUP#  SEQUENCE#    MEMBERS STATUS
---------- ---------- ---------- --------------------------------
         1         40          1 CURRENT
         2         38          1 INACTIVE
         3         39          1 INACTIVE

SQL> desc v$logfile
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 GROUP#                                             NUMBER
 STATUS                                             VARCHAR2(7)
 TYPE                                               VARCHAR2(7)
 MEMBER                                             VARCHAR2(513)
 IS_RECOVERY_DEST_FILE                              VARCHAR2(3)
 CON_ID                                             NUMBER

SQL> select GROUP#,MEMBER from v$logfile;

    GROUP#    MEMBER
---------- ------------------------------------------------------
         3   D:\ORACLE\ORADATA\ORCL\REDO03.LOG
         2   D:\ORACLE\ORADATA\ORCL\REDO02.LOG
         1   D:\ORACLE\ORADATA\ORCL\REDO01.LOG

2. 在现有日志文件基础上添加一组重做日志,该组日志的成员自定。之后,在此基础上为这组日志再添加一个成员。

SQL> alter database add logfile group 4 ('D:\ORACLE\ORADATA\ORCL\REDO04-1.LOG','D:\ORACLE\ORADATA\ORCL\REDO04-2.LOG') size 10M;

数据库已更改。

# 用sql语句查也行,我直接打开文件夹
select group#,member from v$logfile;

JMU Oracle 实验五_第1张图片
之后,在此基础上为这组日志再添加一个成员。

SQL> alter database add logfile member 'D:\ORACLE\ORADATA\ORCL\REDO04-3.LOG' to group 4;

数据库已更改。

JMU Oracle 实验五_第2张图片

3. 把上一步添加的日志组内的一个成员移动到另一个硬盘Es

# 1. 先关闭现有数据库
SQL> shutdown immediate
# 2. 用操作系统命令移动或重命名日志文件
SQL> host move D:\ORACLE\ORADATA\ORCL\REDO04-3.LOG E:\oracle_record\REDO04-3.LOG
移动了         1 个文件。
# 3. 把数据库启动到mount状态但不打开
SQL> startup mount
# 4. 调用alter database语句,完成重命名操作
SQL> alter database rename file 'D:\ORACLE\ORADATA\ORCL\REDO04-3.LOG' to 'E:\oracle_record\REDO04-3.LOG';

数据库已更改。

4. 查询以上操作后数据库内的重做日志组和成员信息

SQL> select GROUP#,SEQUENCE#,MEMBERS,STATUS from v$log;

    GROUP#  SEQUENCE#    MEMBERS STATUS
---------- ---------- ---------- --------------------------------
         1         40          1 CURRENT
         2         38          1 INACTIVE
         3         39          1 INACTIVE
         4          0          3 UNUSED


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

    GROUP# MEMBER
---------- -----------------------------------
         1 D:\ORACLE\ORADATA\ORCL\REDO03.LOG
         2 D:\ORACLE\ORADATA\ORCL\REDO02.LOG
         3 D:\ORACLE\ORADATA\ORCL\REDO01.LOG
         4 D:\ORACLE\ORADATA\ORCL\REDO04-1.LOG
         4 D:\ORACLE\ORADATA\ORCL\REDO04-2.LOG
         4 E:\ORACLE_RECORD\REDO04-3.LOG

5. 查询数据库当前归档模式,之后把数据库从非归档模式修改为归档模式

  • 要改变归档模式,数据库首先必须处在MOUNT状态。
# 查询数据库当前归档模式
SQL> select name,log_mode from v$database;

NAME               LOG_MODE
------------------ ------------------------
ORCL               NOARCHIVELOG


# 修改初始化参数,指定归档位置和归档日志文件地命名方式(明明方式没改,默认就好了)
SQL> alter system set log_archive_dest = 'D:\ORACLE\ORADATA\archive';

系统已更改。

SQL> alter system set log_archive_duplex_dest = 'D:\ORACLE\archive';

系统已更改。

# 关闭数据库,重新启动到mount状态
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 5100270616 bytes
Fixed Size                  9278488 bytes
Variable Size            1006632960 bytes
Database Buffers         4076863488 bytes
Redo Buffers                7495680 bytes
数据库装载完毕。

# 修改为归档模式
SQL> alter database archivelog;

数据库已更改。
# 打开数据库(用户可访问)
SQL> alter database open;

数据库已更改。
# 查看修改结果
SQL> select name,log_mode from v$database;

NAME               LOG_MODE
------------------ ------------------------
ORCL               ARCHIVELOG

SQL> archive log list
数据库日志模式            存档模式
自动存档             启用
存档终点            D:\ORACLE\archive
最早的联机日志序列     38
下一个存档日志序列   40
当前日志序列           40

6. 创造条件让数据库归档,之后查看归档是否成功

  • 发生日志切换会进行归档
SQL> alter system switch logfile;

系统已更改。

我执行切换loggfile操作两次了
JMU Oracle 实验五_第3张图片

你可能感兴趣的:(Oracle,oracle)