现象:在Oracle 12.2.0.1 RAC环境,在其ASM实例中,如果添加不同大小或者不同数量的LUN到failgroup中,会报错:

ORA-15032: not all alterations performed
ORA-15410: Disks in disk group OCRVT do not have equal size.
或者
ORA-15032: not all alterations performed
ORA-15411: Failure groups in disk group OCRVT have different number of disks.

解决方案:

动态修改这两个隐藏参数可以解决:

alter system set "_asm_disable_failgroup_size_checking"=true;
alter system set "_asm_disable_dangerous_failgroup_checking"=true;

下面举一个实际的例子:

比如新加的LUN:mpathi,mpathj,mpathk都是200M大小,以前的ASM磁盘组OCRVT由3个LUN:mpatha,mpathb,mpathc都是1G大小组成;现在想把新的LUN加到OCRVT磁盘组中:

SQL>  select name, failgroup, path, mode_status, voting_file from v$asm_disk;

NAME                                FAILGROUP                      PATH                                          MODE_ST V
----------------------------------- ------------------------------ --------------------------------------------- ------- -
/dev/mapper/mpathj ONLINE N
/dev/mapper/mpathi ONLINE N
/public/nfsdisk ONLINE N
/dev/mapper/mpathk ONLINE N
DATA_0001 DATA_0001 /dev/mapper/mpathf ONLINE N
FRA_0000 FRA_0000 /dev/mapper/mpathh ONLINE N
DATA_0002 DATA_0002 /dev/mapper/mpathg ONLINE N
DATA_0000 DATA_0000 /dev/mapper/mpathe ONLINE N
MGMT_0000 MGMT_0000 /dev/mapper/mpathd ONLINE N
OCRVT_0000 OCRVT_0000 /dev/mapper/mpathc ONLINE Y
OCRVT_0002 OCRVT_0002 /dev/mapper/mpathb ONLINE Y
OCRVT_0001 OCRVT_0001 /dev/mapper/mpatha ONLINE Y 12 rows selected.

直接尝试添加新的LUN到ASM磁盘组OCRVT中,会报错。依次尝试设置相关的隐藏参数,可以成功添加:

SQL> alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi';
alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi'
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15410: Disks in disk group OCRVT do not have equal size. SQL> alter system set "_asm_disable_dangerous_failgroup_checking"=true; System altered. SQL> alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi';
alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi'
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15411: Failure groups in disk group OCRVT have different number of disks. SQL> alter system set "_asm_disable_failgroup_size_checking"=true; System altered. SQL> alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi'; Diskgroup altered.

总结:

asm中与failgroup相关的隐藏参数:

_asm_disable_dangerous_failgroup_checking FALSE

_asm_disable_failgroup_count_checking FALSE

_asm_disable_failgroup_size_checking FALSE

SQL> r
1 SELECT i.ksppinm name,
2 i.ksppdesc description,
3 CV.ksppstvl VALUE
4 FROM sys.x$ksppi i, sys.x$ksppcv CV
5 WHERE i.inst_id = USERENV ('Instance')
6 AND CV.inst_id = USERENV ('Instance')
7 AND i.indx = CV.indx
8 AND i.ksppinm LIKE '%&param%'
9* ORDER BY REPLACE (i.ksppinm, '_', '')
Enter value for param: failgroup
old 8: AND i.ksppinm LIKE '%&param%'
new 8: AND i.ksppinm LIKE '%failgroup%' NAME DESCRIPTION VALUE
----------------------------------- ------------------------------------------------------------------ ------------------------------
_asm_disable_dangerous_failgroup_ch Disable checking for dubious failgroup configurations FALSE
ecking _asm_disable_failgroup_count_checki Disable checking for failure group count FALSE
ng _asm_disable_failgroup_size_checkin Disable checking for failure group size FALSE
g --这类参数实测可以动态修改:
alter system set "_asm_disable_failgroup_size_checking"=true;
alter system set "_asm_disable_dangerous_failgroup_checking"=true;
--alter system set "_asm_disable_failgroup_count_checking"=true; 这个参数我没有测出来实际作用,实测只需要上面两个参数设置为true就同样可以允许failgroup的数量不一致。 SQL> show parameter _asm NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_asm_disable_dangerous_failgroup_che boolean TRUE
cking
_asm_disable_failgroup_size_checking boolean TRUE --test
SQL> select name, failgroup, path, mode_status, voting_file from v$asm_disk; NAME FAILGROUP PATH MODE_ST V
----------------------------------- ------------------------------ --------------------------------------------- ------- -
/public/nfsdisk ONLINE N
OCRVT_0005 OCRVT_0002 /dev/mapper/mpathk ONLINE N
OCRVT_0004 OCRVT_0001 /dev/mapper/mpathj ONLINE N
DATA_0001 DATA_0001 /dev/mapper/mpathf ONLINE N
OCRVT_0003 OCRVT_0000 /dev/mapper/mpathi ONLINE N
FRA_0000 FRA_0000 /dev/mapper/mpathh ONLINE N
DATA_0002 DATA_0002 /dev/mapper/mpathg ONLINE N
DATA_0000 DATA_0000 /dev/mapper/mpathe ONLINE N
MGMT_0000 MGMT_0000 /dev/mapper/mpathd ONLINE N
OCRVT_0000 OCRVT_0000 /dev/mapper/mpathc ONLINE Y
OCRVT_0002 OCRVT_0002 /dev/mapper/mpathb ONLINE Y
OCRVT_0001 OCRVT_0001 /dev/mapper/mpatha ONLINE Y 12 rows selected. --以下操作均可以成功:
alter diskgroup ocrvt drop disk OCRVT_0003;
alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi'; --如果不改参数,那么只能同时删除/增加每个failgroup中的成员:
alter diskgroup ocrvt drop disk OCRVT_0003, OCRVT_0004, OCRVT_0005;
alter diskgroup ocrvt add FAILGROUP OCRVT_0000 disk '/dev/mapper/mpathi'
FAILGROUP OCRVT_0001 disk '/dev/mapper/mpathj'
FAILGROUP OCRVT_0002 disk '/dev/mapper/mpathk'; --最后同样可以动态还原配置:
alter system set "_asm_disable_failgroup_size_checking"=false;
alter system set "_asm_disable_dangerous_failgroup_checking"=false;

注意:实验发现如果使用asmca添加磁盘,无论是否设置这个参数,都会报错[DBT-30003] The size of the disks selected is not the same as to allow for an equal number of 4MB AU size blocks.

而使用命令行操作,只要设置这2个隐藏参数为true即可成功。

Oracle 12.2报错ORA-15032、ORA-15410或ORA-15411解决的更多相关文章

  1. Oracle 12.2 报错:ORA-12012: error on auto execute of job "SYS"."ORA$AT_OS_OPT_SY_7458"

    alert报错 2019-01-12T10:10:11.499130+08:00Errors in file /u01/app/oracle/diag/rdbms/rac1/rac112/trace/ ...

  2. plsql developer连接oracle 12.2报错 ora-28040 No matching authentication protocol

    使用plsql连接时,发现报ora-28040 No matching authentication protocol 赶紧查了查MOS,原来在默认情况下Oracle12.2对客户端版本有限制, 解决 ...

  3. Oracle Online Patching报错"This is not a RAC setup. OPatch cannot determine the local node name"

    Oracle Online Patching报错"This is not a RAC setup. OPatch cannot determine the local node name&q ...

  4. 安装Oracle 11gR2,报错:[INS-06101] IP address of localhost could not be determined

    安装Oracle 11gR2,报错:[INS-06101] IP address of localhost could not be determined 出现这种错误是因为主机名和/etc/host ...

  5. [转]ORACLE 11G 导出报错(EXP-00003)未找到段 (0,0) 的存储定义

    http://blog.csdn.net/qq_19524879/article/details/51313205 ORACLE 11G 导出报错(EXP-00003)未找到段 (0,0) 的存储定义 ...

  6. Oracle Client安装报错

    Oracle Client安装报错:引用数据不可用于验证此操作系统分发的先决条件 http://tunps.com/p/11797.html 原因是Oracle Client 11g版本不支持最新的W ...

  7. MongoDB解压报错gzip: stdin: not in gzip format的解决方法

    MongoDB解压报错gzip: stdin: not in gzip format的解决方法 在安装MongoDB时出现如下报错: [root@vm172--- mongodb]# tar -zxv ...

  8. excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法

    excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法 office2007应该遇到“向程序发送命令时出现 问题”,设置为以管理员运行也不好用,重装office也不好用,下面介绍下 ...

  9. CocoaPods pod install的时候报错:invalid byte sequence in UTF-8 (ArgumentError)解决办法

    CocoaPods pod install的时候报错:invalid byte sequence in UTF-8 (ArgumentError)解决办法: 基本可以确定是Podfile中的内容编码有 ...

随机推荐

  1. java_ATM_GUI

    Test 界面: import java.awt.Menu; import java.io.BufferedReader; import java.io.File; import java.io.Fi ...

  2. 用python一步一步教你玩微信小程序【跳一跳】

    12月28日,微信上线了小游戏「跳一跳」,瞬间成了全民游戏,如何牢牢占据排行榜的第一位呢?用Python帮助你,Python真的无所不能. 作为技术出身的我们,是不是想用技术改变排名呢? 注意:本文适 ...

  3. Telsa显卡比较

    1. T4 2. P4/ P40 3. P100 4. V100

  4. tar 压缩归档

    压缩归档 掌握归档的定义:归档(archiving)就是将许多文件(或目录)打包成一个文件. 了解归档的目的:归档的目的就是方便备份.还原及文件的传输操作. 掌握tar命令的功能:将多个文件(也可能包 ...

  5. C#からネイティブDLLを呼び出す場合のVSからのデバッグのジレンマを解決する

    「C#を使う最大のメリットって.やっぱり.Visual Studioですよね!」って自信を持って言いたいですね. という心境ではあるんですが.私の仕事はどっちかというとC++よりなので.どうしても.D ...

  6. 小甲鱼Python第十九讲课后习题

    笔记: 1.内嵌函数:函数内部新创建另一个函数 2.闭包:函数式编程的重要语法,如果在一个内部函数里,对外部作用域(但不是在全局作用域的变量)进行引用,那么内部函数就会被认为是闭包. 3.nonloc ...

  7. centos+git+gitolite 安装和部署

    一.部署环境 系统:CentOS 6.4x64 最小化安装 IP:192.168.52.131 git默认使用SSH协议,在服务器上基本上不用怎么配置就能直接使用.但是如果面向团队服务,需要控制权限的 ...

  8. GMA Round 1

    学弟说我好久没更blog了. 因为自己最近其实没干什么. 所以来搬运一下GMA Round 1 的比赛内容吧,blog访问量.网站流量一举两得. 链接:https://enceladus.cf/con ...

  9. SpringMVC的坑

    The request sent by the client was syntactically incorrect. 这个错误的原因是 因为 提交的表单数据和目标方法的入参不一致所导致   然后我就 ...

  10. Java作业三(2017-9-25)

    /*程序员龚猛*/ 作业1 public class Variable_Demo$Long{ public static void main(String[]args { int i=3; long ...