一般我們開發的話,都是用的oracle作為數據庫的,開發工具我習慣用plsql,toad功能雖好,但我用不習慣。
plsql需要讀取oracle客戶端中的配置文件來連接數據庫,所以我們不得i不裝個oracle客戶端,但是客戶端不但龐大,而且如果你是用win7或別的系統的話,會遇到各種頭疼的問題,好在oracle推出了綠色版來解決這個問題。
下面我就來講講這綠色版怎么用的吧
第一步:
首先需要下載一個oracle綠色版,官網就有,我下的是11G版本的。下載需要注冊,自己注冊個就好了,下載地址是:
http://www.oracle.com/technetwork/topics/winsoft-085727.html
下完了之后解壓,解壓完我的路徑是 D:\Program Files\instantclient_11_2
第二步:我們來配置下環境變量先:
1) 變量名:ORACLE_HOME
變量值:D:\Program Files\instantclient_11_2
2) 變量名:TNS_ADMIN
變量值:D:\Program Files\instantclient_11_2
3) 變量名:NLS_LANG
變量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
4) 修改Path變量,在后面添加 D:\Program Files\instantclient_11_2
如果不愿意手工增加,可以下載 SetOraEnv.rar 附件, 解壓后執行其中的 setOraEnv.bat.
然后進入instantclient_11_2文件夾,新建一個network文件夾,并在network文件夾下新建admin文件夾,在admin文件夾中新建名為tnsnames.ora文件,這個文件是用來配置連接遠程數據庫的登錄信息的(客戶端軟件都會從這個相對路徑下的文件中獲取連接數據庫的信息),內容如下:
databasename =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip address)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = database name)
)
)
例如我鏈接實驗室數據庫的對應文件內容是:
TCM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = test)
)
)
然后安裝PL/SQL Developer,過程是傻瓜式的。進入PL/SQL后(開始進入時會要求登錄數據庫,但是現在PL/SQL現在還找不到你的Oracle客戶端,所以登錄是不會成功的,但是可以進入軟件),選擇Tools->Preferences,在Oracle Home OCI Library兩欄中分別填入Oracle客戶端的路徑和OCI文件的路徑(oci.dll文件直接在instantclient_10_2文件夾下),所以我在這兩個選項中填寫的內容是“E:\OracleClient\instantclient_11_2”和“E:\OracleClient\instantclient_11_2\oci.dll”。這時再登錄就可以登錄成功了。如若還不行就重啟一下PL/SQL。
綠色版的客戶端可能會出現對于中文支持的問題,這主要是因為服務器端指定的字符集和客戶端所默認的字符集是不相同的導致的,只要找到服務器端的字符集設置,然后將客戶端的字符集設置與服務器端保持一致就好了。修改客戶端字符集設置的方法有好幾種,可以修改注冊表,也可以用環境變量的方法解決。不過我這里介紹的客戶端是綠色版的,只是解壓到某一個路徑而已,所以注冊表的方法在這里不是很適用,所以我寫了一個啟動腳本,在啟動PL/SQL之前,先建一個臨時環境變量nls_lang,并給變量賦值,再啟動軟件。(我曾經做過實驗,通過建立系統環境變量的方法在這里是行不通的,具體的原因我說不清楚><)
我的腳本plsql.bat的內容如下:
set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
cd "c:\Program Files\PLSQL Developer"
PLSQLDev.exe
其中第二行進入的路徑是PL/SQL Developer安裝到的路徑。
我這里的實際情況是服務器端的字符集設置為SIMPLIFIED CHINESE_CHINA.ZHS16GBK,所以我將這個值賦給nls_lang。通過運行plsql.bat腳本就可以正常的訪問服務器數據庫了。
//創建用戶test,密碼test
create user test identified by "test";
//為test用戶創建系統特權并且可以用test為別的用戶授予權限
Grant execute any procedure to test with admin option