日志操作模式:ARCHIVELOG NOARCHIVELOG
oralce 的归档日志可以随意删除吗?
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 /opt/oracle/archive_log
最早的联机日志序列 59
下一个存档日志序列 61
当前日志序列 61
那么以前的归档日志可以用OS命令随意删除吗?要是不能,为什么?要是能,对数据恢复有影响吗?
可以用RMAN命令删除,会自动删除物理文件,不可以用OS命令删除。
archive log list;
显示日志模式列表,
1,改变日志操作模式:
检查当前日志操作模式
SELECT log_mode from v$database;
关闭数据库,然后装载数据库
SHUTDOWN IMMEDIATE
STARTUP MOUNT
改变日志操作模式,然后打开数据库
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
2、显示归档日志信息
SELECT name,log_mode FROM v$database;
显示归档日志信息.
Select name, sequence#, first_change# FROM v$archived_log;
显示日志历史信息
SELECT * FROM v$loghist;
显示归档进程信息.
SELECT * FROM v$archive_processes;
1,切换日志文件:
1.1, 切换前:
SQL> select group#,sequence#,bytes,members,status from v$log;
GROUP# SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
1 215 52428800 1 CURRENT
2 213 52428800 1 INACTIVE
3 214 52428800 1 INACTIVE
1.2 切换日志文件
SQL> alter system switch logfile;
1.3 切换后:
SQL> select group#,sequence#,bytes,members,status from v$log;
GROUP# SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
1 215 52428800 1 ACTIVE
2 216 52428800 1 CURRENT
3 214 52428800 1 INACTIVE
2,强制checkpoint:
SQL> alter system checkpoint;
3,坚持数据库日志模式(归档模式或非归档模式)
SQL> archive log list
3,切换到归档/非归档模式
SQL> startup mount
SQL> alter database archivelog/noarchivelog
SQL> alter database open;
4,显示当前归档日志组和成员:
SQL> select GROUP#,member from v$logfile;
5,添加redo log组:
5.1 SQL> alter database add logfile group 4 ('/oracle/oradata/orcl/redo04.log') size 4m;
5.2 检查新加入的log状态
SQL> select group#,sequence#,bytes,members,status from v$log;
GROUP# SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
1 215 52428800 1 INACTIVE
2 216 52428800 1 CURRENT
3 214 52428800 1 INACTIVE
4 0 4194304 1 UNUSED
(虽然这里是UNUSED的状态,但是通过切换日志文件或者数据库自动切换,该文件会被改为active状态)
6,添加新的文件到group 1
SQL> alter database add logfile member '/oracle/oradata/orcl/redo05.log' to group 1;
SQL> select group#,sequence#,bytes,members,status from v$log;
GROUP# SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
1 219 52428800 2 CURRENT
2 216 52428800 1 ACTIVE
3 218 52428800 1 ACTIVE
4 217 4194304 1 ACTIVE
这里的group组中的member就变为2;
SQL> select member from v$logfile where group#=1;
MEMBER
-----------------------------------------------------------------------------
/oracle/oradata/orcl/redo01.log
/oracle/oradata/orcl/redo05.log
7,给数据库日志文件改名
SQL> alter database rename file '/oracle/oradata/orcl/redo05.log' to '/oracle/oradata/orcl/redo06.log';
这里如果数据库是当前被使用的,无法改名;如果redo06.log文件不存在,数据库无法获得其信息,无法改名,数据库文件如果已经存在在数据库中,无法改名(可以先创建号固定大小的数据库文件改名)
8, 删除新增的group 4
SQL> alter database drop logfile group 4;
9,删除新增的group 1的logfile;
SQL> alter database drop logfile member '/oracle/oradata/orcl/redo06.log';
10,清空logfile:
SQL> alter database clear logfile '/oracle/oradata/orcl/redo01.log'
SQL> select group#,sequence#,bytes,members,status from v$log;
GROUP# SEQUENCE# BYTES MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
1 0 52428800 1 UNUSED
2 220 52428800 1 CURRENT
3 218 52428800 1 INACTIVE
#########################################################################################3
查询归档日志文件状态:
select group#,status,type,member,IS_RECOVERY_DEST_FILE from v$logfile;
查询归档日志文件所在目录和文件名
select group#,status,type,member,IS_RECOVERY_DEST_FILE from v$logfile;
如何查看归档日志路径?
SQL> show parameter RECOVERY;
3,显示归档日志信息.
Col name format a40
Select name, sequence#, first_change# FROM v$archived_log;
Name用于表示归档日志文件名,sequence#用于表示归档日志对应的日志序列号,firs_change#用于标识归档日志的起始SCN值.