Oracle 第1章 Oracle入门
注意:本文使用的版本为Oracle 9i
1、技术目标
- 了解 Oracle 体系结构的各种组件
- 掌握 Oracle 中的基本用户管理
- 了解 Oracle 的工具
2、Oracle简介
- 对象关系型的数据库管理系统 (ORDBMS)
- 在管理信息系统、企业数据处理、因特网及电子商务等领域使用非常广泛
- 在数据安全性与数据完整性控制方面性能优越
- 跨操作系统、跨硬件平台的数据互操作能力
3、Oracle主要特点
- 支持多用户、大事务量的事务处理
- 数据安全性和完整性控制
- 支持分布式数据处理
- 可移植性
4、Oracle 9i 体系结构
数据库的体系结构是指数据库的组成、工作过程与原理以及数据在数据库中
的组织与管理机制,Oracle服务器提供开放、全面和综合的信息管理,它由
Oracle数据库 和Oracle实例 组成,如图:
- Oracle数据库:指数据的集合,该集合被视为一个逻辑单元
- Oracle实例:管理数据库的后台进程和内存结构的集合
5、Oracle的主要组件
先看一下组件结构图:
在接下来的小节中将逐一介绍各组件
6、什么是Oracle实例?
- Oracle实例是"后台进程"和"内存结构"的集合,必须启动实例才能访问数据库中的数据
- Oracle实例启动时,将分配一个"系统全局区SGA "并启动一系列的后台进程 ,每个后台进程会执行不同的任务,一个实例只能打开并使用一个数据库
7、什么是Oracle数据库?
Oracle数据库由文件组成,称为数据库文件,提供实际物理存储区。
Oracle数据库主要用于存储和检索信息,包含"逻辑结构 "和"物理结构 "
- 物理结构:包含数据库中的一组文件
- 逻辑结构:数据库创建后形成的逻辑概念
8、关于Oracle会话
- 会话是用户与 Oracle 服务器的单个连接
- 当用户与服务器建立连接时创建会话
- 当用户与服务器断开连接时关闭会话
9、Oracle实例的内存结构是什么?
Oracle实例的内存结构包含两个区 ,如图:
10、Oracle的系统全局区(SGA)
SGA (System Global Area)又称为共享全局区 ,是Oracle实例的一个
基本组件,数据库信息存储于SGA,由多个数据库进程共享,SGA是数
据库中占用服务器内存最大的一个区域,也是影响数据库性能的一个重
要指标,SGA按其作用不同分为:
- 共享池
- 数据缓冲区
- 日志缓冲区
10.1)共享池:
- 共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域
- 共享池由库缓存和数据字典缓存组成。
- 共享池的大小直接影响数据库的性能
10.2)数据缓冲区:
- 用于存储从磁盘数据文件中读入的数据,所有用户共享
- 服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度
- 数据缓冲区的大小对数据库的读取速度有直接的影响
10.3)日志缓冲区
- 日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。
- 日志缓冲区的日志数据达到一定数量时由后台进程将日志数据写入日志文件中
- 相对来说,日志缓冲区对数据库的性能影响较小
11、Oracle的程序全局区, PGA (Program Global Area)
- 包含单个服务器进程所需的数据和控制信息
- PGA是在用户进程连接到数据库并创建一个会话时自动分配的,保存每个与Oracle 数据库连接的用户进程所需的信息
- PGA为非共享区,只能单个进程使用,当一个用户会话结束,PGA释放
12、Oracle实例进程结构
Oracle实例进程结构图:
Oracle实例进程有几种不同的类型,
- 用户进程:在数据库用户请求连接Oracle服务器时启动(客户端程序)
- 服务器进程:在用户建立会话并连接Oracle示例时启动(服务端程序)
- 后台进程:在Oracle实例启动时启动(服务端程序)
12.1)用户进程
用户进程是一个需要与Oracle服务器进行交互的程序,当数据库用户运行一个
应用程序准备向数据库服务器发送请求时,即创建了用户进程,如果用户启动
SQL*Plus时,系统自动建立一个用户进程
12.2)服务器进程
服务器进程用户处理连接到该实例的用户进程的请求,用户建立与数据库的连
接时,即产生服务器进程,该进程为所连接的用户服务,服务器进程直接与
Oracle数据库交互,实现调用和返回结果。服务器进程可以处理多个用户请求
12.3)后台进程 ,如图:
为了充分发挥系统性能以及协调多个用户,Oracle使用了一些附加进程,称为
后台进程。这些进程在Oracle实例启动时自动启动,有5个必须的后台进程:
1.进程监控(PMON) :在用户进程出现故障时执行进程恢复,包括如下任务:
- 释放所有当前挂起的锁
- 回滚用户当前事务处理
- 释放用户当前使用的资源
- 重启已经死锁的调用进程和服务进程
2.系统监控(SMON) :在实例启动时执行实例恢复,包括3个步骤
- 前滚以恢复未写入数据文件但已记入联机日志文件的数据
- 打开数据库,以便用户能登录,访问数据
- 回滚未提交的事务处理
- 整理数据文件的自由空间
- 释放不再使用的临时段
3.数据写入进程(DBWR)
- 管理数据缓冲区,以便用户进程能找到空闲的缓冲区
- 将所有修改后的缓冲区数据写入数据文件
- 使用LRU(最近最少使用)算法将最近使用过的块保留在内存中
- 通过延迟写来优化磁盘I/O读写
4.日志写入进程(LGWR)
- 负责将日志缓冲区中的日志写入日志文件组,数据库在运行时,如果对数据
- 进行修改则产生日志信息,日志信息首先产生于日志缓冲区。此缓冲区按照
- "先进先出"的原则进行操作,当日志信息达到一定数量时,由LGWR进程将日志数据写入日志文件,通常有多个日志文件,日志写入进程以死循环的方式将数据写入文件
5.检查点(CKPT)
检查点(checkpoint,简写CKPT)用于保证所有修改过的数据缓冲区都被写入
数据库文件。在给定的时间内,检查点完成后,CKPT进程更新数据文件头和
控制文件,保存检查点信息,以保证数据库的同步。这是为了在数据库恢复时
只需要提供从上一个检查点以来的修改,确定开始恢复数据的位置
12.4)归档进程(ARCH)
归档进程(ARCH),在日志存满时将日志信息写到磁盘,用于
在磁盘故障时的数据库恢复。Oracle数据库有两种运行方式:
- 归档(ArchiveLog)方式 (数据库默认运行方式)
- 非归档(No ArchiveLog)方式
在非归档方式下,日志切换时直接覆盖以前的文件,不产生归档日志,
在归档方式下运行,日志切换之前,ARCH进程对已写满的日志文件进
行存档,即使在磁盘损坏的情况下,管理员也能将数据库恢复至故障发
生时的状态,当数据库运行在归档方式时ARCH进程才存在
13、Oracle物理组件
物理组件就是Oracle数据库所使用的操作系统物理文件,可分为三类:
- 数据文件用于存储数据库数据,如表、索引数据等
- 控制文件是记录数据库物理结构的二进制文件
- 日志文件记录对数据库的所有修改信息,用于故障恢复
14、Oracle逻辑组件
数据库的逻辑结构是从逻辑的角度分析数据库的组成。Oracle 的逻辑组件包括:
14.1)表空间
- 表空间是数据库中最大的逻辑单位,一个 Oracle 数据库至少包含一个表空间,就是名为SYSTEM的系统表空间
- 每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联
- 表空间的大小等于构成该表空间的所有数据文件大小之和
- 创建表空间的语法是:
create tablespace 表空间名
datafile '文件名' [size integer [K|M]]
[autoextend [OFF|ON]];
14.2)段
- 段是构成表空间的逻辑存储结构,段由一组区组成
- 按照段所存储数据的特征,将段分为四种类型:
数据段、索引段、回退段和临时段
14.3)区
- 区为段分配空间,它由连续的数据块组成。
- 当段中的所有空间已完全使用时,系统自动为该段分配一个新区
- 区不能跨数据文件存在,只能存在于一个数据文件中
14.4)数据块
数据块是Oracle服务器所能分配、读取或写入的最小存储单元
Oracle服务器以数据块为单位管理数据文件的存储空间
14.5)模式
- 模式是对用户所创建的数据库对象的总称 。
- 模式对象包括表、视图、索引、同义词、序列、过程和程序包等
15、Oracle网络配置
Oracle产品安装完成后,服务器和客户端都需要进行网络配置才能实现网络连接
服务器端配置监听器 ,客户端配置网络服务名 ,如图:
- 服务器端监听器配置信息包括监听协议、地址及其他相关信息,配置信息保存在名为listener.ora的文件中,在安装服务器软件时自动配置一个监听器
- 客户端的网络服务名配置信息包括服务器地址、监听端口号和数据库SID等,与服务器的监听器建立连接。配置信息保存在名为tnsnames.ora的文件中
- Oracle中的 Net Configuration Assistant和Net Manager工具都能用来配置监听器和网络服务名
16、Oracle的查询分析工具
SQL*Plus :Oracle最常用的工具之一,用于接受和执行SQL命令以及PL/SQL块
iSQL*Plus :可以执行能用SQL*Plus完成的所有任务,能通过浏览器访问它
PL/SQL :是SQL 的扩展,结合了SQL语言的数据操纵能力和过程语言的流程控制能力
Oracle企业管理器:
17、Oracle默认帐号
- SYS :数据库中所有数据字典表和视图都存储在 SYS 模式中,SYS用户主要用来维护系统信息和管理实例
- SYSTEM :是默认的系统管理员,该用户拥有Oracle管理工具使用的内部表和视图。通常通过SYSTEM用户管理数据库用户、权限和存储等
- SCOTT :Oracle 数据库的一个示范帐户,在数据库安装时创建
18、创建新用户
要连接到Oracle数据库,就需要创建一个用户帐户
每个用户都有一个默认表空间和一个临时表空间
- CREATE USER命令用于创建新用户
语法:
create user 帐号
identified by 密码
default tablespace 表空间
temporary tablespace 临时表空间;
19、授予权限
权限有两种类型,系统权限 和对象权限,
系统权限允许用户执行某些数据库操作,如创建表就是一个系统权限
对象权限允许用户对数据库对象(如表、视图、序列等)执行特定操作
角色是一组相关权限的组合,可以将权限授予角色,再把角色授予用户,
以简化权限管理
GRANT命令 可用于为用户分配权限 或角色
使用1: 为帐号设置CONNECT角色,允许用户连接至数据库
grant connect to 帐号;
使用 2: 为帐号设置RESOURCE角色允许用户使用数据库中的存储空间
grant resource to 帐号;
使用 3: 为帐号设置系统权限允许用户在当前模式中创建序列,此权限包
含在CONNECT角色中
grant create sequence to 帐号;
使用 4: 授予帐号操作表对象的权限
grant select on 表名 to 帐号;
使用 5: 允许用户更新表中的记录
grant update on 表名 to 帐号;
使用 6: 允许用户插入、删除、更新和查询表中的记录
grant all on 表名 to 帐号;
20、更改和删除用户
alter user 命令可用于更改口令
如, 修改帐号的密码 :
alter user 帐号 identified by 密码;
drop user命令用于删除用户
如,删除帐号
drop user 帐号 cascade;
21、使用Oracle数据库的开发流程
服务端开发流程:
客户端开发流程:
22、Windows中的Oracle服务:
1.OracleHOME_NAMETNSListener
该服务启动数据库服务器的监听器,监听器接受来自客户端应用程序的连接请求
若监听器未启动,则客户端将无法连接到数据库服务器
2.OracleServiceSID
该服务启动系统标识符为SID的数据库实例,其中 SID 是在安装 Oracle 9i 时输入的数据库名称
3.OracleHOME_NAMEAgent
Oracle企业管理器组件智能代理服务,此智能代理用于执行作业和监控 Oracle 服务或对象的性能
在使用Oracle管理服务器网络的环境中必须启动此服务
4.OracleHOME_NAMEHTTPServer
该服务用于启动Oracle HTTP服务器,它提供文档信息、基于Web的企业管理器和iSQL*Plus等服务
5.OracleHOME_NAMEManagementServer
该服务启动Oracle管理服务器,它用于维护管理控制台对各个被管理服务器节点之间的集中的、智能的和分布式的控制
该服务必须经过企业管理器配置向导配置完成后才创建
23、总结:
- Oracle 服务器由Oracle 数据库和 Oracle 实例组成
- Oracle 实例由系统全局区内存结构和用于管理数据库的后台进程组成
- Oracle 中用于访问数据库的主要查询工具有 SQL*Plus、iSQL*Plus 和 PL/SQL
- Oracle 企业管理器是用于管理、诊断和调整多个数据库的工具
- Oracle 中的 SYSTEM 用户和 SYS 用户具有管理权限,而 SCOTT 用户只有基本的权限
- Oracle 服务在 Windows 注册表中注册,并由 Windows 操作系统管理
Oracle 9i 的安装与卸载
Oracle 第2章 Oracle查询、数据类型、函数