大家好,我是?WeiyiGeek,一名深耕安全運(yùn)維開發(fā)(SecOpsDev)領(lǐng)域的技術(shù)從業(yè)者,致力于探索DevOps與安全的融合(DevSecOps),自動(dòng)化運(yùn)維工具開發(fā)與實(shí)踐,企業(yè)網(wǎng)絡(luò)安全防護(hù),歡迎各位道友一起學(xué)習(xí)交流、一起進(jìn)步 ,若此文對你有幫助,一定記得倒點(diǎn)個(gè)關(guān)注?與小紅星??,收藏學(xué)習(xí)不迷路??。
Oracle 實(shí)例管理
SQL Plus 中,常用指令語句:
DESCRIBE departments?# 查詢表結(jié)構(gòu),注:可簡寫為DESC
List -- 列舉歷史命令,注:可簡寫為L
c/old_string/new_string -- 將歷史命令中的關(guān)鍵字進(jìn)行替換
SAVE filename.sql ? 保存文件
GET ? ?獲取文件文件
START ?運(yùn)行
@ ? ? ?運(yùn)行腳本(常用)
EDIT ? 編輯文件
SPOOL ?屏幕記錄輸出至文件(常用)
EXIT
啟動(dòng)、關(guān)閉一個(gè)數(shù)據(jù)庫實(shí)例
- STARTUP : 啟動(dòng)實(shí)例并打開數(shù)據(jù)庫。
-- 語法格式
STARTUP db_options | cdb_options | upgrade_options
where db_options has the following syntax:
? ? [FORCE] [RESTRICT] [PFILE=filename] [QUIET] [ MOUNT [dbname] |
? ? [ OPEN [open_db_options] [dbname] ] | NOMOUNT ]
where open_db_options has the following syntax:
? ? ? ?READ {ONLY | WRITE [RECOVER]} | RECOVER
? ? ? ?
-- STARTUP 命令有幾種不同的選項(xiàng),用于控制啟動(dòng)過程的不同階段:
SQL> STARTUP NOMOUNT;?-- 啟動(dòng)實(shí)例,但不加載數(shù)據(jù)庫。通常用于執(zhí)行一些需要在數(shù)據(jù)庫未掛載時(shí)進(jìn)行的操作,如創(chuàng)建新的控制文件。
? ?STARTUP MOUNT; ??-- 啟動(dòng)實(shí)例并加載數(shù)據(jù)庫,但不打開數(shù)據(jù)庫。通常用于需要在數(shù)據(jù)庫掛載但未打開時(shí)進(jìn)行的操作,如備份控制文件、恢復(fù)數(shù)據(jù)庫等。
? ?STARTUP OPEN; ? ?-- 啟動(dòng)實(shí)例,加載數(shù)據(jù)庫,并打開數(shù)據(jù)庫。最常用的啟動(dòng)選項(xiàng),使數(shù)據(jù)庫處于完全可用狀態(tài),可以接受用戶連接和執(zhí)行操作(常用)。
? ?STARTUP FORCE; ??-- 強(qiáng)制啟動(dòng)數(shù)據(jù)庫。如果數(shù)據(jù)庫處于異常狀態(tài)(如啟動(dòng)失敗或關(guān)閉失敗),相當(dāng)于先執(zhí)行 SHUTDOWN ABORT,然后執(zhí)行 STARTUP。
? ?STARTUP RESTRICT;-- 啟動(dòng)數(shù)據(jù)庫,但限制用戶連接,只允許 RESTRICTED SESSION ?權(quán)限的用戶。通常用于維護(hù)操作,如數(shù)據(jù)庫升級(jí)或修復(fù)。
- SHUTDOWN : 關(guān)閉實(shí)例并卸載數(shù)據(jù)庫。
-- 語法格式
SHUTDOWN [ABORT|IMMEDIATE|NORMAL|TRANSACTIONAL [LOCAL]]
-- SHUTDOWN 命令也有幾種不同的選項(xiàng),用于控制關(guān)閉過程的不同階段:
SQL> SHUTDOWN IMMEDIATE;?-- 立即關(guān)閉 Oracle 數(shù)據(jù)庫實(shí)例。它會(huì)終止所有活動(dòng)的事務(wù),回滾未完成的事務(wù),并關(guān)閉數(shù)據(jù)庫(常用)。
? ? ?SHUTDOWN NORMAL; ? ?-- 正常關(guān)閉數(shù)據(jù)庫, 等待所有活動(dòng)的事務(wù)完成,并且所有用戶斷開連接后才關(guān)閉數(shù)據(jù)庫, 最安全,但是耗時(shí)長。
? ? ?SHUTDOWN TRANSACTIONAL;?-- 事務(wù)性關(guān)閉數(shù)據(jù)庫。它會(huì)等待所有活動(dòng)的事務(wù)完成,但不需要所有用戶斷開連接,比 SHUTDOWN NORMAL 快,但仍然確保數(shù)據(jù)一致性。
? ? ?SHUTDOWN ABORT; ? ?-- 強(qiáng)制關(guān)閉數(shù)據(jù)庫。它會(huì)立即關(guān)閉數(shù)據(jù)庫,不等待任何事務(wù)完成。這可能會(huì)導(dǎo)致數(shù)據(jù)不一致,因此通常只在其他關(guān)閉命令失敗時(shí)使用(慎用)。
-- 3.數(shù)據(jù)庫實(shí)例狀態(tài)變更
ALTERDATABASEMOUNT--更改數(shù)據(jù)庫狀態(tài)為 MOUNT
ALTERDATABASEOPEN--更改數(shù)據(jù)庫狀態(tài)為 OPEN
weiyigeek.top-數(shù)據(jù)庫實(shí)例啟動(dòng)與關(guān)閉圖
關(guān)閉數(shù)據(jù)庫實(shí)例的四種方式(A/I/T/N)對照,建議使用 IMMEDIATE(推薦)、TRANSACTIONAL、NORMAL 等方式關(guān)閉,這樣重啟數(shù)據(jù)庫后不用做實(shí)例恢復(fù)。
weiyigeek.top-關(guān)閉數(shù)據(jù)庫實(shí)例的四種方式對照圖
查看數(shù)據(jù)庫實(shí)例日志
值得注意的是,不推薦使用?shutdown abort
?以及?startup force
?來關(guān)閉數(shù)據(jù)庫,有可能導(dǎo)致數(shù)據(jù)庫數(shù)據(jù)丟失,例如,如果回滾段來回滾未提交的改變,若回滾段異常則會(huì)損壞數(shù)據(jù)庫。
通過檢查診斷文件(通常包含運(yùn)行過程中遇到的重要事件信息)來管理實(shí)例,大致有一下幾種診斷文件:
警告日志文件(alertSID.log):記錄數(shù)據(jù)庫運(yùn)行中一些操作命令與主要事件結(jié)果,每條都對應(yīng)有時(shí)間戳信息,其所路徑由初始化參數(shù)?BACKGROUND_DUMP_DEST
指定。
后臺(tái)跟蹤文件:記錄被后臺(tái)進(jìn)程檢測到的錯(cuò)誤信息,僅在后臺(tái)進(jìn)程遇到錯(cuò)誤時(shí)創(chuàng)建,其路徑也由初始化參數(shù)?BACKGROUND_DUMP_DEST
指定。用戶跟蹤文件:記錄用戶進(jìn)程連接Oracle服務(wù)器產(chǎn)生的,包含跟蹤到的SQL執(zhí)行語句與用戶通訊錯(cuò)誤信息,其路徑定義在?USER_DUMP_DEST
中,大小定義在 MAX_DUMP_FILE_SIZE 中(注:10g及以上將不會(huì)限制)。
# 方式1
SQL> SELECT name,value FROM v$diag_info; -- 11g 及以后的方式(推薦方式)
ADR Base:C:APPORACLE
ADR Home:C:APPORACLEdiagrdbmsitgeekdbitgeekdb
Diag Trace:C:APPORACLEdiagrdbmsitgeekdbitgeekdbtrace
Diag Alert:C:APPORACLEdiagrdbmsitgeekdbitgeekdbalert
Diag Incident:C:APPORACLEdiagrdbmsitgeekdbitgeekdbincident
Diag Cdump:C:apporaclediagrdbmsitgeekdbitgeekdbcdump
Health Monitor:C:APPORACLEdiagrdbmsitgeekdbitgeekdbhm
Default Trace File:C:APPORACLEdiagrdbmsitgeekdbitgeekdbtraceitgeekdb_ora_7136.trc
# 方式2 ??
SQL> show parameter dump; ?-- 10g 及以前的方式
background_core_dump: partial
background_dump_dest: C:APPORACLEPRODUCT12.2.0DBHOME_1RDBMSTRACE
core_dump_dest: C:apporaclediagrdbmsitgeekdbitgeekdbcdump
max_dump_file_size: ?unlimited
shadow_core_dump: none
user_dump_dest : C:APPORACLEPRODUCT1
下述日志目錄是 Oracle 故障排查和性能分析的核心位置,DBA 經(jīng)常需要檢查其中的內(nèi)容來定位問題。
目錄/文件 | 主要用途 |
---|---|
ADR Base | 所有 Oracle 診斷數(shù)據(jù)的根目錄。 |
ADR Home | 特定數(shù)據(jù)庫實(shí)例的診斷主目錄。 |
Diag Trace | 會(huì)話和后臺(tái)進(jìn)程的跟蹤文件。 |
Diag Alert | 數(shù)據(jù)庫警報(bào)日志(關(guān)鍵事件記錄)。 |
Diag Incident | 嚴(yán)重錯(cuò)誤(如 ORA-600)的詳細(xì)數(shù)據(jù)。 |
Diag Cdump | 進(jìn)程崩潰時(shí)的核心轉(zhuǎn)儲(chǔ)文件。 |
Health Monitor | 數(shù)據(jù)庫健康檢查報(bào)告。 |
Default Trace File | 特定會(huì)話的詳細(xì)跟蹤信息。 |
在日志中,需重點(diǎn)關(guān)注帶有?Error
?關(guān)鍵字以及?ORA-xxx
?的行。
實(shí)踐案例
某業(yè)務(wù)系統(tǒng)停機(jī)維修,需要提前關(guān)閉數(shù)據(jù)庫,待維修完成后,再將數(shù)據(jù)庫啟動(dòng),停止和啟動(dòng)過程中需要關(guān)注日志,驗(yàn)證是否存在錯(cuò)誤,及是否正常啟動(dòng)。
# 1.停監(jiān)聽
lsnrctl stop
# 2.登錄數(shù)據(jù)庫
SQL> connect / as sysdba
# 3.關(guān)閉數(shù)據(jù)庫
SQL> shutdown immediate
# 數(shù)據(jù)庫停機(jī)維修完成后,恢復(fù)數(shù)據(jù)庫運(yùn)行:
# 1.登錄數(shù)據(jù)庫
SQL> connect / as sysdba
# 2.啟動(dòng)數(shù)據(jù)庫
SQL> startup
# 3.啟監(jiān)聽
lsnrctl start
weiyigeek.top-數(shù)據(jù)庫系統(tǒng)停機(jī)維護(hù)圖
加入:作者【全棧工程師修煉指南】知識(shí)星球
『?全棧工程師修煉指南』星球,主要涉及全棧工程師(Full Stack Development)實(shí)踐文章,包括但不限于企業(yè)SecDevOps和網(wǎng)絡(luò)安全等保合規(guī)、安全滲透測試、編程開發(fā)、云原生(Cloud Native)、物聯(lián)網(wǎng)工業(yè)控制(IOT)、人工智能Ai,從業(yè)書籍筆記,人生職場認(rèn)識(shí)等方面資料或文章。
Q: 加入作者【全棧工程師修煉指南】星球后有啥好處?
? 將獲得作者最新工作學(xué)習(xí)實(shí)踐文章以及網(wǎng)盤資源。
? 將獲得作者珍藏多年的全棧學(xué)習(xí)筆記(需連續(xù)兩年及以上老星球友,也可單次購買)。
? 將獲得作者專門答疑學(xué)習(xí)交流群,解決在工作學(xué)習(xí)中的問題。
? 將獲得作者遠(yuǎn)程支持(在作者能力范圍內(nèi)且合規(guī))。
目前新人僅需?69?元即可加入作者星球,數(shù)量有限,期待你的加入!