产生归档日志的条件:
1.数据库必须运行在归档模式下,
2.归档进程必须启动.
--------------++归档常用命令指南++----------------
查看当前数据库是否是归档模式:
select name,log_mode from v$database;
查看当前数据库的归档进程是否启动:
select archiver from v$instance; --started,stoped
禁止自动归档:
alter system archive log stop;
手动归档联机重做日志文件:
alter system archive log current;
指定多个归档日志目标:
alter system set log_archive_dest_1="location=C:\xx\归档目录名" --本地磁盘
alter system set log_archive_dest_2="service=192.168.1.111:/Oracle/归档目录名" --远端备用数据库
将归档位置设置为 mandatory 或 optional (在出现故障之后、重试之前定义时间):
alter system set log_archive_dest_1="location=C:\xx归档目录名 mandatory reopen" --发生故障后,经过300秒后必须重新尝试归档到目标(缺省300秒)
alter system set log_archive_dest_2="service=192.168.1.111:/Oracle/归档目录名 mandatory reopen=600" --发生故障后,经过600秒后必须重新尝试归档到目标
alter system set log_archive_dest_3="location=C:\xx\目录名 optional" --即使联机重做日志文件尚未成功地归档到该目标,也可以重新使用(这是缺省设置).
控制归档到目标:
alter system set log_archive_dest_state_2=defer; --禁用归档目标
alter system set log_archive_dest_state_3=enable; --重新启动归档(默认)
获取归档日志信息:
v$archived_log --归档日志
v$archive_dest --归档目录
v$log_history --归档历史
v$database --数据库
v$archive_processes --归档进程
SQL>archive log list;
手动归档: alter system archive log start;
停止归档: alter system archive log stop;
切换归档: alter system archive log current;
---------------------------------------------------
实验:
数据库非归档转化为归档模式:
1.SQL>shutdown immediate; --关闭DB
2.找到pfile文件添加以下信息(先备份pfile): --E:\Oracle\product\10.2.0\db_1\database\initorcl.ora
*.log_archive_start=true --在例程启动时启动自动归档 true/false(自动/手动归档)
--(动态参数)也可在DB mount时用 alter system archive log start; 来设置
*.log_archive_max_processes=2 --停止或启动附加归档进程(最多10个)
--(动态参数)也可用 alter system set log_archive_max_processes=2; 来设置
--在事务处理负载重或活动较多的时期,可临时启动更多归档进程以避免归档瓶颈.
*.log_archive_dest_1="LOCATION=E:\Oracle\product\10.2.0\test\archive1"
*.log_archive_dest_2="LOCATION=E:\Oracle\product\10.2.0\test\archive2"
*.log_archive_dest_3="LOCATION=E:\Oracle\product\10.2.0\test\archive3"
*.log_archive_min_succeed_dest=2 --指定本地目标的最小数量
*.log_archive_format=db01%s%t%r.arc --指定归档文件名格式(%s:包括日志序列号;%t:包括线程号;)
3.SQL>startup monut; --mount 数据库.
SQL>archiver log list --检查归档进程的状态
SQL>alter system archive log start to 'c:\xx\xxx\归档目录名'; --手动启动归档进程
4.SQL>alter database archiverlog; --修改成归档模式
5.SQL>alter database open; --打开DB
SQL>select name from v$archived_log;
SQL>select desc_name,status from v$archived_log;
SQL>col dest_name format a30
SQL>archive log list;
SQL>alter system switch logfile;
SQL>alter system switch logfile;
6.删除归档日志:
(1).开始菜单-->运行--> cmd --> rman target/
(2).RMAN>delete archivelog all completed before 'sysdata-7'; --删除7天前的失效的归档日志
(3).RMAN>crosscheck archivelog all;
(4).RMAN>delete expired archivelog all;
------------------------------------------------------
Oracle 正确删除归档并回收空间的方法:
Oracle归档日志经常满,表现为/oraarchive 这个文件空间占用100%.Oracle有相应的归档维护工具,可以正确的删除归档和FLASHBACK,不过,Oracle归档日志对于Oracle的数据恢复和备份非常重要,不到万不得已是不能删除归档日志。
删除归档日志的。
过程:
以Oracle用户身份登录到数据库服务器主机或通过网络连接
进入Oracle数据备份工具
rman target/
或rman target/@orcl
在命令窗口里面执行
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
说明:
SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。
同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库
DELETE ARCHIVELOG FROM TIME 'SYSDATE-7';
UNIX/LINUX下也可以通过FIND找到7天前的归档数据,使用EXEC子操作删除
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;
这样做仍然会在RMAN里留下未管理的归档文件
仍需要在RMAN里执行下面2条命令
crosscheck archivelog all;
delete expired archivelog all;
所以还不如上面的方法好用,不过用FIND的好处就是,可以在条件上,和EXEC子项上做很多操作,实现更复杂的功能
3.简要介绍一下report obsolete命令
使用report obsolete命令报告过期备份、
RMAN> report obsolete;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21021875/viewspace-623236/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21021875/viewspace-623236/