Oracle學習筆記一 初識Oracle,oracle學習筆記初識
數據庫簡介
數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫。SQL 是 Structured Query Language(結構化查詢語言)的首字母縮寫詞。
定義
數據庫,簡單來說是本身可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。
數據庫指的是以一定方式儲存在一起、能為多個用戶共享、具有盡可能小的冗余度的特點、是與應用程序彼此獨立的數據集合。
在經濟管理的日常工作中,常常需要把某些相關的數據放進這樣的“倉庫”,並根據管理的需要進行相應的處理。
例如,企業或事業單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個數據庫。有了這個"數據倉庫"我們就可以根據需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內的職工人數等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達到極高的水平。此外,在財務管理、倉庫管理、生產管理中也需要建立眾多的這種"數據庫",使其可以利用計算機實現財務、倉庫、生產的自動化管理。[來自百度百科]
Oracle數據庫簡介
上圖是數據庫的使用原理,用戶通過網絡向數據庫服務器發送請求,數據庫處理請求,再向用戶返回數據
Oracle 數據庫結構
oracle數據庫結構分為物理結構和邏輯結構。
物理結構:物理組件就是Oracle數據庫所使用的操作系統物理文件。我們可以在安裝目錄下的 product\10.2.0\oradata\orcl 目錄下進行查看,在生產環境中不同的文件放在不同的目錄,根據用戶訪問的頻繁情況來做決定。
1)、主要物理文件可分為三類:
i、數據文件:數據文件用於存儲數據庫數據,如表、索引數據等。
ii、控制文件:控制文件是記錄數據庫物理結構的二進制文件。
iii、在線日志文件:記錄對數據庫的所有修改信息,用於故障恢復。
注意:丟失這些文件,數據庫不可以繼續運行,需要進行介質恢復。
2)、非主要物理文件包括:
參數文件、密碼文件、告警和跟蹤文件、歸檔日志文件、備份文件。
參數文件分為pfile文件和spfile文件,位於ORACLE_HOME\DATABASE目錄下,9i開始默認不使用sfile文件,如spfileorcl.ora文件。
密碼文件:sys用戶密碼,位於ORACLE_HOME\DATABASE目錄下,如pwdorcl.ora文件。
查看是否有歸檔日志:archive log list。
ORACLE_HOME: D:\dev\oracle\product\10.2.0\db_1
注意:丟失這些文件,數據庫仍然可以繼續運行,不需要進行介質恢復。
邏輯結構:數據庫的邏輯結構是從邏輯的角度分析數據庫的組成。
Oracle 的邏輯組件包括:數據庫->表空間->段->區->數據庫->模式。
[該兩段來自Ruthless的文章]
Oracle 實例
Oracle 實例是後台進程和內存結構的集合
Oracle 實例內存
當服務器進程啟動時分配程序全局區,Oracle 的內存結構包含以下兩個內存區
系統全局區
數據庫信息存儲於SGA,由多個數據庫進程共享
共享池
- 共享池是對SQL、PL/SQL程序進行語法分析、編譯、執行的內存區域
- 共享池由庫緩存和數據字典緩存組成。
- 共享池的大小直接影響數據庫的性能。
數據緩沖區
- 用於存儲從磁盤數據文件中讀入的數據,所有用戶共享。
- 服務器進程將讀入的數據保存在數據緩沖區中,當後續的請求需要這些數據時可以在內存中找到,不需要再從磁盤讀取,提高了讀取速度。
- 數據緩沖區的大小對數據庫的讀取速度有直接的影響。
日志緩沖區
- 日志記錄數據庫的所有修改信息,日志信息首先產生於日志緩沖區。
- 當日志緩沖區的日志數據達到一定數量時,由後台進程將日志數據寫入日志文件中。
- 相對來說,日志緩沖區對數據庫的性能影響較小。
程序全局區
- 程序全局區(PGA)包含單個服務器進程所需的數據和控制信息
- PGA是在用戶進程連接到數據庫並創建一個會話時自動分配的,保存每個與Oracle 數據庫連接的用戶進程所需的信息
- PGA為非共享區,只能單個進程使用,當一個用戶會話結束,PGA釋放
Oracle 實例進程
後台進程是Oracle數據庫為了保持最佳系統性能和協調多個用戶請求而設置的。 Oracle 實例啟動時即創建一系列後台進程
PMON 進程監控進程
- 清理出現故障的進程。
- 釋放所有當前掛起的鎖定。
- 釋放故障進程使用的資源。
SMON 系統監控進程
- 在實例失敗之後,重新打開數據庫時自動恢復實例。
- 整理數據文件的自由空間,將相鄰區域結合起來。
- 釋放不再使用的臨時段。
DBWR 數據寫入進程
- 管理數據緩沖區,將最近使用過的塊保留在內存中。
- 將修改後的緩沖區數據寫入數據文件中。
LGWR 日志寫入進程
- 負責將日志緩沖區中的日志數據寫入日志文件。
- 系統有多個日志文件,該進程以循環的方式將數據寫入文件。
Oracle 主要組件
會話
- 會話是用戶與 Oracle 服務器的單個連接
- 當用戶與服務器建立連接時創建會話
- 當用戶與服務器斷開連接時關閉會話
Oracle 邏輯組件
數據庫的邏輯結構是從邏輯的角度分析數據庫的組成。Oracle 的邏輯組件包括:
表空間
- 表空間是數據庫中最大的邏輯單位,一個 Oracle 數據庫至少包含一個表空間,就是名為SYSTEM的系統表空間。
- 每個表空間是由一個或多個數據文件組成的,一個數據文件只能與一個表空間相關聯。
- 表空間的大小等於構成該表空間的所有數據文件大小之和。
創建表空間的語法是:
CREATE TABLESPACE tablespacename
DATAFILE ‘filename’ [SIZE integer [K|M]]
[AUTOEXTEND [OFF|ON]];
段
- 段是構成表空間的邏輯存儲結構,段由一組區組成。
- 按照段所存儲數據的特征,將段分為四種類型,即數據段、索引段、回退段和臨時段。
區
- 區為段分配空間,它由連續的數據塊組成。
- 當段中的所有空間已完全使用時,系統自動為該段分配一個新區。
- 區不能跨數據文件存在,只能存在於一個數據文件中。
數據塊
- 數據塊是Oracle服務器所能分配、讀取或寫入的最小存儲單元。
- Oracle服務器以數據塊為單位管理數據文件的存儲空間。
模式
- 模式是對用戶所創建的數據庫對象的總稱。
- 模式對象包括表、視圖、索引、同義詞、序列、過程和程序包等。
使用 Oracle 數據庫的開發流程