標籤:
一. 如何學習Oracle
1. 資料庫管理員
管理Oracle(啟動停止、資料庫故障恢複)
提升Oracle效能(分配記憶體)最佳化資料存放區結構……2. 資料庫程式員編寫業務SQL資料庫指令碼編程(函數、預存程序、觸發器)3. Java程式員首先應該瞭解Oracle資料庫基本的體繫結構,然後重點掌握PL/SQL及Oracle的開發工具
二. Oracle 資料庫簡介 1. 對象關係型的資料庫管理系統 (ORDBMS)2. 在管理資訊系統、企業資料處理、網際網路及電子商務等領域使用非常廣泛3. 在資料安全性與資料完整性控制方面效能優越4. 跨作業系統、跨硬體平台的資料互操作能力5. Oracle資料庫的主要特點:a. 支援多使用者、大事務量的交易處理b. 資料安全性和完整性控制c. 支援分布式資料處理d. 可移植性
三. Oracle 體繫結構1. 資料庫的體繫結構是指資料庫的組成、工作過程與原理,以及資料在資料庫中的組織與管理機制2. Oracle伺服器提供開放、全面和綜合的資訊管理,它由Oracle資料庫和Oracle執行個體組成
管理資料庫的後台進程和記憶體結構的集合稱為 Oracle 執行個體
四. Oracle 執行個體
1. Oracle 執行個體是後台進程和記憶體結構的集合2. 在一般的情況下,每個Oracle資料庫都必須對應一個Oracle 執行個體,但是在特殊情況下,一個伺服器中一個資料庫可以對應多個執行個體。所以在建立資料庫之前,必須先指定Oracle執行個體的系統標識符(System Identifier),即Oracle SID。這個Oracle SID就是Oracle執行個體的名稱。因為Oracle SID可以用來區分不同的Oracle資料庫,所以SID名稱必須是唯一的。
五. Oracle 執行個體記憶體結構Oracle 的記憶體結構包含以下兩個記憶體區:系統全域區 (SGA)、程式全域區 (PGA)注意:當伺服器處理序啟動時分配程式全域區1. SGA(系統全域區)分為以下幾個區:日誌緩衝區、共用池、資料緩衝區 SGA儲存了資料庫環境和字典資訊,由多個資料庫進程共用a. 日誌緩衝區 :記錄資料庫的所有修改資訊減少了儲存日誌時對磁碟的操作,提高了資料庫效能。b. 資料緩衝區 :用於儲存從磁碟資料檔案中讀入的資料,所有使用者共用。資料緩衝區的大小對資料庫的讀取速度有直接的影響。已讀取常見表格的資料,減少了對磁碟的操作,提高了資料庫效能。c. 共用池 :共用池是對SQL、PL/SQL程式進行文法分析、編譯、執行的記憶體地區,共用池的大小直接影響資料庫的效能。儲存了對SQL分析結果,減少了分析相同SQL的時間,提高SQL執行效率。2. 程式全域區(PGA)包含單個伺服器處理序所需的資料和控制資訊a. PGA是在使用者進程串連到資料庫並建立一個會話時自動分配的,儲存每個與Oracle 資料庫連接的使用者進程所需的資訊b. PGA為非共用區,只能單個進程使用,當一個使用者會話結束,PGA釋放
六. 後台進程Oracle各種進程中,最重要的就是後台進程:1. PMON 進程監控進程:清理出現故障的進程。釋放所有當前掛起的鎖定。釋放故障進程使用的資源。2. SMON 系統監控進程在執行個體失敗之後,重新開啟資料庫時自動回復執行個體。整理資料檔案的自由空間,將相鄰地區結合起來。釋放不再使用的臨時段。3. DBWR 資料寫入進程 :管理資料緩衝區,將最近使用過的塊保留在記憶體中。將修改後的緩衝區資料寫入資料檔案中。4. LGWR 日誌寫入進程 :負責將日誌緩衝區中的日誌資料寫入記錄檔。系統有多個記錄檔,該進程以迴圈的方式將資料寫入檔案。
七. Oracle 資料庫1. Oracle 資料庫由作業系統檔案組成,這些檔案為資料庫資訊提供實際實體儲存體區2. Oracle 資料庫包括邏輯結構和物理結構
邏輯結構指資料庫建立之後形成的邏輯概念之間的關係
A. 物理架構a. 資料檔案:用於儲存資料庫資料,如表、索引資料等。b. 記錄檔:記錄對資料庫的所有修改資訊,用於故障恢複。c. 控制檔案:記錄資料庫物理結構的二進位檔案。B. 邏輯架構:指Oracle的邏輯上是用什麼“單位”進行儲存a. 資料區塊:資料區塊是Oracle伺服器所能分配、讀取或寫入的最小儲存單元。Oracle伺服器以資料區塊為單位管理資料檔案的儲存空間。b. 區:區為段分配空間,它由連續的資料區塊組成。當段中的所有空間已完全使用時,系統自動為該段分配一個新區。區不能跨資料檔案存在,只能存在於一個資料檔案中。c. 段:段是構成資料表空間的邏輯儲存結構,段由一組區組成。按照段所儲存資料的特徵,將段分為四種類型,即資料區段、索引段、回退段和臨時段。d. 資料表空間是資料庫中最大的邏輯單位,一個 Oracle 資料庫至少包含一個資料表空間,就是名為SYSTEM的系統資料表空間。每個資料表空間是由一個或多個資料檔案組成的,一個資料檔案只能與一個資料表空間相關聯。 資料表空間的大小等於構成該資料表空間的所有資料檔案大小之和。建立資料表空間的文法是:
CREATE TABLESPACE tablespacename
DATAFILE ‘filename’ [SIZE integer [K|M]]
[AUTOEXTEND [OFF|ON]];
e. 模式:英文Schema,模式是對使用者所建立的資料庫物件的總稱。模式對象包括表、視圖、索引、同義字、序列、過程和程式包等。與使用者的關係:模式名稱就是控制該模式的使用者名稱稱。
八. 執行個體與資料庫關係1. 兩者關係一個執行個體只能管理一個資料庫一個資料庫可能由多個執行個體同時管理 2. 單一實例與多執行個體一個資料庫只有一個執行個體管理,叫單一實例資料庫。一個資料庫同時由多個執行個體管理,叫多執行個體資料庫。
九. PL/SQL程式簡介1. PL/SQL程式組成組成PL/SQL程式的最基本的單元是PL/SQL塊。 2. PL/SQL塊的分類A. 匿名塊:直接執行的塊B. 命名塊:通過名稱調用的塊a. 子程式(包括預存程序和函數):類似JAVA的方法和函數b. 觸發器:類似JAVA的事件處理代碼,當某件事情發生時自動執行c. 包:類似JAVA的package,主要的作用組織代碼和避免命名衝突。
十. PL/SQL運行機制1. 瞭解PL/SQLPL/SQL是對標準SQL的擴充。PL/SQL執行需要PL/SQL引擎執行,PL/SQL引擎可能一般安裝在服務端,但也有可能安裝在用戶端。 2. 運行機制A. 伺服器端的PL/SQL引擎(如Oracle伺服器)執行過程a. 標準SQL交給SQL引擎處理b. 非標準部分交給PL/SQL引擎處理B. 用戶端的PL/SQL引擎(如Oracle Forms)執行過程a. 標準SQL交給伺服器的SQL引擎處理b. 非標準部分交給PL/SQL引擎在用戶端處理,如果沒有SQL,則所有PL/SQL 都是在用戶端處理的。
十一. PL/SQL塊的編譯過程1. 為什麼要編譯PL/SQL塊必須編譯為機器碼才能夠執行 2. PL/SQL塊a. 匿名塊:執行前編譯b. 命名塊: 在建立時或修改進即時編譯3. 編譯過程A. PL/SQL引擎B. 語法檢查:檢查PL/SQL代碼的文法或編譯錯誤。
a. 綁定:如果語法檢查通過,編譯器則為Oracle儲存資料的程式變數分配一個儲存地址,這個過程稱為綁定。綁定允許Oracle在程式運行時引用儲存地址。
b. 檢查對錶、列等對象的引用
C. 產生虛擬碼,並且設定合法狀態
注意,即使狀態設定為合法,如果在執行對應的表不存在,則執行仍會失敗,並且狀態自動化佈建為不可用。
十二. 使用PL/SQL的好處 1. 為什麼要使用PL/SQLa. 減少網路流量,提高應用程式效能b. 提供模組化程式開發能力,簡化了開發和維護c. 具有良好的相容性,不同的開發工具可以使用相同的PL/SQL指令碼d. 允許定義標識符,增加了程式可讀性e. 提供了程式控制結構,增強業務處理能力f. 提供了異常處理,讓PL/SQL程式更健壯
十三. 資料字典 a. 資料字典儲存資料對象和段的資訊,它是一個存放在SYSTEM資料表空間的唯讀對象,不允許任何人對其進行修改。b. 資料庫物件包括:使用者、角色、資料表空間、表、視圖、簇、類型、同義字、序列、索引、資料庫連結、預存程序、函數、包、觸發器等。c. Oracle將這些資料庫物件組合到一個稱為Schema(翻譯為模式)的集合中。一個Schema只能夠被一個資料使用者所擁有,並且Schema的名稱與這個使用者的名稱相同。
十四. 表 在Oracle中表的概念以及建立、刪除、修改表的文法與其它資料庫基本相同。 Oracle表常見的資料類型:如表
資料類型 |
SQLServer |
Oracle |
整數 |
int,smallint,bigint |
number(m) |
小數 |
decimal |
number(m,n) |
定長字串 |
char |
char |
變長字串 |
varchar |
varchar2 |
日期 |
smalldatetime,datetime |
date |
十五. 同義字1. 為什麼用同義字當資料庫物件如表修改名稱以後,通過使用同義字可以避免重新修改SQL語句,從而減少系統維護工作量。2. 建立同義字a. 公有同義字:CREATE PUBLIC SYNONYM 同義字名稱 FOR 資料庫物件名;b. 私人同義字:CREATE 同義字名稱 FOR 資料庫物件名;3. 刪除同義字文法:drop SYNONYM 同義字;
十六. 視圖(VIEW)是從一個或多個表中通過查詢語句產生的一種虛表。資料庫中只儲存視圖的定義(存在資料字典中)1. 建立視圖文法:create or replace view 視圖名 as 查詢;2. 使用視圖樣本:select * from 視圖名 where 條件;3. 刪除視圖文法:drop view 視圖名;
十七. 序列:是Oracle資料庫的一種對象,可以給應用程式提供基本連續增加並保持唯一的數值。1. 為什麼要用序列主要用於實現資料庫表的主鍵列的自動成長。2. 建立序列文法:create sequence 序列名3. 使用序列文法:序列名.nextval文法:序列名.currVal4. 刪除序列文法:drop sequence 序列名案例新增學生,學號使用自動編號。
Oracle資料庫編程