ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 11g 数据库结构

oracle 11g 数据库结构

原创 Linux操作系统 作者:oracle_monster 时间:2010-04-14 13:55:18 0 删除 编辑
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博客 ” ,链接:https://blog.itpub.net/10336955/viewspace-659689/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 管理control file
请登录后发表评论 登录
全部评论

注册时间:2010-04-14

  • 博文量
    4
  • 访问量
    23218