问的问题
- 看了一下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;
之后,在此基础上为这组日志再添加一个成员。
SQL> alter database add logfile member 'D:\ORACLE\ORADATA\ORCL\REDO04-3.LOG' to group 4;
数据库已更改。
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操作两次了