Oracle11g、PL/SQL、ArcSDE笔记

浏览器登录

Oracle11g 不能直接登录图形界面了,所以要进去进行数据库、表的常规操作显得很麻烦。

可以在 ie 浏览器上输入 https://localhost:1158/em 登录,账户为 SYS( 注意大写 ) ,密码为安装 oracle 时你自己设置的密码。不过想登进去,要先在电脑的服务(控制面板 管理工具 服务)中启动: OracleDBConsole***,(*** 为你的数据库名 )

如果系统提示错误,如下图:

启动错误.jpg

首先分析原因: OracleDBConsole 服务用于网页登录数据库,从 Oracle10g 后开始出现。但发现应用时很脆弱,安装 Oracle10g 或者 11g 后网址发生变动时,这个服务就启动不起来了,或者计算机名字发生变动等也可能启动不来。
解决:
开始 -> 运行 -> 输入 cmd
2
输入 emctl start dbconsole ,提示 " 找不到环境变量 ORCALE_SID" ,请运行 SET ORCALE_SID=*** // 你的数据库名称(注意要大写)
3
如果计算机名称发生变动,再次执行 emctl start dbconsole ,提示 " 无法找到 D:/oracle/product/10.2.0/db_1/***_SKYORCL" ,复制该目录下 "localhost_skyorcl" 文件夹放在同一目录下 , 且把名称改成 "***_SKYORCL" // *** 为机器名
4
如果网址发生变动,再次执行 emctl start dbconsole ,提示 " 无法找到 ***db_/oc4j/j2ee/OC4J_DBConsole_*** ip _*** (数据库名称) " ,复制该目录下 "OC4J_DBConsole_***_dragon" 文件夹放在同一目录下,且把名称改成 OC4J_DBConsole_*** ip _dragon"
5
:再次执行 emctl start dbconsole ok

如果问题还解决不了,那就直接建立一个文本文档,输入

@echo off

echo 正在启动 ORACle 服务 ......

sc start OracleServiceWQMS

sc start OracleOraDb11g_home1TNSListener

sc start OracleOraDb11g_home1ConfigurationManager

sc start OracleDBConsolewqms

echo 启动完成!

然后把后缀改为 .bat, 运行即可。注: wqms 是我的数据库名

PL/SQL 登录

当然,如果是个人用 Oracle11g 的话,登录这个图形界面不仅复杂,并且每次重启电脑都要启动 OracleDBConsole*** (数据库名),而且进入了这个浏览器图形界面,感觉好像不能操作数据库,不能进行一般的表操作,我建议你们用 PL/SQL

 

PL/SQl 导入 excel 文档

plsql developer sql window 里输入 select * from test for update ,其中 test 是要导入的 oracle 数据表名称;

执行查询(通过点击按钮或者快捷键 F8 可以实现);

点击查询结果上面的锁状按钮,使得查询到的内容处于编辑状态。

excel 数据表中 copy ctrl C )要导入 oracle 中的数据,如果是单列数据导入,可以先按 plsql developer 中查询结果上面的 添加(+) 按钮,使得数据表处于添加数据状态,然后将鼠标在 plsql developer 的列名称上单击,最后使用快捷键 ctrl v 完成数据导入操作,并单击 plsql developer 中的 提交(对号) 按钮提交所做的修改。

如果是同时导入所有列,首先 excel 表的第一列设置为空值,选择 copy 空值列 + 所有数据,然后点 PL/SQL developer 中,增加(+)并点击编辑那一行最前面的星号 (*) 使得整行数据都处于被选择状态,最后 paste 即可将数据导入。

如果分列导入数据,则需要逐列完成,首先选择 copy 要导入的数据,然后然后点增加(+)并点击编辑那一列的名称,使得整列数据都处于被选择状态,最后 paste 即可将数据导入。

使用 PLSQL developer 执行数据的导入和导出操作主要存在的问题是在大数据量情况下对中文数据可能出错,估计将接收数据表的类型定义为 nvarchar2 的类型会比较好一点。另外,就是这种方法需要人工更多的参与,不能达到自动导入的效果。

用命令行向 oracle11g 导入含空间数据的 dmp

在这里介绍一种命令行备份和导入数据的方法。

比如说用户名为 sde ,密码为 1234 ,数据库名为 wqms

把数据库 wqms 里,用户 sde 下的所有数据(包括表、索引、存储过程、触发器等)备份到某个文件夹(这里设为 e:/es/ ),命令应该这样写:

Exp   sde/1234@wqms   file=e:/es/bf.dmp   log=dc.log

Bf.dmp 为保存后的文件, dc.log 为日志文件,也即命令行黑屏上执行时显示而没来得及看的所有信息。

而导入时,则用下面的命令

Imp  sde/1234@wqms  fromuser=sde  file=e:/es/bf.dmp   log=dr.log  touser=sde

如果 bf.dmp 里面含有空间数据,要想把空间数据正确导入,在导入之前,要把 sde 用户中的表全部删掉,你可以用下面的命令:

sqlplus   sde/1234@wqms

                   spool on

                   spool c:/dd.sql

                   select 'drop '||object_type||' '||object_name||';' from  user_objects order by object_type;

                   spool off

                   @c:/dd.sql;

         Exit

把里面的 sde/1234@wqms 的这个改成自己相对应的用户名、密码和数据库名后,直接拷贝到命令行里执行就行。

再次用导入命令导入后,基本上能解决问题。如果还是不能导进。则可在导入命令的加一句

Ignore =y ,意思是如果导入前有相同表的,忽略不计。整体如下:

Imp   sde/1234@wqms  fromuser=sde  file=e:/es/bf.dmp   log=dr.log   touser=sde ignore=y

这样就可以成功导入了。

现在用 ArcMap 打开,却提示 gsrvr.exe 内存错误,然后又弹出 NetWork I/O error ,什么原因呢?

你只要重新配置一个 ArcSDE 即可。在开始 程序 —ArcGis—ArcSDE—ArcSDE for Oracle11g Post Installation

arcsde for oracle 安装全过程

接着上面来啊。

开始 ”-- 程序 ”-- “ArcGIS”-- “ArcSDE”-- “ArcSDE for oracle11g Post Installation” ,进入安装界面。

1.       选择完全安装,即 “Complete” ,点击 下一步

2.       要求以 Oracle 用户 sys 的身份登陆 Oracle 数据库。在 Sys user password 中输入用户 sys 的密码(安装 Oracle 时输入的);在 Net service name 中输入 Oracle 服务的名字,可以以如下方式查看 Oracle 服务的名字: 控制面板 ”-->“ 管理工具 ”-- 服务 ,找到 “OracleServiceSomename2” 字样的服务(其中, Somename2 只是一个替代字符串),右键点击 属性 ,在弹出的对话框中,看到 可执行文件的路径 下面的字符串,此字符串中 “.EXE ” 后面的部分即是 Oracle 服务的名字。点击 下一步

3.       进入 “ArcSDE configuration files” ,配置 ArcSDE 文件,选择默认,点击下一步即可。

4.       进入 “ArcSDE configuration files continued” ,继续配置 ArcSDE 文件,选择默认,点击下一步即可。

5.       创建方案 SDE 。此时, SDE 用户的名字已经固定,为 “sde” ;程序在 (4) 中已经获得用户 “sde” 的密码,此处也以星号形式给出;程序在( 3 )中已经获得 Oracle 服务的名称,此处也显示给出。此处全部默认即可,点击 下一步 创建 ArcSDE 服务, “Oracle_SID” 必须填,而且要填正确,否则 ArcSDE 服务即使创建了也不能启动。可以用如下方法查看系统已经安装的 Oracle SID :在 Oracle 安装路径下的 “/admin/sde/profile” 文件夹下,有一个 “init.ora.*************” 字样的文件(比如,在我的机器上该文件为 D:/oracle/admin/SDE/pfile/ init.ora.6162005101919 ),用文本文件方式打开,查找字符串 “instance_name” ,可以看到 “instance_name=somename3” 字样的值,这个 somename3 就是 Oracle_SID 。如在这个文档里找不到,则可到注册表下 HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraDb11g_home1 ,这里便有一个名称为 ORACLE_SID 的东东。

6.       如果原来有 ArcSDE 服务,那么此时会提示已经存在服务,是否覆盖;或者提示出错。原因:第 1 步即 打开注册表,删除 ArcSde Service 服务 仅仅把控制面板服务列表中的服务删掉,而真正的服务(在 HKEY_LOCAL_MACHINE/SOFTWARE/ESRI/ArcInfo/ ArcSDE/ArcSDE for oracle 下)还是没删掉,所以会提示是否覆盖。如果第 1 步没有执行,即服务列表中的 ArcSDE 服务没有删掉,就会提示出错。

7.       在以上执行步骤中,由于没有删掉 HKEY_LOCAL_MACHINE/SOFTWARE/ESRI/ArcInfo/ArcSDE/8.0/ArcSDE for oracle 下的 ArcSDE 的真正服务,所以提示是否覆盖。点击 ,一会儿后弹出对话框,提示耐心等待,询问是否启动新创建的 ArcSDE 服务,选择 ,一会儿后提示服务成功启动。

8.         提示安装完成。此时可以到服务列表( 控制面板 ”-- 管理工具 ”-- 服务 )中,找到 “ArcSDE Service somename4 ” (somename4 (9) 中出现的 ArcSDE 服务的名字,默认为 esri_sde), 可以看到确实正常启动了。

9.       现在可以打开 ArcCatalog 了, Database Connection à Add Spatial Database Connection

Server: 你的计算机名或者 127.0.0.1 Service: 在上面安装 SDE 时的,默认为 esri_sde DataBase :你的数据库名; UserName: *** Password:***

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值