oracle資料庫存儲結構
❶ 什麼是Oracle資料庫
Oracle資料庫的體系結構
Oracle資料庫包括Oracle資料庫伺服器和客戶端。
Oracle資料庫伺服器:
Oracle Server是一個對象一關系資料庫管理系統。它提供開放的、全面的、和集成的信息管理方法。每個Server由一個 Oracle DB和一個 Oracle Server實例組成。它具有場地自治性(Site Autonomy)和提供數據存儲透明機制,以此可實現數據存儲透明性。每個 Oracle資料庫對應唯一的一個實例名SID,Oracle資料庫伺服器啟動後,一般至少有以下幾個用戶:Internal,它不是一個真實的用戶名,而是具有SYSDBA優先順序的Sys用戶的別名,它由DBA用戶使用來完成資料庫的管理任務,包括啟動和關閉資料庫;Sys,它是一個 DBA用戶名,具有最大的資料庫操作許可權;System,它也是一個 DBA用戶名,許可權僅次於 Sys用戶。
客戶端:
為資料庫用戶操作端,由應用、工具、sql* NET組成,用戶操作資料庫時,必須連接到一伺服器,該資料庫稱為本地資料庫(Local DB)。在網路環境下其它伺服器上的 DB稱為遠程資料庫(Remote DB)。用戶要存取遠程 DB上的數據時,必須建立資料庫鏈。
Oracle資料庫的體系結構包括物理存儲結構和邏輯存儲結構。由於它們是相分離的,所以在管理數據的物理存儲結構時並不會影響對邏輯存儲結構的存取。
1.邏輯存儲結構
它由至少一個表空間和資料庫模式對象組成。這里,模式是對象的集合,而模式對象是直接引用資料庫數據的邏輯結構。模式對象包括這樣一些結構:表、視圖、序列、存儲過程、同一詞、索引、簇和資料庫鏈等。邏輯存儲結構包括表空間、段和范圍,用於描述怎樣使用資料庫的物理空間。而其中的模式對象和關系形成了資料庫的關系設計。
數據塊(Block):是資料庫進行UO操作的最小單位,它與操作系統的塊不是一個概念。oracle資料庫不是以操作系統的塊為單位來請求數據,而是以多個Oracle資料庫塊為單位。
段(Segment):是表空間中一個指定類型的邏輯存儲結構,它由一個或多個范圍組成,段將佔用並增長存儲空間。
其中包括:
數據段:用來存放表數據;.
索引段:用來存放表索引;
臨時段:用來存放中間結果;
回滾段:用於出現異常時,恢復事務。
范圍(Extent):是資料庫存儲空間分配的邏輯單位,一個范圍由許多連續的數據塊組成,范圍是由段依此分配的,分配的第一個范圍稱為初始范圍,以後分配的范圍稱為增量范圍。
優點有:
■ 可用性強
■ 可擴展性強
■ 數據安全性強
■ 穩定性強
❷ oracle資料庫的游標和存儲過程怎麼寫
在Oracle資料庫中,游標和存儲過程是兩種重要的編程工具。游標用於處理查詢結果集,存儲過程則用於封裝復雜的業務邏輯。在使用游標時,首先定義游標結構,然後聲明變數並打開游標。以下是一個示例:
首先,定義一個名為mycur的游標,該游標接受一個數字參數vartype,並從cus_emp_basic表中選擇emp_no和emp_zc列,條件是com_no等於vartype。具體代碼如下:
varno varchar2(20);
varprice varchar2(20);
CURSOR mycur(vartype number) is select emp_no,emp_zc from cus_emp_basic where com_no = vartype;
接下來,開始執行存儲過程。如果游標未打開,則打開游標:
begin
if mycur%isopen = false then
open mycur(043925);
end if;
然後從游標中獲取數據到變數varno和varprice中,如果找到了數據,則輸出變數內容,並檢查當前行是否為第二行,如果是,則退出循環:
fetch mycur into varno,varprice;
while mycur%found loop
dbms_output.put_line(varno||','||varprice);
if mycur%rowcount=2 then
exit;
end if;
fetch mycur into varno,varprice;
end loop;
最後關閉游標:
close mycur;
end;
PL/SQL中的記錄類似於其他編程語言中的結構體或類,它允許我們定義包含不同類型欄位的數據結構。記錄並不保存在資料庫中,它們僅存在於內存中。要使用記錄,需要先定義記錄的結構,然後聲明記錄變數。這種數據類型可以提高代碼的可讀性和可維護性。
❸ oracle資料庫和sql server的區別
ORACLE與SQL SERVER的區別
ORACLE的文件體系結構為:
數據文件 .DBF (真實數據)
日誌文件 .RDO
控制文件 .CTL
參數文件 .ORA
SQL SERVER的文件體系結構為:
.MDF (數據字典)
.NDF (數據文件)
.LDF (日誌文件)
ORACLE存儲結構:
在ORACLE里有兩個塊參數PCTFREE(填充因子)和PCTUSED(復用因子),可控制塊確定塊本身何時有,何時沒有足夠的空間接受新信息(對塊的存儲情況的分析機制)這樣可降低數據行連接與行遷移的可能性。塊的大小可設置(OLTP塊和DSS塊)
在ORACLE中,將連續的塊組成區,可動態分配區(區的分配可以是等額的也可以是自增長的)可減少空間分配次數。
在ORACLEl里表可以分為多個段,段由多個區組成,每個段可指定分配在哪個表空間里(段的類型分為:數據段、索引段、回滾段、臨時段、CASH段。ORACLE里還可對表進行分區,可按照用戶定義的業務規則、條件或規范,物理的分開磁碟上的數據。
這樣大大降低了磁碟爭用的可能性。
ORACLE有七個基本表空間:
·SYSTEM表空間(存放數據字典和數據管理自身所需的信息)
·RBS回滾表空間
·TEMP臨時表空間
·TOOLS互動式表空間
·USERS用戶默認表空間
·INDX索引表空間
·DBSYS福數據表空間
不同的數據分別放在不同的表空間(數據字典與真實數據分開存放),在ORACLE里基表(存儲系統參數信息)是加密存儲,任何人都無法訪問。只能通過用戶可視視圖查看。
SQL SERVER 存儲結構
以頁為最小分配單位,每個頁為8K(不可控制,缺乏對頁的存儲情況的分析機制),
可將8個連續的頁的組成一個『擴展』,以進一步減少分配時所耗用的資源。(分配缺乏靈活性),在SQL SERVER里數據以表的方式存放,而表是存放在資料庫里。
SQL SERVER有五個基本資料庫:
·master(數據字典)
·mode(存放樣版)
·tempdb(臨時資料庫)
·msdb(存放調度信息和日誌信息)
·pubs(示例資料庫)
真實數據與數據字典存放在一起。對系統參數信息無安全機制。
ORACLE登入管理:
·SYSTEM/MANAGER (初始帳戶)
·SYS/CHANGE_ON_NSTALL
·INSTALL/ORACLE(安裝帳戶)
·SCOTT/TIGER(示例資料庫,測試用)
在ORACLE里默認只有三個系統用戶,ORACLE是通過用戶登入。
SQL SERVER登入管理:
·SQL SERVER身份驗證
·WINDOWS 身份驗證
在SQL SERVER里是通過WINDOWS用戶帳戶或是用SQL SERVER身份驗證連接資料庫的。
SQL不是一種語言,而是對ORACLE資料庫傳輸指令的一種方式。
SQL中NULL既不是字元也不是數字,它是預設數據。ORACLE提供了NVL函數來解決。
ORACLE中的字元串連接為 string1‖string2 ,SQL中為string1+string2.
集合操作:在SQL中只有UNION(並操作),ORACLE中包含MINUS(差操作)、 INTERECT(交操作)、UNION(並操作)。
索引:
SQL的索引分為聚集索引和非聚集索引,還包括全文索引;
ORACLE的索引包括:B+樹索引,Bitmap點陣圖索引,函數索引,反序索引,主鍵索引,散列索引,本地索引。
ORACLE的數據類型比較復雜,有基本數據類型,衍生型,列對象型,表對象型,結構體型;
SQL中的數據比較簡單,只有一些簡單的基本數據類型無法提供事務操作。