您的当前位置:首页正文

oracle 10 client安装包for LINUX

来源:九壹网


一些包可以从网站下载和安装盘上安装:

http://bingle.pku.edu.cn/cgi-bin/search?word=make-3.79&FType=255&submit.x=15&submit.y=15

oracle 10 client安装包:10201_client_linux_x86_64.cpio

umask 022

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/client_1

export PATH=$ORACLE_HOME/bin:$PATH

二.安装:

1. 安装操作如下:

1.1. 创建oracle用户

[root@124]# useradd oracle

[root@124]# passwd oracle

1.2 修改oracle用户的环境变量

[root@124]# cd /home/oracle/

[root@124]# vi .bash_profile

图一1.3 授权oracle用户

[root@124]# chown - R oracle.oracle /home/oracle

1.3解压缩安装文件

[oracle@124]# cpio -ivmd<10201_client_linux_x86_64.cpio

[oracle@124]# cd client

[oracle@124]# ./runInstaller

1.3. 修改版本当出现提示:redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2即不支持发行版本linux 5下时,

修改以下文件:[root@124]# vi /etc/redhat-release 图二 (release 5 改为release 4)

1.4. 不出现安装界面时做如下操作:

[oracle@124]# export DISPLAY=ip:0.0 (ip为oracle10 client的ip)

[oracle@124]# export DISPLAY=xhost +1.5.

现在安装就可出现oracle client的安装界面了:

[oracle@124]# ./runInstaller

图三 注:如果出现安装界是乱码解决方法:

export LANG=UTF-8

安装时还报其它错误,

可安装相应oracle 10g的rpm包解决

系统少oracle 10g 安装包报时的异常图四

/////////////////////////////////////

LINUX下安装ORACLE数据库以及OCI的使用方法收藏

关于LINUX系统下安装ORACLE数据库的一点总结

写在前面:

因为之前做一个GPS车辆监控系统,是基于LINUX系统的C语言开发的用OCI驱动连接ORACLE数据库的应用程序,里面要引入一个头文件,而这个头文件必须要安装

ORACLE的客户端,其实在LINUX系统下,ORACLE客户端和服务器的安装复杂度并没有多大区别,甚至流程都完全相同。在LINUX系统下安装ORACLE数据库是件颇令人头痛的事情,网上的安装资料也很多,但是要么是互相转载,要么是不完整的,我充分了解作为没有安装经验的人员安装的心情,把我的一点安装经验写出来,作为抛砖引玉。因为没有时间,对于安装的过程未求甚解,下面以在3850服务器上的LINUX5.0系统下安装ORACLE10G客户端为例,详述安装过程。

1、 在3850上安装了LINUX5.0系统后,如果网卡是双网卡的话,系统安装完成之后是识别不了网卡的,必须要安装brcm_dd_nic_bnx2-1.7.6b_rhel5_32-64.tgz,网上去下载这个安装包,注意是tgz压缩文件,解压方法网上很多。解压完了之后会有一个install.sh的文件,在终端里进入该目录,输入./install.sh –update –force,然后回车。安装完毕之后必须重启系统,然后进入系统à网络,在里面配置IP和DNS等。然后激活,就可以上网了。

2、 要准备一些软件包,

compat-gcc-32-3.2.3-47.3.i386.rpm

compat-libgcc-296-2.96-132.7.2.i386.rpm

compat-libstdc++-33-3.2.3-47.3.i386.rpm

compat-libstdc++-296-2.96-132.7.2.i386.rpm

gcc-3.2.2-5.i386.rpm

j2sdk-1_4_1_02-fcs-linux-i586.rpm

libxml2-tests-2.7.2.tar.gz

把系统盘放进去,上面这些包有的能在系统盘里找到,有的需要网上下载。安装完毕之后,运行rpm –q gcc make binutils openmotif,一般情况下能看到有一个openmotif的软件包没有安装,在安装这个包之前,要先在系统盘里找到一个libXp的软件包,要先安装了这个包之后才能解决依赖关系,才能安装openmotif.

3、 验证系统的要求,一般来说现在服务器的配置都是比较高的,所以我觉得这一步可以免去。要查看可用RAM和交换空间的大小,可以用以下命令:

#grep MemTotal /proc/meminfo

#grep SwapTotal /proc/meminfo

4、 创建ORACLE组和账户

在root账户下输入

#/user/sbin/groupadd oinstall

#/usr/sbin/groupadd dba

#usr/sbin/useradd –m –g oinstall –G dba oracle

#id oracle

设置ORACLE账户的密码

#passwd oracle

Changing password for user oracle.

New passwd:

Retype new passwd:

Passwd:all authentication tokens update successfully

5、 创建目录:

#mkdir –p /u01/app/oracle/product/10.2.0/db_1 //此目录是存储安装软件的目录

#mkdir –p /u02/oradata //此目录存放安装程序的位置

#chown –R oracle:oinstall /u01 /u02

#chmod –R 775 /u01 /u02

6、 配置LINUX内核参数

cat >> /etc/sysctl.conf <kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

EOF

/sbin/sysctl -p

7、 为ORACLE用户设置Shell限制

#cat >> /etc/security/limits.conf <>oracle soft nproc 2047

>oracle hard nproc 16384

>oracle soft nofile 1024

>oracle hard nofile 65536

EOF

#cat >> /etc/pam.d/login <>session required /lib/security/pam_limits.so

EOF

8、 环境变量:如果按照上面流程进行安装的话,下面的环境变量完全复制过去就可以用了,该环境变量配置文件包含了时间格式、汉字编码格式、libxml。

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

# Oracle Settings

TMP=/tmp; export TMP

TMPDIR=$TMP; export TMPDIR

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME

ORACLE_SID=orcl; export ORACLE_SID

ORACLE_TERM=xterm; export ORACLE_TERM

PATH=/usr/sbin:$PATH; export PATH

PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; LD_LIBRARY_PATH

export

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdb

ms/jlib; export CLASSPATH

if [ $USER = \"oracle\" ]; then

if [ $SHELL = \"/bin/ksh\" ]; then

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

fi#export C_ALL=C

export NLS_LANG=\"AMERICAN_AMERICA.UTF8\"

export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

#export LANG=zh_CN.GB2312

export LANGUAGE=zh_CN.GB2312:zh_CN.GB2312:zh_CN

export

SUPPORTED=zh_CN.GB2312:zh_CN:zh:zh_TW.Big5:zh_TW:zh:en_US.UTF-8:en_US:en

9、 如果你的LINUX系统是redhat-5版本的话,请进入/etc/redhat-release打开,将Red Hat Enterprise Linux Server release 5(Tikanga) 替换成redhat-4。

在此目录下找到此文件

/etc/selinux/config,找到这段:

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - SELinux is fully disabled.

SELINUX=enforcing

把 SELINUX=enforcing 注释掉:#SELINUX=enforcing ,然后新加一行为:

SELINUX=disabled

保存,关闭。

编辑/etc/sysconfig/selinux,找到:

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - SELinux is fully disabled.

SELINUX=enforcing

如果SELINUX已经是 SELINUX=disabled,那么就不用改了,否则就把SELINUX=enforcing 注释掉,新加一行:

SELINUX=disabled

保存,退出。

{

如果你碰到其他类似提示:

cannot restore segment prot after reloc: Permission denied

哪应该是SELinux的问题,可以考虑把它关闭。

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

郁闷的是.我把SELinux关闭后还是不行.于是到google上search.发现这个很有用.

在你保证SElinux 被disable后.还执行下

chcon -t texrel_shlib_t

如: chcon -t texrel_shlib_t /路径/路径/名字.so (这个文件视具体执行文件.)

}

在/etc/ld.so.conf中加入

/u01/app/oracle/product/10.2.0/db_1/lib

/usr/local/lib

这两行。然后执行#/sbin/ldconfig –v。

到此,配置基本结束了,接下来就是安装了。

10、 将安装程序拷进/u02/oradata,进行解压,如果是10201_client_linux_x86_64.cpio这样的cpio压缩文件,用这的解压方法 #cpio -idmv < 文件名.cpio进行解压。完成之后重启系统,进入ORACLE账户下(注:安装ORACLE必须要在ORACLE账户下)

11、 到oradata目录下会发现一个client的文件夹,$cd /u02/oradata/client,然后运行$./runInstaller回车,默认安装。接下来都是下一步了。安装完了之后输入$netca进行网络配置。如果是服务器端安装流程和配置完全一样,结束之后输入$sqlplus,然后输入system/manager@orcl,进去再查询ORACLE默认的表select * from user_tables,会发现很多的数据。如果重启之后,有可能数据库没有启动起来,则输入$isqlplusctl start.

附录:

1、 LINUX安装序列号:a56eb0c3a4e54ab0

2、 用OCI执行一个简单的SQL查询语句完整代码(注意:查询的字段为一个)

#include

#include

#include

#include

#include

#include

#include

#include

int ocisql(char sql[]);

int CheckErr(OCIError *pErr, sword lStatus);

int ocisql(char sql[])

{

//数据库服务名

static char* dbname = (char*) \"gpsdb\";

//用户及密码

static char* username = (char*) \"gpsuser\";

static char* password = (char*) \"xxzxgpsserver\";

OCIEnv *envhp; // 环境句柄

OCIServer *srvhp; //服务器句柄

OCIError *errhp; //错误句柄

OCIError *errhp1; //错误句柄

OCIError *errhp2; //错误句柄

OCISession *usrhp; //用户会话句柄

OCISvcCtx *svchp; //服务上下文句柄

OCIStmt* stmthp; //语句句柄

//三个定义句柄,用于定义输出结果

OCIDefine* defhp1 = (OCIDefine *) 0;

//OCIDefine* defhp2;

//OCIDefine* defhp3;

//OCIDefine* defhp4;

//输出变量

p_sli3=(char *)malloc(200);

memset(p_sli3,0,200);

//使用线程和对象模式来创建环境句柄

OCIEnvCreate(&envhp, OCI_THREADED|OCI_OBJECT, (dvoid *)0,

0, 0, 0, (size_t) 0, (dvoid **)0);

//分配服务器句柄

OCIHandleAlloc ((dvoid *)envhp, (dvoid **)&srvhp,

OCI_HTYPE_SERVER, 0, (dvoid **) 0);

//分配错误句柄

OCIHandleAlloc ((dvoid *)envhp, (dvoid **)&errhp,

OCI_HTYPE_ERROR, 0, (dvoid **) 0);

OCIHandleAlloc ((dvoid *)envhp, (dvoid **)&errhp1,

OCI_HTYPE_ERROR, 0, (dvoid **) 0);

OCIHandleAlloc ((dvoid *)envhp, (dvoid **)&errhp2,

OCI_HTYPE_ERROR, 0, (dvoid **) 0);

//创建服务器上下文句柄,\"orcl\"为建立连接的数据库名

if (OCIServerAttach (srvhp, errhp, (char *)dbname,

strlen ((char*)dbname), OCI_DEFAULT) == OCI_SUCCESS)

printf(\"\\nconnect successfull\\n\");

else //终止程序

{

printf(\"\\n数据库名字不对,连接数据库失败!\\n\");

return -1;

}

//分配服务器上下文句柄

OCIHandleAlloc ((dvoid *)envhp, (dvoid **)&svchp,

OCI_HTYPE_SVCCTX, 0, (dvoid **) 0);

//设置服务器上下文句柄的服务器句柄属性

OCIAttrSet ((dvoid *)svchp, OCI_HTYPE_SVCCTX,

(dvoid *)srvhp, (ub4) 0, OCI_ATTR_SERVER, errhp);

//分配用户会话句柄

OCIHandleAlloc ((dvoid *)envhp, (dvoid **)&usrhp,

OCI_HTYPE_SESSION, 0, (dvoid **) 0);

//为用户会话句柄设置用户名和密码属性

OCIAttrSet ((dvoid *)usrhp, OCI_HTYPE_SESSION,

(dvoid *)username, (ub4)strlen((char*)username),

OCI_ATTR_USERNAME, errhp);

OCIAttrSet ((dvoid *)usrhp, OCI_HTYPE_SESSION,

(dvoid *)password, (ub4)strlen((char*)password),

OCI_ATTR_PASSWORD, errhp);

if (OCISessionBegin ( svchp, errhp, usrhp,

OCI_CRED_RDBMS, OCI_DEFAULT) == OCI_SUCCESS)

{

printf(\"session successful!\\n\");

}

else

{

printf(\"建立用户会话失败!\\n\");

return -1;

}

//在服务器上下文环境中设置用户会话属性

OCIAttrSet ( (dvoid *)svchp, OCI_HTYPE_SVCCTX,

(dvoid *)usrhp, (ub4) 0, OCI_ATTR_SESSION, errhp);

//分配语句句柄

CheckErr(errhp,OCIHandleAlloc(envhp, (void**)&stmthp, OCI_HTYPE_STMT, 0, 0));

//准备SQL语句

CheckErr(errhp,OCIStmtPrepare(stmthp, errhp, sql, strlen((char*)sql),

OCI_NTV_SYNTAX, OCI_DEFAULT));

//定义输出

// CheckErr(errhp, OCIDefineByPos(stmthp, &defhp1, errhp, 1, &nID, sizeof(nID),

// SQLT_INT, 0, 0, 0, OCI_DEFAULT));

CheckErr(errhp,OCIDefineByPos(stmthp, &defhp1, errhp, 1, p_sli3, 33,

SQLT_STR, 0, 0, 0, OCI_DEFAULT));

// CheckErr(errhp, OCIDefineByPos(stmthp, &defhp3, errhp, 3, &nAge, sizeof(nAge),

// SQLT_INT, 0, 0, 0, OCI_DEFAULT));

// CheckErr(errhp,OCIDefineByPos(stmthp, &defhp1, errhp, 2, szAddress, 129,

// SQLT_STR, 0, 0, 0, OCI_DEFAULT));

//rc = OCIDefineByPos(p_sql, &p_dfn, p_err, 3, (dvoid *) gps.strClxh,

// (sword) 20, SQLT_STR, (dvoid *) 0, (ub2 *)0,

// (ub2 *)0, OCI_DEFAULT);

//提取结果

CheckErr(errhp,OCIStmtExecute(svchp, stmthp, errhp, 0, 0, NULL, NULL,

OCI_DEFAULT));

while( OCI_NO_DATA != OCIStmtFetch(stmthp, errhp, 1, OCI_FETCH_NEXT, OCI_DEFAULT))

{

printf(\"p_sli3 is %s\\n\

}

printf(\"结束会话和数据库连接!\\n\");

//结束会话

OCISessionEnd(svchp, errhp, usrhp, OCI_DEFAULT);

//断开连接

OCIServerDetach(srvhp, errhp, OCI_DEFAULT);

//释放环境句柄

OCIHandleFree((void*)envhp, OCI_HTYPE_ENV);

return 0;

}

int CheckErr(OCIError *pErr, sword lStatus)

{

sb4 m_s_nErrCode = 0;

char m_s_szErr[512];

switch (lStatus)

{

case OCI_SUCCESS:

strcpy(m_s_szErr,\"OCI_SUCCESS\");

break;

case OCI_SUCCESS_WITH_INFO:

strcpy(m_s_szErr, \"OCI_SUCCESS_WITH_INFO\");

printf(\"OCI Error: %s\\n\

break;

case OCI_ERROR:

OCIErrorGet((dvoid *)pErr, (ub4)1, (text *)NULL, &m_s_nErrCode,

(unsigned char*)m_s_szErr, (ub4)sizeof(m_s_szErr), OCI_HTYPE_ERROR);

printf(\"OCI Error: %s\\n\

break;

case OCI_NEED_DATA:

strcpy(m_s_szErr, \"OCI_NEED_DATA\");

printf(\"OCI Error: %s\\n\

break;

case OCI_NO_DATA:

strcpy(m_s_szErr, \"OCI_NO_DATA\");

printf(\"OCI Error: %s\\n\

break;

case OCI_INVALID_HANDLE:

strcpy(m_s_szErr, \"OCI_INVALID_HANDLE\");

printf(\"OCI Error: %s\\n\

break;

case OCI_STILL_EXECUTING:

strcpy(m_s_szErr, \"OCI_STILL_EXECUTING\");

printf(\"OCI Error: %s\\n\

break;

case OCI_CONTINUE:

strcpy(m_s_szErr, \"OCI_CONTINUE\");

printf(\"OCI Error: %s\\n\

break;

default:

break;

}

if (lStatus != OCI_SUCCESS && lStatus != OCI_SUCCESS_WITH_INFO)

{

return 0; //确实有错误

}

else

{

return 1; //没有检查到错误

}

}

int main()

{

static char *selectl = \"select simcard, zdh from gps_vehicle\";

ocisql(selectl);

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top