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%';

 

posted @ 2020-08-01 11:01  莫让年华付水流  阅读(507)  评论(0编辑  收藏  举报