zoukankan      html  css  js  c++  java
  • ASM错误集合

    ===
    ASM在创建Disk Group的时候报错 ORA-15014: location '/u01/app/oracle/oradata/raw1' is not in the discovery set-

    CREATE DISKGROUP dg1 DISK '/u01/app/oracle/oradata/raw1','/u01/app/oracle/oradata/raw2';
    CREATE DISKGROUP dg1 DISK '/u01/app/oracle/oradata/raw1','/u01/app/oracle/oradata/raw2'
    *
    ERROR at line 1:
    ORA-15018: diskgroup cannot be created
    ORA-15031: disk specification '/u01/app/oracle/oradata/raw2' matches no disks
    ORA-15014: location '/u01/app/oracle/oradata/raw2' is not in the discovery set

    ASM discovery string 没有设置.
    alter system set asm_diskstring='/u01/app/oracle/oradata/*' 再 create diskgroup 试试。
    在pfile中加上 asm_diskstring='/u01/app/oracle/oradata/*

    ====

    今天客户的一个RAC集群系统出现问题,一个节点被重启后,ASM磁盘组无法mount,报出如下错误:

     ORA-00600: internal error code, arguments: [kfgFinalize_2], [], [], [], [], [], [], []

    检查trac文件如下:
    Errors in file /u01/app/oracle/admin/+ASM/udump/+asm2_ora_11560.trc:
    ORA-00600: internal error code, arguments: [kfgFinalize_2], [], [], [], [], [], [], []

    ksedmp: internal or fatal error
    ORA-00600: internal error code, arguments: [kfgFinalize_2], [], [], [], [], [], [], []
    Current SQL statement for this session:
    ALTER DISKGROUP ALL MOUNT


    后面就是一堆二进制码,看来是磁盘组mount的时候出现问题。

    查找各方面资料,发现是oracle的一个bug。

    解决的办法有三个:

    1、升级到10.2.0.3
    2、打一个patch上去
    3、把活着的那个节点的PMON进行kill掉,然后重新启动活着的节点的实例,使得强制对数据库进行恢复

    评估一下,

    方案1动作太大,而且这个版本没有测试使用过。

    方案2的readme文件里明确写着这个patch可能会造成数据丢失,要在oracle support的支持下做,我没有support,

    看来方案三比较可行,可问题是现在至少有一个节点活着,如果强行kill pmon进程后,节点2也起不来了,那就全玩完了,只有准备好切dataguard的方案先了。

    此时在oracle的论坛上看见说不用kill pmon的,只要把两个节点都宕下来,然后启动就ok。

    于是重启两个节点,看见见SUCCESS: diskgroup DATA was mounted提示出来了,放心了。

    数据库全部起来后,业务回复正常!

    ===

    问题:ASM创建磁盘组时出错
    SQL> create diskgroup dgroup1 normal redundancy
    2   failgroup fgroup1 disk 'ORCL:VOL1','ORCL:VOL2'
    3   failgroup fgroup2 disk 'ORCL:VOL3','ORCL:VOL4';
    create diskgroup dgroup1 normal redundancy
    *
    ERROR at line 1:
    ORA-15018: diskgroup cannot be created
    ORA-15031: disk specification 'ORCL:VOL4' matches no disks
    ORA-15031: disk specification 'ORCL:VOL3' matches no disks
    ORA-15031: disk specification 'ORCL:VOL2' matches no disks
    ORA-15031: disk specification 'ORCL:VOL1' matches no disks

    表v$asm_disk没有数据
    select * from v$asm_disk;

    原始设置:
    asm_diskstring='ORCL:VOL*';

    解决方法:
    1、修改ASM的参数:
    SQL>alter system set asm_diskstring='/dev/oracleasm/disks/*';

    2、重启ASM实例:
    SQL>shutdown immediate
    SQL>startup
    SQL>select * from v$asm_disk;--有数据了

    3、使用硬盘的绝对路径创建:
    SQL>create diskgroup dgroup1 normal redundancy
    failgroup fgroup1 disk '/dev/oracleasm/disks/VOL1','/dev/oracleasm/disks/VOL2'
    failgroup fgroup2 disk '/dev/oracleasm/disks/VOL3','/dev/oracleasm/disks/VOL4';

    SQL> select name from v$asm_diskgroup;

    NAME
    ----------
    DGROUP1

    =====

    如果你的监听器注册为动态注册的话。修改服务器的listener.ora,变动态注册监听为静态注册。


    SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (SID_NAME = PLSExtProc)
    (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
    (PROGRAM = extproc)
    )
    #skate add begin
         (SID_DESC =
    (GLOBAL_DBNAME = +ASm)
    (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
    (SID_NAME =+ASM)
    )
    #skate add end
    )

  • 相关阅读:
    MIME 部分扩展名与类型对应
    sql server 表变量、表类型、临时表
    SqlBulkCopy使用注意事项
    SQL Server为啥使用了这么多内存?
    SQL SERVER下有序GUID和无序GUID作为主键&聚集索引的性能表现
    DQL、DML、DDL、DCL的概念与区别
    IIS解决CPU和内存占用率过高的问题
    SQL Server 表变量和临时表的区别
    I Count Two Three(打表+排序+二分查找)
    AC自动机入门经典题目(两种表达方式)
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400407.html
Copyright © 2011-2022 走看看