Oracle组成介绍
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组成介绍的更多相关文章
- 【体系结构】Oracle参数介绍
[体系结构]Oracle参数介绍 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩ ...
- Oracle asm介绍和安装linux+oracle10g+asm过程
Oracle asm介绍和安装linux5.2+oracle10g+asm过程 1)ASM(自动存储管理)的来由: ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来 ...
- Oracle Dataguard 介绍
Oracle DataGuard介绍 一. DataGuard的基本原理 当某次事务处理对生产数据库中的数据作出更改时,Oracle数据库将在一个联机重做日志文件里记录此次更改.在DataGuard中 ...
- [Oracle] Lob介绍
[Oracle] Lob介绍 像Oracle这种关系型数据库,比较擅长处理结构化的数据,那么对于非结构化的数据,Oracle是怎么处理和存储的呢?Lob (Large Object)是Oracle ...
- oracle regexp_like介绍和例子
oracle regexp_like介绍和例子 学习了:http://www.cnblogs.com/einyboy/archive/2012/08/01/2617606.html ORACLE中的支 ...
- Oracle 备份与恢复介绍
一.Oracle备份方式分类:Oracle有两类备份方式:(1)物理备份:是将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程,通常是从磁盘到磁带.物理备份又分为冷备份.热备份: (2)逻 ...
- Oracle 存储过程介绍
存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...
- ORACLE RMAN介绍
本地连接: $ rman target / or $ rman target / nocatalog 远程连接: $ rman target sys/sys@sky RMAN命令执行方式: 1.单条 ...
- oracle 序列介绍
序列介绍 序列是一个计数器,它并不会与特定的表关联.通过创建Oracle序列和触发器实现表的主键自增. 序列的用途一般用来填充主键和计数. 序列使用 1.创建序列 ORACLE序列的语法格式为: CR ...
随机推荐
- 论文阅读-attention-is-all-you-need
1结构介绍 是一个seq2seq的任务模型,将输入的时间序列转化为输出的时间序列. 有encoder和decoder两个模块,分别用于编码和解码,结合时是将编码的最后一个输出 当做 解码的第一个模块的 ...
- LoRa无线技术介绍
什么是LoRa LoRa是semtech公司创建的低功耗局域网无线标准,低功耗一般很难覆盖远距离,远距离一般功耗高,要想马儿不吃草还要跑得远,好像难以办到.LoRa的名字就是远距离无线电(Long R ...
- lua调用不同lua文件中的函数
a.lua和b.lua在同一个目录下 a.lua调用b.lua中的test方法,注意b中test的写法 _M 和 a中调用方法: b.lua local _M = {}function _M.test ...
- OO第二单元作业总结【自我反思与审视】
第二单元作业的完成史,就是一部心酸的血泪史…… 多线程的出现为我(们)打开一片广阔的天地,我也在这方天地摸爬滚打,不断成长!如果说第一单元之前还对Java语法有所了解的话,那么这单元学习多线程则完全是 ...
- An overnight dance in discotheque CodeForces - 814D (几何)
大意: 给定n个不相交的圆, 求将n个圆划分成两部分, 使得阴影部分面积最大. 贪心, 考虑每个连通块, 最外层大圆分成一部分, 剩余分成一部分一定最优. #include <iostream& ...
- es6语法在ios低版本的支持性
let.const.箭头函数在ios的某些版本不支持,会引起报错 参考:https://blog.csdn.net/cx091/article/details/79805369 https://can ...
- 笔记:stm32 printf重定向到UART疑点解析
在调试过程中往往需要通过打印来看系统运行状态:在STM32平台上,打印重定向有多种实现方案:其一是编译时使用keil自带的MacroLIB,据说这个库对一些C语言基础设施做了新的实现,代码结构更加紧凑 ...
- RPA简介
开篇: 公司正在全面推广RPA,正好借此机会学习一下,发现国内对RPA的了解较少,萌生了在博客园开博,同时锻炼一下自己的输出能力,纯笔记,如有不足之处,请指正,共勉. 阅读目录: 1. 什么是RPA ...
- 3DsMax 自动化操作(maxScript)
这是我编写的一部分maxScript 脚本,专注于3DsMax 快速建模,程序化地为我们完成一些繁琐的工作. 可以极大提高公司开发的效率! 2019年04月09日 :上传 今年新开发的插件,还有很多, ...
- weka安装&配置&使用
安装与配置: 官网下载安装即可,分为带jre和不带jre版本,3.8需要jre1.8.如果装了1.7的话,还是自己先装一个1.8再装不带jre版本的比较好,不然weka装的会让人一脸懵逼,不知道装在哪 ...