開始行動
在RedHat上安裝Oracle可以是相當輕而易舉的
但要是完全跟著Oracle公司的文檔走就未必那麼容易了
最快的捷徑是Tom Bisset的主頁
如果您看了Tom的主頁
那麼您會注意到他漏了JDBC的安裝
如果您准備使用JDBC(對於跨平台的Oracle應用十分方便)
只需在安裝屏幕要求您選擇組件(components)時
加上該選項即可
當然
您應該先裝好JDK
我個人使用Blackdown的JDK
(譯注
Redhat包括JDK)然後需要設置oracle
用戶的ClassPath環境變量
最好的辦法是在oracle用戶目錄的
bash_profile 或
profile中加上一句
CLASSPATH=/usr/lib/jdk/lib/classes
zip; export CLASSPATH
然後
如果您只需做Web Applet的話
在安裝程序
Choose JDBC
Components
的時候
選擇
JDK
JDBC Thin Driver
如果您需要做完整的Java應用
選擇
JDK
JDBC OCI Driver
另外請注意
安裝程序讓您輸入各口令時
如果口令不符合規范
不會警告
我第一次安裝時
口令裡加了
這在UNIX中是允許的
Oracle就是另一碼事了
直到安裝快結束時
程序才告訴我口令有問題
當時為保險 起見
我從頭做了一次安裝
安裝程序的另一個問題是試圖往還沒有建立的目錄裡拷貝文件
有必要在安裝前
mkdir
p /u
/app/oracle/product/
/doc/server
/install
這一
關過後萬事大吉
安裝成功後
必須以ROOT身份登錄
運行root
sh
我對root
sh作了以下改動
· LBIN環境變量從/usr/lbin改成了/usr/local/bin
· 增加環境變量LOG=/tmp/oracle
root
sh
log
這樣腳本的運行結果會記錄
下來
root
sh裡說到
要想數據庫作為一個服務器運行
必須先設定TWO_TASK變量
但是
事實上如果從安裝Oracle的機器上運行root
sh
就沒有必要設這個變量
Python和Oracle
我配置了一下python(譯注
一種強大
快速的面向對象的腳本語言)
以測試Oracle的編程接口和網絡接口
在python中要連Oracle
需要Digital Creation(Zope應用服務器的作者)的DCOracle模塊
您只需下載軟件並按照指示照做就行
如果是DCOracle
使用
Setup
的配置
從ORACLE_LIBS變量中刪去
lsocket
lnsl
lgen
lelf
laio
和
lposix
即可
那些都是Solaris專用的
注意Redhat
和
中安裝的 python設置不全
config目錄和include目錄被省略
無法編譯安裝第三方的模塊
您必須自己編譯python或者下載一個合適的RPM
找python的RPM
最好的去處可能是Oliver Andrich的 Python & Linux主頁
只要rpm
e
nodeps python
然後 rpm
i python
python
dev和其他RPM即可
裝好python後
我運行了以下的基本查詢
訪問Oracle
[uche@malatesta uche]$ python
Python
(#
Sep
:
:
) [GCC
] on linux
i
Copyright
Stichting Mathematisch Centrum
Amsterdam
>>> import DCOracle
>>> #connect to DB
scott/tiger are the test database username/password
>>> dbc=DCOracle
Connect(
scott/tiger@sforza
) #sforza is the local
Oracle
server
>>> c = dbc
cursor()
>>> c
execute(
SELECT * FROM emp WHERE emp
deptno =
)
>>> rows = c
fetchall()
>>> print rows
[(
CLARK
MANAGER
dbiDate(
:
:
)
None
)
(
KING
PRESIDENT
None
dbiDate(
:
:
)
None
)
(
MILLER
CLERK
dbiDate(
:
:
)
None
)]
開發工作站配置
我在數據庫服務器以外的一台機器上編譯安裝了python和其他編程接口
最初
看起來似乎我必須安裝Oracle 的所有PRO*C/C++軟件包
但要把Oracle安裝程序運行到那一步也夠麻煩的
所以我不想那樣辦
於是我找出了寫程序所需要的最小限量的頭文件(include)
對象文件(object)和庫文件(library):
$ORACLE_HOME/lib/*
$ORACLE_HOME/rdbms/demo/*
$ORACLE_HOME/rdbms/lib/*
我的機器上設ORACLE_HOME為/usr/local/oracle
注意這些文件還不能讓您可以在C程序中直接嵌入SQL語句
只有完整安裝PRO*C/C++後才行
如果要用JAVA的話
還得增加$ORACLE_HOME/jdbc/lib/*
注意把這個目錄加到ClASSPATH變量中
JDBC連接
為測試JDBC連接
我作了一個小程序
在一個listbox內顯示測試庫中的所有雇員名
下面的程序
是調用JDBC的java Applet
程序
是調用JAVA程序的HTML超文本
如果您的JDBC已經安裝成功
將程序
拷貝為 JDBCTest
java
將程序
拷貝為l
然後
javac JDBCTest
java
appletviewer l
您就可以自己看看結果如何了
程序
/*
Applet that reads in several rows from a remote Oracle database
and presents them in a listbox
*/
import java
sql
*;
import java
awt
*;
import java
applet
*;
import java
lang
*;
public class JDBCTest extends Applet
{
//Single
select ListBox
private List employee_list = new List(
false)
public void init()
{
setLayout(new BorderLayout());
try {
//Set up the Oracle JDBC driver
DriverManager
registerDriver(new oracle
jdbc
driver
OracleDriver());
//Connect to an Oracle database on machine sforza
using username
//
scott
and password
tiger
Connection DB_conn = DriverManager
getConnection
(
jdbc:oracle:thin:@sforza:
:ORCL
scott
tiger
);
//Connection DB_conn = DriverManager
getConnection
(
jdbc:oracle:thin:scott/tiger@sforza:
:ORCL
);
//Create a JDBC statement object
Statement statement_obj = DB_conn
createStatement();
//Execute a query to get the employee names from the test DB
ResultSet results = statement_obj
executeQuery (
select ENAME from
EMP
);
//Populate the list box with all the employee names
while (results
next ()){
employee_list
add(results
getString(
));
}
} catch (SQLException e) {
throw new RuntimeException(
SQL Exception
+ e
getMessage());
}
add(employee_list);
}
}
程序
//IETF//DTD HTML//EN
>
程序
的大部分都是與具體數據庫無關的JDBC調用
依樣畫葫蘆您也可以
訪問PostgresQL
主要和Oracle相
關的部分是
Connection DB_conn = DriverManager
getConnection
(
jdbc:oracle:thin:@sforza:
:ORCL
scott
tiger
);
注意 Oracle thin JDBC driver中URI的格式
jdbc:oracle:thin:@
::
如果您想在URI中包括用戶名和口令的話
jdbc:oracle:thin:username/password@::
同樣的URI還有一個較長的格式
jdbc:oracle:thin:@(description=(address=(host= _IP>)(protocol
=tcp)(port=))(connect_data=(sid=)))
注意ORCL是系統安裝的缺省SID(System Identifier系統標識符)
如果您在安裝時使用了其他的SID
在URI裡也用那個SID$ORACLE_HOME/network/admin/tnsnamesora包括了Oracle服務器的端口和SID設置這是TNS ListenerOracle網絡連接進程的配置文件如果您無法通過網絡連接數據庫的話首先應該檢查端口號和SID是否正確TNS listner是否正常(譯注lsnrctl status或者tnsping)JDBC並不是開發SQL數據庫應用的唯一手段ANSI標准SQLJ允許在JAVA程序中直接嵌入SQL語句Oracle for Linux 並沒有捆綁SQLJ但可以作為另一個獨立產品獲得SQLJ是%的JAVA應該在Linux上運行沒有問題事實上SQLJ在底層使用的就是JDBC因此可以同任何SQL數據庫互聯並不限於Oracle
希望上面的這些例子能對您的編程有所幫助可惜Oracle for Linux
的編程文檔相當的少要不就是隱藏得十分深:) 也許在數據庫編程得心應手之前您得先啃它一兩本書
PL/SQL
對SQL的過程性語言擴展(PL/SQL)可能是Oracle最著名的特點這種
強大的專業數據庫管理語言允許您對
聲明性的SQL加邏輯控制一般PL/SQL的存儲過程(stored procedure)用命令行的sqlplus圖形化
From:http://tw.wingwit.com/Article/program/Oracle/201311/17513.html