《Oracle数据库从入门到运维实战》甘长春,孟飞|(epub+azw3+mobi+pdf)电子书下载

图书名称:《Oracle数据库从入门到运维实战》

【作 者】甘长春,孟飞
【页 数】 434
【出版社】 北京:中国铁道出版社 , 2021.01
【ISBN号】978-7-113-27363-7
【价 格】79.00
【参考文献】 甘长春,孟飞. Oracle数据库从入门到运维实战. 北京:中国铁道出版社, 2021.01.

图书封面:

图书目录:

《Oracle数据库从入门到运维实战》内容提要:

本书系统地介绍了Oracle体系结构,并在此基础上展开,讲解了SQL语言、用户权限和对象管理以及实践编译开发,最后介绍了Oracle数据库导入导出和闪回技术。

《Oracle数据库从入门到运维实战》内容试读

第1章Oracle体系结构

作为一个关系数据库产品,Oracle占据了关系数据库市场的最大份额。与同类产品(SQL SERVER、SYBASE ASE、MySQL等)比较,Oracle提供了一套独有的机制,确保用户快速、安全地访问数据库,同时确保数据库安全、稳定地运行。在用户的评价中,

Oracle具有性能稳定、运行高效等特点。

Oracle的特点是显而易见的,然而它的体系结构非常复杂。作为一名数据库管理员,为了使数据库高效、安全地运行,并且在出现故障时能够快速进行恢复等,了解Oracle的体系结构是必要的。

数据库中的数据是以文件的形式存储在磁盘上的,数据库就是指这些存储。数据库的数据文件是一个静态的概念,对数据库的访问则是一个动态的过程,必须通过数据库服务器来进行。数据库服务器不仅包括数据文件,还包括一组用来访问数据文件的内存结构和后台进程,这些内存结构和后台进程构成Oracle实例。换句话说,实例是区分不同数据库的唯一标识,是外部访问该数据库的入口及接口,它凌驾于整套数据库之上。

实例是Oracle体系结构中最重要的概念。除此之外,读者还应该了解数据在逻辑上和物理上的组织形式。

Oracle体系结构如图1-1所示。

Parameter

Instance(实例)

(参数文件制

SGA(系统全局区)】

Password

DataBase

Redo

e

Shared

Bunor Cache

Butfer

(回今文件)

(数据库

(日志

高速缓冲区)

缓神

ava池

Alert

(管报支件)

Background Proce0sses(后台进程)

Trace)

DBWO SMON PMON CKPTLGWRARCO

(限除文件)

(服务器进程

(外部表)

Redo

Datafile

Log

数据文件

Archive.Lo

(用泸进程)

®(归档日

文件)

图1-1

Instance(实例)包含SGA(系统全局区)和Background Processes(后台进程)两部分。SGA(系统全局区)则由Shared Pool(共享池)、DataBase Buffer Cache(数据库高

2|Oracle数据库从入门到运维实战

速缓冲区)、Redo Buffer(日志缓冲区)以及Java Pool(Java池)等构成。其中,Shared

Pool(共享池)与Server(服务器进程,主要是PGA,程序全局区)交互,而Server(服务器进程,主要是PGA,程序全局区)又与User(用户进程)交互。Background Processes

(后台进程)则由DBW0(数据库写进程)、SMON(系统监视进程)、PMON(监控和

管理进程)、CKPT(检查点进程)、LGWR(日志写进程)以及ARC0(归档进程)等

进程构成。其中,DBW0(数据库写进程)负责将内存数据写入Datafile(数据库物理数据文件);CKPT(检查点进程)与Control File(控制文件)交互;LGWR(日志写进程)负责将内存数据写入Redo Log File(重做日志文件);ARC0(归档进程)负责将Redo Log

File(重做日志文件)归档到Archive Log File(归档日志文件)。

除Oracle实例外,Oracle数据库还包含Parameter File(参数文件)、Password File(口令文件)、Alert File(警报文件)、Trace File(跟踪文件)以及External Tables(外部表)等辅助管理。

接下来详细介绍Oracle的体系结构。

1.1实例的体系结构

当用户访问数据库时,需要在操作系统中运行相关的应用程序,如SQL*Pls,启动用户进程。用户进程通过实例访问数据库。实例和数据库组成了数据库服务器,一个数据库服务器中至少有一个实例。在单机环境中,实例和数据库是一一对应的,一个实例

只能和一个数据库建立关联关系,一个数据库也只能被一个实例加载。在RAC环境中,

一个数据库可以对应多个实例,用户进程可以通过任何一个实例访问数据库。

在本节将主要介绍“实例的概念”及“实例的构成”。

1.1.1实例的概念

实例(Instance)是一组内存结构和后台进程的集合。当用户访问数据库时,在数据库服务器端首先要启动一个实例,在内存中分配一定的存储空间,并启动一些后台进程。内存空间的作用是存储与用户访问有关的重要数据,后台进程的功能是监视系统的运行状态,并负责在实例和数据库之间交换数据。在支持线程的操作系统中,这些后台进程以线程的方式运行。

用户访问数据库的操作是通过实例来完成的。实例通过后台进程与数据库中的文件进行交互,将用户修改过的或新增加的数据写入文件,而用户对数据的所有访问都是在实例的内存结构中进行的。引入实例的好处是显而易见的:数据位于内存中,用户读/写内存的速度要比直接读/写磁盘快得多,而且内存中的数据可以在多个用户之间共享,从而提高了数据访问的并发性。

第1章Oracle体系结构3

Oracle适用于大型的应用系统,如果有成千上万个用户同时访问数据库时,采用并发能力不强的数据库是件不可思议的事情。由此可见,Oracle的实例对于数据库的性能是多么的重要。

1.1.2实例的构成

当数据库服务器启动时,首先启动实例,然后加载并打开数据库。当用户访问数据库时,数据库服务器便为用户进程启动一个服务器进程,负责处理用户进程的所有请求,例如,将用户访问的数据从数据文件读到内存中。

在计算机的内存中不仅要存储数据库中的数据,还要存储数据字典的信息、重做日志以及经过解析的SQL代码等。实例中的这部分内存结构叫作系统全局区(System Global

Area,SGA)。

SGA是实例中最重要的组成部分,一个实例只有一个SGA。SGA中的数据可以在多

个用户进程之间共享。SGA由若干个缓存和缓冲池组成,不同类型的数据存储在不同的

缓存和缓冲池中。SGA的大小可以定制,通过在参数文件中为各个缓存和缓冲池分别指

定大小,可以确定SGA的大小。

用户对数据的操作实际上是在SGA中进行的,当启动数据库服务器时,首先启动实

例,然后数据库被打开。当用户进程向服务器进程发出请求时,服务器进程将用户请求

的数据读到SGA中,用户对数据的所有访问直接在SGA中完成,其他用户进程也可以

在SGA中访问相同的数据。当关闭实例时,未保存的数据写入数据文件中,SGA被撤销,

所有的数据从SGA中清除。

当用户访问数据库时,实例为用户进程启动一个服务器进程,并分配一段内存区,用来保存用户进程的私有信息和控制信息,这段内存区叫作程序全局区(Program Global

Area,PGA)。

SGA是所有用户进程共享的,只要实例被启动,无论是否有用户访问数据库,SGA

都存在。而PGA是用户进程私有的,当用户进程向数据库服务器发出请求时,实例为用

户进程分配PGA,当用户进程结束时,PGA自动释放。

由此可见,实例中的内存结构包括SGA和PGA两部分。SGA是所有用户共享的,

它在实例的运行过程中一直存在。严格地说,PGA并不属于实例,它是服务器进程的一

部分,是用户进程私有的,是一种临时的内存结构。Oracle允许成千上万个用户同时访问数据库,并提供了一种巧妙的机制来确保用户对数据的安全、高效访问。在Oracle实例中包含一组后台进程,它们负责完成复杂的数据访问和维护工作。在Oracle实例中可以

启动以下后台进程:SMON(系统监视进程)、DBWR(数据库写进程)、PMON(监控

和管理进程)、CKPT(检查点进程)、LGWR(日志写进程)、ARCH(归档日志进程)、

ECO(恢复进程)。其中有些进程是必须启动的,而另外一些是可选的。在默认情况下,

4|Oracle数据库从入门到运维实战

实例将启动SMON(系统监视进程)、DBWR(数据库写进程)、PMON(监控和管理进

程)、CKPT(检查点进程)、LGWR(日志写进程)和ARCH(归档日志进程)6个后

台进程(参照图1-1)。

实例的组成如图1-2所示。在接下来的几节中,本书将分别对实例的内存结构和后台进程进行详细的介绍。

wtne(实例)

系统全局区

arge Pool.大池

SGA

空闲内存

共享池

Library Cache

I/O细冲区

库高速缓存

User Global Area

共享5QL区

(用户全局区☒

私有SQL区

请求队列

Data Dictionary

Cache(数据字典高建

响应队列

知月

用在

流池

Server Result Cache

虚线框

(服务器结果缓存)

-AVA港

内为后

台进程

周定SGA

Database Buffer

Cache(敌据裤高速年存

虚线框内为数

会话

内存

据库Database

Reserved Pool洁果看军

私有SQ区

虚线框内为PGA

SQL工作区

Redo Log Buffer(日志摆冲区

客户端进程

服务器进程

在线日志

归档日志

闪回日志

致据文件

控制文件

图1-2

1.2实例的内存结构

当实例启动时,系统为实例分配了一段内存空间,并启动若干后台进程。内存空间分成不同的部分,分别用来存储不同的信息。具体来说,在这段内存空间中存储以下信息:

。程序代码:Oracle的可执行代码:

·缓冲数据:用户要访问的数据、重做日志等。这部分内存叫作SGA:

·与会话有关的信息;

·与进程间通信有关的信息,如加锁的信息。

在上述内存区域中,最重要的是SGA。SGA是由多个缓存和缓冲池组成的,在这些

内存结构中存储不同类型的数据。根据存储数据的类型,SGA中主要包含以下类型的内

第1章0 racle体系结构5

存结构:

。数据库高速缓存:。重做日志缓冲区:。共享池:

。Java池:

。大池。

其中,数据库高速缓存由许多缓冲区组成,共享池由数据字典缓存和库缓存两部分组成。在这里之所以使用了缓存和缓冲区两个概念,是因为它们来自不同的英文单词,缓存是从单词cache翻译过来的,而缓冲区来自单词buffer。.

当实例运行时,可以通过命令查看SGA的大小。SGA由不同的内存结构组成,所以

查看的结果是分别列出了不同组成部分的大小。例如,在SQL*Pus中执行SHOW命令

可以查看当前SGA的大小,如图1-3所示。

SQL>connect zgdt/zgdtezgdt已连接。

SGA更详细的信息可以从动态性能视图

SOL>show sga

vSsga、vSsgainfo、v$sgastat中获得。从这些视

Total Sustem Global Area 1071333376 bytes

Fixed Size

1375792 bytes

图中可以获得每种缓冲区和缓存的大小信息。

Variable Size

771752400 bytes

Database Buffers

293601280 bytes

下面开始介绍实例内存结构的“数据库高

Redo Buffers

4603904 bytes

SQL>

速缓存”“重做日志缓冲区”“共享池”“Java

图1-3

池”及“PGA(程序全局区)”。

1.2.1数据库高速缓存

数据库高速缓存是SGA中的一段存储区域,用来存放用户最近访问的数据。当用户

访问数据文件中的数据时,服务器进程首先查看这样的数据是否已经存在于数据库高速缓存中。如果是,则直接在数据库高速缓存对数据进行访问,并将处理结果返回给用户,这次数据访问叫作“命中”,这样的读操作称为“逻辑读(Logical Reads)”。否则,服务器进程将数据从数据文件的数据块中读到数据库高速缓存中,然后在数据库高速缓存对数据进行访问,这次数据访问叫作“未命中”,这样的读操作称为“物理读(Physical

Reads)”。显然,如果直接在数据库高速缓存访问数据,要比从数据文件中读数据快得多。所以,访问数据的命中率越高,数据库的性能就越高。对数据库进行性能优化的一个重要方面就是提高逻辑读在所有读操作中所占的比例。

数据库高速缓存的大小通过初始化参数DB CACHE SIZE来指定。提高数据访问命

中率最直接的方法是增加数据库高速缓存的大小,但它的大小不能无限制地增加,它要受到物理内存大小的限制。

用户访问的数据都存储在数据文件中,数据文件被划分为许多大小相同的数据块。数据块是Oracle进行读/写的基本单位,也就是说,即使用户只希望访问一个字节的数据,

···试读结束···

阅读剩余
THE END