Time of Update: 2017-02-27
在JSP中串連到Oracle一般有2種方式:1、Oracle JDBC的oci8方式2、Oracle JDBC的thin方式我比較喜歡第2種,因為WEB發行伺服器與資料庫伺服器一般都不會放在同一台電腦中,而在使用thin方式串連時,WEB伺服器端無須安裝oracle的用戶端。在動手先代碼之前,我們先把環境配置妥善。先從安裝了Oracle的資料庫伺服器中,找到Oracle安裝目錄,然後將該目錄下的jdbc\lib\classes12.jar檔案拷貝到WEB發行伺服器的某個目錄。假設就直接放在C:\
Time of Update: 2017-02-27
一、背景 DB2 聯合資料庫是分散式資料庫管理的特殊形式。在聯合資料庫系統中,可以通過一個 SQL 命令來發出對多個資料來源的命令請求。DB2 與非 DB2 資料庫之間進行複製之前,首先需要保證非 DB2 資料來源可以被 DB2 ESE Version 8 federated database訪問。對於DB2 Replication Version 8 所需的聯合資料庫功能可以在現有發布的 DB2 ESE Version 8 和 DB2 Connect Enterprise Edition
Time of Update: 2017-02-27
資料庫並行訪問,也就是兩個或兩以上使用者同時訪問同一資料,這也是資料庫引擎如何設計和實現適度反應所面臨的最大問題。設計優良、效能卓越的資料庫引擎可以輕鬆地同時為成千上萬的使用者服務。而“底氣不足”的資料庫系統隨著更多的使用者同時訪問系統將大大降低其效能。最糟糕的情況下甚至可能導致系統的崩潰。當然,並行訪問是任何資料庫解決方案都最為重視的問題了,為瞭解決並行訪問方面的問題各類資料庫系統提出了各種各樣的方案。 SQL
Time of Update: 2017-02-27
不同資料庫平台的互連一般稱之為資料庫的異構服務,現在各大資料庫之間都可以實現這樣的異構互連,只是各廠商的具體實現技術不一樣,如:在SQL SERVER裡面叫做LINKED SERVER,通過ODBC實現與其它資料庫的互聯。而ORACLE實現異構服務的技術叫做透明網關(Transparent Gateway),當然之前ORACLE還採用過通用串連技術。目前ORACLE利用透明網關可以實現和SQL
Time of Update: 2017-02-27
為了得到最大的效能,一般資料庫都有並發機制,不過帶來的問題就是資料訪問的衝突。為瞭解決這個問題,大多數資料庫用的方法就是資料的鎖定。資料的鎖定分為兩種方法,第一種叫做悲觀鎖,第二種叫做樂觀鎖。什麼叫悲觀鎖呢,悲觀鎖顧名思義,就是對資料的衝突採取一種悲觀的態度,也就是說假設資料肯定會衝突,所以在資料開始讀取的時候就把資料鎖定住。而樂觀鎖就是認為資料一般情況下不會造成衝突,所以在資料進行提交更新的時候,才會正式對資料的衝突與否進行檢測,如果發現衝突了,則讓使用者返回錯誤的資訊,讓使用者決定如何去做。
Time of Update: 2017-02-27
很多情況下,資料庫管理員或使用者需要自動調度和運行很多類型的作業,例如,執行維護工作(如Database Backup);資料載入和驗證常式;產生報表;收集最佳化程式統計資訊或執行商務程序。可以使用發送器功能指定任務在將來某個時間點運行。作業可以在資料庫中、在駐留資料庫執行個體的機器上甚至在遠程機器上運行。可以結合使用發送器和Resource Manager(資源管理員)。發送器可以啟用Resource Manager計劃,並按照為各種Resource
Time of Update: 2017-02-27
1、聚簇因子(clustering_factor):是使用B樹索引進行區間掃描的成本很重要因素,反映資料在表中分布的隨機程度2、聚簇因子的計算方法:①掃描索引②比較某行的ROWID和前一行的ROWID,如果這兩個ROWID不屬於同一個資料區塊,那麼聚簇因子增加1 --對選擇最優查詢路徑影響最大的只有列的選擇率和聚簇因子3、實驗測試create table t1 asselect trunc((rownum-1)/100) id,rpad(rownum,100) t_padfrom
Time of Update: 2017-02-27
建立undo talespace有兩種方式:(1)資料庫建立時建立undo tablespace;(2)在一個已經存在的資料庫建立。在undo tablespace中不能建立資料庫物件,這是因為這個資料表空間是為資料庫recover而準備的。1、建立資料庫時建立undo tablespace在建立資料庫的時候可以通過指定undo子句來建立undo tablespace,但是這個子句不是必須的。如果在建立資料庫時,系統指定是auto模式,但是沒有指明undo
Time of Update: 2017-02-27
1、修改索引段儲存參數03:31:28 SQL> alter index scott.indx_ename deallocate unused;Index altered.03:31:36 SQL> alter index scott.indx_ename allocate extent(size 1m);Index altered.2、重建索引03:32:48 SQL> alter index indx_ename rebuild;Index
Time of Update: 2017-02-27
預設情況下,當執行DML操作時,如果鍵入了違反約束規則的資料,則會立即提示錯誤資訊。某些情況下,可能希望在事務結束時進行約束 檢查,如串聯更新外部鍵、給自參照表裝載資料等。需要注意,如果使用延期約束檢查,那麼在定義約束時必須指定 DEFERRABLE 選項。實 例如下:11:53:27 SQL> alter table dept111:53:38 2 add constraint pk_dept1 primary key (deptno);Table altered.
Time of Update: 2017-02-27
1.在Oracle中,資料表別名不能加as。如:select a.appname from appinfo a;-- 正確select a.appname from appinfo as a;-- 錯誤也許,是怕和Oracle中的預存程序中的關鍵字as衝突的問題吧2.在預存程序中,select某一欄位時,後面必須緊跟into,如果select整個記錄,利用遊標的話就另當別論了。select af.keynode into knfrom APPFOUNDATION afwhere
Time of Update: 2017-02-27
WIDTH-BUCKET會根據參數設定,返回目前記錄所屬的bucket number。文法格式如下: WIDTH_BUCKET(expression, minval expression, maxval expression, num buckets) 第一個參數,為某數字或者日期運算式;第二個參數為某範圍的下限;第三個參數為某範圍的上限;第四個參數為對某範圍進行等值劃分bucket的數量。如WIDTH_
Time of Update: 2017-02-27
1、授予對象許可權是指訪問其他使用者方案對象的許可權。GRANT object_priv|ALL [(columns)]ON objectTO {user|role|PUBLIC}[WITH GRANT OPTION];ALL:所有對象許可權PUBLIC:授給所有的使用者WITH GRANT OPTION:允許使用者再次給其它使用者授權。——針對列授予對象許可權11:24:05 SQL> grant update(sal) on scott.emp to
Time of Update: 2017-02-27
在Oracle資料庫中進行排序、分組匯總、索引等到作時,會產生很多的臨時資料。如有一張員工資訊表,資料庫中是安裝記錄建立的時間來儲存的。如果使用者查詢時,使用Order
Time of Update: 2017-02-27
在上一篇文章裡,提到了“如在事務啟動後到資料區塊被讀取之間的這段時間內,相應的資料區塊發生了改變,那麼可能就會有我們意想不到的事情發生”。而這樣的意想不到的結果可能能被我們接受,但也可能難以被接受。我們先看一下以下2條UPDATE語句:1:update t_test1 set lio=0 where object_id in (101,102);2:update t_test1 set lio=(select lio from t_test1 where
Time of Update: 2017-02-27
資料庫:oracle 10G XE資料來源驅動:jdbc12.jar檔案名稱:WriteBlob資料庫中建立一個為clobtest的表,內有兩個欄位,name (varchar2(20)),content(blob)。1package dbdriver;23/** *//**4 * 2008-09-285 * @author duduli6 * email: lxyzj2000@gmail.com7 */8import java.sql.*;9import java.io.*;10import
Time of Update: 2017-02-27
Parent-Child cursor (父子遊標)父遊標:只要SQL語句文本相同,它們就對應 同一個parent cursor。子遊標:在某些情況下,雖然SQL語句的文本相同,但是因為其它 因素不同(這些因素可以在視圖V$SQL_SHARED_CURSOR中查看),導致產生不同的child cursor。(重建child cursor,也就意味著一次硬解析)cursor_sharing對 於是否使用綁定變數這個問題,最好是交給應用程式決定,在資料庫層面是很難正確判斷。
Time of Update: 2017-02-27
Oracle內部主要存在以下四種SCN1.系統檢查點(system checkpoint)SCN每當一個 檢查點完成時,Oracle就把該檢查點對應的SCN記錄到控制檔案中,可以用以下語句查看當前 資料庫的檢查點SCN:select CHECKPOINT_CHANGE# from v$database;CHECKPOINT_CHANGE#------------------66274411682.資料檔案頭
Time of Update: 2017-02-27
RAC的HA是它的一大賣點,Oracle也常那它來宣傳,但實際上,RAC稱不上真正的HA,因為 它是share-disk的架構,只能做到執行個體級的HA。RAC執行個體級HA的技術基礎是Failover,它是指 叢集中任何一個節點的故障都不會影響使用者的正常使用,之前串連在故障節點上的使用者會被 自動轉移到健康節點,這樣的切換對使用者來說是透明的。RAC的Failover可以細分為 以下3種:1)Client-Side Connect Time Failover2)TAF
Time of Update: 2017-02-27
在Oracle的日常維護中,經常出現以下兩種情況需要我們DBA kill session:1. App 抱怨他們的應用hang住了,在資料庫裡查詢得知他們的session被其它session block,此時 要把其它session kill掉,以便App應用能及時跑完。2. App的應用跑到一半,突然決定 不跑了,需要DBA把他們的session kill掉。以下是我經常採用的kill session的方法:1. 在資料庫層面用語句alter system kill 'sid, serial#