首页 > (转)linux下oracle instant client安装和运行

(转)linux下oracle instant client安装和运行

1.首先要知道什么是ORACLE的客户端:

Oracle Instant client oracle提供的简便客户端支持多种平台可从oracle网站下载下载地址为

http://www.oracle.com/technology/tech/oci/instantclient/index.html

包括如下内容:

Instant client Package - Basic 运行OCI, OCCI, JDBC-OCI应用程序需要的所有文件

Instant client Package - Basic Lite: 只包含英语错误信息只支持unicode, ascii, 西欧字符集

Instant client Package - JDBC Supplement  jdbc增加了xa, 国际化和RowSet操作.

Instant Client Package - SQL *Plus 包含sqlplus和需要的库文件

Instant client Package - SDK 使用Instant Client开发Oracle 应用程序需要的头文件及示例makefile

Instant client package - ODBC 使用odbc时需要的库不是所有平台都有. linux平台包含

BasicBasic Lite两个中必须选一个其他包都是可选的我下载了 Basic, JDBC supplement, SQL *Plus, SDK, ODBC. 解压后放在一个文件夹下在这个文件夹下建立文件tnsnames.ora, 设置环境变量LD_LIBRARY_PATHTNS_ADMIN指向解压后的目录就可以使用sqlplus

我下载的instant client版本为11.1, 测试了联接到oracle 9.2.0.4oracle 10.2.0.1. 

Instant Client
中不包含tnsping, exp/imp, rman, netca等工具如果需要这些工具则需要安装oracle client。现在明白Instant client Package - Basic 提供OCCI的库文件,Instant client Package - SDK OCCI的头文件及例子。

2.安装过程:

http://www.oracle.com/technology/software/tech/oci/instantclient/下载以下文件:oracle-instantclient-sqlplus-11.1.0.1-1.i386.rpm

oracle-instantclient-basic-11.1.0.1-1.i386.rpm

1>安装oracle 11 client

#rpm -ivh oracle-instantclient-sqlplus-11.1.0.1-1.i386.rpm

#rpm -ivh oracle-instantclient-basic-11.1.0.1-1.i386.rpm

2>配置libs

#vi /etc/ld.so.conf

----------------------------------------------

/usr/lib/oracle/11.1.0.1/client/lib/

----------------------------------------------

#ldconfig

ldconfig是一个动态链接库管理命令,主要是在默认搜寻目录(/lib/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为  /etc/ld.so.cache,此文件保存已排好序的动态链接库 名字列表. 它是程序运行所需的动态连接库的 配置文件。

3>运行测试

[root@localhost sdk]# sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on Wed Jan 30 09:44:34 2008

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

SQL>

4>sqlplus远程连接命令语法

 #sqlplus  user/pass@"(DESCRIPTION   =(ADDRESS_LIST  =(ADDRESS  =  (PROTOCOL  =  TCP)(HOST  =  10.10.50.10)(PORT  =  1521))  )(CONNECT_DATA  =  (SID  =  oraclesid)))"  [as sysdba]

 # sqlplus user/pass@//host:port/sid [as sysdba]

 # sqlplus user/pass@host:port/sid [as sysdba]

 # sqlplus userid/[email protected]:1521/sid [as sysdba]

/usr/lib/oracle/下增加和编辑文件tnsnames.ora

Orasvr2=

(DESCRIPTION=

(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.82)(PORT = 1521))

(CONNECT_DATA=

(SERVER = DEDICATED)

(SERVICE_NAME =ora9i)

其中:ORASVR2:数据库的事例名

192.168.1.82数据库服务器地址

ora9i:数据库名

 

数据库连接方式:

根据你的连接方式决定是否配置tnsnames.ora

如果用user/pwd@sid这种本地名称解析方式连接,就需要配。

如果用user/pwd@ip:port/sid这种ezconnect方式连接,则不需要配。

即时客户端:所以如果想用本地名称解析的话,就新建tnsnames.ora文件,位置自己决定,不过要设置环境变量TNS_ADMIN对应到它的目录。

我在安装完 oracle-instantclient-sqlplus-11.1.0.1-1.i386.rpm后直接输入:sqlplus system/[email protected]:1521/OS101

5>解决linuxsqlplus退格显示乱码。

linux环境下使用sqlplus,在回删(backspace)时往往会出现 一串的乱码。出现乱码是由于oraclesqlplus不使用gnureadline库造成的。

  解决方法有两种:

  1。要使用回删键(backspace)时,同时按住ctrl

  2。设定环境变量

  在bash下:$ stty erase ^?

  或者把 stty erase ^? 添加到.bash_profile中。

  在csh下:$ stty erase ^H

  或者把 stty erase ^H 添加到.cshrc中。

 

3.安装完之后我们可以运行OCCI的例子,但在这其中发生了很多的问 题:

我以开始下的是ORACLE10i的编译时总错,我的LINUX子带的库比它高,所以我又改有ORACLE11这回就好了。

ln -s libclntsh.so.10.1 libclntsh.so

ln -s libocci.so.10.1 libocci.so

两个连接必须要做的。ln -s则是软链接,也就是windows下快捷方式的概念。

设置ld_library_path它是运行时加载动态库的环境变 量,

export  ld_library_path=/usr/lib/oracle/11.1/client/lib

你也可以在这里设置就不用总设了:

编辑文件/root/.bash_profile文件,增加以下内容:

PATH=$PATH:$HOME/bin:/usr/lib/oracle

LD_LIBRARY_PATH=$ LD_LIBRARY:/usr/lib/oracle

SQLPATH=/usr/lib/oracle

TNS_ADMIN=/usr/lib/oracle    //新 建tnsnames.ora文件所在地。

NLS_LANG="Simplified Chinese_China.ZHS16GBK"  //汉语

export PATH LD_LIBRARY_PATH SQLPATH TNS_ADMIN

unset USERNAME

 

-Wl,-rpath=./  表示 在./目录(即当前目录)寻找库文件

 

但还有问题:

1. [root@localhost sdk]# g++ -o occidml.o occidml.cpp -I/usr/include/oracle/ -L/usr/lib/oracle/lib/ -locci -lclntsh

/usr/bin/ld: warning: libaio.so.1, needed by /usr/lib/oracle/lib//libclntsh.so, not found (try using -rpath or -rpath-link)

这时你按个libaio的库就可以了。

2. [root@localhost sdk]# ./occidml

./occidml: error while loading shared libraries: /usr/lib/oracle/lib/libnnz11.so: cannot restore segment prot after reloc: Permission denied

这个问题可就麻烦了,一开始不懂,尝试先生成.o文件,再连接成可执行文件,可还是不行。

原来是SElinux的事:

[root@localhost sdk]# chcon -t texerl_shlib_t/usr/lib/oracle/lib/libnnz11.so

chcon: too few arguments

请尝试执行“chcon --help”来获取更多信息。

还是不行,不懂chcon是干嘛的,上网看最后知道

解决办法:

chcon /usr/lib/oracle/lib/libnnz11.so -t shlib_t

原因是Linux有一个SELinux保护模式引起的。

关闭SELINUX的方法:

vi /etc/selinux/config SELINUX=enforcing 改成SELINUX=disabled

保存,重起电脑即可.

FC5 中的SELinux 代表了用户,程序以及进程间相互 交流的主要变化。

 

最后运行还是不行:error: ORA-12162: TNS:net service name is incorrectly specified

没辙了,我觉的是我没在本机上装数据库所以有OCCI提供的连数据库的函数createConnection是不行的,因为它是连接本地数据库 的,连接远程数据库要用别的函数,这个还在查找中。

但现在解决了,就是在代码中用ezconnect方式连接:system/[email protected]:1521/)OS101,这样就好了。

以上是我在linux下连接远端数据库的过程,希望对大家有帮助。

转载于:https://www.cnblogs.com/jin20000/archive/2011/05/19/2051123.html

更多相关:

  • OpenCV 一、计算机 中的配置: 在 计算机 -> 属性 -> 高级系统属性 -> 高级 -> 环境变量 -> 系统变量 -> Path 中添加: D:Program Filescpp libopencvuildx64vc15in 二、Visual Studio 中的配置: 1.在 VC++目录 ->...

  • 什么是dcevm        dcevm(DynamicCode Evolution Virtual Machine)是java hostspot的补丁(严格上来说是修改),允许(并非无限制)在运行环境下修改加载的类文件.当前虚拟机只允许修改方法体(method bodies),decvm,可以增加 删除类属性、方法,甚至改变一个类...

  • 在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设置相关参数,首先先介绍一般而言如何启动oracle。 一、在Linux下启动Oracle 登录到CentOS,切换到oracle用户权限 # su – or...

  • TOMCAT J2EE项目连接池配置 web 项目的 web.xml            DB Connection     jdbc/oracle     

  • OCRCONFIG工具主要功能是备份、恢复ocr的。虽然用oracle用户可以直接运行ocrconfig,但是大部分命令还需要root用户才有权限执行:bash-2.03$ ocrconfig名称:       ocrconfig - Oracle集群注册表的配置工具。概要:       ocrconfig [option]    ...

  • .NET连接ORACLE数据库的方法就目前有3种: 1.OLEDB的方式,这种方式要求你要安装oracle client,这两年来做的关于oracle数据库的,我都采用这种方式,虽然连接的速度慢了一点,但是用起来是蛮顺手的,基本能满足要求,连接字串如下: "Provider=OraOLEDB.Oracle.1;Persist Secu...

  • 一,服务器系统 RedHat Enterprise Linux 5.0   二,数据库软件 Oracle10g (10.2.0)   三,硬件基本需求(命令查看需求如图) 内存/51...

  • 本文来自 运维人生 ,作者:fly是个稻草人链接:http://www.ywadmin.com/?id=76误删除linux系统文件了?不用急,本文将给你一个恢复linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~说在前面的话针对日常维护操作,难免会出现文件误删除的操作。大家熟知linux文件系统不同win有回收...

  • 原文来自SecIN社区—作者:WiHat0x00 什么是WebShell渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权限,而...

  • 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗?更进一步的, 文件系统如何保证事务性, 会不会存在某种极端情况导致例如最后几个bit还没写完, 文件系统却认为它成功了的情况?回答不限任何文件系统,谢谢!下面是「北极」的回复分享断电的一瞬间,很多事情是无法确定的:1. 你无法确定...

  • 接到项目需求。需要搭建一个页面进行交互,慢慢来b (2).jpg使用python django框架进行页面的搭建在项目文件下打开窗口,输入命令;django-admin startproject helloword#在文件helloword/helloword/创建view.py在view.py文件中输入以代码from django....

  • 常见的错误集合解决方案(一)No.1提示错误'Microsoft.VC90.CRT,version="9.0.21022.8"把Microsoft.NET Framework 3.5.1下面的全部勾选上。No.2解决Qt Designer设计的图标但是VS生成不显示问题描述:在Qt designer中为菜单栏和工具栏设计的图标,但是...