Oracle的概述(体系结构,物理结构,逻辑结构)
[font=Helvetica, Tahoma, Arial, sans-serif]一:Oracle的概述
[font=Helvetica, Tahoma, Arial, sans-serif]什么是Oracle[font=Helvetica, Tahoma, Arial, sans-serif]Oracle数据库是Oracle(中文名称叫甲骨文)公司的核心产品,Oracle数据库是一个适合于大中型企业的数据库管理系统。在所有的数据库管理系统中(比如:微软的SQL Server,IBM的DB2等),Oracle的主要用户涉及面非常广,包括:银行、电信、移动通信、航空、保险、金融、电子商务和跨国公司等。Oracle产品是免费的,可以在Oracle官方网站上下载到安装包,另一方面Oracle服务是收费的。
[font=Helvetica, Tahoma, Arial, sans-serif]Oracle的特点[font=Helvetica, Tahoma, Arial, sans-serif]-- 方便地从一种计算机配置移至另一种计算机配置上。[font=Helvetica, Tahoma, Arial, sans-serif]-- 支持大数据库、多用户的高性能的事务处理。
-- ORACLE遵守数据存取语言、操作系统、用户接口和网络通信协议的工业标准。
-- 实施安全性控制和完整性控制。
-- 支持分布式数据库和分布处理。
[font=Helvetica, Tahoma, Arial, sans-serif]Oralce的体系结构[font=Helvetica, Tahoma, Arial, sans-serif]Oracle体系结构决定了数据库如何 使用内存、 硬盘、cpu 和 网络
[font=Helvetica, Tahoma, Arial, sans-serif][i]Oracle Server 包括: One Oracle Instance / Several Oracle Database Files......[font=Helvetica, Tahoma, Arial, sans-serif]
[img]http://dl.iteye.com/upload/attachment/495009/50fc6537-7548-3e10-a1d9-54bf4f8ba659.jpg[/img]
[font=Helvetica, Tahoma, Arial, sans-serif]Oracle 数据库结构
[font=Helvetica, Tahoma, Arial, sans-serif]Oracle 数据库结构 包括:物理(Physical)结构,逻辑(Logical)结构[font=Helvetica, Tahoma, Arial, sans-serif]
[img]http://dl.iteye.com/upload/attachment/495016/a6afa916-2bb9-3bba-8238-7a7e64fa688b.jpg[/img]
[font=Helvetica, Tahoma, Arial, sans-serif]物理结构(Physical Structure)即 数据元素 在计算机中储存的 方法,又称计算机对数据的理解;Physical Structure 指数据库中的 操作系统文件的 集合,包含以下三种文件:
[font=Helvetica, Tahoma, Arial, sans-serif]数据文件(data file)[list]
[*]数据库中实际数据,数据包含在用户定义的表中,
[*]数据词典(data dictionary),
[*]数据修改以前的映象(before-images of modified Data)
[*]索引(indexes)
[*]其他类型的结构(other types of structures)。
[font=Helvetica, Tahoma, Arial, sans-serif]一个数据库中至少包含一个数据文件。-------------------------database 与 data files 关系
[font=Helvetica, Tahoma, Arial, sans-serif]数据文件的特性有:
1: 一个数据文件只能被一个数据库使用,但是一个数据库至少包含一个数据文件(data files)。[font=Helvetica, Tahoma, Arial, sans-serif]2:数据文件(Data File)具有自动扩展的特性,数据库空间不足时,呈现此功能。[font=Helvetica, Tahoma, Arial, sans-serif]3:一个或者多个数据文件(Data File)构成数据库的逻辑存储单元叫做表空间(tablespace).[font=Helvetica, Tahoma, Arial, sans-serif]
Redo logs(重作日志) :包含对数据库的修改记录,可以在数据失败后恢复。 一个数据需要至少两个重作日志文件(Redo logs)。
[font=Helvetica, Tahoma, Arial, sans-serif]Control files (控制文件) :包含维护和检验数据库一致性的信息。例如:控制文件用来检验数据文件(Data File)和重作日志文件(ReDo Logs)。一个数据库至少需要一个控制文件。[font=Helvetica, Tahoma, Arial, sans-serif]
[img]http://dl.iteye.com/upload/attachment/495053/fa48e0b6-0b82-3f8e-8f99-3afe2d53d55f.png[/img]
[font=Helvetica, Tahoma, Arial, sans-serif]
[img]http://dl.iteye.com/upload/attachment/495045/4ed950d6-79a9-3b84-8101-4c82acb4a227.png[/img]
[font=Helvetica, Tahoma, Arial, sans-serif]Parameter File(参数文件):定义 Oracle Instance 的 特征;它包含SGA 内存的大小。[font=Helvetica, Tahoma, Arial, sans-serif]PassWords File(口令验证文件):用来Verify & Seton 和Close Oracle Instance的用户;[font=Helvetica, Tahoma, Arial, sans-serif]Arichive log Files (存档重做日志文件)是重做日志的备份用以恢复数据;
[font=Helvetica, Tahoma, Arial, sans-serif]Logical Structure(逻辑结构)
[font=Helvetica, Tahoma, Arial, sans-serif]逻辑结构(在计算机语言中的映射),数据元素之间的逻辑关系,即:人对数据的理解,进而抽象的模型。它包括:tablespaces,segments,extends,data blocks.Oracle server 可以有条理的通过表空间以及段、区间、数据块控制磁盘空间。
[font=Helvetica, Tahoma, Arial, sans-serif]Tablespaces(表空间):Oracle Server 中的 数据 存储在 Tablespaces中:[font=Helvetica, Tahoma, Arial, sans-serif]-- 一个Oracle 数据库 能够 在逻辑上 分成 更小的逻辑区域 被称为 Tablespaces;[font=Helvetica, Tahoma, Arial, sans-serif]-- 一个Tablespace 只能同时属于 一个database(数据库);[font=Helvetica, Tahoma, Arial, sans-serif]-- 每一个Tablespace 包含 一个或多个 操作系统文件(Data files);[font=Helvetica, Tahoma, Arial, sans-serif]-- 一个Tablespace 可能包含 一个或多个 segments;[font=Helvetica, Tahoma, Arial, sans-serif]-- Tablespace 可以在 数据库(database)运行时 在线(online);[font=Helvetica, Tahoma, Arial, sans-serif]-- 除了SYSTEM tablespace 或 有活动回滚段的 tablespace ,tablespaces 可以被离线(offline);[font=Helvetica, Tahoma, Arial, sans-serif]-- Tablespaces 可以在读/写之间切换;
[font=Helvetica, Tahoma, Arial, sans-serif]Data Files(数据文件)[font=Helvetica, Tahoma, Arial, sans-serif]Oracle数据库 tablespace包含的 一个或多个文件叫做 数据文件(data files)。这些物理结构在oracle服务运行时与操作系统相配合。[font=Helvetica, Tahoma, Arial, sans-serif]-- 一个数据文件只能属于一个tablespace[font=Helvetica, Tahoma, Arial, sans-serif]-- Oracle 服务为 表空间(Tablespace)创建一个数据文件(data file),分配指定的磁盘空间再加上额外的一小部分开销...[font=Helvetica, Tahoma, Arial, sans-serif]-- 数据库管理员在数据文件(data files)创建后可以改变它的大小或者设置为根据需要自动增长;
[font=Helvetica, Tahoma, Arial, sans-serif]Segments(段)[font=Helvetica, Tahoma, Arial, sans-serif]Segments 是指 在Tablespace中 特定的逻辑储存结构分配空间;例如, 为表分配的所有存储空间就是就是一个segment...[font=Helvetica, Tahoma, Arial, sans-serif]-- 一个tablespace 可能包含一个或多个 segments;[font=Helvetica, Tahoma, Arial, sans-serif]-- Segments 不能跨越 tablespace,但是, 一个 segment 可以 跨越多个属于同一 Tablespace 的 data files 。[font=Helvetica, Tahoma, Arial, sans-serif]-- 每一个Segment 是由 一个或多个extends 构成;
[font=Helvetica, Tahoma, Arial, sans-serif]Extends(间)[font=Helvetica, Tahoma, Arial, sans-serif]-- 通过extends 给 Segments 分配空间[font=Helvetica, Tahoma, Arial, sans-serif]--一个或对个extends组成一个segment[font=Helvetica, Tahoma, Arial, sans-serif]--一个segment创建时,至少包含一个extend[font=Helvetica, Tahoma, Arial, sans-serif]--当segment 增长时,extends被加到segment[font=Helvetica, Tahoma, Arial, sans-serif]--DBA 可以手工为segment 增加 extends[font=Helvetica, Tahoma, Arial, sans-serif]--一个 extend 由一系列的Oracle blocks组成[font=Helvetica, Tahoma, Arial, sans-serif]一个extend不能跨越 datafile 但必须存放在data file中。
[font=Helvetica, Tahoma, Arial, sans-serif]数据块(data blocks)[font=Helvetica, Tahoma, Arial, sans-serif]Oracle Server 管理data file 存储空间的单位叫做 Oracle blocks or data blocks[font=Helvetica, Tahoma, Arial, sans-serif]Oracle 数据库最小的存储数据单位为 data blocks[font=Helvetica, Tahoma, Arial, sans-serif]Oracle data blocks 是 Oralce server存储 读 写的最小的存储单位[font=Helvetica, Tahoma, Arial, sans-serif]一个data block对应一个或分配给 data file的操作系统块[font=Helvetica, Tahoma, Arial, sans-serif]在Oracle数据库创建时,初始参数文件 db_block_size 确定 Oracle数据库 data block的大小[font=Helvetica, Tahoma, Arial, sans-serif]Data Block的大小应该为操作系统块得整数倍,以减少I/O量[font=Helvetica, Tahoma, Arial, sans-serif]Data Block的最大尺寸依赖于操作系统[font=Helvetica, Tahoma, Arial, sans-serif]
[img]http://dl.iteye.com/upload/attachment/495971/d17faea5-8002-31df-8058-74c94db9b80e.png[/img][font=Helvetica, Tahoma, Arial, sans-serif]Instance(实例)
[font=Helvetica, Tahoma, Arial, sans-serif]实例= 内存分配 + 一组后台进程[font=Helvetica, Tahoma, Arial, sans-serif]如果把Oracle比作一部汽车,instance 相当于汽车的发动机一样,启动oracle前提应该先启动instance.内存被分配了,进程才能被启动。[font=Helvetica, Tahoma, Arial, sans-serif]
[img]http://dl.iteye.com/upload/attachment/496014/32a9c3e8-bf2c-3ff2-9d4a-e7fec77c6001.jpg[/img]
Oracle Instance包含SGA内存结构和管理数据库的一些后台进程。Instance被看成使用各个操作系统的特定方法 instance 只能同时打开和使用一个Database。
[font=Helvetica, Tahoma, Arial, sans-serif]System Global Area (SGA 系统全局区)[font=Helvetica, Tahoma, Arial, sans-serif] SGA是存储数据库进程共享的数据库信息的内存区域。它包含Oracle Server数据和控制信息。分配在Oracle Server驻留在计算机虚拟内存中。SAG包含如下内存结构:
[font=Helvetica, Tahoma, Arial, sans-serif]共享池(shared pool)用来存储最近执行的SQL语句和最近使用的数据字典(data dictionary)的数据。这些SQL语句可能是被用户递交的也可能是存储过程调用。[font=Helvetica, Tahoma, Arial, sans-serif]
[img]http://dl.iteye.com/upload/attachment/496026/953a18dc-eedf-3772-adce-c9d980ff3658.jpg[/img]
[font=Helvetica, Tahoma, Arial, sans-serif]数据缓冲区(database buffer cache)用来存储最近从数据文件中读写过的数据。[font=Helvetica, Tahoma, Arial, sans-serif]
[img]http://dl.iteye.com/upload/attachment/496030/82cace19-f094-3bf7-acfb-f35885669673.jpg[/img]
重作日志缓冲区(redo log buffer)用来记录服务或后台进程对数据库的操作。[font=Helvetica, Tahoma, Arial, sans-serif]
[img]http://dl.iteye.com/upload/attachment/496032/5a2f8a06-8ada-3315-ab97-565a9be90655.jpg[/img]
[font=Helvetica, Tahoma, Arial, sans-serif]另外在SGA中还有两个可选的内存结构:[font=Helvetica, Tahoma, Arial, sans-serif]java pool 用来存储java代码[font=Helvetica, Tahoma, Arial, sans-serif]Large pool 用来存储与SQL直接相关的大型数据结构。例如:在备份和恢复是的数据拷贝。
[font=Helvetica, Tahoma, Arial, sans-serif]background Processes(后台进程)[font=Helvetica, Tahoma, Arial, sans-serif]Database Writer(DBWO)负责将数据的更改由 database buffer cache 写到data files.[font=Helvetica, Tahoma, Arial, sans-serif]Log Writer(LGWR)负责将数据更改由redo log buffer 写到 redo log files[font=Helvetica, Tahoma, Arial, sans-serif]System Monitor(SMON)检查数据库的一致性,必要的情况下,在数据库打开时执行恢复[font=Helvetica, Tahoma, Arial, sans-serif]Process Monitor(PMON)用户进程失败时,进程监控程序实现进程恢复。[font=Helvetica, Tahoma, Arial, sans-serif]The checkpoint Process(CKPT)负责更新数据库的控制文件(Control files)中的状态信息。在数据缓存永久写入数据库中。
[font=Helvetica, Tahoma, Arial, sans-serif]PGA(程序全局区)[font=Helvetica, Tahoma, Arial, sans-serif] PGA是内存中的区域,包含单个进程的数据和控制信息。每个服务器进程分配一个PGA,PGA由灭个服务器进程独占。当用户连接入Oracle数据库并建立会话时,Oracle分配PGA. 与SGA不同,PGA仅被一个程序使用。[font=Helvetica, Tahoma, Arial, sans-serif]
[img]http://dl.iteye.com/upload/attachment/496064/3b4bd484-9eda-3e95-8818-27843f3164b8.jpg[/img]
[font=Helvetica, Tahoma, Arial, sans-serif]Data Dictionary(数据词典)[font=Helvetica, Tahoma, Arial, sans-serif]什么是数据字典
数据字典是Oracle数据库的重要组成,是数据库中所有对象及其关系的信息集合。它由一组只读表组成。它包括:
• 数据库所有对象的定义(表,视图,索引,簇,同义词,序列 ,过程,函数,程序包,触发器)
• 空间的分配和使用状况
• 列的缺省值
• 完整性约束信息
• 用户的名字
• 已授予用户的角色和权限
• 用户访问或使用的审计信息等
[font=Helvetica, Tahoma, Arial, sans-serif]数据字典的作用
数据字典最重要的作用是作为分析阶段的工具。任何字典最重要的用途都是供人查询对不了解的条目的解释,在结构化分析中,数据字典的作用是给数据流图上每个成分加以定义和说明。换句话说,数据流图上所有的成分的定义和解释的文字集合就是数据字典,而且在数据字典中建立的一组严密一致的定义很有助于改进分析员和用户的通信。
2.3数据字典结构
– 基表
• 存放相关数据库信息的基础表
– 视图
• 汇总并显示存放数据字典基表中信息的视图
2.4数据字典所有者
– Oracle的sys用户拥有数据字典所有的基表和视图。任何Oracle用户都不能改变数据字典的任何数据。不能更新、插入、 删除。数据字典的改变会影响数据库的正常运行。
– 系统管理员需要严格管理系统用户.(sys and system)
3数据库和实例的启动和关闭
一个ORACLE数据库没有必要对所有用户总是可用,数据库管理员可启动数据库,以致它被打开。在数据库打开情况下,用户可存取数据库中的信息。当数据库不使用时,DBA可关闭它,关闭后的数据库,用户不能存取其信息。
数据库的启动和关闭是非常重要的管理功能,通过以INTERNAL连接到ORACLE的能力来保护。以INTERNAL 连接到ORACLE需要有下列先决条件:
该用户的操作系统账号具有使用INTERNAL连接的操作系统特权。
对INTERNAL数据库有一口令,该用户知道其口令。
另外:当用户以INTERNAL连接时,可连接到专用服务器,而且是安全连接。
3.1数据库启动
启动数据库并使它可用有三步操作:
启动一个实例;
装配数据库
打开数据库
1) 启动一个实例
启动一实例的处理包含分配一个SGA(数据库信息使用的内存共享区)和后台进程的建立。实例起动的执行先于该实例装配一数据库。如果仅启动实例,则没有数据库与内存储结构和进程相联系。[font=Helvetica, Tahoma, Arial, sans-serif]2) 装配一数据库
装配数据库是将一数据库与已启动的实例相联。当实例安装一数据库之后,该数据库保持关闭,仅DBA可存取。[font=Helvetica, Tahoma, Arial, sans-serif]3) 打开一数据库
打开一数据库是使数据库可以进行正常数据库操作的处理。当一数据库打开所有用户可连接到该数据库用存取其信息。在数据库打开时,在线数据文件和在线日志文件也被打开。如果一表空间在上一次数据库关闭时为离线,在数据库再次打开时,该表空间与它所相联的数据文件还是离线的。
3.2数据库和实例的关闭
关闭一实例以及它所连接的数据库也有三步操作:
1) 关闭数据库
数据库停止的第一步是关闭数据库。当数据库关闭后,所有在SGA中的数据库数据和恢复数据相应地写入到数据文件和日志文件。在这操作之后,所有联机数据文件和联机的日志文件也被关闭,任何离线表空间中数据文件夹是已关闭的。在数据库关闭后但还安装时,控制文件仍保持打开。
2) 卸下数据库
停止数据库的第二步是从实例卸下数据库。在数据库卸下后,在计算机内存中仅保留实例。在数据库卸下后,数据库的控制文件也被关闭。
3) 停止实例
停止数据库的最后一步是停止实例。当实例停止后,SAG是从内存中撤消,后台进程被中止。
3.3初始化参数文件
在启动一个实例时,ORACLE必须读入一初始化参数文件(initialization parameter file),该参数文件是一个文本文件,包含有实例配置参数。这些参数置成特殊值,用于初始ORACLE实例的许多内存和进程设置,该参数文件包含:
一个实例所启动的数据库名字;
在SGA中存储结构使用多少内存;
在填满在线日志文件后作什么;
数据库控制文件的名字和位置;
在数据库中专用回滚段的名字。
[font=Helvetica, Tahoma, Arial, sans-serif]Oracle导入、导出
Oracle的备份是Oracle操作中常见的工作,常见的备份方案有:逻辑备份(IMP&EXP命令进行备份)、物理文件备份(脱机及联机备份)、利用RMAN(Recovery Manager)的增量物理文件系统备份。ORACLE数据库的逻辑备份分为四种模式:表空间备份(tablespace)、表备份(table)、用户备份(user)和完全备份(full)。Oracle的逻辑备份是使用IMP&EXP命令进行数据导入导出的操作。使用EXP命令导出或者使用IMP命令导入时,需要Create Session系统权限,但是如果要导出其他的表,必须拥有权限:EXP_FULL_DATABASE。
调用导入导出命令时,首先要估计所需的空间。EXP命令导出的文件是二进制文件(*.dmp)只能由对应的IMP命令进行读取恢复。导入导出的用途是:
备份与恢复
Oracle平台更换:可以在相同版本之间进行备份与恢复,Oracle较低版本的export数据文件可以import到高版本的Oracle数据库中,但是Oracle的版本只能是相邻的,不能垮版本。