一些包可以从网站下载和安装盘上安装:
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.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 hard nproc 16384 >oracle soft nofile 1024 >oracle hard nofile 65536 EOF #cat >> /etc/pam.d/login < 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); } 因篇幅问题不能全部显示,请点此查看更多更全内容