原文地址:http://blog.itpub.net/15415488/viewspace-594659/

关于admin guide中v$archive_dest的status这一列有好7种值,文档说得太抽象,于是本文做了一部分实验来看看这些值到底在什么情况下会显示。

VALID -- The user has properly initialized the destination, which is available for archiving.

INACTIVE -- The user has not provided or has deleted the destination information.

ERROR -- An error occurred creating or writing to the destination file; refer to error data.

FULL -- Destination is full (no disk space).

DEFERRED -- The user manually and temporarily disabled the destination.

DISABLED -- The user manually and temporarily disabled the destination following an error; refer to error data.

BAD PARAM -- A parameter error occurred; refer to error data.

另外还有一种ALTERNATE 的status。

-------TEST begins----------

1.VALID很好理解,就是这个归档路径被申明了,并且有效。

mkdir -p /oracle/DDS/data01/haozhu/archive/tmp/

SQL> alter system set log_archive_dest_2='location=/oracle/DDS/data01/haozhu/archive/tmp/';

System altered.

SQL> select STATUS from v$archive_dest where DEST_ID=2;

STATUS
---------------------------
VALID

2.INACTIVE就是如文档所示,用户没有申明log_archive_dest_N,或者删除了log_archive_dest_N的信息。注意,这里并不是指删除了log_archive_dest_N所对应的文件路径。于是又两种情况会造成INACTIVE。

SQL> select distinct STATUS from v$archive_dest where DESTINATION is null;

STATUS
---------------
INACTIVE

我本来有一个alternate的归档目录log_archive_dest_2,当把它的信息删除后,status就成为INACTIVE了:

SQL> show parameter log_archive_dest_2

NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------------------------------------------------------------------
log_archive_dest_2                   string
location=/oracle/DDS/data01/haozhu/archive2/
SQL> select status from v$archive_dest where DEST_NAME='LOG_ARCHIVE_DEST_2';

STATUS
---------------------------
ALTERNATE

SQL> alter system set log_archive_dest_2='';

System altered.

SQL> select status from v$archive_dest where DEST_NAME='LOG_ARCHIVE_DEST_2';

STATUS
---------------------------
INACTIVE

3.ERROR 就是指oracle在开始归档时,对这个归档路径进行归档发生了一些错误。

如果你只是删除了某个归档目录,而oracle在此之后并没有进行归档,那么它不会发现这个目录是不是有存在。

所以ERROR都是在真正归档的时刻将问题暴露出来,并不表明此刻问题才发生。

SQL> alter system set log_archive_dest_2='location=/oracle/DDS/data01/haozhu/archive/tmp/';

System altered.

SQL> select STATUS from v$archive_dest where DEST_ID=2;

STATUS
---------------------------
VALID

rmdir tmp

SQL> select STATUS from v$archive_dest where DEST_ID=2;

STATUS
---------------------------
VALID

SQL> alter system switch logfile;

System altered.

SQL> select STATUS from v$archive_dest where DEST_ID=2;

STATUS
---------------------------
ERROR

alert log:
Errors in file /oracle/DDS/data01/haozhu/bdump/haozhu_arc0_7091.trc:
ORA-07286: sksagdi: cannot obtain device information.
SVR4 Error: 2: No such file or directory
Sat May  9 20:57:45 2009
Cannot translate archive destination string 'LOG_ARCHIVE_DEST_2'

重建这个目录,并不能使其成为VALID:

mkdir tmp

SQL>  alter system switch logfile;

System altered.

SQL> select STATUS from v$archive_dest where DEST_ID=2;

STATUS
---------------------------
ERROR

再次申明这个目录或者alter system set log_archive_dest_state_N=enable;才可以使其成为VALID:

SQL> alter system set log_archive_dest_2='location=/oracle/DDS/data01/haozhu/archive/tmp/';

System altered.

SQL> select STATUS from v$archive_dest where DEST_ID=2;

STATUS
---------------------------
VALID

再模拟另一种error,即将归档路径身为read only(chmod 444 tmp):

SQL> alter system switch logfile;

System altered.

SQL> select STATUS from v$archive_dest where DEST_ID=2;

STATUS
---------------------------
ERROR

alert log:
ORA-19504: failed to create file "/oracle/DDS/data01/haozhu/archive/tmp/haozhu_111.1_685267645_arc"
ORA-27037: unable to obtain file status
SVR4 Error: 13: Permission denied

如果直接enable这个归档路径,但是这个归档路劲其实仍然是只读的,但在下一次归档发生之前,oracle会暂时认为它的status是VALID的:

SQL> alter system set log_archive_dest_state_2=enable;

System altered.

SQL> select STATUS from v$archive_dest where DEST_ID=2;

STATUS
---------------------------
VALID

4.FULL很容易理解,就是这个归档路径mount point满了。但是有谁真正试过么?

我的环境有限,但是在测试机器上试了一把,发现当mount point满了时,显示的是ERROR而非FULL。

当然我没有在其他平台测试过,说不定不一样。我的测试平台是Oralce 10203 @ Solaris10 @ sparc

df -h|grep data04
107G   107G     0K   100%    /oracle/DDS/data04

SQL> alter system set log_archive_dest_3='location=/oracle/DDS/data04/';

System altered.

SQL>  select status from v$archive_dest where DEST_NAME='LOG_ARCHIVE_DEST_3';

STATUS
---------------------------
VALID

SQL> alter system switch logfile;

System altered.

SQL> select status,error from v$archive_dest where DEST_NAME='LOG_ARCHIVE_DEST_3';

STATUS
---------------------------
ERROR
----------------------------------------------------------------------------------------------------------------------------------
ERROR
ORA-19504: failed to create file ""

alert log:

Errors in file /oracle/DDS/data01/haozhu/bdump/haozhu_arc0_7091.trc:
ORA-19504: failed to create file "/oracle/DDS/data04/haozhu_144.1_685267645_arc"
ORA-27044: unable to write the header block of file
SVR4 Error: 28: No space left on device

5.DEFERRED就是指用户手动关掉了这个归档目录。如何手动关掉?这个是由log_archive_dest_state_N控制的。

关掉这个目录的归档后,oracle不会再往里写归档日志了。

From refrence:

--defer
--Specifies that valid destination information and attributes are preserved, 
--but the destination is excluded from archiving operations until re-enabled

SQL> alter system set log_archive_dest_state_2=defer;

System altered.

SQL> select STATUS from v$archive_dest where DEST_ID=2;

STATUS
---------------------------
DEFERRED

6.DISABLED的官方解释和DEFRRED很像,但是多了半句话“following an error; refer to error data”。

我测出的情况中,当一个拥有ALTERNATE的归档路径的归档路径出现ERROR之后,并且ENABLE了它的ALTERNATE归档路径之后,它自身变成DISABLED,而它的ALTERNATE的归档路径变成VALID。

在测试之前,我们需要测试什么情况下ALTERNATE的归档路径能够代替掉原来的路径呢?需要如何设置?

这里需要注意的是REOPEN参数如果你没有显式申明的话,那么它的默认值是300秒。当出错的情况发生后,oracle每300秒去检测一下这个路径。

跟REOPEN参数相关的另一个参数是MAX_FAILURE,它的默认值是0,也就是永远不会disable掉这个归档路径,无论发生了多少次ERROR在这上面。

所以,当我们需要使用ALTERNATE的归档路径,要么申明NOREOPEN,要么申明REOPEN和MAX_FAILURE到一个你可以接受的值。

只有当原来的归档路径在经历了你指定的若干次ERROR后,被disable掉后,它所对应的ALTERNATE归档路径开始生效,作为替代路径。

From refrence:

--alternate
--Specifies that a log archive destination is not enabled 
--but will become enabled if communications to another destination fail.

SQL> alter system set log_archive_dest_state_2=alternate;

System altered.

#给dest1指明noreopen,这样一旦出错,立马enable dest2.

SQL> alter system set log_archive_dest_1='location=/oracle/DDS/data01/haozhu/archive/ alternate=log_archive_dest_2 noreopen';

System altered.

SQL> select STATUS from v$archive_dest where DEST_ID<=2;

STATUS
---------------------------
VALID
ALTERNATE

chmod 444 archive            --这里将log_archive_dest_1的目录设为只读

SQL> alter system switch logfile;

System altered.

SQL> select STATUS from v$archive_dest where DEST_ID<=2;

STATUS
---------------------------
DISABLED
VALID

#重新chmod 777 archive,并且再次将dest1 enable,讲dest2设为alternate,来做第二次试验。

#这里设置reopen=1和max_failure=5,表明如果出错则每秒都检测一次dest1,如果一共出现5次error,则enable dest2

SQL>  alter system set log_archive_dest_1='location=/oracle/DDS/data01/haozhu/archive/ alternate=log_archive_dest_2 reopen=1 max_failure=5';

System altered.

chmod 444 archive
SQL>  alter system switch logfile;

System altered.

#这时虽然dest1已经出错,但是dest2还没有立即enable

SQL> /

STATUS
---------------------------
ERROR
ALTERNATE

#在alertlog里,当出现了五次这样的error后,dest2才成为valid,而dest1才disable
ARC1: Error 19504 Creating archive log file to '/oracle/DDS/data01/haozhu/archive/haozhu_135.1_685267645_arc'

SQL> /

STATUS
---------------------------
DISABLED
VALID

7.BAD PARAM这种情况我还没有模拟出来,因为错误的log_archive_dest_N参数根本就写不进oracle。

然而我在网上找到了两则案例,其中提到了这个情况。都是跟配置dataguard出错相关。

而且很具代表性,因为第一则情况BAD PARAM发生在从库上,第二则发生在主库上。

第一则:http://www.itpub.net/thread-1054909-1-1.html

作者配置dataguard时,在从库上设置DG_CONFIG时出错,导致了:

haozhu oracle@qadb27:/oracle/DDS/archive > oerr ora 16053
16053, 00000, "DB_UNIQUE_NAME %s is not in the Data Guard Configuration"
// *Cause:  The specified DB_UNIQUE_NAME is not in the Data Guard
//          Configuration.
// *Action: If the DG_CONFIG attribute of the LOG_ARCHIVE_CONFIG parameter
//          is enabled, you must specify a valid DB_UNIQUE_NAME.  The list
//          of valid DB_UNIQUE_NAMEs can be seen with the V$DATAGUARD_CONFIG
//          view.  This problem can also occur when specifying a non-standby
//          destination with an DB_UNIQUE_NAME attribute that does not match
//          the DB_UNIQUE_NAME initialization parameter for the current
//          instance.

第二则:http://www.itpub.net/thread-709839-1-1.html

作者设置了DG_CONFIG,但是主库的log_archive_dest_2缺少了DB_UNIQUE_NAME,导致了:

haozhu oracle@qadb27:/oracle/DDS/archive > oerr ora 16052
16052, 00000, "DB_UNIQUE_NAME attribute is required"
// *Cause:  The DB_UNIQUE_NAME attribute is required when DG_CONFIG is enabled.
// *Action: Use the DB_UNIQUE_NAME attribute to specify a valid Data Guard
//          Name for the destination.  The list of valid DB_UNIQUE_NAMEs can
//          be seen with the V$DATAGUARD_CONFIG view.

以上7点tips其实包括了status of v$archive_dest的八种值的实际发生的例子的情况。

肯定还有其他情况,欢迎其他XDJM补充~

STATUS of v$archive_dest的一些情况相关推荐

  1. 检测子进程的结束返回状态,status的取值可以是哪些?(简析)

    子进程的结束状态返回后存于status,底下有几个宏可判别结束情况 WIFEXITED(status)如果子进程正常结束则为非0值. WEXITSTATUS(status)取得子进程exit()返回的 ...

  2. vivado工程版本升级时相关IP版本IP Status显示Using cached IP results

    在将vivado工程升级时,例如从2018.2升级到2018.3时,部分IP版本可能升级到高版本,也有部分IP版本不用升级. 此时部分IP在综合后,在Design Runs中Status会显示Usin ...

  3. 9iDataGurad报ORA12154TNScouldnotresolveservicename

    原 9i Data Gurad 报ORA-12154: TNS:could not resolve service name 错误https://blog.csdn.net/tianlesoftwar ...

  4. Dataguard日常维护及故障解决

    Dataguard日常维护及故障解决 一.   dataguard环境要求 2.1数据库版本必须为企业版,版本最好在9i以上,主备库数据库的版本必须一致. 2.2 主备数据库所在操作系统版本以及位数要 ...

  5. Linux环境编程--waitpid与fork与execlp

    waitpid waitpid(等待子进程中断或结束) 表头文件 #include<sys/types.h> #include<sys/wait.h> 定义函数 pid_t w ...

  6. 1小时学会:最简单的iOS直播推流(七)h264/aac 硬编码

    最简单的iOS 推流代码,视频捕获,软编码(faac,x264),硬编码(aac,h264),美颜,flv编码,rtmp协议,陆续更新代码解析,你想学的知识这里都有,愿意懂直播技术的同学快来看!! 源 ...

  7. Mysql技术内幕——InnoDB存储引擎

    一.mysql体系结构和存储引擎 1.1.数据库和实例的区别 数据库:物理操作系统或其他形式文件类型的集合.在mysql下数据库文件可以是frm,myd,myi,ibd结尾的文件. 数据库实例:由数据 ...

  8. mysql 学习基础知识汇总

    DBMS模型: 层次模型 网状模型 关系模型 以文件来存取数据的困难:数据冗余和不一致性,数据访问困难,数据孤立,数据完整性问题,原子性问题,并发访问问题,安全性问题 XML(扩展标机语言) 关系模型 ...

  9. 带你重走 TiDB TPS 提升 1000 倍的性能优化之旅

    今天我们来聊一下数据库的性能优化,第一部分简单介绍一下性能优化的通用的方法,第二部分我们讲一个实际案例. 性能优化这个事情核心只有一句话,用户响应时间去哪儿了?性能优化很困难的原因在于,为了定位用户响 ...

  10. 7-22关于agriculture-mvc的理解与完善,通过关键字模糊查询

    2019独角兽企业重金招聘Python工程师标准>>> 配置文件中:有关客户端是手机还是电脑的判断(GoodsController.java) public String initG ...

最新文章

  1. [算法]链表的逆序遍历节点
  2. html5 滤色,深入理解CSS mix-blend-mode滤色screen混合模式
  3. java inflaterinputstream_java.util.zip.InflaterInputStream.available()方法示例
  4. jQuery——clone()方法
  5. undefined reference to `__errno‘ 解决办法
  6. 排列组合十一个性质公式及证明,错排数公式及证明
  7. anaconda 怎么安装xlrd_Pyinstaller打包,文件太大了怎么办?
  8. 用JavaScript实现网页图片等比例缩放
  9. html的标签位置属性(学习笔记)
  10. jsTree工作笔记001---jsTree的基本使用_js实现树形结构
  11. 【2019杭电多校第二场1005 = HDU6595】Everything Is Generated In Equal Probability(期望-递推)
  12. linux酷q运行不了,Linux上使用docker运行酷Q机器人
  13. 全国勘察设计注册暖通空调工程师专业基础考试大纲(送审稿)
  14. Cesium-Fullscreen全屏显示
  15. 苹果如何将图片转换为文字手机
  16. oracle的执行图标不见了,开始菜单oracle集成管理工具的图标没了怎么办
  17. 三、GDT和IDT的配置
  18. 怎么设置计算机显示列表格式,(怎样显示excel的文件后缀名)excle后缀格式怎么显示...
  19. 【群晖NAS】 利用云服务器 FRP技术 实现内网穿透
  20. 吉林大学计算机孙磊,室内灯光控制系统设计毕业论文.doc

热门文章

  1. 数学建模——使用matlab神经网络工具箱训练和预测
  2. 网络安全-利用sniffer抓包软件,分析IP头的结构(详解)
  3. ArcGis Engine 符号
  4. 国际贸易13种术语你都了解吗?
  5. 一个名牌大学毕业生心酸经历
  6. 计算机主板维修,计算机主板维修从业技能全程通(70M)*
  7. 用Watir测试QTP的Demo程序Mercury Tours
  8. cydia未能找到使用主机名的服务器,cydia未找到主机服务器
  9. FTP服务器的搭建,可两个电脑通过局域网进行传输
  10. 谷歌放弃火狐的谷歌工具栏产品