简述oracle数据库结构

我们知道,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






来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29800581/viewspace-1264083/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29800581/viewspace-1264083/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值