oracle 错误 22303,重新创建mdsys用户,以及OCI-22303: type "SYS"."SDO_GEOMETRY" not found错误解决...

当通过DBLINK访问包含SDO_GEOMETRY类型的远程表时,出现OCI-22303错误。原因是本地库缺少MDSYS用户及相关组件。通过分析发现,需以正确方式删除并重建MDSYS用户,包括禁用触发器、清理SYS中的SDO对象、重新安装JServer、XDB和interMedia。按照Metalink文档的步骤完成这些操作后,MDSYS用户成功创建,问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 问题描述

通过DBLINK 访问远程数据库的表对象时,报:OCI-22303: type "SYS"."SDO_GEOMETRY" not found.

在远程数据库访问相同的表,没有任何问题.

二. 问题分析

SDO_GEOMETRY是MDSYS的对象,在本地库没有安装相关的数据库组件,不存在MDSYS用户,所以使用dblink访问远程的相关对象时,就会报OCI-22303对象找不到的错误.

开始的时候,通过两个脚本,想创建mdsys用户及其对象,脚本名称为:

?/ord/admin/ordinst.sql,创建用户

?/md/admin/mdinst.sql ,创建mdsys对象[@more@]

都使用sys用户执行上面的两个脚本,后来发现很多mdsys的对象都建立到了sys用户上.

仔细检查?/md/admin/mdinst.sql文档的开头说明,这个文档是需要system用户来运行的.

于是尝试重新创建这个用户,结果无法删除,操作如下:

SQL> drop user mdsys cascade;

drop user mdsys cascade

*

ERROR at line 1:

ORA-00604: error occurred at recursive SQL level 1

ORA-04098: trigger 'SYS.SDO_TOPO_DROP_FTBL' is invalid and failed re-validation

将SYS.SDO_TOPO_DROP_FTBL的状态设置为disable后,再次尝试删除mdsys,结果报了另外一个错误:

SQL> DROP USER MDSYS CASCADE;

DROP USER MDSYS CASCA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值