日期:2014-05-16  浏览次数:20940 次

Oracle数据库学习笔记(一)

?

?

Oracle的体系结构大体上分为两部分:Instance(实例)和Database(数据库)。

?

  • Instance(实例) :在Oracle Instance中主要包含了SGA以及一些进程(例如:PMON、SMON、DBWn、LGWR、CKPT等)。如果一个用户的进程连接到Oracle Server时,其实就是连接到Oracle Instance。在SGA中又包含了5大部件:Share Pool、Database Buffer Cache、Redo Log Buffer、Java Pool、Large Pool。
  • Database(数据库) :Database其实就是一堆文件组成的,主要是用于存储着数据,Database中主要包含三种类型的文件:Data Files、Control Files、Redo Log Files。

?

下面介绍几个Oracle重要概念:


Oracle Server(Oracle服务器)
????? Oracle Server又包含两部分:Oracle Instance和Oracle Database(Oracle Server是一个比较大的概念,我们通常说的Oracle服务器就是指的Oracle Server)。

?

?

Oracle Instance(Oracle实例)
????? Oracle Server用于管理数据,数据存储在Oracle Database中,其表现形式为存储在磁盘上的一堆文件,如果要去访问这堆文件,需要有一个媒介------Oracle Instance,Oracle Instance是访问Oracle Database的一种手段。
?????? 一个Oracle Instance对应一个且只能对应一个Oracle Database,而一个Oracle Database可以有多个Instance来访问他,也就是说Oracle Instance和Oracle Database是多对一的方式。一般情况下我们以一台机器上安装Oracle时都是以Instance和Database一对一的方式,但是在Oracle集群(Oracle RAC环境)的情况下他是多个Instance对应一个Database。

?

?

Oracle Instance有两部分组成:

?

  • Memory Structures(内存结构) :Memory Structures就是Oracle Instance中的SGA。
  • Background Process Structures(后台进程结构) :Background Process Structures就是指PMON、SMON、DBWR、LGWR、CKPT等后台进程。

Oracle Instance启动时就会启动一些Background Process并且分配内存,Oracle Instance是易于消失的。(相对于数据库文件来说,例如:一断电就没有了)。

?

Oracle数据库Connection & Session

?

Oracle Connection
????? Oracle中的Connection是指一个Oracle的客户端和后台的服务器建立的一个TCP连接,一定是Oracle客户端和后台的进程(Server Process)建立的TCP连接。

?

在Oracle Process中有三种类型:

?

  1. Background process(后台进程)他是Oracle Instance的基本组成部分
  2. Server process(服务器进程)其实Background Process和Server Process都是Oracle的后台进程。其中Background Process是专注于数据库核心服务的进程;而Server process是处理客户端和服务器之间连接的进程。
  3. User process(客户端进程) 客户端要与服务器连接,那么在客户端启动起来的进程就是User Process(例如:SQL*Plus、Toad等)。用户登录到Oracle Server就是User Process和Server Process建立Connection。

Oracle Session

?

?

????? Connection建立的过程其实就是首先建立TCP连接,Oracle对用户的身份进行认证、进行安全审计等等,当这些都通过后Oracle的Server Process才会允许客户端使用Oracle提供的服务,当Oracle的连接建立起来以后,就意味着开始了一个会话,当连接断开的时候这个回话就消失了。Session是和Connection相辅相成的。Session信息会存储在Oracle的Data Dictionary中。

?

下图为在Linux中启动Oracle Instance

?

输入一个【!】便可以切换到shell中。后续如果想返回sqlplus中输入【exit】即可。

通过Linux命令ps –ef可以查看Oracle进程(Oracle Instance)

?


Oracle Database(Oracle数据库)

?

?

????? Oracle Database其实就是一堆文件,这堆文件是一堆数据,他们是作为一个整体。Oracle Database包含三种基本的核心文件类型Data File、Control File、Redo Log File。

?

?

<