Oracle 23c PDB中创建SDO_GEORASTER列报ORA-00902错误求助
解决Oracle 23c Free PDB中SDO_GEORASTER类型无效的问题
问题背景
使用Oracle Database 23c (23.2.0) Free Docker镜像,仅配置ORACLE_PWD、端口和数据卷后,以system用户连接:
- 在CDB(服务名
FREE)中创建含SDO_GEORASTER列的表正常 - 在PDB(服务名
FREEPDB1)中操作时触发ORA-00902: invalid datatype错误 SDO_GEOMETRY和SDO_TOPO_GEOMETRY类型在CDB和PDB中均可正常使用
解决方案
1. 切换到目标PDB
以SYSDBA身份连接数据库后,切换到FREEPDB1:
ALTER SESSION SET CONTAINER=FREEPDB1;
2. 执行GEORASTER配置脚本
在PDB中运行Oracle Spatial提供的GEORASTER配置脚本,初始化所需的元数据对象和权限:
@$ORACLE_HOME/md/admin/sdogrpcd.sql
注意:该脚本需要以
SYSDBA权限执行,脚本会创建GEORASTER依赖的系统表、序列,并配置相关权限。
3. 验证配置
执行以下查询确认SDO_GEORASTER类型可用:
SELECT type_name FROM user_types WHERE type_name='SDO_GEORASTER';
若返回结果,则说明类型已生效,此时可以正常创建含SDO_GEORASTER列的表。
补充说明
- Oracle 23c Free镜像中,CDB默认已安装并配置好Spatial组件,但PDB默认未初始化GEORASTER相关的元数据,因此需要手动执行配置脚本。
- 若执行脚本后仍报错,可检查
dba_registry中SDO组件的状态:
SELECT comp_id, status FROM dba_registry WHERE comp_id='SDO';
确保状态为VALID,若状态异常,可在PDB中重新运行Spatial的主安装脚本catmd.sql(需谨慎操作,避免影响现有数据)。
内容的提问来源于stack exchange,提问作者sarh
相关产品推荐
相关产品推荐

