首先,你須要明白的一點是:數據庫的物理結構是由數據庫的操做系統文件所決定,每個Oracle數據庫是由三種類型的文件組成:數據文件、日誌文件和控制文件。數據庫的文件爲數據庫信息提供真正的物理存儲。 每個Oracle數據庫有一個或多個物理的數據文件(data file)。一個數據庫的數據文件包含所有數據庫數據。邏輯數據庫結構(如表、索引等)的數據物理地存儲在數據庫的數據文件中。數據文件一般爲*.dbf格式,例如:userCIMS.dbf。數據文件有下列特徵:①、一個數據文件僅與一個數據庫聯繫;②、一旦創建,數據文件只增不減;③、一個表空間(數據庫存儲的邏輯單位)由一個或多個數據文件組成。 其次,咱們再來敘述一下Oracle的邏輯結構:Oracle的邏輯結構包括表空間(tablespace),段(segment),數據塊(data block)以及模式對象(schema object)。 Oracle數據庫在邏輯上是由多個表空間組成的,表空間在物理上包含一個或多個數據文件。而數據文件大小是塊大小的整數倍;表空間中存儲的對象叫段,好比數據段,索引段和回退段。段由區組成,區是磁盤分配的最小單位。段的增大是經過增長區的個數來實現的。每一個區的大小是數據塊大小的整數倍,區的大小能夠不相同;數據塊是數據庫中的最小的I/O單位,同時也是內存數據緩衝區的單位,及數據文件存儲空間單位。塊的大小由參數DB_BLOCK_SIZE設置,其值應設置爲操做系統塊大小的整數倍。 ⑴、表空間(tablespace) 表空間是數據庫中最大的邏輯單位,每個表空間由一個或多個數據文件組成,一個數據文件只能與一個表空間相聯繫。每個數據庫都有一個SYSTEM表空間,該表空間是在數據庫建立或數據庫安裝時自動建立的,用於存儲系統的數據字典表,程序系統單元,過程函數,包和觸發器等,也可用於存儲用戶數據表,索引對象。表空間具備在線(online)和離線(offline)屬性,能夠將除SYSTME之外的其餘任何表空間置爲離線。 ⑵、段(segment) 數據庫的段能夠分爲四類:數據段、索引段、回退段和臨時段。 ⑶、區 區是磁盤空間分配的最小單位。磁盤按區劃分,每次至少分配一個區。區存儲與段中,它由連續的數據塊組成。 ⑷、數據塊 數據塊是數據庫中最小的數據組織單位與管理單位,是數據文件磁盤存儲空間單位,也是數據庫I/O的最小單位,數據塊大小由DB_BLOCK_SIZE參數決定,不一樣的Oracle版本DB_BLOCK_SIZE的默認值是不一樣的。 ⑸、模式對象 模式對象是一種應用,包括:表、聚簇、視圖、索引序列生成器、同義詞、哈希、程序單元、數據庫鏈等。 最後,在來講一下Oracle的用戶、表空間和數據文件的關係: 一個用戶可使用一個或多個表空間,一個表空間也能夠供多個用戶使用。用戶和表空間沒有隸屬關係,表空間是一個用來管理數據存儲的邏輯概念,表空間只是和數據文件發生關係,數據文件是物理的,一個表空間能夠包含多個數據文件,而一個數據文件只能隸屬一個表空間。 數據庫
總結一下:解釋數據庫、表空間、數據文件、表、數據的最好辦法就是想象一個裝滿東西的櫃子。數據庫其實就是櫃子,櫃中的抽屜是表空間,抽屜中的文件夾是數據文件,文件夾中的紙是表,寫在紙上的信息就是數據。安全
oracle物理結構和邏輯結構物理結構查看oracle數據庫的物理文件路徑必定要用命令查看,除非該數據庫是你親自安裝,並作過全部的安全配置,不然很是有可能你的前任對數據庫進行了更改,而在一不當心釀成大錯。
查看控制文件DESC v$controlfile查看控制文件的狀態和名稱(顯示路徑)SELECT status,name FROM v$controlfile;
查看數據文件DESC v$datafile好比查看數據文件的文件號和狀態SELECT file#,status,name FROM v$datafile;
看日誌文件DESC v$logfile查看日誌文件路徑信息SELECT member FROM v$logfile;
Oracle的文件系統:控制文件(.CTL),數據文件(.DBF),日誌文件(.LOG)
這三種文件系統通常在如下路徑能夠找到:(默認安裝路徑)/u01/app/oracle/oradata/oracleSID
除此三種文件還有一種參數文件,參數文件不是數據庫系統中的有效組成部分,在啓動數據庫時,參數文件不直接參與工做,只是控制文件是由參數文件尋找的。參數文件位置:/u01/app/oracle/product/10.2.0/db_1/dbs/spfileorac leSID.ora控制文件的內容會顯示在參數文件中。參數文件的做用起到尋找控制文件的做用。
Oracle中有兩種日誌文件,一種爲聯機日誌文件(重作日誌文件),一種爲歸檔日誌文件。REDO01.LOG和REDO02.LOG,REDO03.LOG是典型的聯機日誌文件,特色是順序寫文件,寫滿後寫下一個,寫滿第三個循環寫第一個,而且覆蓋掉不作備份。歸檔日誌文件,在熱備份的時候要選擇的一種歸檔方式。
由控制文件控制數據文件和日誌文件。數據庫啓動時啓動對應實例後,首先啓動控制文件,在由控制文件打開數據文件。現象是:數據庫裝載:Database Mount,而後打開數據庫:Database Open。其實就是先打開控制文件,在打開數據文件。
物理結構下,這些路徑是能夠隨意遷移的,能夠存放在任何存儲下,包括裸設備。
邏輯結構數據庫的邏輯結構相對於物理結構要複雜不少。學邏輯結構,非一日之功,我僅學到相關的大概。之後有時間繼續深刻學習。數據庫存儲空間由一個或多個表空間構成。(如system、sysaux.)一、表空間(tablespace)組織數據庫空間的邏輯結構,其對物理結構是數據文件,一個表空間物理上由一個或多個數據文件組成,邏輯上由一個或多個數據段組成。二、數據段(segment)邏輯對象所佔用空間,如表段,索引段,回滾段等,段存在於表空間中,並對應必定的存儲空間。數據段又劃分爲一個或多個區間。三、區(extent)區間是用於爲數據一次性預留的一個邏輯上連續的一組disk空間(默認8塊),每一個區間佔用必定數量的數據塊。區不能跨數據文件。四、塊(block)數據庫最小的存儲單位(默認8k),是全部邏輯結構的基本分配單元。以上時邏輯結構的基本結構
1.表空間概述表空間功能·組織數據段空間,控制存儲空間的分配·經過使單個表空間在線或離線,控制數據的可用性·經過表空間劃分實現跨越設備分配數據存儲,以提升性能·經過指定用戶使用指定表空間實現對用戶的限制·執行部分數據的後備和恢復操做表空間特色·數據中的最大邏輯單位·一個數據庫邏輯上至少由一個系統表空間構成·一個表空間物理上至少由一個數據文件構成·一個表空間至少包括一個段(控制信息)·表空間的大小等於全部從屬於它的數據文件大小的總和查詢表空間使用情況SQL select*from dba_tablespaces;查詢數據庫中全部表空間信息SQL select*from dba_data_files;查詢表空間所含數據文件信息,不含臨時表空間SQL select*from dba_temp_files;專查臨時表空間所含數據文件SQL select tablespace_name,sum(bytes)from dba_data_files group by tablespace_name;查詢表空間大小SQL select tablespace_name,sum(bytes)from dba_free_space group by tablespace_name;查詢表空間空閒空間大小
建立表空間SQL create tablespace test datafile’/u01/a.dat’size 5m;更改表空間SQL alter tablespace test add datafile’/u01/b.dat’size 6m;查詢表空間SQL select tablespace_name,sum(bytes)from dba_data_files group by tablespace_name;表空間改名SQL alter tablespace test rename to fff;表空間脫機SQL alter tablespace test offline;表空間聯機SQL alter tablespace test online;設置表空間只讀SQL alter tablespace test read only;設置表空間可讀寫SQL alter tablespace test read write;擴展表空間SQL alter tablespace test add datafile’/u01/c.dat’size 500M;增長數據文件個數以擴充表空間(數據文件大約5~20個)SQL alter database datafile’/u01/a.dat’resize 80M;擴充數據文件大小擴充表空間SQL alter database datafile’/u01/a.dat’autoextend on maxsize 100M;設置自動擴充參數以自動擴充表空間刪除表空間SQL drop tablespace test including contents and datafiles;刪除表空間和數據文件
表空間分類表空間主要分爲系統表空間(system、sysaux),數據表空間(user),回滾表空間(undotbs),臨時表空間(temp)。一、系統表空間每一個數據庫都必須具有一個system表空間,該表空間是在數據庫建立或數據庫安裝時自動建立的,名稱不能更改,任什麼時候候均必須保持online狀態,用於存儲系統的數據字典表,程序系統單元,過程函數,包和觸發器等,也可用於存儲用戶數據表,索引對象。爲避免系統表空間產生磁場碎片以及爭用系統資源的問題,應單首創建至少一個獨立的表空間用來單獨抽出用戶數據。sysaux表空間也隨數據庫的建立而建立,是system表空間的輔助表空間,主要存儲存放支持oracle系統活動的多種工具如logminer等,sysaux下降了system表空間的負荷。二、數據和索引表空間由用戶在數據創建完畢自行建立,是數據庫空間的最主要組成部分,數據表空間應該創建多個,創建不一樣用戶及性質的數據庫對象時應指定其存放在指定的數據表空間中,索引表空間也應創建多個,並分類將不一樣對象的索引按大小及訪問頻度分別指定存放到指定的數據表空間中。一般狀況下,數據和索引表空間應創建適當多個,太少則單個表空間過大,數據不安全且回覆費時,過小則難管理。數據庫建立時默認建立users表空間,包含一個數據文件user01.dbf,新建用戶的未指定存儲表空間時默認使用該表空間。三、回滾表空間undo數據又稱回滾(rollback)數據,用戶確保數據的一致性,當執行DML操做時,事務操做前的數據被稱undo記錄,undo表空間用於保存undo記錄。undo表空間用戶保存undo記錄,是數據庫空間的最關鍵的組成部分,其對數據庫的運行影響很大。數據庫建立時默認創建一個回滾段表空間undotbs1,包含一個數據文件undotbs01.dbs。SQL show parameter undo;
四、臨時表空間臨時表空間(temp tablespace)主要用於存儲oracle數據庫運行期間所產生的歷史數據,及用於進行排序。數據庫關閉後,臨時表空間中全部數據將所有被清除,故臨時表空間外地其餘全部表空間都屬於永久性表空間數據庫建立時默認創建一臨時表空間temp。包含一數據文件temp01.dbf,對於大型操做頻繁的環境,應創建多個臨時表空間,並分別歸屬不一樣臨時表空間,以免多用戶及多任務競爭該臨時表空間查看系統默認臨時表空間及對應數據文件SQL select tablespace_name from dba_tablespaces;SQL select*from dba_temp_files;oracle