Oracle 数据库基本知识概念
目錄
1.Oracle體系結構
1.1實例的體系結構
1.1.1實例的概念
1.1.2實例的組成
1.2實例的內存結構
1.2.1 數據庫高速緩存
1.2.2 重做日志緩沖區
1.2.3 共享池
1.2.4 Java池
1.2.5 進程全局區(PGA)
1.3實例中的后臺進程
1.3.1 DBWR進程
1.3.2 LGWR進程
1.3.3 CKPT進程
1.3.4 SMON進程
1.3.5 PMON進程
1.3.6 ARCH進程
1.4實例的內存結構管理
1.4.1自動內存管理
1.4.2自動共享內存管理
1.4.3手工共享內存管理
1.5數據庫的邏輯結構與物理結構
1.5.1數據庫的邏輯結構
1.5.2 數據庫的物理結構
2.數據庫的啟動和關閉
2.1 啟動服務器
2.1 關閉服務器
2.3 啟動實例分為哪幾個階段
3.控制文件管理
3.1 參數文件pfile與spfile
3.3.1pfile和spfile區別和聯系
3.3.2參數文件的修改
3.2 重新創建控制文件
3.2.1控制文件全部不可用的情況
3.2.2修改數據庫名稱的情況
3.2.3 修改永久參數的情況
3.3 控制文件的備份與刪除
3.4 控制文件信息的查詢
3.4.1 查詢控制文件的位置和名稱
3.4.2 查詢控制文件中記錄的信息
3.4.3 使用spfile多元化控制文件
4. 日志文件管理
4.1 日志組
4.1.1 日志組與日志文件的狀態
4.2 手工切換日志文件和清空日志文件
4.2.1 切換日志文件組
4.2.2 清空日志文件組
1.Oracle體系結構
1.1實例的體系結構
一個數據庫服務器中至少有一個實例,在單機環境中,實例和數據庫是一一對應的
1.1.1實例的概念
實例是一組內存結構和后臺進程的集合
Oracle實例位于物理內存里的數據結構,它由操作系統的多個后臺進程和一個共享的內存池所組成,共享的內存池可以被所有進程訪問。Oracle 實例 = 進程+進程所使用的內存。
1.1.2實例的組成
SGA(系統全局區)是實例的重要組成部分,一個實例只有一個SAG
用戶對數據的操作實際上是在SGA中進行的
訪問數據庫時,實例為用戶進程啟動一個服務器進程,并分配一段內存區用來保存用戶的私有信息和控制信息,這段內存叫進程全局區(PGA)
SGA是所有用戶共享的,在實例的運行過程中一直存在
1.2實例的內存結構
當實例啟動時,系統為實例分配一段內存空間,用來存儲以下信息:
- 程序代碼
- 緩沖數據:用戶要訪問的數據,重做日志等,這部分內存叫SGA
- 會話有關信息
- 進程間通信有關信息
SGA由多個緩存和緩沖池組成,主要包含以下類型的內存結構:
- 數據庫高速緩存
- 重做日志緩沖區
- Java池
- 大池
1.2.1 數據庫高速緩存
SGA中的一段存儲區域,用來存放用戶最近訪問的數據
數據庫高速緩存由一個個緩沖區組成,緩沖區大小與其中存放的數據塊大小一致
根據緩沖區使用情況可分為:空閑緩沖區、臟緩沖區、忙緩沖區
1.2.2 重做日志緩沖區
重做日志是對用戶事務所產生的記錄,通過重做日志能產生新的數據,保證數據庫安全
1.2.3 共享池
存放與SQL語句的執行相關的信息
包括以下三部分:
- 數據字典高速緩存
- 庫高速緩存
- 服務器結果緩存
共享池幾乎和數據庫中的所有操作都有關
1.2.4 Java池
用來存放運行Java所必需的共享代碼和共享數據。多個Java代碼可以共享Java池中的代碼和數據
1.2.5 進程全局區(PGA)
包含了服務器進程的數據和控制信息,是一段非共享的內存區域
PGA包括兩部分:私有SQL區和會話內存區
1.3實例中的后臺進程
1.3.1 DBWR進程
將數據庫高速緩存中的臟緩沖區內容寫入數據文件中的數據塊
1.3.2 LGWR進程
將重做日志緩沖區中的重做日志寫入重做日志文件
1.3.3 CKPT進程
發出檢查點
檢查點時刻把所有的臟數據寫入日志文件
1.3.4 SMON進程
作用:進行實例恢復
SMON是系統監視進程,他的功能是監視數據庫服務器的運行狀況,執行一些必要的清理工作
實例恢復步驟:
1.3.5 PMON進程
功能:定期檢查用戶進程,并進行回收資源的操作;將實例和調度器注冊到網絡監聽器中
作用:負責事務故障的恢復;可選的實驗進程
1.3.6 ARCH進程
功能:對重做日志文件進行歸檔
作用:歸檔進程(備份)
1.4實例的內存結構管理
有三種方法可以對實例的內存結構進行管理
- 自動內存管理
- 自動共享內存管理
- 手工共享內存管理
1.4.1自動內存管理
一種完全自動的內存管理機制
1.4.2自動共享內存管理
自動共享內存管理用來對SGA進行自動設置
一種半自動化的內存管理機制
1.4.3手工共享內存管理
SGA中每種緩沖區的大小都需要手動設置,SGA的總大小為緩存區大小之和
1.5數據庫的邏輯結構與物理結構
數據庫服務器由實例和數據庫組成,數據庫用來存儲數據,實例用來訪問數據庫中的數據
1.5.1數據庫的邏輯結構
數據庫的邏輯結構是指數據的邏輯組織形式,是Oracle內部用來管理數據的機制
即指數據之間的對應關系,只與數據文件有關
表空間 -> 段 -> 區 -> 塊 (一對多)
1.5.2 數據庫的物理結構
數據庫的物理結構是指數據在操作系統中的存儲方式,是對用戶可見的組織形式
數據庫的物理結構包括數據文件,控制文件,重做日志文件
數據文件:用來存儲數據
控制文件:記錄數據庫的結構和狀態
重做日志文件:記錄用戶對數據庫所做的修改
2.數據庫的啟動和關閉
Oracle服務器的啟動分為三個步驟:啟動實例,裝載數據庫,打開數據庫
2.1 啟動服務器
命令:STARTUP MOUNT;
2.1 關閉服務器
命令:SHUTDOWN IMMEDIATE;
| Shutdown Mode | A | I | T | N |
| Allow new connections(允許新連接) | x | x | x | x |
| Wait until current sessions end(等待當前會話結束) | x | x | x | o |
| Wait until current transactions end(等待當前事務結束) | x | x | o | o |
| Force a checkpoint and close files(強制檢查點并關閉文件) | x | o | o | o |
2.3 啟動實例分為哪幾個階段
在 NOMOUNT 階段打開參數文件
在 MOUNT 階段打開控制文件
在 OPEN 階段打開數據文件、日志文件
3.控制文件管理
控制文件要有一個副本壞掉,所有都結束,負責數據庫的同步
控制文件的大小由參數文件決定
控制文件中包含:
- 數據庫名稱
- 數據文件和重做日志文件的位置和名稱
- 當前日志序列號
- 檢查點信息
- 表空間的名稱
- RMAN的備份與恢復信息
3.1 參數文件pfile與spfile
3.3.1pfile和spfile區別和聯系
- pfile是文本文件的,而spfile是二進制格式的。
- pfile默認init+實例名.ora ,是一個文本文件,可以編輯
- spfile默認spfile+init+實例名.ora,是一個二進制文本,不能修改
- 兩個文件可以通過命令create pfile from spfile或者create spfile from pfile來創建
3.3.2參數文件的修改
3.3.2.1 pfile
pfile進行參數修改:直接進行編輯修改
3.3.2.2 spfile
(1)alter session :只對當前會話生效
(2)alter system set user_dump_dest ='/U01/app/rdbms/masterdb/masterdb/trace' scope=both;
scope的三個參數:
- spfile:重啟生效
- momory:立即生效,關了就沒
- both:當前立即生效,重啟仍然生效
(3)參數:deferred
新用戶用新值,新用戶才生效
(4)alter system修改初始化參數 control-file 的值
3.2 重新創建控制文件
3.2.1控制文件全部不可用的情況
創建控制文件的命令:create controlfile
一般情況下創建控制文件的任務由 sys 用戶完成,普通用戶身份創建控制文件,則需要有sysdba權限
步驟:
(1)創建控制文件時,首先啟動實例,將數據庫服務器啟動到nomount狀態
(2)控制文件被創建后,數據庫服務器就打開控制文件,進行mount狀態,為了使用戶能夠訪問數據庫,必須將數據庫服務器的狀態轉入open狀態
例:
create controlfile reuse database "orcl"
logfile
group 1 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG',
group 2 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG',
group 3 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG'
datafile
'E:\APP\ADMINISTRATOR\ORADATA\ORADATA\ORCL\SYSTEM01.DBF',
'E:\APP\ADMINISTRATOR\ORADATA\ORADATA\ORCL\SYSAUX01.DBF',
'E:\APP\ADMINISTRATOR\ORADATA\ORADATA\ORCL\UNDOTBS01.DBF',
'E:\APP\ADMINISTRATOR\ORADATA\ORADATA\ORCL\USERS01.DBF'
maxlogfiles 50
maxlogmembers 3
maxinstances 6
maxdatafiles 200
noresetlogs
noarchivelog;
3.2.2修改數據庫名稱的情況
數據庫的名稱由初始化參數 DB_NAME 指定
實例的名稱由初始化參數 INSTANCE 指定
例:修改數據庫名為ORCL
(1)修改DB_NAME的值
DB_NAME = ORCL
(2)創建控制文件
CREATE CONTROLFILE REUSE SET DATABASE orcl RESETLOGS
......
(3)啟動服務器到 open 狀態
STARTUP MOUNT
(4)查看初始化參數的值,確定新的控制文件是否起作用
SHOW PARAMETER DB_NAME
3.2.3 修改永久參數的情況
(1)永久參數的意義:
MAXINSTANCES:指定可以訪問數據庫的最大實例的個數
MAXLOGHISTORY:記錄控制文件中可以記錄的最大歷史日志條數
MAXLOGFILES:指定數據庫中包含的最大重做日志組數
MAXLOGMEMBERS:指定每個日志組中可以包含的最大重做日志文件數目
MAXDATAFILES:指定數據庫中可以創建的最大數據文件數目
(2)永久參數保存在控制文件中,修改永久參數需要創新創建控制文件
創新創建數據庫ORCL的控制文件
CREATE CONTROLFILE REUSE DATABASE ORCL NORESETLOGS
3.3 控制文件的備份與刪除
備份控制文件時,不需要關閉數據庫服務器,可以將數據庫文件備份為一個二進制文件,也可以在跟蹤文件中生成一條SQL語句
例如:將一個控制文件備份為一個二進制文件
ALTER DATABASE BACKUP CONTROLFILE TO '/home/oracle/control.bak'
以下語句用于將控制文件備份到跟蹤文件TRACE之中:
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
3.4 控制文件信息的查詢
3.4.1 查詢控制文件的位置和名稱
獲得數據庫中的所有控制文件:
SELECT statue,name FROM V$CONTROLFILE;
通過初始化參數 CONTROL_FILES 查詢控制文件信息:
SHOW PARAMETER CONROL_FILE;
3.4.2 查詢控制文件中記錄的信息
SELECT type,record_size,records_total,records_used FROM v$controlfile_record_section;/
3.4.3 使用spfile多元化控制文件
1)查看控制文件信息和spfile 信息,創建Pfile文件
select name from v$controlfile;
show parameter spfile;
create pfile from spfile;
2)修改control_files 參數后保存
alter system set control_files=05:58:01 2 '/u01/app/oracle/oradata/lx02/control01.ctl','/disk1/lx02/oradata/control02.ctl' scope=spfile;
System altered.
3)關閉instance ,拷貝controlfile
shutdown immediate
$ cp /u01/app/oracle/oradata/lx02/control01.ctl /disk1/lx02/oradata/control02.ctl
4)startup 啟動實例
select name from v$controlfile;
4. 日志文件管理
恢復操作最關鍵的結構是重做日志,它由兩個或多個預先分配的文件組成,這些文件存儲發生時對數據庫所做的所有更改。Oracle數據庫的每個實例都有一個相關的重做日志,以在實例失敗時保護數據庫。
4.1 日志組
4.1.1 日志組與日志文件的狀態
4.1.1.1 日志組有四種狀態:unused、active、inactive、current
unused:該日志組從來沒有被使用過
current:當前正在使用的日志組,即后臺進程LGWR正在寫的日志組。
active:活動狀態,當發生日志切換的時候,狀態為current的日志組就會變成active狀態,表明記錄在這個日志組的事務提交所造成的數據塊改變,還沒有完全從database buffer cache 寫入到data file中。處在這個狀態的日志組是不允許被覆蓋的。崩潰恢復需要該狀態,可用于塊恢復,可能歸檔也可能未歸檔
inactive:非活動狀態,處于這個狀態的日志組,表明記錄在這個日志組的事務提交所造成的數據塊的改變,已經完全從database buffer cache寫入到data file中了,實例恢復不再需要這個狀態的日志組了, 所以這個日志組是可以被覆蓋的。
4.1.1.2日志文件狀態
blank:日志文件可以使用,就標記blank
invalid:日文文件不可使用,就標記invalid
stale:日志文件產生錯誤,就標記stale
deleted:
4.1.1.3 如何刪除一個current狀態的日志組
步驟:
4.2 手工切換日志文件和清空日志文件
4.2.1 切換日志文件組
日志文件組是循環使用的,當一組日志文件被寫滿時,Oracle系統自動的切換到下一組日志文件。在需要的時候,數據庫管理員也可以手動的切換到其他的日志文件組。
切換日志文件組需要使用如下的語句:
alter system switch logfile;
4.2.2 清空日志文件組
如果日志文件組中的日志文件受損,將導致數據庫無法將受損的日志文件進行歸檔,這會最終導致數據庫停止運行。此時,在不關閉數據庫的情況下,可以選擇清空日志文件組中的內容。
清空日志文件組的語法如下:
alter database clear logfile group group_number;
注意:
被清空的日志文件組不能處于current狀態,不能清空數據庫當前正在使用的日志文件組。
當數據庫中只有兩個日志文件組時,不能清空日志文件組。
總結
以上是生活随笔為你收集整理的Oracle 数据库基本知识概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目上传到SVN
- 下一篇: 机器学习中数据预处理的几种方法