`
liuguofeng
  • 浏览: 450199 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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 列出块竞争统计数据


转载地址http://space.itpub.net/10336955/viewspace-659689

分享到:
评论

相关推荐

    [Oracle11g数据库基础教程(第2版)][孙风栋][程序源代码]

    《Oracle11g数据库基础教程(第2版)》是由知名数据库专家孙风栋编著的一本关于Oracle数据库系统的入门教程。这本书旨在帮助初学者掌握Oracle11g的基本概念、安装配置、数据管理以及SQL查询语言等核心知识。源代码...

    Oracle 11g数据库应用简明教程

    Oracle 11g数据库应用简明教程是一本旨在帮助初学者和有一定经验的数据库管理员深入理解Oracle 11g数据库系统的资源。Oracle 11g是Oracle公司推出的数据库管理系统的一个重要版本,它提供了许多增强的功能和优化,以...

    Oracle 11g 数据库应用简明教程

    Oracle 11g 数据库应用简明教程是针对学习Oracle数据库管理系统的一个综合教程,主要针对的是11g版本,这是Oracle公司的一个重要版本,提供了许多增强功能和优化,旨在提高数据库性能、可用性和安全性。本教程由十八...

    Oracle11g 数据库

    Oracle11g数据库是Oracle公司推出的数据库管理系统,它在企业级数据存储、管理和处理方面具有广泛的应用。Oracle数据库11g版本引入了许多新特性和增强功能,旨在提高性能、可用性和安全性,同时降低了管理和维护的...

    Oracle11g数据库管理员指南

    资源名称:Oracle11g数据库管理员指南内容简介:Oracle 11g是Oracle公司最新推出的数据库版本。本书从实用的角度出发,系统地介绍了Oracle 11g的使用和管理,并对它的体系结构和常规管理进行了重点描述。本书对深奥...

    Oracle11g 数据库中文 文档

    Oracle 11g数据库是Oracle公司推出的一款关系型数据库管理系统,是10g版本的升级,提供了更高级别的性能、安全性和可管理性。这款数据库系统广泛应用于企业级数据存储和处理,支持复杂的事务处理、数据仓库以及...

    关于oracle11g数据库备份存在空间不足解决办法.docx

    Oracle 11g 数据库备份空间不足解决办法 Oracle 11g 数据库备份是数据库管理员的重要任务之一,而备份空间不足则是数据库管理员常遇到的问题之一。以下是关于解决 Oracle 11g 数据库备份空间不足方法的详细介绍。 ...

    Oracle_11G_数据库应用简明教程PPT

    Oracle 11g是一款强大的...总之,Oracle 11g数据库应用简明教程PPT是一个全面的学习资源,旨在帮助初学者和有经验的DBA掌握Oracle数据库的关键概念和技术。通过深入学习,你将具备管理和维护大型企业级数据库的能力。

    Oracle10g数据库基础教程(孙凤栋)习题答案

    Oracle10g数据库是Oracle公司推出的数据库管理系统,它在企业级数据存储和管理领域具有广泛的应用。本教程《Oracle10g数据库基础教程》由孙凤栋主编,旨在为初学者提供全面、深入的Oracle数据库知识。教程内容涵盖...

    Oracle 11g数据库基础教程_课件及安装方法

    Oracle 11g数据库是Oracle公司推出的一款关系型数据库管理系统,是企业级数据管理的重要工具。本教程将针对初学者,详细介绍Oracle 11g的基础知识,并提供详细的安装步骤。 一、Oracle 11g概述 Oracle 11g是Oracle...

    精通Oracle 11g数据库管理

    《精通Oracle 11g数据库管理》是一本专注于Oracle数据库技术的专业书籍,出版于2009年。Oracle 11g是Oracle公司推出的数据库管理系统的一个重要版本,它提供了许多高级特性和功能,以满足企业级数据存储、管理和分析...

    Oracle 11g数据库系统设计、开发、管理与应用

    《Oracle 11g数据库系统设计、开发、管理与应用》是一本全面涵盖Oracle数据库技术的专业教程,适合数据库管理员(DBA)、开发人员以及对Oracle技术感兴趣的学者学习。PDF格式的书籍便于电子阅读和存储,使得读者可以...

    Oracle 11g 数据库常用操作

    Oracle 11g数据库是企业级关系型数据库管理系统,它提供了强大的数据管理功能。本教程将详细介绍四个核心的Oracle数据库操作:创建表空间、创建用户并授予权限、使用Exp进行数据导出以及使用IMP进行数据导入。 1. ...

    ORACLE+DATABASE+11G+数据库管理艺术

    Oracle Database 11g是甲骨文公司推出...综合来看,《Oracle Database 11g数据库管理艺术》不仅适合初学者学习基础知识,也适合有经验的DBA深入研究和查阅,其内容全面、结构合理,是一本值得推荐的数据库管理工具书。

    Oracle11g体系结构图

    标题:“Oracle11g体系...综上所述,Oracle11g体系结构的深入理解和掌握对于数据库管理员而言至关重要。通过合理利用Oracle11g的功能和特性,结合最佳实践和避免常见误区,可以显著提升数据库的性能、稳定性和安全性。

    完整版Oracle11数据库教程课件 全套PPT课件资源集合 全套12个章节.rar

    完整版Oracle11数据库教程课件 第2章_Oracle体系结构(共11页).ppt 完整版Oracle11数据库教程课件 第3章_SQL语言概述及简单查询(共19页).ppt 完整版Oracle11数据库教程课件 第4章_修改数据及事务(共16页).ppt ...

    手动创建Oracle11g数据库

    "手动创建Oracle11g数据库" Oracle数据库是当前市场上最流行的关系型数据库管理系统之一。手动创建Oracle数据库可以让用户更好地理解Oracle数据库的工作机制,从而更好地管理和维护数据库。下面是手动创建Oracle11g...

Global site tag (gtag.js) - Google Analytics