一、安装ubuntu下的oracle数据库。
二、在终端中配置环境变量。
export ORACLE_HOSTNAME=localhost;
export ORACLE_BASE=/opt/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1;
export ORACLE_SID=orcl;
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export NLS_LANG="Simplified chinese_china.al32utf8"
三、在终端中输入命令测试:
1、查看
ORACLE_HOME:
echo ${ORACLE_HOME}
2、查看ORACLE_SID:
echo ${ORACLE_SID}
3、如果上述没有问题,则在终端启动sqlplus看看能否运行。
1)sqlplus /nolog
2) connect /as sysdba
3) startup(启动sql相关服务)
4) shutdown immediate --如果启动失败,就关闭,开启监听
5)lsnrctl start
6) startup(重启sql服务)
注:如果还是失败,就将错误代码记录下来:【oerr ora 数字】(查询错误原因)
4、假设这里可以用自己的账户登录数据库了。接下来我们就可以进行proc开发了
四、开发proc
proc是通过c/c++语言操作数据库的方法。在两个平台之间,肯定要有一个中间桥梁来连接,这就是proc的由来。(个人理解,请指正)
所以,编译的过程分两步:(这里假设有hello.pc这个文件)
1、将.pc文件(这个文件的代码中加入了oracle语句,所以又称为嵌入式sql)转化为.c文件
命令:proc hello.pc (会生成两个文件, hello.c 和 hello.lis)
注:这里会爆出一个错误。
原因:因为使用命令proc(/home/oracle_11/app/oracle/product/11.2.0/db_1/bin/下,上面配置环境中以申明),sql会查找自己oracle的配置文件中写的路径(/home/oracle_11/app/oracle/product/11.2.0/db_1/precomp/admin/pcscfg.cfg),发现没有这个头文件stddef.h所在的路径。
解决方法:查看下自己系统的stddef.h存放位置,将路径添加到/home/oracle_11/app/oracle/product/11.2.0/db_1/precomp/admin/pcscfg.cfg文件中去。
命令:locate stddef.h(which where自己可以试试看,也是查找命令的路径的)例如我的显示:
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/include/stddef.h
2、利用gcc编译工具编译.c文件。(因为这个.c文件中加入sql的语法,所以要告诉gcc编译器sql自己的库路径,库名称,以及头文件)
命令:gcc dm01_hello.c -o dm01_hello \
-I/home/oracle_11/app/oracle/product/11.2.0/db_1/precomp/public \
-L/home/oracle_11/app/oracle/product/11.2.0/db_1/lib -lclntsh
至此,在Ubuntu下开发proc/c++的环境就完成了。