因為稀有資源不足,是以oracle引入複雜的記憶體、外存有效的管理稀有資源。
什麼是稀有資源?(引入人類曆史)
1.Oracle的資料儲存在什麼地方?
硬碟(機械速度 讀取磁盤的速度)
2.Oracle的資料在什麼地方更新?
記憶體(90%)(電子速度 計算機的配置)
是以Oracle的稀有資源是什麼?(硬碟、記憶體)
舉一個場景
資料庫斷電(事務執行一半斷電,再次啟動時要恢複已經寫入得資料)
oracle體系結構設計的初衷是什麼?
不是為了處理SQL,而是為了以後可以友善改進系統的效率和資料的恢複
資料庫由兩分組成
執行個體(instance):記憶體和背景程序的集合
SGA:系統全局區
{
共享池(shared pool):
{
庫緩存(library cache):
{
作用:共享sql、plsql代碼
}
資料字典緩存(data dict cache):
{
作用:儲存資料字典和使用者的權限資訊
}
}
資料庫高速區:産生髒資料的場所。
重做日志緩沖區:操作ddl和dml時必須先寫入重做日志緩沖區
}
PGA:程式全局區
排序資訊、遊标資訊、會話資訊
背景程序:smon、dbwr、pmon、lgwr、ckpt
資料庫(database):由一系列資料庫檔案組成
控制檔案:
資料檔案:
日志檔案:
參數檔案:
密碼檔案:
歸檔日志檔案:
一條sql語句是如何執行的?
編譯
1.庫緩存檢查是否存在
2.檢查文法是否正确
3.查詢資料字段檢查表和列的定義
4.加編譯鎖(sql語句在編譯過程中涉及的對象不能被改變)
5.查詢引用對象的使用者權限
6.生成執行計劃、裝入sql共享區
執行
7.伺服器程序執行Sql語句
提取資料
8.伺服器程序傳回資料集合,必要的時候要進行排序
主題二: 存儲結構
1.Oracle為什麼要引入那麼複雜的邏輯結構?
可移植性強、不依賴作業系統檔案
2.引入表空間(Tablespace)、段(Segment)、區(Extent)、塊(Oracle block)的概念(看圖說話)
3.如何查詢目前資料庫的現有表空間?
select * from dba_tablespaces
4.表空間分類
資料表空間 固定段
還原表空間 復原段
臨時表空間 臨時段
固定段:表、索引
復原段:需要復原資料
臨時段:臨時的排序資訊、臨時表
5.建立使用者時要選擇預設表空間和臨時表空間
預設表空間:建立表的時候如果不指定表存放的表空間則儲存在目前使用者的預設表空間
臨時表空間:為目前使用者指定臨時表空間,如果不指定會使用資料庫的預設臨時表空間
(打開user.sql進行講解)
如何檢視資料庫的預設臨時表空間?
select * from DataBase_properties where property_name like 'DEFAULT%';
6.表空間段管理的兩種方式
資料字典方式(9i中已經被廢棄)
Create TableSpace lession_db_data
DataFile 'E:ablespacelession_db_data.dbf' Size 5M
MINIMUM EXTENT 50k EXTENT MANAGEMENT DICTIONARY
DEFAULT STORAGE
(INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0);
n-2
next*(1+PCTINCREASE/100) 從第三次開始
本地建立方式
Create TableSpace lession_data
DataFile 'E:ablespacelession_data.dbf'
Size 5M
Extent Management Local
uniform size 1M;
7.如果建立表空間?從文法進行介紹
Create TableSpace lession_index
DataFile 'E:ablespacelession_index.dbf'
Size 5M
Extent Management Local
uniform size 1M;
如何檢視資料檔案?
select file_id,file_name,tablespace_name,bytes/(1024*1024)MB from dba_data_files;
如何建立臨時表空間?
Create TEMPORARY TableSpace lession_temp
Tempfile 'E:ablespacelession_temp.dbf'
Size 5M
Extent Management Local
uniform size 1M;
檢視臨時表空間檔案的方式?
select * from v$tempfile
8.删除表空間的問題
删除表空間的文法
drop tablespace LESSION_DATA including contents and datafiles;
注 預設臨時表空間不允許删除
更新一個臨時表空間為預設臨時表空間
alter database default temporary tablespace lession_temp;
9.表空間不足了怎麼辦?
1.增加檔案
alter tablespace LESSION_INDEX add datafile 'E:TABLESPACELESSION_INDEX02.DBF' size 5M;
2.擴充檔案
alter database datafile 'E:TABLESPACELESSION_INDEX.DBF' resize 10M;
準備工作 還原資料庫最初的結構
模拟我們現實開發中的跑庫流程
作者:思莊學習中心
連結:https://www.jianshu.com/p/3326f442007b