小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【趙強老師】Oracle數(shù)據(jù)庫的存儲結(jié)構(gòu)

 Coder編程 2022-04-02

Oracle的存儲結(jié)構(gòu)分為:物理存儲結(jié)構(gòu)和邏輯存儲結(jié)構(gòu)。

一、物理存儲結(jié)構(gòu):指硬盤上存在的文件

  • 數(shù)據(jù)文件(data file)

一個數(shù)據(jù)庫可以由多個數(shù)據(jù)文件組成的,數(shù)據(jù)文件是真正存放數(shù)據(jù)庫數(shù)據(jù)的。一個數(shù)據(jù)文件就是一個操作系統(tǒng)文件。數(shù)據(jù)庫的對象(表和索引)物理上是被存放在數(shù)據(jù)文件中的。當(dāng)我們要查詢一個表的數(shù)據(jù)的時候,如果該表的數(shù)據(jù)沒有在內(nèi)存中,那么oracle就要讀取該表所在的數(shù)據(jù)文件,然后把數(shù)據(jù)存放到內(nèi)存中。通過下面的語句可以查看當(dāng)前存在的數(shù)據(jù)文件和對應(yīng)的表空間:

select file_name,tablespace_name from dba_data_files;

 

  •  聯(lián)機日志文件(online redo log file)

一個數(shù)據(jù)庫可以有多個聯(lián)機日志文件,聯(lián)機日志文件包含了重做記錄(undo records).聯(lián)機日志文件記錄了數(shù)據(jù)庫的改變,例如當(dāng)一次意外導(dǎo)致對數(shù)據(jù)的改變沒有及時的寫到數(shù)據(jù)文件中,那么oracle就會根據(jù)聯(lián)機日志文件中 的信息獲得這些改變,然后把這些改變寫到數(shù)據(jù)文件中.這也是聯(lián)機日志文件存在的意義.聯(lián)機日志文件中重做記錄的唯一功能就是用來做實例的恢復(fù).比如,一次系統(tǒng)的意外掉電,導(dǎo)致內(nèi)存中的數(shù)據(jù)沒有被寫到數(shù)據(jù)文件中.那么oralce就會根據(jù)聯(lián)機日志文件中的重做記錄功能包數(shù)據(jù)庫恢復(fù)到失敗前的狀態(tài)。可以通過下面的語句查看當(dāng)前存在的日志文件和對應(yīng)的日志組信息:

select member,group# from v$logfile;

 

 注意:Oracle使用日志組來管理日志文件。默認(rèn)有三個日志組,每組中至少兩個成員。如上圖所示。

另外,我們已經(jīng)知道了什么是數(shù)據(jù)文件和聯(lián)機日志文件,通過下面的圖解來說明他們之間的關(guān)系。

  •  控制文件(control file)

一個數(shù)據(jù)庫至少要有一個控制文件,控制文件中存放的數(shù)據(jù)庫的"物理結(jié)構(gòu)信息",正是因為他存放的是數(shù)據(jù)庫的物理結(jié)構(gòu)信息,所以他就顯得尤其的重要.這些物理結(jié)構(gòu)信息就包括:

  1. 數(shù)據(jù)庫的名字。
  2. 數(shù)據(jù)文件和聯(lián)機日志文件的名字及位置。
  3. 創(chuàng)建數(shù)據(jù)庫時的時間戳。
  4. RMAN備份的元信息

為了更好的保護數(shù)據(jù)庫,我們可以鏡像控制文件.每個控制文件中的內(nèi)容就是相同的.鏡像了控制文件,即使其中的一個控制文件出現(xiàn)了問題,也不會影響到數(shù)據(jù)庫的損壞,數(shù)據(jù)的丟失. 在啟動數(shù)據(jù)庫的時候,oracle就會根據(jù)控制文件中的數(shù)據(jù)文件和聯(lián)機日志文件的信息來打開數(shù)據(jù)庫.

可以通過下面的語句查看當(dāng)前存在的控制文件。

select name from v$controlfile;

 

 注意:這里默認(rèn)有兩個控制文件,這種方式叫做“多路復(fù)用”。

  • 歸檔日志文件

是聯(lián)機日志文件的副本,他記錄了對數(shù)據(jù)庫改變的歷史。注意:Oracle默認(rèn)是非歸檔模式,可以通過下面的語句查看

archive log list;

 

 通過下面的語句,將數(shù)據(jù)庫切換到歸檔模式。

shutdown immediate
startup mount
alter database archivelog;
alter database open;
  • 參數(shù)文件

通常情況下指的就是初始化參數(shù)文件(initialization parameter file).參數(shù)文件包括了初始化參數(shù)文件和服務(wù)器端參數(shù)文件(server parameter file).在數(shù)據(jù)庫啟動的時候就會讀取參數(shù)文件,然后根據(jù)參數(shù)文件中的參數(shù)來分配SGA并啟動一系列的后臺進程.參數(shù)文件中存放的是數(shù)據(jù)庫和實例的參數(shù).

Oracle的參數(shù)文件有兩種類型:

  1. Spfile:二進制形式,9i之后
  2. Pfile:文本形式,9i之前

可以通過下面的語句查看當(dāng)前的參數(shù)文件信息:

show parameter spfile

 

可以使用下面的方式將spfile轉(zhuǎn)換為pfile:

create pfile='/home/oracle/pfile.ora' from spfile;

 查看pfile中的參數(shù)值:

可以通過下面的語句修改參數(shù)的值。

alter system set open_cursors=400 scope=both;
注意:scope的取值有三個:memory、spfile、both 
  • 告警日志文件

記錄了數(shù)據(jù)庫的重大活動和所發(fā)生的錯誤.警報文件按照時間的先后來記錄所發(fā)生的重大活動和錯誤.警報文件的名字的格式是 alert_SID.log。警報文件的位置可以通過查詢v$diag_info得到,如下:

select * from v$diag_info;

 

注意:在12c以前的版本,告警日志的位置可以通過查詢參數(shù)background_dump_dest得到。

告警日志文件中記錄的信息,包括:

  1. 數(shù)據(jù)庫啟動和停止的信息
  2. 數(shù)據(jù)庫的結(jié)構(gòu)變化
  3. 強制審計的信息
  4. 死鎖的信息
  •  跟蹤文件

就是跟蹤日志文件,每個服務(wù)器進程和后臺進程都寫跟蹤文件.例如當(dāng)后臺進程發(fā)生了錯誤的時候,oracle就會把錯誤的信息寫到跟蹤文件中.DBA就可以根據(jù)跟蹤文件的信息來查看進程中所發(fā)生的錯誤。

跟蹤文件的位置跟告警日志文件,在同一個目錄下:

select * from v$diag_info;

 

  • 備份文件

就是在數(shù)據(jù)庫發(fā)生介質(zhì)損壞的時候用來還原(restore)數(shù)據(jù)庫的,恢復(fù)(recover)數(shù)據(jù)的。

 

二、邏輯存儲結(jié)構(gòu)

從邏輯上來看,

  1. 數(shù)據(jù)庫是由一個或者多個表空間等組成。
  2. 一個表空間(tablespace)由一組段組成
  3. 一個段(segment)由一組區(qū)組成
  4. 一個區(qū)(extent)由一批數(shù)據(jù)庫塊組成
  5. 一個數(shù)據(jù)庫塊(block)對應(yīng)一個或多個物理塊
  • Database(數(shù)據(jù)庫)

數(shù)據(jù)庫是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫。

  • Tablespaces(表空間)

表空間是數(shù)據(jù)庫的邏輯劃分,一個表空間只能屬于一個數(shù)據(jù)庫。表空間(tablespace)是最大的邏輯單位,對應(yīng)一個或多個數(shù)據(jù)文件,通常由相關(guān)的段組成。表空間的大小是它所對應(yīng)的數(shù)據(jù)文件大小的總和。所有的數(shù)據(jù)庫對象都存放在指定的表空間中。但主要存放的對象是表, 所以稱作表空間。

必須存在的表空間

  • system
  • sysaux
  • temp
  • undo

可選的表空間:一般指用戶創(chuàng)建的用戶表空間,比如:users

可以通過下面的語句查看當(dāng)前數(shù)據(jù)庫的表空間信息:

select tablespace_name from dba_tablespaces;

 

  • Segments (段)

一個段是分配給一個邏輯結(jié)構(gòu)(一個表、一個索引或其他對象)的一組區(qū),是數(shù)據(jù)庫對象使用的空間的集合;段可以有表段、索引段、回滾段、臨時段和高速緩存段等。

  • extents (區(qū))

是數(shù)據(jù)庫存儲空間分配的一個邏輯單位,它由連續(xù)數(shù)據(jù)塊所組成。第一個段是由一個或多個盤區(qū)組成。當(dāng)一段中間所有空間已完全使用,oracle為該段分配一個新的范圍。

  • Data Block (數(shù)據(jù)塊)

是oralce 管理數(shù)據(jù)文件中存儲空間的單位,為數(shù)據(jù)庫使用的I/O的最小單位,最小的邏輯部件,其大小可不同于操作系統(tǒng)的標(biāo)準(zhǔn)I/O塊大小。數(shù)據(jù)塊的大小由DB_BLOCK_SIZE參數(shù)確定。塊尺寸是處理Oracle更新、選擇、或者插入數(shù)據(jù)事務(wù)的最小單位。當(dāng)用戶從表中選擇數(shù)據(jù)時,選擇操作從數(shù)據(jù)庫文件中以塊為單位讀取或者提取數(shù)據(jù)。例如Oracle塊的大小為8kb,即使只想檢索4kb的字符的名字,也必須讀取含有這4個字符的整個8kb的塊。

通過下面的語句查看當(dāng)前數(shù)據(jù)塊設(shè)置的大?。?/p>

show parameter db_block_size

 

 

 









 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多