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. 承接AR摄像头识别外包 AR图像识别 AR识别图像 AR识别应用外包

    增强现实简称AR,是一种实时计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并实现互动. 这里千万别和VR虚拟现实混了.简单说就是VR看到的场景都是假的, ...

  2. 决策树算法原理(CART分类树)

    决策树算法原理(ID3,C4.5) CART回归树 决策树的剪枝 在决策树算法原理(ID3,C4.5)中,提到C4.5的不足,比如模型是用较为复杂的熵来度量,使用了相对较为复杂的多叉树,只能处理分类不 ...

  3. python基础之虚拟环境--常用指令

    虚拟环境的介绍和应用就不在这里赘述了,做个快捷的记录 这是官方给出来的解释了https://docs.python.org/zh-cn/3.7/tutorial/venv.html 还看到有的人,还安 ...

  4. Vuex状态管理模式

    Store:类似容器,包含应用的大部分状态,一个页面只能有一个store,状态存储是响应式的 State : 包含所有应用级别状态的对象 Getters : 在组件内部获取store中状态的函数 Mu ...

  5. 2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017)

    A Drawing Borders 很多构造方法,下图可能是最简单的了 代码: #include<bits/stdc++.h> using namespace std; ; struct ...

  6. JSON & XML

    什么是JSON? JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子 ...

  7. jquery tab切换

    首先引入jquery.js <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  8. qtp中type方法的按键常量

    记录键盘操作可以用set和presskey方法,而type方法是不记录的.type方法主要用于输入连接文本字符串和键盘修饰键(组合键),组合键之间用&符号. 如:JavaWindow(&quo ...

  9. Linux内存管理(二)

    Linux内存管理之二:Linux在X86上的虚拟内存管理 本文档来自网络,并稍有改动. 前言 Linux支持很多硬件运行平台,常用的有:Intel X86,Alpha,Sparc等.对于不能够通用的 ...

  10. Nuget连接失败的问题

    ---恢复内容开始--- .net 项目开发管理中我们经常使用Nuget管理我们的类库.由于某些原因 nuget v3的镜像源https://api.nuget.org/v3/index.json 经 ...