ORA-03113 ORA-27103: internal error MMAN (ospid: 21061)

本文介绍了Oracle数据库在11.1.0.7版本上启动失败的问题,特别是在memory_target设置超过3GB时触发的bug。文章提供了详细的解决方案,包括应用补丁7272646,并调整相关内存参数来解决问题。

 

SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE instance started.

Total System Global Area 1.0088E+10 bytes
Fixed Size                  2162320 bytes
Variable Size            5301600624 bytes
Database Buffers         4764729344 bytes
Redo Buffers               19697664 bytes
ORA-03113: end-of-file on communication channel
Process ID: 31529
Session ID: 280 Serial number: 3


oracle环境:10.137.5.87
---原因分析:
在oracle的alert日志中报错:
Errors in file /opt/oracle/diag/rdbms/oracle/oracle/trace/oracle_mman_21061.trc:
ORA-27103: internal error
Linux-x86_64 Error: 17: File exists
Additional information: -1
Additional information: 1
MMAN (ospid: 21061): terminating the instance due to error 27103
Instance terminated by MMAN, pid = 21061
Wed Sep 15 10:20:50 2010

这个是oracle的在11.1.0.7上的bug,与我们的参数设置有关系 memory_target 设置超过3G 后会触发此bug,解决方式:
Due to Bug:7272646
This problem is introduced in 11.1.0.7 on 64bit Linux .
In some cases after applying the 11.1.0.7 patch set on 64Bit Linux x86 the instance will not start when
MEMORY_TARGET > 3GB.

Solution
To solve the issue need to do the following :

1.) Download and apply Patch 7272646 available on metalink for Linux x86-64 11.1.0.7
2.) After applying the patch, test with memory_target set  > 3GBto verify patch resolves issue


create  pfile ='initwsj.ora'  from spfile='/dev/vx/rdsk/vgora/lv_spfile';


oracle.__db_cache_size=4764729344
oracle.__java_pool_size=67108864
oracle.__large_pool_size=67108864
oracle.__oracle_base='/opt/oracle'#ORACLE_BASE set from environment
oracle.__pga_aggregate_target=4093640704
oracle.__sga_target=6039797760
oracle.__shared_io_pool_size=0
oracle.__shared_pool_size=1073741824
oracle.__streams_pool_size=0
*.audit_file_dest='/opt/oracle/admin/oracle/adump'
*.audit_trail='db'
*.compatible='11.1.0.0.0'
*.control_files='/dev/vx/rdsk/vgora/lv_ctl01','/dev/vx/rdsk/vgora/lv_ctl02','/dev/vx/rdsk/vgora/lv_ctl03'
*.db_block_size=4096
*.db_domain=''
*.db_name='oracle'
*.db_recovery_file_dest='/opt/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.diagnostic_dest='/opt/oracle'
*.log_archive_format='%t_%s_%r.dbf'
*.memory_target=10077863936
*.open_cursors=300
*.processes=250
*.remote_listener=''
*.remote_login_passwordfile='EXCLUSIVE'
*.remote_os_authent=TRUE
*.sessions=280
*.undo_tablespace='UNDOTBS1'

目前设置的是10G,需要调整为小于3G,然后打oracle的补丁。

恢复方式:
修改initwsj.ora 中的配置,与内存有关的大小调整memory_target 调整为小于3 G,转换成bit
其他参与也要相应调整或删除
oracle.__db_cache_size=4764729344
oracle.__java_pool_size=67108864
oracle.__large_pool_size=67108864
oracle.__pga_aggregate_target=4093640704
oracle.__sga_target=6039797760
oracle.__shared_io_pool_size=0
oracle.__shared_pool_size=1073741824
oracle.__streams_pool_size=0
然后从initcao.ora启动

sql>startup pfile =initwsj.ora;
启动成功后再恢复spfile
sql>create  spfile='/dev/vx/rdsk/vgora/lv_spfile' from pfile='initwsj.ora';
重启oracle

在创建Oracle Spatial索引时,遇到的ORA-29855、ORA-13249、ORA-13200、ORA-13206和ORA-13365错误通常与空间索引的配置、元数据不一致或底层数据库对象的损坏有关。以下是对这些错误的详细分析和解决方案: ### ORA-29855: Error occurred in the execution of ODCIINDEXCREATE routine 该错误表明在创建域索引(如空间索引)时,底层的`ODCIIndexCreate`方法执行失败。常见于空间索引创建失败的场景中,通常由后续错误链中的具体错误引发,例如ORA-13249[^1]。 ### ORA-13249: internal error in Spatial index: [mdsys.mditopology] 该错误表示在空间索引构建过程中,内部拓扑结构处理失败。常见于空间元数据不一致、几何对象损坏或索引参数配置不当的情况。例如,用户定义的空间表未正确注册到`USER_SDO_GEOM_METADATA`视图中,或几何对象的SRID不一致[^1]。 ### ORA-13200: Physical storage parameters are invalid for the spatial index 此错误通常发生在空间索引的物理存储参数(如`TABLESPACE`、`INITIAL`、`NEXT`等)配置不合法时。例如,表空间不存在、存储参数值不合理或索引分区定义错误。应检查索引创建语句中的存储参数是否符合Oracle的限制。 ### ORA-13206: internal error in spatial index creation 该错误表示在空间索引构建过程中出现内部错误,通常与数据质量问题有关。例如,几何对象包含非法坐标、多边形不闭合或存在自相交等问题。建议使用`SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT`函数验证数据的完整性[^1]。 ### ORA-13365: layer does not exist 此错误表明在创建空间索引时,指定的空间图层(即对应的几何列)未正确注册到Oracle Spatial元数据中。应确保几何列已在`USER_SDO_GEOM_METADATA`中正确定义,并且其`TABLE_NAME`和`COLUMN_NAME`与实际表和列名一致。 ### 解决方案示例 1. **验证几何数据的完整性**: 使用以下SQL语句验证几何列的数据是否有效: ```sql SELECT b.geometry, SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(b.geometry, 0.005) FROM your_table b; ``` 如果返回非`TRUE`的结果,则需修复对应的几何对象。 2. **检查空间元数据注册**: 确保几何列已在`USER_SDO_GEOM_METADATA`中注册: ```sql SELECT * FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'YOUR_TABLE'; ``` 如果未注册,需使用以下语句添加: ```sql INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID) VALUES ('YOUR_TABLE', 'GEOMETRY_COLUMN', MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X', 0, 100, 0.005), MDSYS.SDO_DIM_ELEMENT('Y', 0, 100, 0.005)), 8307); ``` 3. **调整索引存储参数**: 检查并调整空间索引的存储参数,确保表空间存在且参数合理: ```sql CREATE INDEX idx_spatial ON your_table(geometry_column) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS ('tablespace=USERS storage(initial 1M next 1M)'); ``` 4. **重建空间索引**: 如果索引已存在但出现错误,可尝试删除并重新创建: ```sql DROP INDEX idx_spatial; CREATE INDEX idx_spatial ON your_table(geometry_column) INDEXTYPE IS MDSYS.SPATIAL_INDEX; ``` 5. **检查模式名称长度**: 如果使用`st_geometry`类型(如ArcGIS环境),需注意模式名称和索引名称的总长度不应超过32个字符,以避免内部变量溢出导致的错误。 ### 总结 上述错误通常与空间数据质量、元数据配置或索引参数设置不当有关。通过验证几何数据完整性、正确注册元数据、合理配置存储参数及避免模式名称过长等措施,可有效解决这些问题。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值