在Oracle数据库中部署多个SDE服务…

来源:互联网 发布:亳州网站关键词优化 编辑:程序博客网 时间:2024/05/19 14:55

一、一个oracle部署多个SDE服务(采用问题的方式提供答案)

问题:

目的:

在机器上安装了oracle实例,默认会产生一个数据库实例(SID为Orcl),在这个数据库实例上安装了一个SDE(sde服务名为esri_sde)。现在通过这个oracle的工具产生了另外一个数据库实例(SID为SDEInst),现在的目的是:在这个SDEInst数据库实例上部署一个SDE。

操作过程:

1、使用DBCA产生SID为SDEInst的数据库实例,然后在这个数据库实例创建了一个用户(其用户名为:sde,只赋予了角色权限[Connect、DBA、RESOURCE],其他权限默认),用户对应的表空间也是自己创建的。

2、安装ESRI全球网上提供的方法创建、修改文件。具体如下:

I、拷贝 %SDEHOME% 到一个新的位置(%SDEHOME%我的拷贝的内容为D:\Program Files\ArcSDE9.2\ArcSDE\ora9iexe),然后重命名为ora9iexe2.

II、用数据库实例SID(这里为SDEInst)更新dbinit.sde文件内容(ArcSDE\ora9iexe2\etc下),将它更改为:# Oracle SID for servicedemo_sde.

set ORACLE_SID = SDEInst

III、更新ArcSDE\ora9iexe2\etc\services.sde文件,设置它的服务名和端口号为  demo_sde     5152/tcp        #ArcSDE for Oracle

IV、在C:\WINDOWS\system32\drivers\etc\services添加上服务名和端口号demo_sde     5152/tcp

V、清除了ArcSDE\ora9iexe2\etc由ora9iexe带来的日志文件的内容---sde_setup.log

VI、按照ESRI全球网的方法,需要更新giomgr.defs和dbtune.sde文件的内容,由于不知道如何具体设置参数,就没有更改过.使用 Orcl中的sde参数应该没有问题吧?

3、创建ArcSDE和Geodatabase的系统表和存储过程等,这里使用的命令是:

sdesetup -o install -d ORACLE9I -H "D:\Program Files\ArcSDE9.2\ArcSDE\ora9iexe2" -u sde -p sde

这个命令行中,开始也遇到了很多问题。后来用户使用自己创建的 sde 用户并附上DBA权限就创建成功了。但是ESRI全球网上对用户 -p的描述为:Database administratorpassword,为什么我用其他用户名的DBA用户就不行?这个问题就这样过了,毕竟已经创建成功了。

4、创建sde服务(这个是出错的地方)

使用SDE命令行:sdeservice -o create -d ORACLE9I,SDEInst -p sde -idemo_sde -H "D:\Program Files\ArcSDE 9.2\ArcSDE\ora9iexe2" -n .

可是在使用运行的过程中总是抱如下错误(参考图片): Wrong RDBMS Name "ORACLE9I,SDEInst "。我的数据库是ORACLE9I,并且如上描述我的SID为SDEInst,是没有问题的!!!?

后来我尝试将"-d ORACLE9I,SDEInst" 换成"-d ORACLE,SDEInst"居然创建成功了,但是这个名为demo_sde的SDE服务还是启动不起来,对比看了一下成功运行的SDE服务,发现这个demo_sde的SDE服务少了依赖的数据库服务OracleServiceSDEINST,也就是说这个SDE服务没有绑定到oracle实例上。

giomgr进程答案:

查看了下应用程序日志,上面主要是sde许可的问题。其实是很简单的问题。

 

答案补充:

个oracle部署多个SDE服务主要分为两种方式:手动创建和post创建

一、手动创建sde服务:

1、创建新的oracle实例;

2、在这个实例上创建新的表空间(赋予一定的空间大小),创建在此表空间之上的sde用户名(用户名为sde),密码可以随意。给这个用户名赋予DBA、CONNECTION、RESOURCE三个角色权限,赋予selectany table的系统权限。

3、将原来默认安装的ArcSDE9.2\ArcSDE\ora9iexe文件夹拷贝并重命名为ora9iexe2(路径为ArcSDE9.2\ArcSDE\ora9iexe2),只要设置一下dbinit.sde中的ORACLE_SID使之对应到新创建的数据库实例名(当然安装上面完全自己设置也是可以的;或者可以不用设置,因为在下面的命令行中会对其进行相应的操作)。【切记下面sdesetup和sdeservice 为ora9iexe2下的命令,需要设置环境变量或者通过dos的 cd方式转到ora9iexe2目录下】。

4、创建ArcSDE和Geodatabase的系统表和存储过程 sdesetup -o install -d ORACLE9I-H "D:\Program Files\ArcSDE 9.2\ArcSDE\ora9iexe2" -u sde -p sde -lC:\SdeLic.ecp 【我前面失败的原因就是没有-l C:\SdeLic.ecp 授予许可】。创建成功之后进行第5步。

5、创建sde服务: sdeservice -o create -d oracle,CMDSDE -p sde -icmd_sde -H "D:\Program Files\ArcSDE 9.2\ArcSDE\ora9iexe2" -n 【切记oracle9i数据库使用-d oracle,CMDSDE ,如果换成-doracle9i,CMDSDE,报错不认识oracle9i】。

二、post创建sde服务:

和手工创建原理是一样的,只是有些sde命令是通过post向导执行的,我们只是提供参数而已。

1、创建新的oracle实例;

2、将原来默认安装的ArcSDE9.2\ArcSDE\ora9iexe文件夹拷贝并重命名为ora9iexe2(路径为ArcSDE9.2\ArcSDE\ora9iexe2),只要设置一下dbinit.sde中的ORACLE_SID使之对应到新创建的数据库实例名。

3、开始-程序……里启动post安装,选择自定义custom,然后勾掉create ArcSDEService我们最后手工创建;进入下一步填写你的oracle数据库信息;下一步设置一下dbinit.sde的路径指向咱们刚才2中设置过的dbinit.sde;其中向导要求你输入SDE的许可,添加许可文件就可以了。[这步相当于手工创建的第4步].

4、创建sde服务: sdeservice -o create -d oracle,CMDSDE -p sde -icmd_sde -H "D:\Program Files\ArcSDE 9.2\ArcSDE\ora9iexe2" -n

三、单SDE服务关联多用户(每个用户具有SDE的权限):

主要应用点:将不同类型的数据部署在不同用户下。

在一般安装SDE时会产生一个默认的用户sde用户,大部分的时候我们将数据都放在sde用户下面。

有时我们需要业务需要放在不同的用户下(如:出于权限考虑),例如现在将基础地形图数据放在A用户下,房产图数据放在B用户下。这个可以在数据库操作如下:新建A用户和B用户所需要表空间,并设置它们的物理数据文件地址名为A001.dbf和B001.dbf;然后新建A用户和B用户,将其和刚才新建的表空间对应起来;最后设置A用户和B用户具有SDE权限(具体需要哪些权限可以参考默认产生的sde用户所赋予的权限)。

在某些情况下,我们需要通过使用默认安装的sde用户来使用所有用户的数据(如这里的A用户和B用户下的数据),此时我们只要给sde用户授予相应的对象权限(如:Oracle具体对象权限,右击“sde用户”,选择“对象”Tap进行设置),也可以通过使用用户代理使得sde用户有足够的权限。

这种方式建立的A用户和B用户,和SDE用户最大的区别在有没有SDE一些系统表。A和B用户能够存储空间数据是基于SDE用户的。

具有SDE的用户最小系统权限设置要求是:

Create procedure / Create table / Create sequence / Createtrigger / Create session

(其他:1、启动SDE服务的时候发生了什么:SDE服务程序启动一个giomgr进程,giomgr进程从dbinit.sde文件中获取系统环境变量,giomgr进程检测服务的lincese是否已经安装。giomgr进程读取services.sde获取远程的TCP/IP协议和服务名、端口号。giomgr进程使用dbinit.sde连接数据库实例,giomgr遍历所有的锁定表,然后启动服务成功。giomgr进程开始监听它的端口,以确定外界是否请求有连接。

2、SDE连接服务的时候发生了什么:giomgr进程监听它的端口,确定有一个客户端连接请求。giomgr比较程序计算机的锁定时间和它的主机时间,如果大于MaxTimeDiff,则不运行连接。giomgr进程开始比较客户端程序的ArcSDE版本和ArcSDE服务端版本,如果前者比后者旧,连接将被拒绝.giomgr进程启动一个gsrvr进程,为客户端程序服务,gsrvr进程获得共享内存.gsrvr进程连接到DBMS上一旦上面的过程成功,giomgr将继续监听下一个连接.)

在oracle上安装SDE会存在一个默认的sde用户,使用创建sde用户的相似用户方式,让创建的每一个用户具有存储空间数据库的能力。要让sde具有访问其他用户的能力的话:必须给sde用户的角色权限附上dba的权限。(如果这个用户具有dba的权限的话,可以使用schma.tablename访问和编辑其他表的能力)。给sde用户附上dba的权限后sde就会具有在其上创建相似用户,它的一定的对象权限

原创粉丝点击