11G Concept Oracle数据库简介(三)

2014-11-24 11:56:35 · 作者: · 浏览: 18
户同时访问一个数据.如果没有并发控制,用户修改的数据就是不合适的,会危害数据完整性
举个例子,一个用户更行了一行,而另一个用户又在同一时间更新了他
如果多用户访问同样的数据,则管理并发的方法既是让用户等待(排队).
无论如何,DBMS的一个目标是减少这种等待时间.所有修改数据的SQL语句必须尽可能减少影响.
毁灭性的互相影响,这个是指不争取的更新或者修改底层数据结构导致的,必须避免
Oracle数据库使用锁(locks)来控制数据的并发。lock是用来防止因为不同事物同事访问同一共享资源而导致的毁灭性影响。Locks帮助保证数据的完整性,同事允许最大并发访问数据。
数据一致性(Data Consistency)
在Oracle数据库中,每个用户看到的数据状态必须是一致的,包括用户自己的事务中的显示修改以及别的用户已经提交事务中的修改。
举个例子:数据库必须预防脏读(dirty reads),这个脏读出现在 当一个事务 看到别的用户未提交的并发修改。
Oracle数据库强制执行 statement-level read consistency(语句级读一致性),它保证了单个查询的数据结果是已经提交的,以及一致的在一个时间点上。依赖于事务隔离级别(transaction isolation level),这个时间点是这个语句开始执行的时间。Flashback Query(闪回查询)特性使的你可以显示的指定要查看的是简单(Oracle的一个特性)
数据库也可以对一个事务中的所有查询提供读一致性,被称为"transaction-level read consistency"(事务级读一致性)。
在这种隔离级别中,一个事务中的所有语句看到的数据都是同一个时间点的,这个时间点就是事务开始的时间!
Oracle数据库体系结构
数据库服务器 是信息管理的一个关键,普通情况下,服务器可靠的管理着大量的数据(多用户环境),用户们能同时并发的访问相同的数据,数据库服务器还能阻止非法访问,以及恢复错误。
数据库(Database)和实例(Instance)
一个Oracle数据库服务(server)由一个database和最少一个database Instance组成(通常被简单的称为Instance).
由于一个Instance和一个database紧密联系,
所以 术语 OracleDatabase 在大部分时间就是指 Instance + Database(也就是说,如果不强调的话 Oracle database(数据库)就是指一个instance+database,不懂来问)。
严格意义上讲:
·Database(数据库)
一个database就是在硬盘上的一堆文件,用来存放数据。
·Database Instance(实例)
一个Instance就是一堆内存结构,这些内存结构管理着数据库文件,Instance包括一个共享的内存区域 叫做 system global area(SGA),以及一大堆后台进程.
也就是说:Database 就是磁盘上的那一堆文件(数据文件,日志文件,密码文件等等),严格上讲就叫database.而Instance就是内存里的东西,什么sga,后台进程。RAC就是一个database而多个Instance.
图 1-1显示了一个database以及Instance,每个用户连接到Instance的时候,应用都会运行一个client process(客户端进程,sqlplus之类的),每个客户端进程,在服务器端都有一个与之相关的server process. server process 会划分出自己独享的内存,称之为program global area(PGA)
图 1-1 Oracle Instance和Database
一个数据库可以从物理和逻辑两个角度考虑.
物理数据是指能在操作系统层面看见的.举个栗子,比如Linux操作系统的话 可以用ls显示出数据文件 用ps显示出后台进程.
逻辑数据是比如说表。这东西只有数据库认。一个sql语句可以列出Oracle数据库中所有的表。但是操作系统的工具(ls什么的)是不能列出的。
数据库有physical structures(物理结构)和logicalstructures(逻辑结构)两种.
因为这两种结构是分开的,所以对于物理结构的管理 是不会影响逻辑结构的访问的。举个例子:物理数据文件修改名字,并不会将 在这个文件中存放有数据的表的名字也一起修改。
Database storage Structures(数据库存储结构)
RDBMS必须得能够存储数据。这小节简单介绍一下Oracle 数据库的物理结构和逻辑结构
Physical Storage Structures(物理结构)
物理结构是一大堆存着各种数据的文件.当你执行SQL语句CREATEDATABASE,这下面这些文件会创建:
·Data files(数据文件)
每个Oracle数据库都会有一个或多个物理data files,data files包含数据库中的所有数据.数据库逻辑结构中的数据,比如表和索引中的数据,其实就是物理的存储在data file中的。
·Control Files(控制文件)
每个Oracle数据库都有一个控制文件(可以有多个副本),控制文件包含数据库物理结构信息,包括数据库名字,以及数据库文件的名字和位置.
·Online redo log files(redo日志)
每个数据库都拥有两个或者更多的Online redo log files.redo log中含有redo entries(条目)又称之为redo record(记录),这东西记录了数据的任何一次变化
还有很多重要的其他文件,这些文件包括 parameter files(参数文件),diagnostic files(诊断文件,或者叫trace文件,alert文件).
还有对备份和恢复很重要的离线文件,其中有Backup files(备份文件)以及archived redo log files(归档日志文件,在线日志是循环利用的,在一个在线日志被覆盖以前,可以将其归档起来)
Logical Storage Structures(逻辑结构)
这节讨论逻辑结构,下面这些逻辑结构使得Oracle数据库能更加细致(细粒度)的控制磁盘空间:
·Data blocks(数据块)
这是数据库中最小存储单位,Oracle数据库的数据就是存储在data blocks中的。一个data block对应磁盘上一个指定的大小(2k,4k,8k,16,32k)
·Extents(区)
一个区由一堆连续的块组成,最小的分配单位
·Segments(段)
每个object(例如,表,或索引)就是一个段,由一堆区组成。
·Tablespaces(表空间)
表空间是个容器,里面放着segments,每个表空间最少由一个数据文件构成
表空间其实就是逻辑和