的存儲結構分為:物理存儲結構和邏輯存儲結構。一、物理存儲結構:指硬盤上存在的文件
一個數據庫可以由多個數據文件組成的,數據文件是真正存放數據庫數據的。一個數據文件就是一個操作系統文件。數據庫的對象(表和索引)物理上是被存放在數據文件中的。當我們要查詢一個表的數據的時候,如果該表的數據沒有在內存中we7 初始化oracle數據環境,那么就要讀取該表所在的數據文件,然后把數據存放到內存中。
通過下面的語句可以查看當前存在的數據文件和對應的表空間:
select file_name,tablespace_name from dba_data_files;
一個數據庫可以有多個聯機日志文件,聯機日志文件包含了重做記錄(undo ).聯機日志文件記錄了數據庫的改變,例如當一次意外導致對數據的改變沒有及時的寫到數據文件中,那么就會根據聯機日志文件中 的信息獲得這些改變,然后把這些改變寫到數據文件中.這也是聯機日志文件存在的意義.聯機日志文件中重做記錄的唯一功能就是用來做實例的恢復.比如,一次系統的意外掉電,導致內存中的數據沒有被寫到數據文件中.那么就會根據聯機日志文件中的重做記錄功能包數據庫恢復到失敗前的狀態.
可以通過下面的語句查看當前存在的日志文件和對應的日志組信息:
select member,group# from v$logfile;
注意:使用日志組來管理日志文件。默認有三個日志組,每組中至少兩個成員。如上圖所示。
另外we7 初始化oracle數據環境,我們已經知道了什么是數據文件和聯機日志文件,通過下面的圖解來說明他們之間的關系。
一個數據庫至少要有一個控制文件,控制文件中存放的數據庫的"物理結構信息",正是因為他存放的是數據庫的物理結構信息,所以他就顯得尤其的重要.這些物理結構信息就包括:
數據庫的名字。數據文件和聯機日志文件的名字及位置。創建數據庫時的時間戳。RMAN備份的元信息
為了更好的保護數據庫,我們可以鏡像控制文件.每個控制文件中的內容就是相同的.鏡像了控制文件,即使其中的一個控制文件出現了問題,也不會影響到數據庫的損壞,數據的丟失. 在啟動數據庫的時候,就會根據控制文件中的數據文件和聯機日志文件的信息來打開數據庫.
可以通過下面的語句查看當前存在的控制文件。
select name from v$controlfile;
是聯機日志文件的副本,他記錄了對數據庫改變的歷史。注意:默認是非歸檔模式,可以通過下面的語句查看
archive log list;
通過下面的語句,將數據庫切換到歸檔模式。
shutdown immediate
startup mount
alter database archivelog;
alter database open;
通常情況下指的就是初始化參數文件( file).參數文件包括了初始化參數文件和服務器端參數文件( file).在數據庫啟動的時候就會讀取參數文件,然后根據參數文件中的參數來分配SGA并啟動一系列的后臺進程.參數文件中存放的是數據庫和實例的參數.
的參數文件有兩種類型:
:二進制形式,9i之后Pfile:文本形式,9i之前
可以通過下面的語句查看當前的參數文件信息:
show parameter spfile
可以使用下面的方式將轉換為pfile:
create pfile='/home/oracle/pfile.ora' from spfile;
查看pfile中的參數值:
可以通過下面的語句修改參數的值。
alter system set open_cursors=400 scope=both;
注意:scope的取值有三個:memory、spfile、both
記錄了數據庫的重大活動和所發生的錯誤.警報文件按照時間的先后來記錄所發生的重大活動和錯誤.警報文件的名字的格式是 .log。警報文件的位置可以通過查詢v$得到,如下:
select * from v$diag_info;
注意:在12c以前的版本,告警日志的位置可以通過查詢參數得到。
告警日志文件中記錄的信息,包括:
數據庫啟動和停止的信息數據庫的結構變化強制審計的信息死鎖的信息
就是跟蹤日志文件,每個服務器進程和后臺進程都寫跟蹤文件.例如當后臺進程發生了錯誤的時候,就會把錯誤的信息寫到跟蹤文件中.DBA就可以根據跟蹤文件的信息來查看進程中所發生的錯誤。
跟蹤文件的位置跟告警日志文件,在同一個目錄下:
select * from v$diag_info;
就是在數據庫發生介質損壞的時候用來還原()數據庫的,恢復()數據的。
二、邏輯存儲結構
從邏輯上來看,
數據庫是由一個或者多個表空間等組成。一個表空間()由一組段組成一個段()由一組區組成一個區()由一批數據庫塊組成一個數據庫塊(block)對應一個或多個物理塊
數據庫是按照數據結構來組織、存儲和管理數據的倉庫。
表空間是數據庫的邏輯劃分,一個表空間只能屬于一個數據庫。表空間()是最大的邏輯單位,對應一個或多個數據文件,通常由相關的段組成。表空間的大小是它所對應的數據文件大小的總和。所有的數據庫對象都存放在指定的表空間中。但主要存放的對象是表, 所以稱作表空間。
必須存在的表空間
可選的表空間:一般指用戶創建的用戶表空間,比如:users
可以通過下面的語句查看當前數據庫的表空間信息:
select tablespace_name from dba_tablespaces;
一個段是分配給一個邏輯結構(一個表、一個索引或其他對象)的一組區,是數據庫對象使用的空間的集合;段可以有表段、索引段、回滾段、臨時段和高速緩存段等。
是數據庫存儲空間分配的一個邏輯單位,它由連續數據塊所組成。第一個段是由一個或多個盤區組成。當一段中間所有空間已完全使用,為該段分配一個新的范圍。
是 管理數據文件中存儲空間的單位,為數據庫使用的I/O的最小單位,最小的邏輯部件,其大小可不同于操作系統的標準I/O塊大小。數據塊的大小由參數確定。塊尺寸是處理更新、選擇、或者插入數據事務的最小單位。當用戶從表中選擇數據時,選擇操作從數據庫文件中以塊為單位讀取或者提取數據。例如塊的大小為8kb,即使只想檢索4kb的字符的名字,也必須讀取含有這4個字符的整個8kb的塊。
通過下面的語句查看當前數據塊設置的大小:
show parameter db_block_size