1.在ORACLE中實現分布式快速存取和充實記憶體是很重要的。 要不惜任何代價避免頁面調度和交換﹐每次都必須把系統全域區(SGA)放到記憶體。 將SGA放到記憶體中﹐在INIT.ORA中設定參數 PRE_PAGE_SGA PRE_PAGE_SGA=YES 2.回卷段的竟爭會降低系統的效能。 SELECT GETS,WAITS FROM
Oracle中函數以前介紹的字串處理,日期函數,數學函數,以及轉換函式等等,還有一類函數是通用函數。主要有:NVL,NVL2,NULLIF,COALESCE,這幾個函數用在各個類型上都可以。下面簡單介紹一下幾個函數的用法。在介紹這個之前你必須明白什麼是oracle中的空值null1.NVL函數NVL函數的格式如下:NVL(expr1,expr2)含義是:如果oracle第一個參數為空白那麼顯示第二個參數的值,如果第一個參數的值不為空白,則顯示第一個參數本來的值。例如:SQL>
1、概念 Transaction以輪循的方式使用rollback segment裡的extent,當前所在的extent滿時就移動到下一個extent。可能有多個transaction同時向同一個extent寫資料,但一個rollback segment block中只能儲存一個transaction的資料。 Oracle 在每個Rollback segment header中儲存了一個transaction table,包括了每個rollback segment中包含的事務資訊,
在rman增量備份中,有差異增量和累積增量的概念,這兩個概念之前根本沒有理解好。 1、概念 差異增量:是備份上級及同級備份以來所有變化的資料區塊,差異增量是預設增量備份方式 累積增量:是備份上級備份以來所有變化的塊 因為累積增量是備份上級備份以來所有變化的資料區塊,所以累積增量需要更多的備份時間,同時需要較小的恢復;而差異增量正好相反,它可以備份同級備份以 來變化的資料區塊。所以會減少備份時間,但需要更多的恢復.在oracle
1、概念 DML事務使用row-level locks,查詢不會鎖定資料。鎖有兩種模式:exlusive、share。 鎖的類型: • DML or data locks: – Table-level locks(TM) – Row-level locks(TX) • DDL or dictionary locks 一個transaction至少獲得兩個鎖:一個共用的表鎖,一個專有的行鎖。Oracle
1、最佳化器模式 Oracle9i有兩種最佳化器模式可以選擇: • Rule-based: – Uses a ranking system – Syntax- and data dictionary–driven • Cost-based: – Chooses least-cost path – Statistics-driven
1、概念 為了提高效能,可以使用下列資料存取方法: A、Clusters B、Indexes -B-tree(normal or reverse key) -bitmap -function-based C、Index-organized tables D、Materialized views 索引的層次越多,效率越低,如果索引中含有許多已刪除的行,這個索引也會變得低效,如果索引資料的15%已經被刪除,應該考慮重建索引。
1、概念 伺服器首先在sort_area_size指定大小的記憶體地區裡排序,如果所需的空間超過sort_area_size,排序會在暫存資料表空間裡進行。在專用伺服器模式下,排序空間在PGA中,在共用伺服器模式下,排序空間在UGA中。如果沒有建立large pool,UGA處於shared pool中,如果建立了large pool,UGA就處於large pool中,而PGA不在sga中,它是與每個進程對應單獨存在的。 PGA:program global
---轉載在ORACLE中移動資料庫檔案 大全在ORACLE中移動資料庫檔案 --ORACLE資料庫由資料檔案,控制檔案和聯機記錄檔三種檔案組成。--由於磁碟空間的變化,或者基於資料庫磁碟I/O效能的調整等,--我們可能會考慮移動資料庫檔案。--下面以LUNIX平台為例,分別討論三種資料庫檔案的移動方法。 一.移動資料檔案: -- 可以用ALTER DATABASE,ALTER TABLESPACE兩種方法移動資料檔案。 1. ALTER DATABASE方法;--
1、避免動態分配的缺陷 建立本地管理的資料表空間; 合理設定segment的大小; 監控將要擴充的segment: SELECT owner, table_name, blocks, empty_blocks FROM dba_tables WHERE empty_blocks / (blocks+empty_blocks) < .1; 2、high water mark 記錄在segment header
1、概念 Latch是簡單的、低層次的序列化技術,用以保護SGA中的共用資料結構,比如並發使用者列表和buffer cache裡的blocks資訊。一個伺服器處理序或後台進程在開始操作或尋找一個共用資料結構之前必須獲得對應的latch,在完成以後釋放latch。不必對latch本身進行最佳化,如果latch存在競爭,表明SGA的一部分正在經曆不正常的資源使用。 1)Latch的作用: A、序列化訪問:保護SGA中的共用資料結構;保護共用記憶體的分配。
1、flashback drop 目前,Oracle10g為了加快使用者錯誤操作的恢複,提供了flashback drop新特性。 flashback
1、Shared pool tunning Shared pool的最佳化應該放在優先考慮,因為一個cache miss在shared pool中發生比在data buffer中發生導致的成本更高,由於dictionary資料一般比library cache中的資料在記憶體中儲存的時間長,所以關鍵是library cache的最佳化。 Gets:(parse)在namespace中尋找對象的次數; Pins:(execution)在namespace中讀取或執行對象的次數;
降低磁碟的IO 分散磁碟的IO 資料表空間使用本地管理 1、將檔案分散到不同的裝置上 1)將資料檔案與記錄檔分開 2)減少與伺服器無關的磁碟IO 3)評估裸裝置的使用 4)分割表資料 2、資料表空間的使用 系統資料表空間保留給資料字典對象 建立本地管理資料表空間以避免空間管理問題 將表和索引分散到獨立的資料表空間中 使用獨立的復原資料表空間 將大的資料庫物件儲存在各自獨立的資料表空間中
當執行一條DML語句後,DML語句的結果儲存在四個遊標屬性中,這些屬性用於控製程序流程或者瞭解程式的狀態。當運行DML語句時,PL/SQL開啟一個內建遊標並處理結果,遊標是維護查詢結果的記憶體中的一個地區,遊標在運行DML語句時開啟,完成後關閉。隱式遊標只使用SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT三個屬性.SQL%FOUND,SQL%NOTFOUND是布爾值,SQL%ROWCOUNT是整數值。 SQL%FOUND和SQL%NOTFOUND 在執行任何DML語句
Oracle的備份一般都是在作業系統上完成,因此定時備份Oracle的功能一般都是由作業系統功能完成,比如crontab。但是Oracle的PIPE介面使得在Oracle資料庫中通過JOB來備份Oracle變得可能。這篇文章給出一個簡單的例子,說明如何在JOB中定期備份資料庫。首先需要保證RMAN已PIPE方式一直在後台運行:[oracle@member member]$ rman pipe PJOB target / nocatalog[oracle@member member]$
可傳輸資料表空間:使用一組自包含、唯讀資料表空間,只匯出中繼資料,在作業系統層將這些資料表空間的資料檔案拷貝至目標平台,並將中繼資料匯入資料字典。在 Oracle9i 資料庫和更低版本中,可傳輸資料表空間僅限於在目標資料庫和來源資料庫都運行在同一作業系統平台上的少數情況下才有用 — 例如,您不能在 Solaris 和 HP-UX 平台之間傳輸資料表空間。在 Oracle 資料庫 10g
匯入/匯出是ORACLE倖存的最古老的兩個命令列工具,其實我從來不認為Exp/Imp是一種好的備份方式,正確的說法是Exp/Imp只能是一個好的轉儲工具,特別是在小型資料庫的轉儲,資料表空間的遷移,表的抽取,檢測邏輯和物理衝突等中有不小的功勞。當然,我們也可以把它作為小型資料庫的物理備份後的一個邏輯輔助備份,也是不錯的建議。對于越來越大的資料庫,特別是TB級資料庫和越來越多資料倉儲的出現,EXP/IMP越來越力不從心了,這個時候,資料庫的備份都轉向了RMAN和第三方工具。下面說明一下EXP
當你選擇Oracle作資料庫伺服器時,用戶端一般需要裝一個肥碩的200M左右用戶端,而且還要做串連配置,尤其是C/S模式,用戶端多的時候非常不便。當然,網上也有一個10M左右的Oracle精簡用戶端,效能和穩定性和官方版差不多。Oracle還提供了Direct Mode(直連模式),只要你的用戶端機子支援TCP/IP協議,完全可以不用安裝Oracle用戶端及其串連配置。幸運的是,UniDAC也提供了Direct
sql server與oracle資料同步方案說到同步,其實是靠"作業"定時調度預存程序來操作資料,增,刪,改,全在裡面,結合觸發器,遊標來實現,關於作業調度,我使用了5秒運行一次來實行"秒級作業",這樣基本就算比較快的"同步"我做的是sql server往oracle端同步,先在sql server上建立往oracle端的連結的伺服器,我用一個視圖"封裝"了一下連結的伺服器下的一張表create view v_ora_PUBLISHLASTRECasselect * from