当日志切换后,会给前一个日志组编一个号,用于归档日志的编号,这个编号称为日志序列号。此编号由1开始,每切换一次,序列号自动加1,最大值受参数MAXLOGHISTORY限制,该参数的最大值为65534。
当oracle把最后一个日志组写满了以后,自动转向第一个日志组,这时,再向第一个日志组写日志的时候, 如果数据库运行在非归档模式下,这个日志组中的原有日志信息就会被覆盖。
如果我们想查看日志文件的具体信息,可以通过以下的SQL语句来查看:
SQL>select * from v$log
这个动态视图的查询结果中包含了几个比较重要的信息,例如:
·GROUP#:日志文件组号
·SEQUENCE#:日志序列号
·STATUS:该组状态(CURRENT表示当前正在使用的,NACTIVE表示非活动组,ACTIVE表示归档未完成)
·FIRST_CHANGE#:系统改变号SCN(也称为检查点号)
上面我们提到日志文件有两种方式,第一种是非归档日志(NOARCHIVELOG),第二种是归档日志(ARCHIVELOG)。其中非归档日志在切换时,原日志文件的内容会被新的日志内容所覆盖,而对于对档模式日志,Oracle会首先对原日志文件进行归档存储,且在归档未完成之前不允许覆盖原日志。
如果我们想了解自己的数据库到底采用什么类型的日志模式,可以使用以下语句查询
SQL>select log_mode from v$database
上面我们提到一个叫做SCN(系统检查点号)的东西,SCN是系统恢复时一个非常重要的标志,在数据文件,日志文件,控制文件,数据库头都包含了这个标记。SCN由Oracle的后台进程CKPT在DBWR将数据写入磁盘后更新。查询SCN的方式有3种:
SQL>select first_change# from v$log;
SQL>select checkpoint_change# from v$datafile;
SQL>select checkpoint_change# from v$database;
三、控制文件
控制文件是一个二进制文件,用来描述数据库的物理结构,一个数据库只需要一个控制文件,控制文件的内容包括:
·数据库名及数据库惟一标识
·数据文件及日志文件的标识
·系统恢复的必要信息,即SCN
我们可以在Oracle的init.ora文件中看到这样一个参数:controller_files = ('file1','file2'...'filen'),这说明数据库有多个控制文件,这些控制文件彼此之间都是镜像的关系。只要其中一个文件是完好的数据库就可以启动。
同样的,我们也可以通过如下的SQL语句来查看控制文件的信息:
SQL>select * from v$controller_file
总结:
操作项目 |
SQL语句 |
创建数据文件 |
alter tablespace *** add datafile *** size ***m autoextend on maxsize unlimited |
调整数据文件 | alter database *** datafile *** resize ***m |
查看数据文件 | select * from dba_data_files/select * from v$datafile |
查看空闲空间 | select * from dba_free_space |
查看日志文件 | select * from v$log |
查看检查点号 | select first_change# / checkpoint_change# from v$log/v$datafile/v$database |
查看控制文件 | select * from v$controller |