关于 ORA-19502 ORA-15081 问题
来源:互联网 发布:市政工程师待遇知乎 编辑:程序博客网 时间:2024/05/01 13:57
作者 阿九【转载时请务必以超链接形式标明文章原始出处和作者信息】
今天本来做了个ASM实验,想验证磁盘容量大小不一致rebalance会有什么影响,在测试的时候出现了错误:
ORA-19502: 文件 "+DATA", 块编号 384 (块大小=8192) 上出现写入错误
ORA-15081: 无法将 I/O 操作提交到磁盘
ORA-15081: 无法将 I/O 操作提交到磁盘
ORA-15081: 无法将 I/O 操作提交到磁盘
ORA-15081: 无法将 I/O 操作提交到磁盘
查看ASM实例的ASM磁盘组容量
SQL> select group_number,disk_number,total_mb,free_mb from v$asm_disk order by disk_number;
GROUP_NUMBER DISK_NUMBER TOTAL_MB FREE_MB
------------ ----------- ---------- ----------
1 0 3072 2328
1 1 1024 764
1 2 52 36
1 3 3072 2412
SQL>
SQL>
SQL> !asmcmd lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 7220 5540 0 5540 0 N DATA/
SQL>
GROUP_NUMBER DISK_NUMBER TOTAL_MB FREE_MB
------------ ----------- ---------- ----------
1 0 3072 2328
1 1 1024 764
1 2 52 36
1 3 3072 2412
SQL>
SQL>
SQL> !asmcmd lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 7220 5540 0 5540 0 N DATA/
SQL>
看到空闲容量还有 5540M,于是想添加一个5120M的表空间看看。
[oracle@rh5-ora11g ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 12月 7 06:14:24 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> create tablespace testasm1 datafile '+DATA' size 5120M;
create tablespace testasm1 datafile '+DATA' size 5120M
*
第 1 行出现错误:
ORA-01119: 创建数据库文件 '+DATA' 时出错
ORA-17502: ksfdcre: 4 未能创建文件 +DATA
ORA-15041: diskgroup "DATA" space exhausted
SQL>
报错了,提示空闲空间不足,但ASM显示的可用空间为5540M,而我们只是添加5120M的文件,为什么会报错呢?
我们再看下ASM磁盘的容量
ASM实例:
SQL> select group_number,disk_number,total_mb,free_mb from v$asm_disk order by disk_number;
GROUP_NUMBER DISK_NUMBER TOTAL_MB FREE_MB
------------ ----------- ---------- ----------
1 0 3072 2328
1 1 1024 764
1 2 52 36
1 3 3072 2412
SQL>
可以看到容量并没有变化,而总体的空闲容量是够我们添加那么大的数据文件的,但还是报空间不足的错误。
那我们添加一个和第三个盘一样大小的表空间看会发生什么
database实例,添加表空间
[oracle@rh5-ora11g ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 12月 7 06:22:36 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> create tablespace testasm1 datafile '+DATA' size 2412M;
create tablespace testasm1 datafile '+DATA' size 2412M
*
第 1 行出现错误:
ORA-19502: 文件 "+DATA", 块编号 384 (块大小=8192) 上出现写入错误
ORA-15081: 无法将 I/O 操作提交到磁盘
ORA-15081: 无法将 I/O 操作提交到磁盘
SQL>
再次按5120M来添加文件,则报错又和开始时候一样了
SQL> create tablespace testasm1 datafile '+DATA' size 5120M;
create tablespace testasm1 datafile '+DATA' size 5120M
*
第 1 行出现错误:
ORA-01119: 创建数据库文件 '+DATA' 时出错
ORA-17502: ksfdcre: 4 未能创建文件 +DATA
ORA-15041: diskgroup "DATA" space exhausted
SQL>
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 12月 7 06:14:24 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> create tablespace testasm1 datafile '+DATA' size 5120M;
create tablespace testasm1 datafile '+DATA' size 5120M
*
第 1 行出现错误:
ORA-01119: 创建数据库文件 '+DATA' 时出错
ORA-17502: ksfdcre: 4 未能创建文件 +DATA
ORA-15041: diskgroup "DATA" space exhausted
SQL>
报错了,提示空闲空间不足,但ASM显示的可用空间为5540M,而我们只是添加5120M的文件,为什么会报错呢?
我们再看下ASM磁盘的容量
ASM实例:
SQL> select group_number,disk_number,total_mb,free_mb from v$asm_disk order by disk_number;
GROUP_NUMBER DISK_NUMBER TOTAL_MB FREE_MB
------------ ----------- ---------- ----------
1 0 3072 2328
1 1 1024 764
1 2 52 36
1 3 3072 2412
SQL>
可以看到容量并没有变化,而总体的空闲容量是够我们添加那么大的数据文件的,但还是报空间不足的错误。
那我们添加一个和第三个盘一样大小的表空间看会发生什么
database实例,添加表空间
[oracle@rh5-ora11g ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 12月 7 06:22:36 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> create tablespace testasm1 datafile '+DATA' size 2412M;
create tablespace testasm1 datafile '+DATA' size 2412M
*
第 1 行出现错误:
ORA-19502: 文件 "+DATA", 块编号 384 (块大小=8192) 上出现写入错误
ORA-15081: 无法将 I/O 操作提交到磁盘
ORA-15081: 无法将 I/O 操作提交到磁盘
SQL>
再次按5120M来添加文件,则报错又和开始时候一样了
SQL> create tablespace testasm1 datafile '+DATA' size 5120M;
create tablespace testasm1 datafile '+DATA' size 5120M
*
第 1 行出现错误:
ORA-01119: 创建数据库文件 '+DATA' 时出错
ORA-17502: ksfdcre: 4 未能创建文件 +DATA
ORA-15041: diskgroup "DATA" space exhausted
SQL>
在metalink上也没有相关问题的解释,推测应该是5120M添加失败的操作将ASM某个位置hang住导致后续操作失败,
具体是哪问题,现在还不得而知,(我还重启过ASM实例和database实例,但问题依旧)想到的解决办法是删除其他几个磁盘,然后添加一个小于剩余磁盘容量的表空间看报错不
ASM实例:
SQL> col name for a40
SQL> col failgroup for a40
SQL> col path for a50
SQL> select name,failgroup,path from v$asm_disk;
NAME FAILGROUP PATH
---------------------------------------- ---------------------------------------- --------------------------------------------------
DATA_0003 DATA_0003 /dev/raw/raw4
DATA_0002 DATA_0002 /dev/raw/raw3
DATA_0001 DATA_0001 /dev/raw/raw2
DATA_0000 DATA_0000 /dev/raw/raw1
SQL>
SQL> alter diskgroup "DATA" drop disk 'DATA_0003' rebalance power 11;
Diskgroup altered.
SQL> alter diskgroup "DATA" drop disk 'DATA_0002' rebalance power 11;
Diskgroup altered.
SQL> alter diskgroup "DATA" drop disk 'DATA_0001' rebalance power 11;
Diskgroup altered.
SQL>
查看容量
SQL> select group_number,disk_number,total_mb,free_mb from v$asm_disk order by disk_number;
GROUP_NUMBER DISK_NUMBER TOTAL_MB FREE_MB
------------ ----------- ---------- ----------
0 0 0 0
1 0 3072 1367
0 1 0 0
0 2 0 0
SQL>
创建一个30M的表空间试试:
SQL> create tablespace testasm2 datafile '+DATA' size 30M;
表空间已创建。
SQL>
额,这样终于不报错了,然后在把其他几个盘加回来吧。。。
SQL> col name for a40
SQL> col failgroup for a40
SQL> col path for a50
SQL> select name,failgroup,path from v$asm_disk;
NAME FAILGROUP PATH
---------------------------------------- ---------------------------------------- --------------------------------------------------
DATA_0003 DATA_0003 /dev/raw/raw4
DATA_0002 DATA_0002 /dev/raw/raw3
DATA_0001 DATA_0001 /dev/raw/raw2
DATA_0000 DATA_0000 /dev/raw/raw1
SQL>
SQL> alter diskgroup "DATA" drop disk 'DATA_0003' rebalance power 11;
Diskgroup altered.
SQL> alter diskgroup "DATA" drop disk 'DATA_0002' rebalance power 11;
Diskgroup altered.
SQL> alter diskgroup "DATA" drop disk 'DATA_0001' rebalance power 11;
Diskgroup altered.
SQL>
查看容量
SQL> select group_number,disk_number,total_mb,free_mb from v$asm_disk order by disk_number;
GROUP_NUMBER DISK_NUMBER TOTAL_MB FREE_MB
------------ ----------- ---------- ----------
0 0 0 0
1 0 3072 1367
0 1 0 0
0 2 0 0
SQL>
创建一个30M的表空间试试:
SQL> create tablespace testasm2 datafile '+DATA' size 30M;
表空间已创建。
SQL>
额,这样终于不报错了,然后在把其他几个盘加回来吧。。。
ASM的多磁盘管理和平衡能力真的是。。。
- 关于 ORA-19502 ORA-15081 问题
- 关于解决 ORA-28595、ORA-06520 sql报错问题
- ORA-19502&ORA-27072
- 关于SQLPLU和TNSName.ora的问题
- ORA-32017 ORA-00096问题
- ORA
- ora
- ora-19624 ora-19502 ora-27040
- 关于ORACLE另一台电脑远程连接问题(半解决)--关于listener.ora,sqlnet.ora.tnsnames.ora
- RMAN ORA-19502&ORA-27072
- ORA-39006,ORA-39213,ORA-06512,ORA-01114,ORA-39065,ORA-39097,ORA-01403 EXPDP报错问题处理
- 关于 ora-01187 和ora-01110问题解决
- 关于sqlnet.ora
- 关于tnsnames.ora
- 关于ORA-01720错误
- 关于ORA-02064【转】
- ORA-16038、ORA-19809、ORA-00312问题的学习总结
- 数据文件被误删,解决ORA-376,ORA-1578,ORA-8103问题
- list.h 二
- acm语录
- 高级程序员应该具备什么能力
- 类的构造函数与析构函数
- WPF全视角学习指南
- 关于 ORA-19502 ORA-15081 问题
- Memory Layout (Virtual address space of a C process)
- C#委托基础学习
- (jenkins)hudson平台搭建android项目持续化集成以及基于NativeDriver的UI自动化测试环境
- Struts2 Action的单元测试
- SQL语句内部逻辑查询的执行顺序
- Java中用内存映射处理大文件
- C#网络编程系列
- Unity3D 中脚本执行的先后顺序