Oracle体系机构
Oracle 体系结构
1.文件:数据库组成和实例文件;
2.系统全局区:SGA内存结构,SGA PGA UGA关,也研究SGA和java池,共享池和大部分的池;
3.物理进程和线程 server进程 backgroud进程和从属进程。
--数据库和实例
数据库————物理操作系统文件的集合
实例 —————一组oralce进程和SGA
--oralce数据库模式
专用服务器模式:用户进程和服务器进程对应,建立专用通道。适用于事务处理大,连接数小的情况,默认情况下为专用模式.
共享服务器模式(MTS):调度进程接受多个客户端的连接请求,并吧这些请求放到一个公共队列中。空闲的服务器进程从这个公共队列中抓出这些请求,然后完成请求的任务,完成任务后,把结果放到响应队列中,调度进程再从响应队列中把完成的结果返回给客户端。适用于并发比较大,小事务和一些特殊的比如负载均均衡。
--文件
参数文件 --数据库配置参数 如TNSNAMES.ORA等.ora结尾的文件
数据文件 --数据对象
表空间在 Oracle 中是一个逻辑存储容器,它保存段。
1.段(segment)存储数据库对象,如表、索引、回滚段。段本身是由一个或多个盘区组成。
2.盘区(extent)盘区是在文件中一个连续的分配块空间,1-2G
3.块(block)组成盘区,是Oralce读写的对象
临时数据文件 --分类临时
重做日志文件 --记录日志
控制文件 --记录数据文件地址和状态
密码文件 --身份验证
--内存结构
SGA,系统全局盘区(System Global Area)——这是一个大的、共享的内存段,本质上,所有的
Oracle 进程都将在一点或另一点上访问它。
PGA,进程全局盘区(Process Global Area)——这是内存,对单一的进程或线程是私有的,从其
他的进程或线程上无法访问它。
UGA,用户全局盘区(User Global Area)——这是与您的会话有关的内存部分。可以在 SGA 或
PGA 上找到它,这取决于您是在 MTS 模式运行(那么就在 SGA 中)还是在专用服务器上运行(那么就在
PGA 中)。
--SGA V$SGASTAT表中查看相应的参数
SGA 分为各种池(pool):
Java 池(Java pool)——Java 池是分配给在数据库上运行的 JVM 的固定大小的内存。
大池(Large pool)——大池被 MTS 用作会话内存;被 Parallel Execution(并行计算)用作消息缓冲
器;并被 RMAN Backup 用作磁盘 I/O 缓冲器。
共享池(shared pool)——共享池包含共享的游标、存储过程、声明对象、字典高速缓存和许多成
打的其他数据位。
空池(The“Null”pool)——这个池不真正拥有名字。这是专门用于块缓冲区(高速缓存的数据库
块)、重做日志缓冲区以及“固定 SGA”盘区的内存。 show parameter log_buffer
--锁机制
在 关系数据库(DB2,Oracle,Sybase,Informix和SQL Server)最小的恢复和交易单位为一个事务(Transactions),事务具有ACID(原子性,一致性,隔离性和永久性)特征。关系数据库为了 确保并发用户在存取同一数据库对象时的正确性(即无丢失更新、可重复读、不读"脏"数据,无"幻像"读),数据库中引入了并发(锁)机制。基本的锁类型有 两种:排它锁(Exclusive locks记为X锁)和共享锁(Share locks记为S锁)。
排它锁:若事务T对数据D加X锁,则其它任何事务都不能再对D加任何类型的锁,直至T释放D上的X锁;一般要求在修改数据前要向该数据加排它锁,所以排它锁又称为写锁。
共享锁:若事务T对数据D加S锁,则其它事务只能对D加S锁,而不能加X锁,直至T释放D上的S锁;一般要求在读取数据前要向该数据加共享锁,所以共享锁又称为读锁。
--oralce锁
悲观封锁和乐观封锁
一、悲观封锁
锁在用户修改之前就发挥作用:
Select ..for update(nowait)
Select * from tab1 for update
用户发出这条命令之后,oracle将会对返回集中的数据建立行级封锁,以防止其他用户的修改。
如果此时其他用户对上面返回结果集的数据进行dml或ddl操作都会返回一个错误信息或发生阻塞。
1:对返回结果集进行update或delete操作会发生阻塞。
2:对该表进行ddl操作将会报:Ora-00054:resource busy and acquire with nowait specified.
二、乐观封锁
乐观的认为数据在select出来到update进取并提交的这段时间数据不会被更改。这里面有一种潜在的危险就是由于被选出的结果集并没有被锁定,是存在一种可能被其他用户更改的可能。因此Oracle仍然建议是用悲观封锁,因为这样会更安全。
--Oracle里锁有以下几种模式:
0:none
1:null 空
2:Row-S 行共享(RS):共享表锁 ,select ... from ... for update;
3:Row-X 行专用(RX):用于行的修改, insert / update / delete ... ;
4:Share 共享锁(S):阻止其他DML操作 ,创建索引的时候也会产生3,4级别的锁
5:S/Row-X 共享行专用(SRX):阻止其他事务操作 ,有主外键约束时 update / delete ... ; 可能会产生4,5的锁。
6:exclusive 专用(X):独立访问使用,ddl操作时。
--查看
select object_id,session_id,locked_mode from v$locked_object;
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
--杀锁
alter system kill session 'sid,serial#';
--
如果能在 SQL 中完成,就在SQL 中完成。在 SQL 中不能完成的,在 PL/SQL 中完成。使用最少的代码,分配足够的资源,要考虑万一出错时,会出现什么情况。
--Oracle 中分布式事务的关键是数据库链接
对于单个事务,可以在许多种不同的数据库里更新数据。提交时,要么提交全部实例里的更新,要么都不能提交(全部回滚)。不需要额外代码来完成,只是简单地“提交”即可。
数据库链接是一个数据库对象,用来描述如何从一个实例进入另一个实例
select * from T@another_database;
jdbc隐身提交 --conn81.setAutoCommit (false);
Oracle体系机构的更多相关文章
- Oracle 10g体系机构及安全管理《思维导图》
通过学习Oracle数据库后,我对数据库又有了进一步的了解,Oracle数据库 10g体系机构分为 物理和逻辑存储结构. 下面是我对Oracle数据库做的思维导图和笔记 (全屏查看:<思维导图& ...
- Oracle学习笔记—oracle体系架构及状态(nomount、mount和open)简介
oracle体系架构简介 先来简要了解一下Oracle数据库体系架构以便于后面深入理解,Oracle Server主要由实例(instance)和数据库(database)组成.实例(instance ...
- Oracle 体系结构图
Oracle体系结构图 详细图
- Oracle体系结构中基本概念,数据库
在Oracle体系结构中包含了基本概念即Oracle数据库与实例,如果你想要了解Oracle体系结构的话,你就必须要了解这两个基本的概念,以下是文章的具体介绍,望你浏览完以下的内容会有所收获. 数据库 ...
- Oracle数据库的文件以及Oracle体系架构
第一部分.Oracle数据库的文件 1.参数文件:控制实例的行为的参数的集合 参数文件的作用 设定数据库的限制 设置用户或者进程的限制 设定数据库资源的限制 调整系统的性能 主要的参数文件 SGA_T ...
- Oracle体系中各个组件的含义
首先看张图 下面来解释下这个图. 对于一个数据库系统来说,假设这个系统没有运行,我们所能看到的和这个数据库相关的无非就是几个基于操作系统的物理文件,这是从静态的角度来看,如果从动态的角度来看呢,也就是 ...
- Oracle体系结构图
1 oracle数据库主要有数据文件database和数据库实例instance组成.用户通过用户进程链接到server process.在数据库启动的时候,需要依赖于参数文件parameter fi ...
- Oracle11g温习-第一章:Oracle 体系架构
2013年4月27日 星期六 10:20 1.oracle 网络架构及应用环境 1. ORACLE 实例——包括内存结构与后台进程 2. ORACLE 数据库——物理操作系统文件的集合 3. 了解内存 ...
- HW 研发体系机构的几个术语
PDT(product development team)产品开发团队 类似于产品经理 程序员 -- PL -- PM --开发代表 -- PDT LEADER --------------- ...
随机推荐
- malloc、calloc、realloc的区别(转)
(1)C语言跟内存分配方式 <1>从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量.static变量.<2> ...
- github创建maven项目过程
笔者运行环境: 1. windows 10 2. cygwin,安装openssh 3. git版本 2.11.0 前置操作,如果已经配置可以略过 1. cygwin下执行 ssh-keygen - ...
- SGA 的自动管理
在Oracle10g中,不必再如从前一样用下列各个参数分别指定SGA的每个部分的大小.也就是说不需要首先评估SGA各组件的大小,并且在init<SID>.ora初始参数文件中分组件指定.( ...
- Hive SQL 常见问题(转载)
http://www.aboutyun.com/thread-14942-1-1.html 问题导读 1.Hive查询语句和SQL查询语句区别与联系. 2.distribute by.group by ...
- atitit. it软件项目管理---自己的员工,雇佣军、援军,混合的员工 杂牌 人员管理架构
atitit. it软件项目管理---自己的员工,雇佣军.援军,混合的员工 杂牌 人员管理架构 1. 企业的正规军,雇佣军,杂牌划分 1 1.1. 企业的员工基本是雇佣而来 1 1.2. 全职员工与兼 ...
- Oracle 版本号说明
Oracle 的版本非常多,先看11g的一个版本说明: 注意: 在oracle 9.2 版本号之后, oracle 的maintenance release number 是在第二数字位更改. 而在之 ...
- git 删除github上的文件
硬盘删除文件后,执行$ git status 会提示你仍然需要$ git rm <文件> 此时如果是要删除大批量文件,这么一个一个命令下去不得累死人啊 其实可以这样(不管之前有 ...
- iOS 11确认将完全停止支持 32 位应用
苹果正在逐渐淘汰 32 位应用,而且会在今年秋天完成.根据知名开发者 Steven Troughton-Smith 透露,苹果会在 iOS 11 发布后,停止支持 32 位应用.这意味着 App St ...
- Centos安装ruby--jekyll
想要使用gem install 安装jekyll,执行发现没有gem这个命令,那就需要先安装gem了 yum list '*ruby*' 修改gem源,使用淘宝的源: gem sources --re ...
- hdu5719 Arrange
首先,根据题意可得B数组应是单调不升的,C数组是单调不降的. 可以发现A_1 = B_1 = C_1A1=B1=C1,所以如果B_1 \neq C_1B1≠C1无解. 进 ...