一. 如何學習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 |
新聞熱點
疑難解答