我们知道,oracle server是由oracle instance和oracle database两大部分组成,下面我们简述oracle
database的结构:
oracle数据库由操作系统文件组成,这些文件为数据库信息提供实际物理存储。
oracle数据库主要物理文件可分为三类:
(1)数据文件
数据文件存储的是oracle数据库的实际数据,包括各个表,索引,视图等。数据文件有三个特性:
.一个数据文件只能属于一个数据库
.数据库中的数据文件可以设置成自动增长,就是说,当数据库的空间用完后,数据库的数据文件就会自动增长,比如原来1G的数据文件自动变成2G的数据文件。
.一个或多个数据文件组成了oracle数据库的一个逻辑单位---tablespace
数据文件分两种:永久数据文件和临时数据文件
我们可以通过以下命令来查看永久数据文件的名称大小:
SYS@orcl 04-SEP-14>col name for a50
SYS@orcl 04-SEP-14>col bytes/1024/1024||'MB' for a25
SYS@orcl 04-SEP-14>select name,bytes/1024/1024||'MB' from v$datafile;
NAME BYTES/1024/1024||'MB'
-------------------------------------------------- -------------------------
/datafile/system01.dbf 680MB
/datafile/sysaux01.dbf 520MB
/datafile/undotbs01.dbf 60MB
/datafile/users01.dbf 5MB
/datafile/example01.dbf 100MB
/u01/app/datafile/test01.dbf 100MB
/datafile/hh01.dbf 10MB
/u01/app/datafile/goods01.dbf 50MB
8 rows selected.
可以通过如下命令查看
临时数据文件名称和大小:
SYS@orcl 04-SEP-14>col name for a50
SYS@orcl 04-SEP-14>col bytes/1024/1024||'MB' for a25
SYS@orcl 04-SEP-14>select name,bytes/1024/1024||'MB' from v$tempfile;
NAME BYTES/1024/1024||'MB'
-------------------------------------------------- -------------------------
/u01/app/oracle/oradata/orcl/temp01.dbf 20MB
(2) 控制文件
每个数据库都有控制文件,控制文件对于一个数据库来说是十分重要的。它是一个二进制文件,
一般都很小,十几兆到几十兆。控制文件中记录的是数据库物理结构的信息,主要有:
.数据库名称
.数据文件,重做日志文件的名称和存储位置
.数据库创建时间戳
.表空间信息
.备份文件的信息等
oracle可以使用多重数据文件,也就是可以存在多个控制文件的镜像,这是保护数据库的一种方法。
如果数据库同时维护三个控制文件,只要其中一个控制文件损坏了数据库都无法mount,为了让
数据库尽快打开供用户连接,较好的解决方法是把有问题的控制文件删除,把没有问题的控制文件
复制一份到原来的位置就可以了。当oracle数据库的实例启动的时候,它就会通过控制文件来识别,
要想执行数据库的一些操作,必须要知道是哪些数据文件和重做日志文件以及这些文件的位置。当
数据库的物理结构发生改变时,比如增加了一个数据文件或日志文件,增加了一个表空间等,控制
文件就会自动更新记录这些变化。
可以通过以下命令查询控制文件的信息:
SYS@orcl 04-SEP-14>select name,block_size,file_size_blks from v$controlfile;
NAME BLOCK_SIZE FILE_SIZE_BLKS
-------------------------------------------------- ---------- --------------
/u01/app/controlfile/control01.ctl 16384 616
/u01/app/oracle/flash_recovery_area/orcl/control02 16384 616
.ctl
/u01/app/oracle/flash_recovery_area/orcl/control03 16384 616
.ctl
也可以通过show parameter 快速查询控制文件的存放路径和数量:
SYS@orcl 04-SEP-14>show parameter control_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/controlfile/control01
.ctl, /u01/app/oracle/flash_re
covery_area/orcl/control02.ctl
, /u01/app/oracle/flash_recove
ry_area/orcl/control03.ctl
如果想要查看控制文件里到底存放了哪些信息可以查看v$controlfile_record_section:
SYS@orcl 04-SEP-14>col type for a30
SYS@orcl 04-SEP-14>select type,record_size from v$controlfile_record_section;
TYPE RECORD_SIZE
------------------------------ -----------
DATABASE 316
CKPT PROGRESS 8180
REDO THREAD 256
REDO LOG 72
DATAFILE 520
FILENAME 524
TABLESPACE 68
TEMPORARY FILENAME 56
RMAN CONFIGURATION 1108
LOG HISTORY 56
OFFLINE RANGE 200
TYPE RECORD_SIZE
------------------------------ -----------
ARCHIVED LOG 584
BACKUP SET 40
BACKUP PIECE 736
BACKUP DATAFILE 200
BACKUP REDOLOG 76
DATAFILE COPY 736
BACKUP CORRUPTION 44
COPY CORRUPTION 40
DELETED OBJECT 20
PROXY COPY 928
BACKUP SPFILE 124
TYPE RECORD_SIZE
------------------------------ -----------
DATABASE INCARNATION 56
FLASHBACK LOG 84
RECOVERY DESTINATION 180
INSTANCE SPACE RESERVATION 28
REMOVABLE RECOVERY FILES 32
RMAN STATUS 116
THREAD INSTANCE NAME MAPPING 80
MTTR 100
DATAFILE HISTORY 568
STANDBY DATABASE MATRIX 400
GUARANTEED RESTORE POINT 212
TYPE RECORD_SIZE
------------------------------ -----------
RESTORE POINT 212
DATABASE BLOCK CORRUPTION 80
ACM OPERATION 104
FOREIGN ARCHIVED LOG 604
37 rows selected.
也可以通过操作系统命令strings查看二进制控制文件的内容:
[oracle@localhost orcl]$ strings control02.ctl|grep /datafile
/datafile/users01.dbf
/datafile/undotbs01.dbf
/datafile/sysaux01.dbf
/datafile/system01.dbf
/datafile/example01.dbf
/u01/app/datafile/test01.dbf
/datafile/hh01.dbf
/u01/app/datafile/goods01.dbf
/datafile/users01.dbf
/datafile/undotbs01.dbf
/datafile/sysaux01.dbf
/datafile/system01.dbf
/datafile/example01.dbf
/u01/app/datafile/test01.dbf
/datafile/hh01.dbf
/u01/app/datafile/goods01.dbf
u01/app/datafile/test01.dbf
u01/app/datafile/test01.dbf
u01/app/datafile/test01.dbf
/u01/app/datafile/hh01.dbf
u01/app/datafile/test01.dbf
u01/app/datafile/test01.dbf
u01/app/datafile/test01.dbf
/u01/app/datafile/hh01.dbf
/datafile/sysaux01.dbf
/datafile/hh01.dbf
(3)
重做日志文件
数据库的重做日志文件记录了数据库的所有修改信息,用于故障恢复,重做日志文件的内容是由一条
条的redo entry组成的。当一个故障导致被修改的数据还未从内存永久写入数据文件,比突然的断电,
那么当数据库重新启动的时候丢失的数据是可以被恢复的,可以从最近的重做日志文件中读取丢失的
信息然后应用到数据文件中,这样就可以把数据库恢复到断电之前的状态,在恢复操作中恢复重做日
志信息的过程叫做前滚。
重做日志的信息只用于恢复由于系统过介质故障所引起的数据没法写入数据文件的数据。
重做日志一般有几组,是循环使用的。
为了防止重做日志自身发生故障,一个日志组的成员一般有几个,将相同的日志组成员存放在不同的
磁盘,即可避免磁盘损坏导致的重做日志文件损坏。
可以通过如下命令查看重做日志组的信息:
SYS@orcl 04-SEP-14>select group#,sequence#,members,bytes/1024/1024||'MB' from v$log;
GROUP# SEQUENCE# MEMBERS BYTES/1024/1024||'MB'
---------- ---------- ---------- -------------------------
1 10 1 50MB
2 8 1 50MB
3 9 1 50MB
也可查看日志组成员信息:
SYS@orcl 04-SEP-14>select group#,type,member from v$logfile;
GROUP# TYPE MEMBER
---------- ------------------------------ ----------------------------------------
3 ONLINE /u01/app/oracle/oradata/orcl/redo03.log
2 ONLINE /u01/app/oracle/oradata/orcl/redo02.log
1 ONLINE /u01/app/oracle/oradata/orcl/redo01.log
database的结构:
oracle数据库由操作系统文件组成,这些文件为数据库信息提供实际物理存储。
oracle数据库主要物理文件可分为三类:
(1)数据文件
数据文件存储的是oracle数据库的实际数据,包括各个表,索引,视图等。数据文件有三个特性:
.一个数据文件只能属于一个数据库
.数据库中的数据文件可以设置成自动增长,就是说,当数据库的空间用完后,数据库的数据文件就会自动增长,比如原来1G的数据文件自动变成2G的数据文件。
.一个或多个数据文件组成了oracle数据库的一个逻辑单位---tablespace
数据文件分两种:永久数据文件和临时数据文件
我们可以通过以下命令来查看永久数据文件的名称大小:
SYS@orcl 04-SEP-14>col name for a50
SYS@orcl 04-SEP-14>col bytes/1024/1024||'MB' for a25
SYS@orcl 04-SEP-14>select name,bytes/1024/1024||'MB' from v$datafile;
NAME BYTES/1024/1024||'MB'
-------------------------------------------------- -------------------------
/datafile/system01.dbf 680MB
/datafile/sysaux01.dbf 520MB
/datafile/undotbs01.dbf 60MB
/datafile/users01.dbf 5MB
/datafile/example01.dbf 100MB
/u01/app/datafile/test01.dbf 100MB
/datafile/hh01.dbf 10MB
/u01/app/datafile/goods01.dbf 50MB
8 rows selected.
SYS@orcl 04-SEP-14>col name for a50
SYS@orcl 04-SEP-14>col bytes/1024/1024||'MB' for a25
SYS@orcl 04-SEP-14>select name,bytes/1024/1024||'MB' from v$tempfile;
NAME BYTES/1024/1024||'MB'
-------------------------------------------------- -------------------------
/u01/app/oracle/oradata/orcl/temp01.dbf 20MB
(2) 控制文件
每个数据库都有控制文件,控制文件对于一个数据库来说是十分重要的。它是一个二进制文件,
一般都很小,十几兆到几十兆。控制文件中记录的是数据库物理结构的信息,主要有:
.数据库名称
.数据文件,重做日志文件的名称和存储位置
.数据库创建时间戳
.表空间信息
.备份文件的信息等
oracle可以使用多重数据文件,也就是可以存在多个控制文件的镜像,这是保护数据库的一种方法。
如果数据库同时维护三个控制文件,只要其中一个控制文件损坏了数据库都无法mount,为了让
数据库尽快打开供用户连接,较好的解决方法是把有问题的控制文件删除,把没有问题的控制文件
复制一份到原来的位置就可以了。当oracle数据库的实例启动的时候,它就会通过控制文件来识别,
要想执行数据库的一些操作,必须要知道是哪些数据文件和重做日志文件以及这些文件的位置。当
数据库的物理结构发生改变时,比如增加了一个数据文件或日志文件,增加了一个表空间等,控制
文件就会自动更新记录这些变化。
可以通过以下命令查询控制文件的信息:
SYS@orcl 04-SEP-14>select name,block_size,file_size_blks from v$controlfile;
NAME BLOCK_SIZE FILE_SIZE_BLKS
-------------------------------------------------- ---------- --------------
/u01/app/controlfile/control01.ctl 16384 616
/u01/app/oracle/flash_recovery_area/orcl/control02 16384 616
.ctl
/u01/app/oracle/flash_recovery_area/orcl/control03 16384 616
.ctl
也可以通过show parameter 快速查询控制文件的存放路径和数量:
SYS@orcl 04-SEP-14>show parameter control_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/controlfile/control01
.ctl, /u01/app/oracle/flash_re
covery_area/orcl/control02.ctl
, /u01/app/oracle/flash_recove
ry_area/orcl/control03.ctl
如果想要查看控制文件里到底存放了哪些信息可以查看v$controlfile_record_section:
SYS@orcl 04-SEP-14>col type for a30
SYS@orcl 04-SEP-14>select type,record_size from v$controlfile_record_section;
TYPE RECORD_SIZE
------------------------------ -----------
DATABASE 316
CKPT PROGRESS 8180
REDO THREAD 256
REDO LOG 72
DATAFILE 520
FILENAME 524
TABLESPACE 68
TEMPORARY FILENAME 56
RMAN CONFIGURATION 1108
LOG HISTORY 56
OFFLINE RANGE 200
TYPE RECORD_SIZE
------------------------------ -----------
ARCHIVED LOG 584
BACKUP SET 40
BACKUP PIECE 736
BACKUP DATAFILE 200
BACKUP REDOLOG 76
DATAFILE COPY 736
BACKUP CORRUPTION 44
COPY CORRUPTION 40
DELETED OBJECT 20
PROXY COPY 928
BACKUP SPFILE 124
TYPE RECORD_SIZE
------------------------------ -----------
DATABASE INCARNATION 56
FLASHBACK LOG 84
RECOVERY DESTINATION 180
INSTANCE SPACE RESERVATION 28
REMOVABLE RECOVERY FILES 32
RMAN STATUS 116
THREAD INSTANCE NAME MAPPING 80
MTTR 100
DATAFILE HISTORY 568
STANDBY DATABASE MATRIX 400
GUARANTEED RESTORE POINT 212
TYPE RECORD_SIZE
------------------------------ -----------
RESTORE POINT 212
DATABASE BLOCK CORRUPTION 80
ACM OPERATION 104
FOREIGN ARCHIVED LOG 604
37 rows selected.
也可以通过操作系统命令strings查看二进制控制文件的内容:
[oracle@localhost orcl]$ strings control02.ctl|grep /datafile
/datafile/users01.dbf
/datafile/undotbs01.dbf
/datafile/sysaux01.dbf
/datafile/system01.dbf
/datafile/example01.dbf
/u01/app/datafile/test01.dbf
/datafile/hh01.dbf
/u01/app/datafile/goods01.dbf
/datafile/users01.dbf
/datafile/undotbs01.dbf
/datafile/sysaux01.dbf
/datafile/system01.dbf
/datafile/example01.dbf
/u01/app/datafile/test01.dbf
/datafile/hh01.dbf
/u01/app/datafile/goods01.dbf
u01/app/datafile/test01.dbf
u01/app/datafile/test01.dbf
u01/app/datafile/test01.dbf
/u01/app/datafile/hh01.dbf
u01/app/datafile/test01.dbf
u01/app/datafile/test01.dbf
u01/app/datafile/test01.dbf
/u01/app/datafile/hh01.dbf
/datafile/sysaux01.dbf
/datafile/hh01.dbf
数据库的重做日志文件记录了数据库的所有修改信息,用于故障恢复,重做日志文件的内容是由一条
条的redo entry组成的。当一个故障导致被修改的数据还未从内存永久写入数据文件,比突然的断电,
那么当数据库重新启动的时候丢失的数据是可以被恢复的,可以从最近的重做日志文件中读取丢失的
信息然后应用到数据文件中,这样就可以把数据库恢复到断电之前的状态,在恢复操作中恢复重做日
志信息的过程叫做前滚。
重做日志的信息只用于恢复由于系统过介质故障所引起的数据没法写入数据文件的数据。
重做日志一般有几组,是循环使用的。
为了防止重做日志自身发生故障,一个日志组的成员一般有几个,将相同的日志组成员存放在不同的
磁盘,即可避免磁盘损坏导致的重做日志文件损坏。
可以通过如下命令查看重做日志组的信息:
SYS@orcl 04-SEP-14>select group#,sequence#,members,bytes/1024/1024||'MB' from v$log;
GROUP# SEQUENCE# MEMBERS BYTES/1024/1024||'MB'
---------- ---------- ---------- -------------------------
1 10 1 50MB
2 8 1 50MB
3 9 1 50MB
也可查看日志组成员信息:
SYS@orcl 04-SEP-14>select group#,type,member from v$logfile;
GROUP# TYPE MEMBER
---------- ------------------------------ ----------------------------------------
3 ONLINE /u01/app/oracle/oradata/orcl/redo03.log
2 ONLINE /u01/app/oracle/oradata/orcl/redo02.log
1 ONLINE /u01/app/oracle/oradata/orcl/redo01.log
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29800581/viewspace-1264083/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29800581/viewspace-1264083/