第1章 oracle的体系结构(一)

        毕业10年了,上学时oracle dba教程没好好学。现在回过头来看当时的教程,感觉收获满满。

       十多年的书,都没怎么翻过,很新的样子。废话不多说,记录一下总结体会。

1. 在数据库系统中什么是稀有资源?

        数据库系统中最宝贵的稀有资源是内存。为了高效地使用内存这种稀有资源,同时保证数据不丢失,oracle数据库管理系统引入了一个非常复杂的体系结构。

2. oracle服务器(server)的组成。

        服务器主要由 oracle实例oracle数据库 组成,还包括一些其他的关键文件、用户进程和服务器进程等。

3. oracle服务器的3种安装(使用)方式。

        1)基于主机方式。例如:直接使用服务器上的sql plus工具连接登录数据库。

        2)客户端-服务器(两层模型)方式。例如:个人计算机通过pl/sql 连接登录 oracle数据库。个人计算机和服务器2台电脑。开发和运维时,经常使用这种方式。

        3)客户端-应用服务器-服务器(三层模型)。例如:应用和数据库分离的web应用。用户通过浏览器(客户端)访问应用服务器,应用服务器通过数据库连接池获取数据库连接。我开发的java web项目基本上都是这种模型。

4. oracle体系结构的轮廓。

        体系结构图如下,还有当时上课划的重点

5. oracle 实例(instance)

        oracle 实例是一种访问数据库的机制,它由内存结构和一些后台进程组成。它的内存结构也称为系统全局去(system global area, SGA)。

        实例的5个必需后台进程:SMON、PMON、DBWR、LGWR和CKPT。其它的都是可选的。

        SGA包含以下几个内存结构:共享池(shared pool)、数据库高速缓冲区(database buffer cache)、重做日志缓冲区(redo log buffer) 和其他一些结构(如锁和统计数据)等。

6. oracle 引入实例的目的。

        为了高效地使用服务器资源(内存和硬盘等资源),同时保证系统意外崩溃数据不丢失(如果硬盘损坏了,也是有可能导致数据丢失的)。

7. oracle数据库(database)

        oracle 数据库是数据的一个集合,oracle吧这些数据作为一个完整的单位来处理。

        oracle数据库也称为物理(外存)结构,它为数据库信息提供了真正的物理存储,它由以下3类操作系统文件组成:

        1)控制文件(control files):包含了维护和数据库一致性所需的信息。

        2)重做日志文件(redo log files):包含了当系统崩溃后进行恢复所需记录的变化信息。

        3)数据文件(data files):包含了数据库中真正的数据。

8. oracle其他的几个关键文件。

        1)初始化参数文件(parameter files):定义了实例的特性,如系统全局区中一些内存结构的大小、DBWR的个数。

        2)密码文件(password files):包含了数据库管理员或操作员用户在启动和关闭实例所需的密码。

        3)归档重做日志文件(archived redo log files):是重做日志文件的脱机备份。在系统崩溃后恢复时可能需要这些文件。

9. 怎么建立与实例(instance)的连接。

        首先要确保实例已启动,通过oracle的startup命令启动后,SGA所有内存结构已生成,所有必需后台进程都已在内存中运行。此时才能与实例创建连接。

        默认情况下,我们都是使用的专用服务器连接(dedicated server connection)模式。用户进程和服务器进程是一对一的连接。

        然后用户启动一个工具(如:SQL*Plus 或者使用 java 的jdbc)与实例建立连接。该工具或者应用程序就被作为一个用户进程来执行。注意,用户进程是不能直接访问数据库(这里的数据库应该就是体系轮廓图中 daba base 框框内部分)的。

        如果用户名和密码都准确无误,那么就登陆数据库成功,oracle就在服务器锁运行的计算机上创建一个服务器进程。在这种连接下,该服务器进程只能为该用户进程提供服务,用户进程与服务器进程是一对一的关系。用户进程向服务器进程发请求,服务器进程对数据库进行实际的操作并把所得结果返回给用户进程。

        通俗来讲,会话(Session) 是通信双方从开始通信到通信结束期间的一个上下文(Context)。这个上下文是一段位于服务器端的内存:记录了本次连接的客户端机器、通过哪个应用程序、哪个用户登录等信息.
        连接(Connection):连接是从客户端到ORACLE实例的一条物理路径。连接可以在网络上建立,或者在本机通过IPC机制建立。通常会在客户端进程与一个专用服务器或一个调度器之间建立连接。
        会话(Session) 是和连接(Connection)是同时建立的,两者是对同一件事情不同层次的描述。简单讲,连接(Connection)是物理上的客户端同服务器的通信链路,会话(Session)是逻辑上的用户同服务器的通信交互。
        ORACLE中一个用户登录ORACLE服务器的前提,就是该用户具有ORACLE的 “CREATE SESSION”权限。ORACE允许同一个用户在同一个客户机上建立多个同服务器的会话,每个SESSION都代表了用户与服务器的一个交互。就像你用IE浏览器打开博客园网站,然后你再打开一个IE窗口,又打开一个博客园网站。两个IE窗口就相当于两个SESSION, 而物理链路就相当于连接(Connection)。后台进程PMON会每隔一段时间,就会检测用户连接状况,如果连接已断开,PMON会清理现场,释放相关的资源。

        在一条连接上可以建立0个、一个或多个会话。各个会话是单独而且独立的,即使它们共享同一条数据库物理连接也是如此。一个会话中的提交不会影响该连接上的任何其他会话。实际上,还可以有连接而无相应的会话。另外,一个会话可以有连接也可以没有连接。使用高级Oracle Net特性(如连接池)时,客户可以删除一条物理连接,而会话依然保留(但是会话会空闲)。客户在这个会话上执行某个操作时,它会重新建立物理连接。

        在专用服务器中,一个会话对应一个服务器进程(Process),如果数据库运行在共享服务器方式,一个服务器进程可以为多个会话服务。  可以参考ORACLE会话连接进程三者总结

10. 服务器进程和程序全局区(program global area, PGA)

       当Oracle创建一个服务器进程的同时,要为该服务器进程分配一个内存区,该内存区称为程序全局区(program global area,PGA)。与SGA不同,PGA是一个私有的内存区,不能共享,且只属于一个进程。它随着进程的创建而被分配,随着进程的终止而被回收。

       在专用服务器进程的配置情况下,程序全局区包括了一下结构:

1)排序区(sort area):用于处理SQL语句所需的排序。

2)游标状态区(cursor atate):用于指示会话当前所使用的SQL语句的处理状态。

3)会话信息区(session information):包括了会话的用户权限和优化统计信息。

4)堆栈区(stack space):包括了其他的会话变量。

       如果是共享服务器进程或多线程的配置,以上这些结构除了堆栈区外大部分都将存在于SGA中。如果有large pool,它们就会被存在于large pool 中,否则它们就会被存在于共享池中。

       这里有个概念要特别说明下。进程:一段在内存中正在运行的程序。使用的是狭义上的定义,并不是广义上的定义,广义定义进程是操作系统动态执行的基本单元。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值