oracle 11g 数据库结构

1. 表空间与数据文件

    Oracle数据库的表空间tablespace是一个逻辑上的存储概念,如我们创建一个表,必须要指明将表存在哪个表空间中。实际上的数据物理存储在硬盘上的文件中,我们称它叫数据文件data file。一个tablespace可以由一个或多个data file组成,当然一个data file只能隶属于一个tablespace(不能劈腿哦)。
   
    更详细点。
    tablespace由多个段sengment组成,oracle把占空间的对象(如表,索引,簇cluster等)统一称为segment。Segment是由多个区间extent构成,extent又有多个块block组成,block的编号地址相邻。所以block是oracle基本的存储单元。
    datafile也是由称为块单元组成,但是他们是系统块os block,windows总的os block大小一般是2048KB。
    oracle block一般是os block的倍数,如8192KB。

SQL> show parameter db_block_size
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_block_size                        integer     8192

  • SYSTEM表空间用于存放系统内部表和数据字典的数据。
  • SYSAUX表空间是11g以后新增的,主要用于存储系统内部常用样例用户的对象,如CRM用户的表和索引等。
  • UNDOTBS1撤销表空间,用于存储修改前的数据。
  • USERS表空间,用户可以在这个空间上创建对象。
  • TEMP临时表空间,系统用于临时存放数据(如排序),处理完后即可释放。
SQL> select file_name, tablespace_name from dba_data_files;
 
FILE_NAME                                                                        TABLESPACE_NAME
-------------------------------------------------------------------------------- ------------------------------
C:\ORACLE\ORADATA\ORCL\USERS01.DBF                                               USERS
C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF                                             UNDOTBS1
C:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF                                              SYSAUX
C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF                                              SYSTEM
C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF                                             EXAMPLE
 
SQL> select file_name, tablespace_name from dba_temp_files;
 
FILE_NAME                                                                        TABLESPACE_NAME
-------------------------------------------------------------------------------- ------------------------------
C:\ORACLE\ORADATA\ORCL\TEMP01.DBF                                                TEMP

2. 控制文件control file   

    我们平时所指的oracle数据库,主要由两部分组成,数据库database和实例instance。
    database就是物理硬盘上我们看得到的各种文件,如datafile,control file,redo log file,它们保存着所有数据。
    instance则是由内存(SGA)和进程组成。当oracle启动时,它将数据加载到内存中,然后通过各种进程(PMON,SMON,DBWR,LGWR,CKPT)同database保持一致(读写数据)。所以我们操作oralce实际上是在和instance打交道,然后由它来更新数据库。

    其中比较重要的是控制文件control file,它是存储着oracle instance信息,datafile,log file信息的内部二进制文件。
    出于安全考虑,control file不止1个,它们保存着相同的内容,如果一个control file坏了,咱们还有备份。建议不要将所有的control file放在一个地方。
   数据库启动次序:读取初始化参数文件SPFILE -> 为系统全局区(SGA)分配内存 -> 读取control file,然后找到数据文件和日志文件并打开使用。

SQL> select name, status from v$controlfile;
 
NAME                                                                             STATUS
-------------------------------------------------------------------------------- -------
C:\ORACLE\ORADATA\ORCL\CONTROL01.CTL                                            
C:\ORACLE\ORADATA\ORCL\CONTROL02.CTL                                            
C:\ORACLE\ORADATA\ORCL\CONTROL03.CTL  

3. 日志文件

日志文件分为重做日志文件(redo log file)和归档日志文件(archive log file)。

SQL> select group#, status, member from v$logfile;
 
    GROUP# STATUS  MEMBER
---------- ------- --------------------------------------------------------------------------------
         3         C:\ORACLE\ORADATA\ORCL\REDO03.LOG
         2         C:\ORACLE\ORADATA\ORCL\REDO02.LOG
         1         C:\ORACLE\ORADATA\ORCL\REDO01.LOG

redo log fiel有多个组group构成。一个group中能包括不止一个log file,日志信息是写到group的每个logfile中,所以一个group中的log file存储着一样的信息。当一个group写满之后就转到下一个group中,称之为日志切换。

当所有group都写满了后,就重头开始从第一个group开始,原来的内容将被覆盖丢失。如果不想被丢失,可以采用归档模式,即将数据保存到archive log file中。归档模式会给系统带来一定的性能问题。

查看database采用哪种模式:
SQL> select dbid,name,log_mode from v$database;
 
      DBID NAME      LOG_MODE
---------- --------- ------------
1232416663 ORCL      NOARCHIVELOG

归档日志路径由SPFILE的log_archive_dest参数确定。

SQL> show parameter log_archive_dest;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest                     string     
log_archive_dest_1                   string     
log_archive_dest_10                  string     
log_archive_dest_2                   string     
log_archive_dest_3                   string     
log_archive_dest_4                   string     
log_archive_dest_5                   string     
log_archive_dest_6                   string     
log_archive_dest_7                   string     
log_archive_dest_8                   string     
log_archive_dest_9                   string     
log_archive_dest_state_1             string      enable
log_archive_dest_state_10            string      enable
log_archive_dest_state_2             string      enable
log_archive_dest_state_3             string      enable
log_archive_dest_state_4             string      enable
log_archive_dest_state_5             string      enable
log_archive_dest_state_6             string      enable
log_archive_dest_state_7             string      enable
log_archive_dest_state_8             string      enable
log_archive_dest_state_9             string      enable

警告日志文件alert_sid.log保存着例行的信息和错误信息,它的路经是:

SQL> select value from v$parameter where name='background_dump_dest';
 
VALUE
--------------------------------------------------------------------------------
c:\oracle\diag\rdbms\orcl\orcl\trace
 
SQL> show parameter background_dump_dest;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest                 string      c:\oracle\diag\rdbms\orcl\orcl\trace


用户跟踪文件是oracle出现异常时自动创建的文本文件,它与警告文件一起构成了完整的故障信息描述体系。

SQL> select value from v$parameter where name='user_dump_dest';
 
VALUE
--------------------------------------------------------------------------------
c:\oracle\diag\rdbms\orcl\orcl\trace
 
SQL> show parameter user_dump_dest;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest                       string      c:\oracle\diag\rdbms\orcl\orcl\trace

4. SGA

系统全局区(system global area)主要由3个区组成。
  • 数据高速缓存区(data buffer cache):存放着系统最近使用的数据块。它有3种类型:脏区(dirty buffers, 已经修改需要写回数据文件的数据块),自由区(free buffers, 不包含任何数据并可以写入的区),保留区(pinend buffers, 包含正在处理的或明确保留的区)。
  • 重做日志缓冲区(redolog buffer): 保存日志信息,并在检查点checkpoint或buffer达到一定块数时由进程LGWR写入重做日志文件。
  • 共享池(shared pool):用于存储sql,pl/sql,package,dictionary,lock,character set等。分为library cache和dictionary cache。
  • 大池(large pool):可选的,可供备份和恢复操作。

4. 后台进程
  • DBWn数据库写入器: 在SPFILE中的DB_WRITER_PROCESSES参数设置进程数目。
  • CKPT检查点参数:可选, 重做日志切换switch时产生。修改SPFILE中的CHECKPOINT_PROCESS参数为TRUE来启动检查点进程。
  • LGRW日志写入器
  • SMON系统监控器:执行恢复必须的进程。
  • PMON进程监控器:清除实效的用户进程,释放资源。
  • ARCH归档器: 可选,参数LOG_ARCHIVE_MAX_PROCESSES用来设置进程数。
  • LCKn锁:可选,并行服务器下可出现多个进程以便于通信。
  • RECO恢复器:分布式数据库下的可选进程。
  • Dnnn调度: 共享模式下的可选进程。一般多种通信协议情况下,每种协议至少创建一个调度进程(像路由,负责用户与服务器间的连接)。
  • SNPn快照进程: 可启动多个,参数JOB_QUEUE_PROCESS。
  • Pnnn并行查询进程: 参数PARALLEL_MIN_SERVERS设定启动数量。
oracle不同版本的后台进程数目不同,11g有200多个。

SQL> select name, description from v$bgprocess;
 
NAME  DESCRIPTION
----- ----------------------------------------------------------------
PMON  process cleanup
VKTM  Virtual Keeper of TiMe process
DIAG  diagnosibility process
.........................................
212 rows selected

5. 程序全局区PGA

PGA: process global area或者 program global area,保存私有信息和正在使用的操作系统资源信息。

SQL> show parameter pga
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 0


6. 数据字典

数据字典的格式(前缀)
  • USER_: 记录用户自己的对象
  • ALL_: 用户可以访问的所有对象
  • DBA_: 数据库的所有对象
  • V$_: 动态视图
  • GV_:分布式环境下的同台视图(global V$)
基本的数据库字典
 DBA_TABLES(=TABS)所有表
DBA_TAB_COLUMNS(=COLS)
所有表的列信息
 DBA_VIEWS 所有视图
 DBA_SYNONYMS(=SYN) 所有同义词
 DBA_SEQUENCES(=SEQ) 序列
 DBA_CONSTRAINTS 约束
 DBA_INDEXS(=IND) 索引的简要信息
 DBA_IND_COLUMNS 索引的列信息
 DBA_TRIGGERS 触发器
 DBA_SOURCE 存储过程
 DBA_SEGMENTS
 段
 DBA_EXTENTS 区间
 DBA_OBJECTS 所有对象
 CAT 当前用户能访问的所有基表
 TAB 当前用户创建的表,视图,同义词
 DICT 构成数据字典的所有表信息

按数据库组件分类的数据字典

 数据库 V$DATABASE 
表空间
 DBA_TABLESPACES 

 DBA_DATA_FILES 

 DBA_FREE_SPACE 
 控制文件 V$CONTROLFILE 
  V$PARAMETER 
  V$CONTROLFILE_RECORD_SECTION 
 数据文件 DBA_DATA_FILES 
  V$DATAFILE 
  V$FILESTAT 
  V$DATAFILE_HEADER 
 段 DBA_SEGMENTS 
 扩展 DBA_EXTENTS 
 日志 V$THREAD 
  V$LOG 
  V$LOGFILE 
 归档状态 V$DATABASE 
  V$LOG 
  V$ARCHIVED_LOG 
  V$ARCHIVED_DEST 
 实例 V$INSTANCE 
  V$PARAMETER 
  V$SYSTEM_PARAMETER 
 内存状态 V$SGA 
  V$SGASTAT 

V$DB_OBJECT_CACHE

  V$SQL 
  V$SQLTEXT 
  V$SQLAREA 
 后台进程 V$BGPROCESS 
  V$SESSION 


常用动态性能视图
 V$FIXED_TABLE列出当前发行的固定对象的说明 
 V$INSTANCE显示当前实例的状态 
 V$LATCH列出锁存器的统计数据 
 V$LIBRARYCACHE有关库缓存性能的统计数据 
 V$ROLLSTAT 列出联机的回滚段的名称
 V$ROWCACHE显示活动数据字典的统计 
 V$SGA有关系统全局区的总结信息 
 V$SGASTAT有关系统全局区的详细信息 
 V$SORT_USAGE显示临时段的大小及回话,可以看出哪些进程在进行硬盘的排序操作 
 V$SQLAREA 列出共享区的sql使用统计(每个sql占一行),包括sql语句在内存,分析及执行准备的统计文本限制在1000个字符内
 V$SQLTEXT在sga中属于共享sql游标的sql语句内容 
 V$SYSSTAT包括基本的实例统计信息 
 V$SYSTEM_EVENT包括一个事件的总等待时间 
 V$WAITSTAT列出块竞争统计数据 




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

转载于:http://blog.itpub.net/10336955/viewspace-659689/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值