Oracle數據庫中的文件有很多,如參數文件、數據文件、控制文件、在線重做日誌文件、歸檔日誌文件、密碼文件、警告日誌文件、跟蹤文件等
1) 監測控制文件
控制文件非常重要,一般需要進行備份。連接數據庫時,當完成裝載之後,需要讀取控制文件中記錄的數據文件、日誌文件的位置等信息,只有控制文件完好無損,纔可以打開數據庫。
SELECT VALUE FROM V$PARAMETER WHERE NAME = ‘control_files’
在這個語句中control_files是控制文件的意思
在Oracle數據庫中我一直糾結的一個問題是大小寫的問題,有時候Oracle無論大小寫結果是一致的,有時候一定要求大寫,在這條語句中control_files一定是要小寫的,不然會提示未選定行
在我的數據庫系統中,有兩個控制文件,它們是完全相同的,可以互相替代。
在數據庫啓動時,只要能找到一個可用的控制文件,就能成功地打開數據庫
2) 監測數據文件
數據文件用以存放用戶的數據
監測數據文件的代碼真的是打到想死的,如下
SELECT b.file_name 物理文件名,
b.tablespace_name 表空間,
b.bytes/1024/1024 大小M,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M,
substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率
from dba_free_space a,dba_data_files b
WHERE a.file_id = b.file_id
GROUP BY b.tablespace_name,b.file_name,b.bytes
order BY b.tablespace_name
/
由於之中有中文,所以十分擔心出現中文的空格啊,回車啊之類的
然後遇到了如下錯誤
解釋下這個錯誤,這個錯誤是由於一開始,不允許我的別名,在第三行我的原始的別名是“大小(M)”,刪除了括號之後,果斷解決了
並且我發現,SQLPLUS提示的錯誤還是很精準的,可以看到圖上紅框的那一句,有個“*”,都直接告訴錯哪裏了,哈哈,這個是今天才發現的
這個錯誤是我比較糾結,也是沒想明白的,分號出錯,一開始我以爲是自己用中文打了分號,於是打算從記事本返回SQLPLUS之後再加分號,誰知到誤打誤撞,去掉分號直接打“/”,它居然理我並且不報錯了……
好像明白爲嘛了……如果是在SQLPLUS當中,打完分號之後直接執行了,然如果是在記事本里面,分號被當做語句的一部分,然後再用“/”進行了二次執行,於是報錯
3) 監測在線重做日誌文件
數據庫中的數據被修改並提交後,其信息會被保存在重做日誌文件中。在重做日誌文件正常的情況下,數據庫纔可以被打開
SELECT group#,type,member FROM v$logfile;
4) 監測其他文件
跟蹤文件
SHOW PARAMETER user_dump_dest;
此命令會顯示跟蹤文件的信息包括路徑,此位置也用來存放警告文件,兩種文件通過不同的後綴區分
ARCHIVE LOG LIST
這個語句是列出了數據庫的歸檔以及日誌序列等信息,當然,這個語句需要權限,我使用LY用戶權限不足,需要換回SYS用戶纔可以運行