oracle 體系結構複習
1.體系結構篇
1.物理結構:簡述Oracle的物理結構包含哪些內容,針對每種物理檔案介紹一種與其相關的資料字典或其它檢視命令。
1. 資料檔案(data file) 字尾為.dbf 資料字典: dba_data_files和v$datafile
2.日誌檔案(redo log file) 字尾為.rdo V$log和v$logfile
3. 歸檔檔案:字尾為.ARC ARCHIVE LOG LIST
4.控制檔案(control file ) 字尾為.ctl v$controlfile
5.配置檔案(*.ora)
2. 日誌檔案的新增刪除和修改,注意日誌檔案包括分組 (group)和成員(member)p109
【例1】在ALTER DATABASE語句中使用ADD LOGFILE子句也可以建立重做日誌組:
ALTER DATABASE ADD LOGFILE ('log1c.rdo', 'log2c.rdo') SIZE 5000k;
【例2】在使用ALTER DATABASE
ALTER DATABASE ADD LOGFILE GROUP 10 ('log1a.rdo', 'log2a.rdo') SIZE 5000k;
【例3】在ALTER DATABASE語句中使用ADD LOGFILE MEMBER關鍵字,可以向已存在的重做日誌組中新增成員:
ALTER DATABASE ADD LOGFILE MEMBER 'log3a.rdo' TO GROUP 10;
【例4】刪除編號為10的重做日誌組:
SQL> ALTER DATABASE DROP LOGFILE GROUP 10
【例5】刪除重做日誌組log1a.rdo:
SQL> ALTER DATABASE DROP LOGFILE MEMBER 'log1a.rdo';
3.邏輯結構:包含哪些內容及它們之間的關係。
1 表空間(tablespace) 2 段(segment) 3 區(extent) 4 資料庫塊(database block); 5 模式物件(表、檢視、序列和同義詞等)
•表空間由表等schema物件組成,(分割槽表的一個區由一個段組成),段由區間組成,區間則由資料塊組成。
解釋補充:
1.表空間是Oracle中最大的邏輯儲存結構,它與物理上的一個或多個數據檔案相對應,每個Oracle資料庫都至少擁有一個表空間,表空間的大小等於構成該表空間的所有資料檔案大小的總和。
2.在安裝Oracle時,Oracle資料庫系統一般會自動建立一系列表空間(Oracle安裝好後自帶的表空間)
sysaux 輔助系統表空間。用於減少系統表空間的負荷,提高系統的作業效率。該表空間由Oracle系統內部自動維護,一般不用於儲存使用者資料。
system 系統表空間,用於儲存系統的資料字典、系統的管理資訊和使用者資料表等。
temp 臨時表空間。用於儲存臨時的資料,例如儲存排序時產生的臨時資料。 臨時表空間本身不是臨時存在的,而是永久存在的,只是儲存在臨時表空間中的段是臨時的。臨時表空間的存在,可以減少臨時段與儲存在其他表空間中的永久段之間的磁碟I/O爭用。
undo 撤消表空間。用於在自動撤消管理方式下儲存撤消資訊。在撤消表空間中,除了回退段以外,不能建立任何其他型別的段。所以,使用者不可以在撤消表空間中建立任何資料庫物件。
users 使用者表空間。用於儲存永久性使用者物件和私有資訊。
•大檔案表空間(Bigfile Tablespaces) Oracle 10g以上版本提供的一種新的表空間,它只能包含一個大檔案,但檔案大小可以達到4G資料塊。
4.Oracle資料庫段的型別
·資料段(Data Segment) 資料段是與資料庫物件相對應,一般一個數據庫物件對應一個數據段。
·索引段(Index Segment) 每個索引都有一個索引段
·回滾段(Rollback Segment) 回滾段中的資訊將在資料庫恢復過程中使用到。
·臨時段(Temporary Segment) 當執行SQL語句需要臨時工作區時,Oracle 將建立臨時段。執行完畢後,臨時段的區間將被系統回收,以備需要時分配使用。
補充:資料庫模式物件在邏輯上是以段來佔據表空間的大小。 一個非分割槽表就是一個segment,分割槽表的一個分割槽是一個segment。•段由區組成,組成段的區可以連續也可以不連續。
•oracle資料庫在邏輯上是由多個表間組成的
•表空間中儲存的物件叫段,比如資料段,索引段,和回退段。
•段由區組成,區是磁碟分配的最基本單位。段的增大是通過增加區的個數來實現的。
•每個區的大小是資料塊大小的整數倍,區的大小可以不相同;
•資料塊是資料庫中最小的I/O單位, 通過SHOW PARAMETER db_block_size顯示其大小 。
5.表空間和資料檔案及段的關係
•表空間和資料檔案是物理儲存上的一對多的關係。
•表空間和段是邏輯儲存上的一對多的關係。
•段不可以跨表空間,一個段只能屬於一個表空間。
•段不直接和資料檔案有聯絡。一個段可以屬於多個數據檔案。
6.簡介後臺程序的名稱和作用
•DBWn(Database Writer,資料庫寫入)程序,是Oracle中採用LRU演算法將資料緩衝區中的資料寫入資料檔案的程序。
•LGWR(Log Writer,日誌寫入)程序,是負責管理日誌緩衝區的一個後臺程序,用於將日誌緩衝區中的日誌資料寫入磁碟的日誌檔案中。
CKPT(Check Point,檢查點或檢驗點)程序,一般在發生日誌切換時自動產生,用於縮短例項恢復所需的時間。
•SMON(System Monitor,系統監控)程序,用於資料庫例項出現故障或系統崩潰時,通過將聯機重做日誌檔案中的條目應用於資料檔案,執行崩潰恢復。
•PMON(Process Monitor,程序監控)程序,用於在使用者程序出現故障時執行程序恢復操作,負責清理記憶體儲存區和釋放該程序所使用的資源。
ARCn(Archive Process,歸檔)程序,用於將寫滿的日誌檔案複製到歸檔日誌檔案中,防止日誌檔案組中的日誌資訊由於日誌檔案組的迴圈使用而被覆蓋。
•RECO(Recovery,恢復)程序存在於分散式資料庫系統中,用於自動解決在分散式資料庫中出現的事務故障。
7.記憶體結構:詳述SGA的組成
•系統全域性區(System Global Area,SGA)是Oracle為系統分配的一組共享的記憶體結構,可以包含一個數據庫例項的資料或控制資訊。
1.資料緩衝區 •資料緩衝區用於儲存從磁碟資料檔案中讀取的資料,供所有使用者共享。由於系統讀取記憶體的速度要比讀取磁碟快得多,所以資料緩衝區的存在可以提高資料庫的整體效率。
§2.日誌緩衝區 •日誌緩衝區用於儲存資料庫的修改操作資訊。
§3.共享池 •共享池用於儲存最近執行的SQL語句、PL/SQL程式的資料字典資訊,它是對SQL語句和PL/SQL程式進行語法分析、編譯和執行的記憶體區域。共享池主要包括如下兩種子快取。
–庫快取(Library Cache)
–資料字典快取(Data Dictionary Cache)
§4.大型池 大型池,用於提供一個大的緩衝區供資料庫的備份與恢復操作使用,它是SGA的可選區域。
§5.Java池 •Java池,用於在資料庫中支援Java的執行。
8.1.幾個埠和幾個Oracle啟動項
OracleServiceORCL。資料庫服務,這個服務會自動地啟動和停止資料庫。
OracleDBConsoleorcl。Oracle資料庫控制檯服務
OracleOraDb11g_home1TNSListener。監聽器服務,服務資料庫需要遠端訪問時才需要。
OracleJobSchedulerORCL。Oracle作業排程進行,ORCL是Oracle例程標識。
監聽埠 1521-•上機時需要注意開啟和修改兩個監聽檔案監聽(listener.ora和tnsnames.ora)
控制檯:1158
9.表空間的建立 見筆記基本表空間,UNDO表空間、臨時表空間、大檔案表空間、建立一個表空間對應兩個資料檔案、段的管理、區的管理
【例1】建立大小為50M的表空間TEST,禁止自動擴充套件資料檔案。
create tablespace test1 logging
datafile ‘c:\test101.dbf' size 5m reuse autoextend off;
【例2】建立大小一個表空包含帶兩個資料檔案,其中一個數據檔案帶有自動擴充套件功能,每次增加1000K一個數據檔案自動擴充套件關閉。
create tablespace ts1 datafile 'd:\t1.dbf' size 5000k autoextend on next 1000k,
'd:\t2.dbf' size 5000k autoextend off;
【例3】建立表空間區管理為自動分配的表空間
CREATE TABLESPACE OrclTBS01 DATAFILE 'C:\OrclTBS01.dbf' SIZE 1M,
'c:\OrclTBS02.dbf' size 1m EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
【例4】在建立表空間OrclTBS02時,指定其區間為128KB,程式碼如下:
CREATE TABLESPACE OrclTBS02
DATAFILE 'C:\o\OrclTBS02.dbf' SIZE 3M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
表空間已建立。
v【例5】建立自動段管理方式的表空間MyTBS01:
CREATE TABLESPACE ts1
DATAFILE 'C:\o\OrclTBS01.dbf' SIZE 3M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
【例6】建立手動段管理方式的表空間MyTBS01:
SQL> CREATE TABLESPACE OrclTBS01
' SIZE 30M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;
【例8】建立臨時表空間tmptbs,程式碼如下:
SQL>
CREATE TEMPORARY TABLESPACE tmptbs
TEMPFILE 'C:\o\tmptbs.dbf'
SIZE 2M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
表空間已建立。
注意:
臨時表空間不能使用online 和offline 選項
10.三種增加表空間容量的辦法
Meathod1:給表空間增加資料檔案
ALTER TABLESPACE app_data ADD DATAFILE
'D:\1.DBF' SIZE 50M REUSE;
Meathod2:在建立表空間時,可以設定資料檔案的自動擴充套件性。在為表空間增加新的資料檔案時,也可以設定新資料檔案的自動擴充套件性
ALTER TABLESPACE ADD DATAFILE
'D:\2.DBF' SIZE 50M
AUTOEXTEND ON NEXT 5M MAXSIZE 100M;
Meathod3:允許已存在的資料檔案自動增長
ALTER DATABASE DATAFILE 'D:\4.DBF'
AUTOEXTEND ON NEXT 5M MAXSIZE 100M;
Meathod4:手工改變已存在資料檔案的大小
Alter database orcl1 datafile 'c:\o\test2.dbf' resize 2m;
11.如何重新命名資料檔案
重命名錶空間(system 和sysaux 除外) Alter tablespace test rename to mytest
【例】將表空間OrclTBS02中的資料檔案改名。可以使用下面的語句: ALTER TABLESPACE mytest rename datafile 'c:\o\10.dbf' to 'c:\o\test0001.dbf‘
移動mytest表空間中資料檔案test001.dbf的步驟如下。
(1)修改mytest表空間的狀態為OFFLINE SQL> ALTER TABLESPACE test OFFLINE;
(2)將磁碟中的myspace02.dbf檔案移動到新的目錄中(物理上)
(3)使用ALTER TABLESPACE語句,將mytest表空間中test001.dbf檔案的原名稱和路徑修改為新名稱和路徑 (邏輯對應上)
(4)修改mytest表空間的狀態為ONLINE,如下: SQL> ALTER TABLESPACE mytest ONLINE; 檢查檔案是否移動成功需要介質恢復 (核實) recover datafile 'd:\102.dbf'
- 移動mytest表空間中資料檔案test001.dbf的步驟如下。
- (1)修改mytest表空間的狀態為OFFLINE
- SQL> ALTER TABLESPACE test OFFLINE;
- (2)將磁碟中的myspace02.dbf檔案移動到新的目錄中(物理上)
- (1)修改mytest表空間的狀態為OFFLINE
(3)使用ALTER TABLESPACE語句,將mytest表空間中test001.dbf檔案的原名稱和路徑修改為新名稱和路徑 (邏輯對應上)
-
- (4)修改mytest表空間的狀態為ONLINE,如下:
- SQL> ALTER TABLESPACE mytest ONLINE;
- 檢查檔案是否移動成功需要介質恢復 (核實)
recover datafile 'd:\102.dbf'
- (4)修改mytest表空間的狀態為ONLINE,如下:
【例1】將表空間OrclTBS01設定為離線狀態:
SQL> ALTER TABLESPACE OrclTBS01 OFFLINE;
【例2】將表空間OrclTBS01設定為聯機狀態:
SQL> ALTER TABLESPACE OrclTBS01 ONLINE;
【例3】將表空間OrclTBS01設定為只讀表空間:
ALTER TABLESPACE ORCTB01 READ ONLY;
【例4】將表空間OrclTBS01設定為可讀寫狀態:
ALTER TABLESPACE OrclTBS01 READ WRITE;
【例5】刪除表空間OrclTBS01:
DROP TABLESPACE OrclTBS01;
【例6】刪除表空間的同時,刪除包含的段和資料檔案
DROP TABLESPACE OrclTBS03 INCLUDING CONTENTS AND DATAFILES;
- 將一個已經存在的表移動到另一個表空間
ALTER TABLE XS MOVE TABLESPACE USERS
- 利用CREATE TABLE命令為XSCJ資料庫建立表XS_KC
- alter table <table_name> logging | nologging;
- alter table <table_name> move tablespace <tablespace_name>
- 建立XS表中計算機專業學生的記錄備份。
CREATE TABLE XS_JSJ AS SELECT * FROM XS_KC WHERE CJ>80
【例11】(1) 在表XS中增加2列:JXJ(獎學金等級),DJSM(等級說明)。
CREATE TABLE SCOTT.XS
(XH VARCHAR2(6) NOT NULL,
XM VARCHAR2(8) NOT NULL,
ZYM VARCHAR2(6),
XB VARCHAR2(2),
CSSJ DATE,
ZXF NUMBER(2),
PRIMARY KEY (XH)) //建立表
//增加列
ALTER TABLE SCOTT.XS ADD ( JXJ NUMBER(1), DJSM VARCHAR2(40) DEFAULT '獎金1000元');
!!!
ALTER TABLE [schema.] table_name
ADD(列名字 列型別),
MODIFY (列名字 列型別)|(列名字 DEFAULT 預設值) (column_constraint,…n)
[ DROP COLUMN 列名]
- 在表XS中修改名為DJSM的列的預設值。
Alter tablespace scott.xs modify (djsm default ‘獎金800元’);
- 在表XS中刪除名為JXJ和DJSM的列
Alter tablespace scott.xs drop column jxj;
Alter tablespace scott.xs drop column djsm;
[例13]例如要刪除表XS
Drop table xs