一、下载并安装Oracle11g
说明: 这里我安装的Oracle11g的大致步骤和上文oracle12c的步骤大致相同,仅有个别的配置文件参数有所区别,这里主要是以配置ST_Geometry为本节重点。想将自己安装过程中所遇到的问题及如何来解决想跟大家分享一下!
- 下载oracle11g
如果有需下载linux-x64版本的oracle11g,请点击官方下载! - 检查安装环境
(1) 查看Linux系统的内存大小
[agssvrYX@mongodb-1 ~]$ grep MemTotal /proc/meminfo
MemTotal: 57519044 kB
(2) 显示Linux系统上的文件系统的磁盘使用情况
[agssvrYX@mongodb-1 ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg00-lv_root 9.8G 7.4G 1.9G 80% /
devtmpfs 28G 0 28G 0% /dev
tmpfs 28G 13G 15G 48% /dev/shm
tmpfs 28G 2.8G 25G 10% /run
tmpfs 28G 0 28G 0% /sys/fs/cgroup
/dev/vda1 477M 218M 231M 49% /boot
/dev/mapper/vg00-lv_opt 9.8G 4.5G 4.8G 49% /opt
/dev/mapper/vg00-lv_home 2.0G 243M 1.6G 14% /home
/dev/mapper/vg00-lv_tmp 4.9G 2.0G 2.7G 44% /tmp
/dev/mapper/vg00-lv_var 4.9G 1.5G 3.2G 33% /var
tmpfs 5.5G 0 5.5G 0% /run/user/0
tmpfs 5.5G 0 5.5G 0% /run/user/901
tmpfs 14G 14G 0 100% /tmp/memory
/dev/mapper/inmvg01-inmlv01 998G 72G 876G 8% /gis
tmpfs 5.5G 0 5.5G 0% /run/user/1002
注意:大家要是安装oracle11g过程中,最好选择一个可用容量大的磁盘来安装,可以通过df -h命令就能查看,很方便;
- 准备安装包
通过已上传10.130.0.155主机的oracle11g压缩包,将其发送安装包到该台主机(远程服务器拷贝多个文件到本地)
[root@mongodb-1 ~]$ scp 10.130.0.155:/inm/app/\{linux.x64_11gR2_database_1of2.zip,linux.x64_11gR2_database_2of2.zip\} .
- 安装oracle11g
(1) 验证创建及所属组是否正确
[agssvrYX@mongodb-1 ~]$ id agssvrYX
uid=1002(agssvrYX) gid=1002(agssvrYX) 组=1002(agssvrYX),54321(oinstall)
(2) 配置内核参数
[agssvrYX@mongodb-1 ~]$ sudo vim /etc/sysctl.conf
vm.max_map_count = 655360
vm.swappiness = 0
vm.overcommit_memory=1
vm.overcommit_memory=1
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.semopm = 100
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
(3) 配置环境变量
#11g
[agssvrYX@mongodb-1 ~]$ sudo vim ~/.bash_profile
export ORACLE_BASE=/gis/soft/app/oracle
export ORACLE_SID=gismap
export ROACLE_PID=ora11g
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_HOME=/gis/soft/app/oracle/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export LANG="zh_CN.UTF-8"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
(4) 修改安装Oracle软件的响应文件/data/etc/db_install.rsp
[agssvrYX@mongodb-1 ~]$ vi /gis/etc/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=inmshgis04
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/gis/soft/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN,zh_TW
ORACLE_HOME=/gis/soft/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/gis/soft/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=oinstall
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=gisdb
oracle.install.db.config.starterdb.SID=gismap
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=false
oracle.install.db.config.starterdb.memoryLimit=81920
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=Wj708t_DF
oracle.install.db.config.starterdb.password.SYS=Wj708t_DF
oracle.install.db.config.starterdb.password.SYSTEM=Wj708t_DF
oracle.install.db.config.starterdb.password.SYSMAN=Wj708t_DF
oracle.install.db.config.starterdb.password.DBSNMP=Wj708t_DF
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/gis/soft/app/oracle
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/gis/soft/app/oracle_recovery
(5) 开始静默安装
[agssvrYX@mongodb-1 ~]$./runInstaller -silent -responseFile /gis/etc/db_install.rsp
会报如下错误:
CAUSE: Some of the mandatory prerequisites are not met. See logs for details
从新修改安装命令:
[agssvrYX@mongodb-1 ~]$./runInstaller -ignorePrereq -silent -force -responseFile /gis/etc/db_install.rsp
Starting Oracle Universal Installer…
Checking Temp space: must be greater than 120 MB. Actual 150565 MB Passed
Checking swap space: 0 MB available, 150 MB required. Failed <<<<
Some requirement checks failed. You must fulfill these requirements before
continuing with the installation
说明:遇到交换空间不足,可以运行以下命令:
- 先检查一下系统里有没有既存的 Swap 文件
[agssvrYX@inmshgis04 ~]$ swapon -s
Filename Type Size Used Priority
/dev/sda9 partition 1048568 853772 -1
- 再检查一下文件系统,看看是否有足够的硬盘空间来设置 Swap
[agssvrYX@inmshgis04 ~]$ df -hal
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.9G 906M 8.5G 10% /
tmpfs 24G 12G 12G 51% /dev/shm
/dev/sda1 194M 34M 151M 19% /boot
/dev/sda3 9.9G 334M 9.1G 4% /home
/dev/sda10 19G 8.4G 9.3G 48% /inm/app
/dev/sda5 9.9G 296M 9.1G 4% /opt
/dev/sda6 9.9G 804M 8.6G 9% /tmp
/dev/sda7 9.9G 5.1G 4.4G 54% /usr
/dev/sda8 9.9G 2.4G 7.1G 25% /var
/dev/mapper/vg01-gis 909G 159G 704G 19% /gis
/dev/mapper/vg01-sftp_data 99G 58G 36G 62% /data
- 创建并允许 Swap 文件下面使用 dd 命令来创建 Swap 文件。检查返回的信息,还剩余足够的硬盘空间即可。
[agssvrYX@inmshgis04 ~]$ dd if=/dev/mapper/vg01-gis of=/swapfile bs=1024 count=512k
参数解读:if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >bs=bytes:同时设置读入/输出的块大小为bytes个字节count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。
- 格式化并激活 Swap 文件上面已经创建好 Swap 文件,还需要格式化后才能使用。
[agssvrYX@inmshgis04 ~]$ mkswap /swapfile
- 激活 Swap
[agssvrYX@inmshgis04 ~]$ swapon /swapfile
- 以上步骤做完,再次运行命令:
[agssvrYX@inmshgis04 ~]$ swapon -s
Filename Type Size Used Priority
/dev/sda9 partition 1048568 853772 -1
/swapfile file 524280 0 -2
- 机器重启的时候自动挂载 Swap ,那么还需要修改 fstab 配置。用 vim 打开 /etc/fstab 文件,在其最后添加如下一行:
[agssvrYX@inmshgis04 ~]$ vim /etc/fstab
/swapfile swap swap defaults 0 0
- 最后,赋予 Swap 文件适当的权限:
[agssvrYX@inmshgis04 ~]$ chown root:root /swapfile
[agssvrYX@inmshgis04 ~]$ chmod 0600 /swapfile
- 配置监听程序
[agssvrYX@inmshgis04 ~]$ netca /silent /responsefile /data/etc/netca.rsp
正在对命令行参数进行语法分析:
参数"silent" = true
参数"responsefile" = /data/etc/netca.rsp
完成对命令行参数进行语法分析。
Oracle Net Services 配置:
完成概要文件配置。
Oracle Net 监听程序启动:
正在运行监听程序控制:
/data/app/oracle/product/12.2.0/db_1/bin/lsnrctl start LISTENER
监听程序控制完成。
监听程序已存在。
监听程序配置完成。
成功完成 Oracle Net Services 配置。退出代码是0
说明:监听程序已存在,主要是因为我在linux本机服务器已经安装了oracle 12c,当时我只是将oracle 12c数据库shutdown,并没有停止监听程序,所以大家如果遇到此类问题,请先将其他oracle数据库卸载并且停止原先的监听程序即可;
二、Oracle 11.2.0配置ST_Geometry
- 环境
(1) SDE
(2) Oracle11g - 配置
(1) 将libst_shapelib.so文件上传到/gis/soft/app/oracle/product/11.2.0/db_1/lib
目录下.
[agssvrYX@inmshgis04 ~]$ cp /home/agssvrYX/libst_shapelib.so /gis/soft/app/oracle/product/11.2.0/db_1/lib/
(2) 增加执行权限
[agssvrYX@inmshgis04 ~]$ sudo chmod 777 /gis/soft/app/oracle/product/11.2.0/db_1/lib/libst_shapelib.so
(3)进入/gis/soft/app/oracle/product/11.2.0/db_1/hs/admin/
[agssvrYX@inmshgis04 ~]$ cd /gis/soft/app/oracle/product/11.2.0/db_1/hs/admin/
[agssvrYX@inmshgis04 admin]$ cp extproc.ora extproc.ora.bak
[agssvrYX@inmshgis04 admin]$ vi extproc.ora
SET EXTPROC_DLLS=ONLY:/data/app/oracle/product/11.2.0/db_1/lib/libst_shapelib.so
(4) 编辑listener.ora和tnsname.ora文件
[agssvrYX@inmshgis04 db_1]$ cd network/admin/
[agssvrYX@inmshgis04 admin]$ ll
总用量 24
-rw-rw-r-- 1 agssvrYX agssvrYX 668 3月 23 12:31 listener.ora
-rw-rw-r-- 1 agssvrYX agssvrYX 780 3月 23 12:28 listener.ora.bak
drwxr-xr-x 2 agssvrYX agssvrYX 4096 3月 17 18:26 samples
-rw-r--r-- 1 agssvrYX agssvrYX 1441 8月 28 2015 shrept.lst
-rw-rw-r-- 1 agssvrYX agssvrYX 192 3月 17 18:31 sqlnet.ora
-rw-r----- 1 agssvrYX agssvrYX 611 3月 23 17:33 tnsnames.ora
[agssvrYX@inmshgis04 admin]$ vi listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = gismap)
(ORACLE_HOME = /gis/soft/app/oracle/product/11.2.0/db_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:/gis/soft/app/oracle/product/11.2.0/db_1/lib/libst_shapeli
b.so")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.130.0.174)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /gis/soft/app/oracle
[agssvrYX@inmshgis04 admin]$ vi tnsname.ora
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = gismap)
(PRESENTATION = RO)
)
)
GISDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.130.0.174)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = gisdb)
)
)
(5) 监听状态更改
[agssvrYX@inmshgis04 admin]$ lsnrctl status
[agssvrYX@inmshgis04 admin]$ lsnrctl stop
[agssvrYX@inmshgis04 admin]$ lsnrctl start
[agssvrYX@inmshgis04 admin]$ lsnrctl reload
(6) 以事先创建好的sde用户登录数据库
[agssvrYX@inmshgis04 admin]$ sqlplus sde@gisdb
可以尝试检查user_libraries表,ST_SHAPELIB的记录是否存在;
sql > select * from user_libraries;
说明: 估计这功夫查询是没有记录的;表为空
在user_libraries表中创建或更新ST_SHAPELIB对应的外部函数库文件所在的路径
sql > create or replace library ST_SHAPELIB as '/gis/soft/app/oracle/product/11.2.0/db_1/lib/libst_shapelib.so';
SQL> select * from user_libraries;
LIBRARY_NAME
--------------------------------------------------------------------------------
FILE_SPEC
--------------------------------------------------------------------------------
DYN STATUS
--- ---------------------
ST_SHAPELIB
/gis/soft/app/oracle/product/11.2.0/db_1/lib/libst_shapelib.so
Y VALID
编译失效的存储过程
# 编译SDE用户下所有失效的存储过程
sql > exec dbms_utility.compile_schema('SDE');
试验成功效果:
sql > select sde.st_point (10.01, 20.03, 0) from dual;
SDE.ST_POINT(10.01,20.03,0)(GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_EL
--------------------------------------------------------------------------------
ST_POINT(SDO_GEOMETRY(2001, 0, SDO_POINT_TYPE(10.01, 20.03, NULL), NULL, NULL))
三、总结
希望本次的Oracle11g数据库的安装以及最重要的ST_Geometry配置过程知识分享,能够让大家在工作当中少走一些弯路,提高一点点工作效率,我的愿望就达到了!!!内容如果有不足的地方,希望大家在下方留言~