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用户才可以运行