Oracle 归档日志管理
Oracle 数据库将运行过程中所产生的日志不断写入日志文件,导致日志组的循环使用。在一个日志组被覆盖之前,Oracle 首先复制该日志组到其他位置进行备份,这个备份文件即为归档日志,备份过程就是归档过程。Oracle 为此操作派生了专门的归档后台进程 ARCn 。当LGWR操作导致日志组切换后,ARCH 进程会将已完成的联机日志复制到归档区域进行备份。
--查看归档日志路径
archive log list
select name from v$archived_log;
--查看归档日志格式,默认格式是:%t_%s_%r.dbf
show parameter log_archive_format
--查看是否开启闪回区
select flashback_on from V$database;
--查看归档日志路径
select dest_id,status,destination from v$archive_dest where status !='INACTIVE';
--查看开启几个归档进程,最多30个
select * from v$archive_processes;
--更改归档日志路径,尽量不和闪回区放在一起
alter system set log_archive_dest_1='location=/arch1' scope=both;
--归档日志切换
alter system switch logfile;
以下在进入rman 操作
rman target /
show all: //显示 rman 备份环境配置
report need backup redundancy 2 database; //报告备份集信息
list backup of database; //列出都备份了数据库哪些内容
list backup of archivelog all; //列出所有归档文件
list archivelog all; //查看现有的归档日志
list expired archivelog all; //查看过期的归档
backup database; //备份数据库
recover database; //恢复数据库
crosscheck archivelog all; //交叉校验备份集可用状态
delete expired archivelog all; //删除所有的无效日志
list backup of archivelog all completed before 'sysdate-1'; // 列出3天前的归档日志
delete archivelog all completed before 'SYSDATE-3'; // 删除3天前的归档日志
delete noprompt force archivelog all completed before 'sysdate-3'; //上面方法有时删不掉,强制删除
清理表空间
先进入归档目录下,删除掉早些时间生成的归档,然后进入rman中:
crosscheck archivelog all;
delete archivelog until time 'sysdate'; --删除所有日志
delete expired archivelog all;
这样,归档的目录的空间就被清理出来了。
归档日志的恢复
如果归档方式是rac各节点本地存储,各自保存自己的归档日志,在恢复时要手工将归档文件复制到要进行恢复的节点。
RMAN进程管理
--查看rman备份进度
SELECT inst_id,
sid,
serial#,
opname,
ROUND(SOFAR / TOTALWORK * 100, 2) "%_COMPLETE"
FROM gV$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%'
--AND OPNAME NOT LIKE '%aggregate%'
AND TOTALWORK != 0
AND SOFAR <> TOTALWORK;
--查看rman 系统进程号SPID
SELECT sid, spid, client_info
FROM v$process p, v$session s
WHERE p.addr = s.paddr
AND client_info LIKE '%rman%';