1,数据文件
数据文件 = 系统数据(数据字典)+ 用户数据(表、索引、簇)+ UNDO 数据 + ...
建立数据库或表空间时,数据文件是通过DATAFILE 选项指定的。
数据库逻辑上是由一个和多个表空间组成,而表空间物理上由一个和多个数据文件组成。
(1)表空间。
表空间不同,需要采用的备份与恢复策略也有所不同。SYSTEM 表空间必须在MOUNT 状态恢复,数据表空间则可以在OPEN状态恢复,临时表空间不需要恢复。
通过查询数据字典视图dba_tablespaces可以得到表空间的详细信息。
SQL> conn / as sysdba
已连接。
SQL> select tablespace_name, status, contents from dba_tablespaces;
TABLESPACE_NAME STATUS CONTENTS
------------------------------ --------- ---------
SYSTEM ONLINE PERMANENT
UNDOTBS1 ONLINE UNDO
SYSAUX ONLINE PERMANENT
TEMP ONLINE TEMPORARY
USERS ONLINE PERMANENT
EXAMPLE ONLINE PERMANENT
已选择6行。
(2)数据文件。
表空间由一个或多个数据文件组成,表空间尺寸实际就是其所包含的所有数据文件尺寸之和。
通过查询数据字典dba_data_files,可以显示数据文件的信息。
SQL> select tablespace_name,file_name, bytes from dba_data_files;
TABLESPACE_NAME FILE_NAME BYTES
------------------------------ ------------------------------------------------------------ ----------
USERS D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF 615776256
SYSAUX D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF 272629760
UNDOTBS1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF 89128960
SYSTEM D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF 524288000
EXAMPLE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF 104857600
USERS D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS02.DBF 1048576
已选择6行。
通过查询动态性能视图v$datafile_header 和 v$datafile 可以获得数据文件的动态信息。v$datafile_header的动态信息来源于数据文件的头部,v$datafile 的动态信息来源于控制文件。
SQL> select a.NAME, a.CHECKPOINT_CHANGE# "Begin SCN", b.CHECKPOINT_CHANGE# "End SCN"
2 from v$datafile_header a, v$datafile b
3 where a.FILE# = b.FILE#;
NAME Begin SCN End SCN
------------------------------------------------------------ ---------- ----------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF 1252255 1252255
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF 1252255 1252255
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF 1252255 1252255
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF 1252255 1252255
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF 1252255 1252255
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS02.DBF 1252255 1252255
已选择6行。
2,重做日志(Online Redo Log)
每个重做线程至少要包含两个重做日志组,并且这些重做日志组是循环使用的。
(1)日志组。
在单例程环境中,只有一个重做线程;在RAC(Real Application Cluster)环境中,包括多个重做线程。
通过查询动态性能视图V$LOG 可以显示重做线程的所有日志组信息。
SQL> conn / as sysdba
已连接。
SQL> set linesize 1000
SQL> col group# format 99999
SQL> col status format a8
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
------ ---------- ---------- ---------- ---------- --- -------- ------------- --------------
1 1 35 52428800 1 NO CURRENT 1299054 28-8月 -08
2 1 33 52428800 1 NO INACTIVE 1226432 25-8月 -08
3 1 34 52428800 1 NO INACTIVE 1252254 26-8月 -08
(2)日志成员。
日志组是由一个或多个日志成员组成的。
通过查询动态性能视图V$LOGFILE,可以显示所有日志成员的信息。
SQL> select group#, status, member from v$logfile;
GROUP# STATUS MEMBER
------ -------- --------------------------------------------------
3 STALE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
2 STALE D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
3,控制文件(Control File)
控制文件用于记录和维护数据库的物理结构,并且每个Oracle 数据库至少要包含一个控制文件。当使用Oracle Server时,一个例程只能访问一个数据库,Oracle 正是通过控制文件在例程和数据库之间建立关联的。当装载数据库时,Oracle 会根据初始化参数control_files 来定位控制文件;当打开数据库时,Oracle 会依据控制文件所记载的信息打开所有数据文件和重做日志。
通过查询动态性能视图V$ControlFile 可以显示当前数据库的所有控制文件。
SQL> select name from v$controlfile;
NAME
---------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
4,归档日志(Archived Redo Log)
归档日志是非活动重做日志的备份。
通过查询动态性能视图V$Archived_Log 可以显示归档日志信息。
SQL> desc v$archived_log;
名称 是否为空? 类型
----------------------------------- -------- --------------------
RECID NUMBER
STAMP NUMBER
NAME VARCHAR2(513)
DEST_ID NUMBER
THREAD# NUMBER
SEQUENCE# NUMBER
RESETLOGS_CHANGE# NUMBER
RESETLOGS_TIME DATE
RESETLOGS_ID NUMBER
FIRST_CHANGE# NUMBER
FIRST_TIME DATE
NEXT_CHANGE# NUMBER
NEXT_TIME DATE
BLOCKS NUMBER
BLOCK_SIZE NUMBER
CREATOR VARCHAR2(7)
REGISTRAR VARCHAR2(7)
STANDBY_DEST VARCHAR2(3)
ARCHIVED VARCHAR2(3)
APPLIED VARCHAR2(3)
DELETED VARCHAR2(3)
STATUS VARCHAR2(1)
COMPLETION_TIME DATE
DICTIONARY_BEGIN VARCHAR2(3)
DICTIONARY_END VARCHAR2(3)
END_OF_REDO VARCHAR2(3)
BACKUP_COUNT NUMBER
ARCHIVAL_THREAD# NUMBER
ACTIVATION# NUMBER
IS_RECOVERY_DEST_FILE VARCHAR2(3)
COMPRESSED VARCHAR2(3)
FAL VARCHAR2(3)
END_OF_REDO_TYPE VARCHAR2(10)
5,参数文件(Parameter File)
参数文件用于定义启动例程的初始化参数。参数文件包括文本参数文件(PFILE)和服务器参数文件(SPFILE)两种类型。
除了DB_NAME、DB_BLOCK_SIZE 和 DISPATCHERS 等少数几个初始化参数之外,其它多数初始化参数可以直接通过修改SPFILE来进行改变。
例:ALTER SYSTEM SET RESOURCE_LIMIT=TRUE SCOPE=SPFILE;
6,口令文件(Password File)
口令文件用于验证特权用户,特权用户是指具有SYSDBA 和SYSOPER 权限的特殊数据库用户。
通过查询动态性能视图V$PWFILE_USERS,可以显示口令文件成员。
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
7,预警文件(Alert File)
预警文件由连续的消息和错误组成,并且这些消息和错误是按照时间顺序来存放的。预警文件存放着Oracle 内部错误、数据块错误、非默认的初始化参数、特权用户操作(例如启动例程、关闭例程、备份和恢复等)、数据库物理结构变化等信息。预警文件的位置由初始化参数BACKGROUND_DUMP_DEST 确定,其名称格式为 alert_SID.log,并且其信息由服务器进行和后台进行(DBWR、LGWR)写入。
8,后台进程跟踪文件(Background Trace File)
后台进程跟踪文件用于记载后台进程的警告或错误消息,每个后台进程都有相应的跟踪文件,文件名称格式为 SID_processname_SPID.trc,其中processname 是后台进程名,SPID 是后台进程所对应的OS进程号。
9,服务器进程跟踪文件(Server Trace File)
服务器进程跟踪文件用于记载服务器进程的相关信息,它主要用于跟踪用户进程所执行的SQL语句。当使用ALTER DATABASE BACKUP CONTROLFILE TO TRACE 命令时,Oracle 会将控制文件的建立信息写入服务器进程跟踪文件。当控制文件全部损坏时,使用服务器跟踪文件可以重新建立控制文件。