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体系机构的更多相关文章

  1. Oracle 10g体系机构及安全管理《思维导图》

    通过学习Oracle数据库后,我对数据库又有了进一步的了解,Oracle数据库 10g体系机构分为 物理和逻辑存储结构. 下面是我对Oracle数据库做的思维导图和笔记 (全屏查看:<思维导图& ...

  2. Oracle学习笔记—oracle体系架构及状态(nomount、mount和open)简介

    oracle体系架构简介 先来简要了解一下Oracle数据库体系架构以便于后面深入理解,Oracle Server主要由实例(instance)和数据库(database)组成.实例(instance ...

  3. Oracle 体系结构图

    Oracle体系结构图 详细图

  4. Oracle体系结构中基本概念,数据库

    在Oracle体系结构中包含了基本概念即Oracle数据库与实例,如果你想要了解Oracle体系结构的话,你就必须要了解这两个基本的概念,以下是文章的具体介绍,望你浏览完以下的内容会有所收获. 数据库 ...

  5. Oracle数据库的文件以及Oracle体系架构

    第一部分.Oracle数据库的文件 1.参数文件:控制实例的行为的参数的集合 参数文件的作用 设定数据库的限制 设置用户或者进程的限制 设定数据库资源的限制 调整系统的性能 主要的参数文件 SGA_T ...

  6. Oracle体系中各个组件的含义

    首先看张图 下面来解释下这个图. 对于一个数据库系统来说,假设这个系统没有运行,我们所能看到的和这个数据库相关的无非就是几个基于操作系统的物理文件,这是从静态的角度来看,如果从动态的角度来看呢,也就是 ...

  7. Oracle体系结构图

    1 oracle数据库主要有数据文件database和数据库实例instance组成.用户通过用户进程链接到server process.在数据库启动的时候,需要依赖于参数文件parameter fi ...

  8. Oracle11g温习-第一章:Oracle 体系架构

    2013年4月27日 星期六 10:20 1.oracle 网络架构及应用环境 1. ORACLE 实例——包括内存结构与后台进程 2. ORACLE 数据库——物理操作系统文件的集合 3. 了解内存 ...

  9. HW 研发体系机构的几个术语

    PDT(product development team)产品开发团队   类似于产品经理 程序员 --  PL -- PM  --开发代表 -- PDT LEADER --------------- ...

随机推荐

  1. MQTT---HiveMQ源代码具体解释(七)Netty-SSL/NoSSL

    源博客地址:http://blog.csdn.net/pipinet123 MQTT交流群:221405150 实现功能 依据用户配置的不同的Listener(TcpListener.TlsTcpLi ...

  2. bootstrap 学习笔记 轮播(Carousel)插件

    Bootstrap轮播(carousel)插件是一种灵活的响应式的向站点添加滑块的方式.除些之外,内容也是足够灵活的,可以是图像,内嵌框架,视频或者其他您想要旋转的任何类型的内容. 示例: 下面是不念 ...

  3. js中keydown和keypress的区别

    keydown和keypress这些事件是当一个对象具有焦点时进行按下或松开一个键时发生的. keydown在按下的时候返回键盘上的代码值,然后由TranslateMessage函数翻译成字符,并且由 ...

  4. unity3d对象的克隆

    对象克隆,需要有一个预制对象. 首先创建一个预制对象,将其命名为earth,并将材质包附着上去,如下图所示: 然后点住“earth”拖入Assets>Prefabs文件夹,此时earth文字变成 ...

  5. VMware配置网络的3种方式:NAT、Host-Only、Bridged

    网络常识: 1.网络中对电脑的访问是通过ip定位的 就好像我们的身份证号,可以唯一辨识一个人.ip是用来区分网络中的电脑的,因此同一网络(准确讲是“网段”)中,ip地址不能相同.如果同一网络中有相同的 ...

  6. C语言控制台打印3D爱心图案

    非常多程序猿都认为自己的编程工作十分的鼓噪乏味.一整天面对的都是一些写不完的代码和改不完的Bug.今天我们要给大家分享一些有趣的C语言代码,也许能够为你无聊的工作带来一丝乐趣. 这些代码能够完毕几个不 ...

  7. HTTP Cache怎样计算Age

    这里的Age指的是响应头Age.以下内容有部分翻译,也有部分自己的理解.欢迎讨论. 我们用now表示当前主机的当前时间,用request_time表示缓存发起请求的时间,用response_time表 ...

  8. 4~20mA模拟输出(电流环)应用笔记(转)

    https://zm12.sm-tc.cn/?src=http%3A%2F%2Fwww.aichengxu.com%2Fview%2F5397788&uid=d2f68cd7fd230c162 ...

  9. object-c全局变量

    跟c++一定,在.m里Obj*obj=NULL,在.h里extern Obj*obj 即可.

  10. 基于AngularJs + Bootstrap + AngularStrap 省市区联动实践

    什么是 AngularJs?网上一大堆资料,没能真正说明白. AngularJs 就是一个函数库,算不上一个框架,源码2万2千多行,提供了前端MVC的开发方式, 有双向绑定,指令等特性,这是具有革命性 ...