導航:首頁 > 網路數據 > oracle游標大資料庫

oracle游標大資料庫

發布時間:2024-05-09 13:05:22

㈠ 教你設計大型Oracle資料庫

本文教你如何設計大型Oracle資料庫 希望對大家有所幫助

一 概論

超大型系統的特點為

處理的用戶數一般都超過百萬 有的還超過千萬 資料庫的數據量一般超過 TB;

系統必須提供實時響應功能 系統需不停機運行 要求系統有很高的可用性及可擴展性

為了能達到以上要求 除了需要性能優越的計算機和海量存儲設備外 還需要先進的資料庫結構設計和優化的應用系統

一般的超大型系統採用雙機或多機集群系統 下面以資料庫採用Oracle 並行伺服器為例來談談超大型資料庫設計方法

確定系統的ORACLE並行伺服器應用劃分策略迅盯

資料庫物理結構的設計

系統硬碟的劃分及分配

備份及恢復策略的考慮

二 Oracle並行伺服器應用劃分策略

Oracle並行伺服器允許不同節點上的多個INSTANCE實例同時訪問一個資料庫 以提高系統的可用性 可擴展性及性能 Oracle並行伺服器中的每個INSTANCE實例都可將共享資料庫中的表或索引的數據塊讀入本地的緩沖區中 這就意味著一個數據塊可存在於多個INSTANCE實例的SGA區中 那麼保持這些緩沖區的數據的一致性就很嘩亮重要 Oracle使用 PCM( Parallel Cache Management)鎖維護緩沖區的一致性 Oracle同時通過I DLM(集成的分布式鎖管理器)實現PCM 鎖 並通過專門的LCK進程實現INSTANCE實例間的數據一致

考慮這種情況 INSTANCE 對BLOCK X塊修改 這時INSTANCE 對BLOCK X塊也需要修改 Oracle並行伺服器利用PCM鎖機制 使BLOCK X從INSTANCE 的SGA區寫入資料庫數據文件中 又從數據文件中把BLOCK X塊讀入INSTANCE 的SGA區中 發生這種情況即為一個PING PING使原來 個MEMORY IO可以完成的工作變成 個DISK IO和 個 MEMORY IO才能夠完成 如果系統中有過多的PING 將大大降低系統的性能

Oracle並行伺服器中的每個PCM鎖可管理多個數據塊 PCM鎖管理的數據塊的個數與分配給一個數據文件的PCM鎖的個數及該數據文件的大小有關 當INSTANCE 和INSTANCE 要操作不同的BLOCK 如果這些BLOCK 是由同一個PCM鎖管理的 仍然會發生PING 這些PING稱為FALSE PING 當多個INSTANCE訪問相同的BLOCK而產生的PING是TRUE PING

合理的應用劃分使不同的應用訪問不同的數據 可避免或減少TRUE PING;通過給FALSE PING較多的數據文件分配更多的PCM鎖可減少 FALSE PING的次數 增加PCM鎖不能減少TRUE PING

所以 Oracle並行伺服器設計的目的是使系統交易處理合理的分布在INSTANCE實例間 以最小化PING 同時合理的分配PCM鎖 減少FALSE PING 設計的關鍵是找出可能產生的沖突 從而決定應用劃分的策略 應用劃分有如下四種方法

根據功能模塊劃分 不同的節點運行不同的應用

根據用戶劃分 不同類型的用戶運行在不同的節點上

根據數據劃分 不同的節點訪問不同的數據或索引

根據時間劃分 不同的應用在不同的時間段運行

應用劃分的兩個重要原則是使PING最小化及使各節點的負載大致均衡

三 資料庫物理結構的設計

資料庫物理結構設計包括確定表及索引的物理存儲參數 確定及分配數據畝蘆和庫表空間 確定初始的回滾段 臨時表空間 redo log files等 並確定主要的初始化參數 物理設計的目的是提高系統的性能 整個物理設計的參數可以根據實際運行情況作調整

表及索引數據量估算及物理存儲參數的設置

lishixin/Article/program/Oracle/201311/18944

㈡ oracle中游標的作用有哪些什麼情況下使用

存儲過程中查詢語句如何返回多行結果?我們知道,如果存儲過程中查詢語句有多行結果輸出,會報錯。若想讓存儲過程中的查詢語句返回多行結果不報錯,則需要使用游標來實現。本例主要也是用來熟悉存儲過程中游標的簡單使用方法:

SET SERVEROUTPUT ON;

create or replace procere proc_salary is

--定義變數

v_empno emp.empno%TYPE;

v_ename emp.ename%TYPE;

v_sal emp.sal%TYPE;

--定義游標

CURSOR emp_cursor IS SELECT empno, ename, sal from emp;

BEGIN--循環開始

LOOP

IF NOT emp_cursor%ISOPEN THEN

OPEN emp_cursor; END IF;

FETCH emp_cursor INTO v_empno, v_ename, v_sal;

--退出循環的條件

EXIT WHEN emp_cursor%NOTFOUND OR emp_cursor%NOTFOUND IS NULL;

dbms_output.put_line('員工編號為' || v_empno || '的' || v_ename || '薪水為:' || v_sal);

END LOOP;END;

/

㈢ oracle 一個游標可存多大的數據量

游標和指針我理解是一個意思的
它只是用來描述取得內存中數據的方式
就像導航一樣,GPS會給你地圖上的位置,而能不能跑到,取決與你的車里有多少油
例如:
在資料庫中查詢 取到一個結果集 你能不能取到那些數據,取決於你的機器 假如結果集中有一個CLOB類型欄位 而你的機器,內存+硬碟總共250M 沒可能看到數據,對吧
修改最大游標: alter system set open_cursor=800, scope=both;
只要你能接受性能,隨便你改,另外 open_cursor是整形 改得越大,性能越受影響

以下來自「賓士M888」的回答
1、plsql是面向過程的語言,這類語言還有c,cobol等,這類語言的共同點是一次只能處理一條數據,而資料庫sql返回的對象是一個集合,這樣直接用plsql程序操作就會出現問題。
2、在這種環境下就出現了游標,游標實際是一個內存地址,只想的是sql查詢出的結果集,當需要的時候再根據游標一條一條取數據【fetch】,直到全部數據取完。

就像chsoftstar說的那樣 出現游標無法取數的問題,很大可能是寫錯了,具體什麼原因,還得樓主自己查找了

閱讀全文

與oracle游標大資料庫相關的資料

熱點內容
程序員轉獵頭 瀏覽:811
換新erp系統舊數據怎麼錄 瀏覽:33
電腦文件屬性打不開 瀏覽:64
word文件信息兼容模式 瀏覽:656
iphonewarranty 瀏覽:742
婁底營銷網路推廣途徑有哪些 瀏覽:86
mongodb數據文件丟失 瀏覽:940
iphone4使用大全 瀏覽:330
美萍軟體資料庫在哪個文件夾 瀏覽:668
51虛擬機的數據文件路徑 瀏覽:931
java如何鎖定sql表 瀏覽:272
全民飛機大戰黃金升級費用 瀏覽:302
臨床科室文件管理你知道多少 瀏覽:814
js訪問excel模板文件 瀏覽:766
智能互動編程是什麼 瀏覽:320
大學生編程學什麼語言 瀏覽:101
自考編程專業是什麼 瀏覽:804
大數據熱工 瀏覽:384
jstable行 瀏覽:421
js獲取標簽內容 瀏覽:519

友情鏈接