当前位置: 首页 > 编程日记 > 正文

(转)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/pwd@database.company.com: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/8823@172.16.100.101: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/8823@172.16.100.101:1521/)OS101,这样就好了。

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

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

相关文章:

LeetCode实战:删除排序数组中的重复项

题目英文 Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra me…

16G 手机清理

1.16G 手机清理 清理top 5 的应用的缓存即可 2,hw wife 连接模块 低于 app wifi 的连接模块。 在同样的电脑热点面前,hw 连补上电脑热点,apple 可以连上电脑热点。 其他差异不大。 2.奇兔刷机 tencent应用宝 and 手机管理,备份软件 http://w…

java培训有哪些收费标准

随着学习java技术的人越来越多,市面上的java培训机构也越来越多,每家机构的收费标准都不一样,这让很多想要学习java技术的小伙伴都比较头疼,下面小编就为大家详细的介绍一下java培训有哪些收费标准?如何来评判适合自己的java培训…

使用ASP.NET操作IIS7中使用应用程序

在最新发布的启明星Portal里,增加了安装程序,下面说一下.NET对IIS7操作。IIS7的操作和IIS5/6有很大的不同,在IIS7里增加了 Microsoft.Web.Administration 命名空间里,增加了ServerManager、Site几个大类来操作IIS7。 下面是一些核…

MYSQL体系结构-来自期刊

MYSQL体系结构-来自期刊 MySQL三层体系结构|-----------------------------------------------------------------------------------| | mysqld-SQL层 | |-------------------------------------------…

LeetCode实战:搜索旋转排序数组

题目英文 Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]). You are given a target value to search. If found in the array return its index, otherwise retur…

Python内置数据结构之双向队列

经常听说Python就是一门执行速度低的语言,可能是你的程序中使用了复杂的算法与数据结构,才会导致程序执行速率低的。在Python的标准库中提供了常见的数据结构工开发者使用,不仅执行速率比较快,还可以简化开发者的编程工作。下面我…

C# GDAL 学习一

最近一直琢磨如何用C#GDAL读取栅格数据(.tif或.img),运气不错的在GDAL 的官网上找到一部分源码。经过本人测试,效果还不错。学习还将继续深入下去。 参考网址:http://trac.osgeo.org/gdal/browser/trunk/gdal/swig/csh…

LeetCode实战:字符串相加

题目英文 Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2. Note: The length of both num1 and num2 is < 5100.Both num1 and num2 contains only digits 0-9.Both num1 and num2 does not contain any leadin…

js中修改this的指向方法整理

JavaScript(简称“JS”) 是一种具有函数优先的轻量级&#xff0c;解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名&#xff0c;但是它也被用到了很多非浏览器环境中&#xff0c;JavaScript 基于原型编程、多范式的动态脚本语言&#xff0c;并且支持面向…

VC运行时库(/MD、/MT等)

VC项目属性→配置属性→C/C→代码生成→运行时库 可以采用的方式有&#xff1a;多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)、单线程(/ML)、单线程调试(/MLd)。 Reusable LibrarySwitchLibraryMacro(s) DefinedSingle Threaded/MLLIBC(none)Static Mu…

函数式编程概述

2019独角兽企业重金招聘Python工程师标准>>> 引子 JDK8中引入了lambda函数式编程的概念&#xff0c;那么什么是函数式编程&#xff0c;函数式编程又有什么好处&#xff0c;今天我们就来说说函数式编程 我们先了解一下函数式编程的由来 一个名叫阿隆佐邱奇的数学家设…

LeetCode实战:字符串相乘

题目英文 Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string. Example 1: Input: num1 "2", num2 "3" Output: "6"Example 2: Input: num1 &q…

UI培训教程之系统图标如何设计?

UI设计在近几年广受大家的关注&#xff0c;学习UI设计的人越来也多&#xff0c;今天小编要介绍的就是其中的系统图标设计方法&#xff0c;系统图标在UI设计中是非常基础的图形化语言&#xff0c;也在页面交互中起到很重要的作用。单个图标的设计并不难&#xff0c;但是系统化、…

看懂SQL Server的查询计划(绝对好文!)

在园子看到一篇SQLServer关于查询计划的好文&#xff0c;激动啊,特转载。原文出自:http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html看懂SqlServer查询计划对于SqlServer的优化来说&#xff0c;可能优化查询是很常见的事情。关于数据库的优化&#xff0c;本身也…

LeetCode实战:全排列

题目英文 Given a collection of distinct integers, return all possible permutations. Example: Input: [1,2,3] Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] ]题目中文 给定一个没有重复数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: …

git pull出现There is no tracking information for the current branch

使用git pull 或者 git push 的时候报错 gitThere is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details git pull <remote> <branch> If you wish to set tracking information…

零基础快速学习Java技术的方法整理

在学习java技术这条道路上&#xff0c;有很多都是零基础学员&#xff0c;他们对于java的学习有着很多的不解&#xff0c;不知怎么学习也不知道如何下手&#xff0c;其实Java编程涉及到的知识点还是非常多的&#xff0c;我们需要制定java学习路线图这样才能少走弯路&#xff0c;…

转 深入理解Midlet类

在J2ME编程过程中&#xff0c;MIDlet是最核心的类之一&#xff0c;熟悉该类的使用是J2ME学习过程中必须首先掌握的类&#xff0c;下面就结合实际介绍一下该类的实际使用。 众所周知&#xff0c;J2ME程序都是从MIDlet类开始执行&#xff0c;系统规定了MIDlet的生命周期。规定MID…

LeetCode实战:最大子序和

题目英文 Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum. Example: Input: [-2,1,-3,4,-1,2,1,-5,4], Output: 6 Explanation: [4,-1,2,1] has the largest sum 6.Follow up…

PHP如何更好的利用PHPstorm的自动提示

说明 写了一段时间的java之后&#xff0c;特别不习惯PHP本身的弱类型方式&#xff0c;在写代码的时候总觉得不怎么放心&#xff0c;特别本身PHP又是弱类型的语言&#xff0c;所以在编码的时候&#xff0c;很多时候是没有代码提示的。 一个一般例子 class Data {public $name;pu…

2021年Java面试题目最新总结【90%面试会踩的坑】

学会java技术之后大家面临的最多的问题就是面试这关&#xff0c;求职面试java岗位是否能够成功是直接影响我们的工作机会的&#xff0c;所以对于Java程序员面试你准备好了吗?今天小编汇总了一下关于Java程序员面试&#xff0c;90%会踩到的坑。 2021年Java面试题目最新总结【90…

LeetCode实战:螺旋矩阵

题目英文 Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order. Example 1: Input: [[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ] ] Output: [1,2,3,6,9,8,7,4,5]Example 2: Input: [[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,…

Json的序列化和反序列化

1、引用命名空间: usingSystem.Runtime.Serialization;2、json的序列化和反序列化的方法&#xff1a; publicclassJsonHelper {///<summary>///序列化///</summary>///<typeparam name"T"></typeparam>///<param name"t">&l…

Angular开山篇

1&#xff1a;环境搭建 今天给大家介绍4种环境搭建的方法。一&#xff1a;Angular-cli的安装 官方指导文档&#xff1a;www.angular.cn/guide/quickstart 请使用cnpm来安装&#xff0c;或者配置淘宝镜像。 使用原生npm安装可能会遇到的问题&#xff1a; 需要python的环境可能会…

零基础参加软件测试培训需要学多长时间

软件测试对于零基础学员来说是非常好入门的&#xff0c;软件测试没有很多的限制&#xff0c;那么零基础参加软件测试培训需要学多长时间呢?来看看下面的详细介绍吧。 零基础参加软件测试培训需要学多长时间?软件测试培训时间一般都在四个月左右&#xff0c;四个月时间的课程内…

Windows API函数大全

1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一…

LeetCode实战:螺旋矩阵 II

题目英文 Given a positive integer n, generate a square matrix filled with elements from 1 to n^2 in spiral order. Example: Input: 3 Output: [[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ] ]题目中文 给定一个正整数 n&#xff0c;生成一个包含 1 到 n^2 所有元素&#x…

电子文件归档为什么非云不可

本文讲的是电子文件归档为什么非云不可华为云为企业搭建功能强大的电子文件归档系统平台&#xff0c;一站式满足文件存储与管理、协同分享、移动办公等不同的业务需求。打造安全、高效、便捷的文件归档环境&#xff0c;帮助企业节省运营成本&#xff0c;优化管理流程&#xff0…

北京学习Java培训有哪些比较好

北上广算是互联网技术大咖的聚集之地&#xff0c;很多知名互联网企业都在这些城市&#xff0c;随之java培训机构也是非常多的&#xff0c;那么在北京学习java培训有哪些比较好呢?来看看下面的详细介绍吧。 北京学习Java培训有哪些比较好?想要在这些培训机构中选择比较靠谱的J…