Oracle Database 11g是一些特殊文件的集合,这些文件是用数据库配置助手创建的,然后用OEM Grid Control完成相关工作。这些数据库文件是通过一组共享内存进程来进行访问的,这组进程称为“实例”。
Oracle数据库组成
Oracle的控制文件是二进制文件,包含有关支持Oracle Database 11g的各种文件的信息。包含的信息描述了数据库文件的名称、位置和大小。
(1)物理组成
Oracle可以采用如下4种文件系统机制机制存储数据:
操作系统文件系统:宿主操作系统的文件系统。Oracle读写磁盘时,OS会缓存信息。
裸设备:原始磁盘,对数据没有任何缓冲,都是直接I/O。
自动存储管理(Automatic Storage Management, ASM):Oracle专门设计的一个数据库的文件系统,可用于单机和集群环境。
集群文件系统(Oracle Cluster File System,OCFS):专用于RAC(Real Application Cluster)环境。

以下的介绍均基于存储机制是宿主操作系统的文件系统的层面来介绍。
Oracle数据库涉及了如下几类文件:

参数文件
主要设置数据库的初始化参数,如控制文件的路径,内存结构的大小等。参数文件分遗留参数文件和服务器参数文件,我们比较关注的参数文件是spfile(server parameter file),它的命名方法为:spfile$ORACLE_SID.ora
跟踪文件
提供Oracle运行的调试信息。需要将参数文件里面的SQL_TRACE设置为TRUE。如果采用的是专用服务器,输出信息保存在user_dump_dest参数指定的路径。否则就是共享服务器模式,输出信息保存在background_dump_dest参数指定的路径。
警告文件
又称警告日志,就是数据库的日记。
数据文件
这个应该是数据库最重要的文件之一。保存八戒的个人数据。只从人间发生了陈冠希事件后,八戒将个人隐私数据都保存在数据中,需要密码才能访问。每个数据库的数据文件默认保存在$ORACLE_BASE/oradata/$ORACLE_SID目录下。
临时文件
临时文件是Oracle中一类特殊的数据文件。它被使用来存储大规模排序操作和散列操作的中间结果,如果RAM中没有足够的空间,它还会被用来存储全局临时表数据或结果集数据。永久数据(如表或索引)不会存储在临时文件中。
控制文件
参数文件文件告知控制文件的位置,控制文件则告知实例数据库和在线重做日志文件的位置等信息。里面涉及的两个文件就是数据库中最重要的两个东东了。
八戒又意外的发现它也是二进制文件。
重做日志文件
对于Oracle数据库至关重要。它们是数据库的事务日志。通常用于数据库恢复。它又分在线重做日志文件和归档重做日志文件。两者的关系后面的进程一节会有所涉及。
密码文件
它是一个可选的文件,允许远程sysdba或管理员访问数据库。
修改跟踪文件
跟踪自上一个增量备份以来哪些block已经修改。采用这样的方式,恢复管理工具(Recovery Manager, RMAN)就可以只备份确实有变化的数据库块,而不必读取整个数据库。
闪回日志文件
闪回日志文件(Flashback Log File)简称闪回日志。它包含已修改数据库的“前映像”,可用于将数据库返回到该时间点之前的状态。这有点类似于Windows的系统还原,Mac的Timer。
(2) 逻辑组成

Oracle数据库在逻辑上由表空间(tablespace),段(segment),区段(extent),块(block)分层组成。
Database
数据库由一个或多个表空间组成。
Tablesapce
表空间物理上由一个或多个数据文件组成。这些文件可以是文件系统中的文件、原始分区、ASM管理的数据库文件或集群文件系统上的文件。表空间逻辑上由至少一个段组成。
Segment
段就是占用存储空间的数据库对象,如表、索引、回滚段。创建表时,会创建一个表段。创建索引时,就会创建一个索引段。
段本身又由一个或多个区段组成,这些区段可以来自多个数据文件。段在表空间中,但是可以包含在这个表空间中的多个数据文件中的数据。
Extent
区段是数据文件中一个逻辑连续的块。一般来说,数据文件本身在磁盘上并不是连续的,甚至可能跨多个物理磁盘,如RAID。区段在一个表空间中,而且总是属于该表空间的一个数据文件中,不能跨多个数据文件。区段进一步被划分为块,其大小最小为一个Oracle块,最大为2GB。
Block
块是数据库中最小的分配单位,也是数据库使用的最小I/O单位。它由一个或多个操作系统块组成。大小一般是2KB、4KB、8KB、16KB、32KB,其实也可以不是2的幂次大小,不过在计算机世界里面2的幂次数字似乎是一个优等数字
----
Schema
Database从另外一个角度来看,它是由一个或多个schema组成。
schema的官方定义如下:
schema 为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的 schema 下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema 里面包含了各种对象如:tables,views,sequences,stored procedures,synonyms,indexes,clusters,and database links。
如果我们访问一个表时,没有指明该表属于哪一个 schema 中的,系统就会自动给我们在表上加上缺省的 shema 名。比如我们在访问数据库时,访问 scott 用户下的 emp 表,通过select * from emp; 其实,这 sql 语句的完整写法为 select * from scott.emp。在数据库中一个对象的完整名称为 schema.object,而不属 user.object。
schema只是将数据库中的对象以某种方式集合起来,再贴上一个标签(user),这个集合里面的对象,也就只有手持这个标签的用户才可见。schema与user的关系,就好象身体与姓名的关系。
说穿了其实user是控制权限的,而schema是个容器,非所有者要访问这个容器下的对象就需要在对象前面写上schema的名字,如果不想写而又没有创建synonym,此时可以通过alter session set current_schema=schema_name来改变当前session的schema,从而在访问对象时省去schema。最终能否访问对象还是要看是否有访问这个对象的权限而和schema无关。
user即oracle中的用户,和所有系统的中用户概念类似,用户所持有的是系统的权限及资源;而schema所涵盖的是各种对象,它包含了表、函数、包等等对象的“所在地”,并不包括对他们的权限控制。好比一个房子,里面放满了家具,对这些家具有支配权的是房子的主人(user),而不是房子(schema)。

图 1 segment、extent、block之间的联系

首先要明确数据库与实例的关系
数据库:磁盘上存储的数据集合,也就是上一节中所说的各种文件组成。
实例:一组后台进程和共享内存。实例“一生”只能装载并打开一个数据库。一个数据库可以由一个或多个实例(使用RAC)装载和打开。Oracle系统中每一个实例都由一个SID(site identity descriptor)值唯一标识。两者的关系有点类似程序与进程之间的关系。下图描述了两者的关系。

Oracle组成介绍的更多相关文章

  1. 【体系结构】Oracle参数介绍

    [体系结构]Oracle参数介绍 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩ ...

  2. Oracle asm介绍和安装linux+oracle10g+asm过程

    Oracle asm介绍和安装linux5.2+oracle10g+asm过程   1)ASM(自动存储管理)的来由:   ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来 ...

  3. Oracle Dataguard 介绍

    Oracle DataGuard介绍 一. DataGuard的基本原理 当某次事务处理对生产数据库中的数据作出更改时,Oracle数据库将在一个联机重做日志文件里记录此次更改.在DataGuard中 ...

  4. [Oracle] Lob介绍

    [Oracle] Lob介绍   像Oracle这种关系型数据库,比较擅长处理结构化的数据,那么对于非结构化的数据,Oracle是怎么处理和存储的呢?Lob (Large Object)是Oracle ...

  5. oracle regexp_like介绍和例子

    oracle regexp_like介绍和例子 学习了:http://www.cnblogs.com/einyboy/archive/2012/08/01/2617606.html ORACLE中的支 ...

  6. Oracle 备份与恢复介绍

    一.Oracle备份方式分类:Oracle有两类备份方式:(1)物理备份:是将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程,通常是从磁盘到磁带.物理备份又分为冷备份.热备份:   (2)逻 ...

  7. Oracle 存储过程介绍

    存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...

  8. ORACLE RMAN介绍

    本地连接: $ rman target /  or $ rman target / nocatalog 远程连接: $ rman target sys/sys@sky RMAN命令执行方式: 1.单条 ...

  9. oracle 序列介绍

    序列介绍 序列是一个计数器,它并不会与特定的表关联.通过创建Oracle序列和触发器实现表的主键自增. 序列的用途一般用来填充主键和计数. 序列使用 1.创建序列 ORACLE序列的语法格式为: CR ...

随机推荐

  1. Unity外包团队:关于手机unity游戏开发的技术选型

    技术选型 Unity引擎内置了多人联机的解决方案,涵盖了从最底层的网络数据传输,到不同玩家之间的消息发送,再到游戏大厅这样的高级功能.考虑到Unity官方提供的云服务(Internet Service ...

  2. curl提交请求时,如何把cookie带过去

    curl请求有一个CURLOPT_COOKIE参数,把获取到的cookie内容,通过字符串组装,赋值给这个参数就可以了 例子:   $defaults = array( CURLOPT_URL =&g ...

  3. [大数据面试题]storm核心知识点

    1.storm基本架构 storm的主从分别为Nimbus.Supervisor,工作进程为Worker. 2.计算模型 Storm的计算模型分为Spout和Bolt,Spout作为管口.Bolt作为 ...

  4. 解密:Amazon亚马逊产品Listing关键词刷单排名原理

    第一:基本概念   在阅读正文之前,请先理解下面的几个基本概念.   核心词[高频词.热词.大词.主词]:长度大约1~2个单词构成,指每天搜索量比较多的词,每个行业对高频词的划分不一样,这个主要看自己 ...

  5. elementUi中的计数器ele-mumber中的change事件传参及事件调用

    业务场景是需要在点击业务工作量的时候设置任务工作量这一项的评分不能大于任务质量及任务时限的权重之和除以二 上代码 JS逻辑代码 因出现弹出层提示后设置输入框的值如果大于sum的值,设置输入的值为sum ...

  6. 简单Socket网络通信

    问题:编写一个网络应用程序,有客户端和服务端,客户端向服务端发送一个字符串(如"Hello Socket"),服务器收到该 字符串后将其打印到命令行上,然后向客户端返回该字符串的长 ...

  7. 跟随我在oracle学习php(11)

    数组专题 数组遍历: 1,普通for循环,经常用的数组遍历 var arr = [1,2,0,3,9]; for ( var i = 0; i <arr.length; i++){ consol ...

  8. sqlserver 数据库关于存储xml字段里内容的查找与替换

    1.传送门 :   http://www.cnblogs.com/GuoPeng/archive/2009/12/11/1621527.html 2.复制原帖的修改部分: 修改:@xml . modi ...

  9. Event Loop

    Event Loop 是 JavaScript 异步编程的核心思想,也是前端进阶必须跨越的一关.同时,它又是面试的必考点,特别是在 Promise 出现之后,各种各样的面试题层出不穷,花样百出.这篇文 ...

  10. unity中的UGUI一些组件的使用

    一.Toggle Group(Script) LeftButtons上添加Toggle Group组件,属性Allow Switch Off打对勾,代表它的所有子物体上带有Toggle组件的属性Is ...