在Oracle數據庫中,提供了一套默認的用戶操作環境。如用戶查詢的時候,從數據庫中一次提取的行 數;列之間的分隔符;每行顯示的最大寬度;每頁默認顯示的行數等等。這些都是靠數據庫的環境變量來控 制。這些參數雖然是Oracle系統推薦的,但是,往往不符合數據庫管理的要求。因為我們工作一段時間以 來,已經養成了自己的一套工作習慣。所以,我們希望每次更換一個Oracle運行環境之後,數據庫都能夠 提供一個我們熟悉的運行環境。這無疑可以提高我們工作的興趣與效率。
為此,我們就需要手工的更改Oracle的環境變量,以達到我們的要求。筆者下面結合自己的工作習慣 ,談談一些常用的環境變量的設置。相信憑借這些參數,可以給各位數據庫管理員提供一個舒適的“工作 環境”。
環境變量一:設置列之間的分隔符。
平時在SQL*Plus工具中,利用SQL語句查詢的話,其列之間默認情況下是利用空格來進行區分的。但是 ,筆者覺得這個區分不夠明顯。有時候,經常會看錯。當數據多的時候,還會給人一種“暈車”的感覺。 故筆者往往一開始,就會更改這個默認設置。筆者喜歡利用“|”符號來對列之間進行區分。
如通過如下設置,就可以讓顯示結果以“|”符號來區分各個列。SET COLSEP |。通過這條語句,就可 以對數據庫的環境變量進行設置。最後的運行結果如下。利用|這個符號來對列進行區分,看起來就會清 楚的多。字段之間就會弄混。
環境變量二:設置是否自動遞交。
在Oracle數據庫中有事務控制的概念。也就是說,當我們利用Update語句更新數據庫的某些內容的時 候,默認情況下,執行這條語句後不會馬上就對數據庫文件中的數據進行更改。在同一個對話中,查詢的 話,其顯示的結果已經是更改後的結果。但是,若先注銷這個對話,在重新連接、查詢的話,其顯示的結 果仍然是修改之前的結果。其更改的內容沒有被保存。這主要是因為這個更新的事務沒有被遞交上去。
根據Oracle數據庫的設置,默認情況下,事務是不主動遞交的。而是需要用戶手工的輸入commmit命令 ,來遞交相關的事務。一般來說,DML語句都需要用戶手工的遞交事務才能夠其作用。
這個設計本來是為了給數據庫管理員有一個緩沖的機會;同時,也是給終端用戶一個確認數據是否准確 的一個機會。另外,利用這種機制,也可以幫助數據庫管理員很容易的實現回退機制。
如現在在一個進銷存管理系統中,需要把物料從一個倉庫中轉移到另一個倉庫裡去。此時,就需要通 過事務來進行控制。從一個倉庫中把物料數量減少,另一個倉庫中增加。但是,若在另一個倉庫中增加數 量的操作因為某種原因失敗,則就需要對“某個倉庫中數量減少”這個事務進行回退。也就是說,不向數 據庫遞交這個事務。通過這種機智,就可以輕松的實現各個作業之間數據的一致性。
不過,在數據庫設計的時候,手工遞交相關事務,筆者認為有中畫蛇添足的感覺。筆者在數據庫前期 開發的時候,往往會改變這個默認設置。筆者希望讓系統自動遞交這個事務。然後,再後台測試的時候, 再把這個環境變量改回來。
如相讓數據庫自動遞交相關事務的話,則可以利用SET AUTOCOMMIT ON命令來實現。如此的話,每次執 行DML語句,數據庫就會自動遞交這個命令。而不會每次都要用戶手工輸入COMMIT命令才遞交相關的事務 。不過,在數據庫設計完成後,需要把這個環境變量改回來,改成手工遞交事務。