前兩天看文檔,提到了SERIALIZABLE隔離不支援延遲段建立和INTERVAL分區的功能,個人認為是由於這兩種方式都是在DML中遞迴產生DDL的操作,因此在串列隔離時可能會導致問題。不過驗證這個觀點的時候,竟然發現現象與文檔描述不符。文檔上的描述為:Serializable transactions do not work with deferred segment creation or interval partitioning. Trying to insert data into
一個客戶的11.2 RAC for Linux X86-64環境停電後出現了故障,RAC環境無法自動啟動。登入資料庫伺服器後,發現CLUSTER進程存在,於是嘗試手工啟動資料庫:$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.2.0 Production on Sun May 29 20:17:16 2011Copyright (c) 1982, 2010, Oracle. All rights reserved.Connected to an
在ITPUB上看到一個FORALL執行UPDATE的文章,覺得有點意思,簡單記錄一下。以前研究過FORALL中的INSERT語句,發現語句通過綁定數組的方式,實現了大量繫結,一次啟動並執行方式,從而提高了執行的效率。但是對於UPDATE語句而言,Oracle的實現和INSERT是不同的:SQL> CREATE TABLE T AS SELECT ROWNUM ID FROM TAB;表已建立。SQL> SELECT * FROM T; ID----------
PARALLEL_MAX_SEVERS參數設定並存執行可用的最大進程數量,該參數的預設值如下得出:1.當PGA_AGGREGATE_TARGET >0時PARALLEL_MAX_SERVERS= (CPU_COUNT x PARALLEL_THREADS_PER_CPU x 10)2.當PARALLEL_MAX_SERVERS未設定PARALLEL_MAX_SERVERS=(CPU_COUNT x PARALLEL_THREADS_PER_CPU x
dcba上周有了一個新的發現,在Oracle10g中,當重建一個預存程序時,Oracle的行為和以前有所不同。在Oracle9i中,即使一個完全相同的過程的重建,Oracle也需要重新編譯過程,這個可以從LAST_DDL_TIME看出:[oracle@jumper oracle]$ sqlplus eygle/eygleSQL*Plus: Release 9.2.0.4.0 - Production on Sat Mar 31 17:52:55 2007Copyright (c) 1982, 2
作為對於閃回操作(flashback)的一個增強,Oracle10g提供了函數對於SCN和時間戳記進行相互轉換。首先通過dbms_flashback.get_system_change_number 可以獲得系統當前的SCN值:SQL> col scn for 9999999999999SQL> select dbms_flashback.get_system_change_number scn from
經常有朋友問到行列轉換的問題,留言板上也有這樣的提問。其實流量分析函數進行處理是很好的方式,翻一下Tom的書,將其中的一個例子收錄在這裡. 比如查詢scott.emp表的使用者SAL排序資訊,可以使用如下查詢:SQL> SELECT deptno, ename,2 ROW_NUMBER () OVER (PARTITION BY deptno ORDER BY sal DESC) seq3 FROM emp;
alter database open resetlogs 這個命令我想大家都很熟悉了,那有沒有想過這個resetlogs選項為什麼要用?什麼時候用?它的原理機制是什嗎?他都起哪些作用?我們都知道資料在啟動時候是要做一致性檢查的,oracle在open階段要做兩次檢查(1)檢查資料檔案頭的檢查點計數(checkpoint cnt)是否和控制檔案的檢查點計數(checkpoint cnt)一致。目的是確認資料檔案是否來自同一版本,而不是從備份 中恢複的。如果這一步檢查通過,就進行第二步檢查。(2)
由於B*Tree索引不儲存Null值,所以在索引欄位允許為空白的情況下,某些Oracle查詢不會使用索引.很多時候,我們看似可以使用全索引掃描(Full Index Scan)的情況,可能Oracle就會因為Null值的存在而放棄索引.在此情況下即使使用Hints,Oracle也不會使用索引,其根本原因就是因為Null值的存在.我們看以下測試.在username欄位為Not Null時,Index
雖然索引並不總會快於全表掃描,但是很多時候我們希望Oracle使用索引來執行某些SQL,這時候我們可以通過index hints來強制SQL使用index.Index Hints的格式如下:/*+ INDEX ( table [index [index]...] ) */我們簡單看一下這個提示的用法(範例為Oracle10g資料庫):SQL> create table t as select username,password from dba_users;Table