导航

2.1.1 数据库文件

Posted on 2008-08-28 15:06  毅无涯  阅读(318)  评论(0编辑  收藏  举报

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 会将控制文件的建立信息写入服务器进程跟踪文件。当控制文件全部损坏时,使用服务器跟踪文件可以重新建立控制文件。