在虚拟机上装了oracle11g数据库,原本想利用c/c++学习操作数据库.结果感觉摊上了一个大坑.从安装好oracle数据库到配置好proc的编译选项整整花了二天.但让我意识到自己自己几点薄弱:1.对Linux的命令和脚本的使用不够熟练.2.对Linux的个文件夹的作用不够了解;(打算下次补充一篇这样的总结博客.)3.英文还是很差劲的我.好入真题.
由于我引进配置好了,不想在折腾了,所以就没有在重现错误,只是说一下思路和配置文件的内容.
1.oracle用户根目录下的.bash_profile的作用是:~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc.
所以先配置.bash_profile文件由于安装目录不同要相应改动.
.bash_profile # Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi # User specific environment and startup programs
umask 022
ORACLE_BASE=/u01/
ORACLE_HOME=$ORACLE_BASE/oracle/
OACLE_SID=orcl
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
#LANG=C
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH LANG
~
2.还有就是配置precomp/admin文件夹下的pcscfg.cfg主要是加上proc的库文件及oracle的home目录
sys_include=/u01/precomp/public
sys_include=/u01/oracle
sys_include=/usr/include
sys_include=/u01/oracle/lib/
code=cpp
cpp_suffix=cc
parse=none ORACLE_BASE=/u01/
ORACLE_HOME=$ORACLE_BASE/oracle/
export ORACLE_BASE ORACLE_HOME
3.oracle数据的启动和关闭
sqlplus /scott/password
startup --启动数据库
shutdown immediate --关闭数据库
4.启动监听
lsnrctl
5.proc编译.pc文件
proc dm01_hello.pc
Pro*C/C++: Release 11.2.0.1.0 - Production on Tue Oct 11 11:20:50 2016
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
System default option values taken from: /u01/oracle/precomp/admin/pcscfg.cfg
6.编译生成的.cc文件 记得加上相应的头文件路径之后工程化编写可写成makefile的形式
g++ dm01_hello.cc -o dm01_hello -I /u01/oracle/precomp/public/ -L /u01/oracle/lib/ -lclntsh
相应的dm01_hello.pc文件
#include <stdio.h>
#include <string.h>
#include <string.h>
#include "sqlca.h" EXEC SQL BEGIN DECLARE SECTION;
char *serverid = "scott/000110@orcl";
EXEC SQL END DECLARE SECTION; int main()
{
int ret = ;
printf("hello....\n");
printf("serverid:%s \n", serverid);
EXEC SQL connect :serverid;
if (sqlca.sqlcode != )
{
ret = sqlca.sqlcode;
printf("EXEC SQL connect:err, %d\n", ret);
return ret;
}
printf("connect ok\n");
return ret;
}
7.结果:
[oracle@disdader day3]$ ./dm01_hello
hello....
serverid:scott/000110@orcl
connect ok