目标:

对于在前期数据库安装时没有安装oracle spatial组件后期进行补安装的一个安装文档。

本次数据库是基于oracle 11.1.0.7

安装前准备:

安装oracle spatial的先决条件是数据库中必须先要安装有JServer JAVA Virtual Machine、Oracle interMedia、Oracle XML Database这三个组件。

检查是否安装这三个组件:

SQL>select comp_id,version,status from dba_registry

Where comp_id in (‘JAVAVM’,’ORDIM’,’XDB’);

no rows

返回no rows的结果表示三个组件均没有安装,需要先安装完这三个组件后才能进行Oracle spatial组件的安装,安装的先后顺序依次为JAVA Virtual Machine,其次为Oracle interMedia,最后为Oracle XML Database。

(一)

下面开始JAVA Virtual Machine组件的安装。

参见文档:How to Reload the JVM in 10.1.0.X and 10.2.0.X [Video] [ID 276554.1]

强烈建议在进行JVM组件安装前对数据库做一次全库冷备份。

1、认证系统环境变量ORACLE_HOME和ORACLE_SID设置是否正确,检查数据库环境是否满足以下条件:

Shared Pool至少有50M的空闲空间

Java Pool至少有20M的空闲空间

System表空间至少有70M的空闲空间

系统RBS表空间至少有1000M的空闲空间

2、关闭数据库实例创建和运行以下数据库脚本

— Start of File full_rmjvm.sql

spool full_rmjvm.log

set echo on

connect / as sysdba

startup mount

alter system set “_system_trig_enabled” = false scope=memory;

alter system enable restricted session;

alter database open;

@?/rdbms/admin/catnoexf.sql

@?/rdbms/admin/catnojav.sql

@?/xdk/admin/rmxml.sql

@?/javavm/install/rmjvm.sql

truncate table java$jvm$status;

select * from obj$ where obj#=0 and type#=0;

delete from obj$ where obj#=0 and type#=0;

commit;

select owner, count(*) from all_objects

where object_type like ‘%JAVA%’ group by owner;

select obj#, name from obj$

where type#=28 or type#=29 or type#=30 or namespace=32;

select o1.name from obj$ o1,obj$ o2

where o1.type#=5 and o1.owner#=1 and o1.name=o2.name and o2.type#=29;

shutdown immediate

set echo off

spool off

exit

— End of File full_rmjvm.sql

3、执行完毕后检查日志文件是否有报错,在执行的过程中可能会碰到一下报错,可以忽略掉。

ORA-04043: object XMLGEN does not exist

ORA-01432: public synonym to be dropped does not exist

raised when running rmxml.sql.  Also, ORA-39705 errors from the execution of catnoexf.sql, e.g.:

ORA-39705: component ‘EXF’ not found in registry

4、以上命令执行成功后继续执行下面命令

— Start of File full_jvminst.sql

spool full_jvminst.log;

set echo on

connect / as sysdba

startup mount

alter system set “_system_trig_enabled” = false scope=memory;

alter database open;

select obj#, name from obj$

where type#=28 or type#=29 or type#=30 or namespace=32;

@?/javavm/install/initjvm.sql

select count(*), object_type from all_objects

where object_type like ‘%JAVA%’ group by object_type;

@?/xdk/admin/initxml.sql

select count(*), object_type from all_objects

where object_type like ‘%JAVA%’ group by object_type;

@?/xdk/admin/xmlja.sql

select count(*), object_type from all_objects

where object_type like ‘%JAVA%’ group by object_type;

@?/rdbms/admin/catjava.sql

select count(*), object_type from all_objects

where object_type like ‘%JAVA%’ group by object_type;

@?/rdbms/admin/catexf.sql

select count(*), object_type from all_objects

where object_type like ‘%JAVA%’ group by object_type;

shutdown immediate

set echo off

spool off

exit

— End of File full_jvminst.sql

5、执行过程中如果发生OCI-21500等错误可以通过执行

@?/rdbms/admin/utlrp.sql脚本对失效对象进行重编译,此时JVM的安装基本结束。

(二)

安装Oracle XML Database组件:

1、安装XML组件之前先需要确定XDB用户的密码和给XDB用户指定的默认表空间(任何表空间均能被指定,除了system表空间,UNDO和TEMP表空间可以被指定)以及XDB用户的临时表空间。

2、这里我们设置XDB用户密码为XDB,表空间为SYSAUX,临时表空间为TEMP

执行如下命令创建:

SQL> spool xdb_install.log

SQL> set echo on;

SQL> connect / as sysdba

SQL> shutdown immediate;

SQL> startup;

SQL> @?/rdbms/admin/catqm.sql XDB SYSAUX TEMP

SQL> @?/rdbms/admin/utlrp.sql

SQL> spool off

在三个先决条件全部安装完毕后进行Oracle Spatial的安装。

(三)

安装Oracle interMedia

参见文档:oracle 10g 联机文档Installing and Upgrading Oracle interMedia

1、检查JVM组件是否已经安装

SQL> select version, status from dba_registry where comp_id=’JAVAVM’;

2、 执行以下创建脚本创建用户及赋权

Start SQL*Plus.

% sqlplus

Connect as SYSDBA.

SQL> connect / as SYSDBA

Invoke ordinst.sql with two parameters for interMedia tablespace and

Location Services tablespace.

SQL> @/ord/admin/ordinst.sql SYSAUX SYSAUX

3、安装interMedia类和包

SQL> @/ord/im/admin/iminst.sql

4、启动监听

监听必须被设置为使用外部程序调用,检查tnsnames.ora文件中extproc_connection_data参数以及listener.ora文件中 extproc参数是否被正确设置,如没正确设置interMedia将无法正常工作。

自此,interMmedia安装完毕。

(四)

安装Oracle Spatial

1、检查三个先决组件是否安装

SQL> select comp_id,version,status from dba_registry

where comp_id in (‘JAVAVM’,’ORDIM’,’XDB’);

2、创建MDSYS用户并赋权

SQL> create user MDSYS identified by default tablespace SYSAUX account lock;(如果用户存在可以不用创建直接赋权)

SQL> @?/md/admin/mdprivs.sql

3、安装Spatial

SQL> connect / as sysdba

SQL> spool spatial_installation.lst

SQL> @?/md/admin/mdinst.sql

SQL> spool off

4、验证安装是否正确

SQL> connect / as sysdba

SQL> set serveroutput on

SQL> execute validate_sdo;

SQL> select comp_id, control, schema, version, status, comp_name from dba_registry

where comp_id=’SDO’;

SQL> select object_name, object_type, status from dba_objects

where owner=’MDSYS’ and status <> ‘VALID’

order by object_name;

SQL> execute validate_sdo;

PL/SQL procedure successfully completed.

SQL> select comp_id, control, schema, version, status, comp_name from dba_registry

where comp_id=’SDO’;

COMP_ID                        CONTROL

—————————— ——————————

SCHEMA                         VERSION                        STATUS

—————————— —————————— ———–

COMP_NAME

——————————————————————————–

SDO                            SYS

MDSYS                          10.2.0.4.0                     VALID

Spatial

no rows selected

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐