在虛擬機上裝了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 = 0; printf("hello....\n"); printf("serverid:%s \n", serverid); EXEC SQL connect :serverid; if (sqlca.sqlcode != 0) { 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