目录
1. oracle的基本架构
实例:实例是一组oracle后台进程以及在服务器中分配的共享内存区域(也就是常说的sga+后台进程),实例是访问数据库的通道。
数据库:数据库是由固定的、基于磁盘的数据文件、控制文件、日志文件、参数文件和归档日志文件等组成的物理文件集合。
2. 传统架构和CDB架构图解
数据库(DATABASE)是一个数据集合,Oracle数据库都将其数据存放在数据文件中。在物理结构上,Oracle数据库必须的3类文件分别是数据文件、控制文件和联机Redo日志文件。在逻辑结构上,Oracle数据库由表空间、段、区和块组成。数据库名称由DB_NAME来标识。
实例(INSTANCE)是操作Oracle数据库的一种手段。它是由OS分配的一块内存(包括SGA和PGA)和一些后台进程(PMON、SMON、LGWR、CKPT、DBWn等)组成的。实例在启动时会读取初始化参数文件(SPFILE或PFILE),获取数据库运行时的参数的值。实例名称由INSTANCE_NAME来标识。
在Oracle 12c之前,一个数据库可以被1个实例(Single Instance,单实例)或多个实例访问或挂载(RAC,集群)。
从Oracle 12c开始,对于非CDB(non-CDB,非容器数据库)类型的数据库而言,它和Oracle 12c之前的数据库没有差别。但是,对于CDB(Container Database,容器数据库)类型的数据库而言,数据库和实例之间是多对多的关系。一个数据库实例可以对应多个数据库(CDB及CDB所包含的PDB(Pluggable Database,可插拔数据库)),一个数据库也可以被多个实例挂载,即CDB类型的数据库。在CDB中,一个实例将与整个CDB关联。如果同一个服务器上有多个数据库,则每个非CDB或CDB都具有各自单独的相异实例。实例不能在非CDB和CDB之间共享。
11g体系架构图:
12体系架构图:
3. 存储结构
逻辑存储结构
oracle逻辑存储结构是一种层次结构,主要由表空间、段、区、块组成
3.1 块
块(BLOCK)是Oracle逻辑存储结构中个头最小的存储单元,所有数据的存取都是以块为单位进行的。
oracle数据块通常是操作系统块的整数倍,oracle数据块有一定的标准大小。初始化参数文件中有一个参数叫DB_LOCK_SIZE,设置数据块的大小。
3.2 区
数据区(Extend,数据扩展区)是一组连续的块构成的存储结构,一个或多个数据块组成一个区,一个或多个区在组成一个段(Segment)。当一个段中的所有空间被使用完后,oracle将自动为该段分配一个新的数据区.
一个oracle对象至少包含一个区,如在设置一张表或索引的存储参数中包含了区的大小
3.3 段
段(Segment)是一个或多个数据区构成的,它不是存储空间的分配单位,而是一个独立的逻辑存储结构,用于存储表、索引或簇等占用空间的数据对象,oracle也把这种占用空间的数据对象统称为段。
段是为特定的数据对象(如表、索引、回滚等)分配的一系列数据区。段包含的数据区可以不连续,并且可以跨越多个文件,使用段的目的时保存特定对象。
一个段只属于一个特定的数据对象,每当创建一个具有独立段的数据对象时,oracle就会为它创建一个段。但往往表没那么单纯,比如表上经常会有主键约束,那么就会有索引,索引有索引 段,还有分区表,每个分区会有独立的段,再有就是 Oracle 的大对象, 如果你的表里引用 blob,clob,那么这个表就又被分出多个段来。
延迟段:顾名思义,创建表的时候并不马上建立相应的段。
3.4 表空间
表空间将相关的逻辑结构(如段、区等)组合在一起,表空间是数据库的最大逻辑划分区域,通常用来存放数据表、索引、回滚段等对象,任何数据对象在创建时都必须指定存储在某个表空间上。
表空间(逻辑存储结构)与数据文件(物理存储结构)相对应,一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间。
物理存储结构
数据文件
控制文件
在线日志文件
重做日志文件
参数文件
密码文件
4. 数据库启动关闭过程
4.1 实例和数据库启动概述
4.2 实例是如何启动的
注:创建数据库是指:以命令的方式创建数据库
4.3 数据库是如何装载的
注:数据库恢复的操作有:热备恢复、冷备恢复
4.4 数据库是如何打开的
4.5 数据文件检查
4.6 只读模式
4.7 数据库和实例关闭概述
shutdown abort
shutdown immediate
shutdown normal
5. Oracle数据库架构
5.1 Oracle 单实例
5.2 Oracle DG
DG基本原理是:
将日志文件从 原数据库传输到目标数据库,然后在目标数据库上应用这些日志文件,从而使目标数据库与源数据库保持同步,是一种数据库级别的高可用方案。
5.2.1 DG
5.2.2 ADG
5.3 OGG
OGG原理
OGG是一种基于日志的结构化复制软件,通过捕捉源数据库online redo log(在线重做日志)或archive log(归档日志)获得数据变化,形成tail(队列文件),再把这些tail文件通过网络协议传输到目标数据库,目标端通过解析,插入至目标端数据库,从而实现源端与目标端的数据同步。
5.4 Oracle RAC
什么是Oracle RAC?
Oracle Real Application Cluster (RAC,实时应用集群)用来在集群环境下实现多机共享数据库,以保证应用的高可用性;同时可以自动实现并行处理及负载均衡,并能实现数据库在故障时的容错和无断点恢复。它是oracle数据库支持网络计算环境的核心技术。
6 RMAN 备份恢复
RMAN (Recovery Manager)是 Oracle 恢复管理器的简称,是集数据库备份(Backup)、还原(Restore)和恢复(Recover)于一体的Oracle数据库备份与恢复工具。它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及 Spfile 参数文件,RMAN备份是一种物理的备份,它直接去读取数据块,因此 rman 是块级别的备份。从备份的那个时间点开始RMAN 将锁定此刻的数据文件信息,也就是说只备份数据文件到此刻的信息为止。
6.1 RMAN 备份类型
备份集:
备份集( Backup Set)是 Orac1e 默认的备份类型,把数据文件中已经使用过的数据块备份到一个或多个文件中,这样的文件叫做“备份片”,所有备份出来的文件组合成为“备份集”。备份集与备份片的关系类似于表空间与数据文件的关系,备份集是一个逻辑概念,将备份片(物理文件)逻辑地组织在一起。一般来说一个通道会产生一个备份集,比如启动了 3 个通道,那么每个通道负责生成一个备份集,不过如果启动了控制文件自动备份,那么控制文件所在的备份文件会单独生成一个备份集,不会与数据文件备份集合并在一起。如果在备份时指定了每个备份集中包含的数据文件个数(通过filesperset设置),那么即便只有一个通道,也有可能生成多个备份集。
备份片( Backup Piece):每个备份片是一个单独的输出文件。一个备份片的大小是有限制的,如果没有大小的限制,备份集就只由一个备份片构成。备份片的大小不能大于你的文件系统所支持的文件的最大值,最大值可以通过 maxpiecesize 设置。
其中在进行控制文件备份以后,会出现一个独立备份集。控制文件和数据文件不能放在同一个备份集里,因为数据文件所在的备份集以 Orac1e 数据块为最小单位,而控制文件所在备份集是以操作系统块作为最小单位。同样的,归档日志文件所在的备份集也是以操作系统块为最小单位,所以归档日志文件备份集和数据文件备份集不能在同一个备份集里面。
镜像副本:
镜像副本( Image Copy)与手工系统拷贝备份数据文件类似,是一个数据文件生成一个镜像副本文件(数据库数据文件、归档重做日志或者控制文件的精确副本),不同的是这个过程由 RMAN 完成,RMAN 复制的时候也是一个数据块一个数据块( Orac1e Block)地复制,同时默认检测数据块是否出现物理损坏(默认不会进行逻辑损坏检查,需要手工启动),且不要将表空间置为 begin backup 状态,与备份集类型
不同在于生成的镜像副本中包含使用过的数据块,也包含从来没有用过的数据块。生成镜像副本的好处在于恢复速度相对备份集来说更快,恢复时可以不用拷贝,指定新位置即可。
备份集和镜像副本的区别:
镜像副本是与数据文件( Data file)、控制文件( Control File)或归档重做日志文件(ArchivedLog)完全一致的副本。用户可以使用操作系统工具或 RMAN 创建镜像副本,也能够使用操作系统工具或RMAN 直接利用镜像副本恢复数据库,而无须任何额外处理。备份集是由被称为备份片的一个或多个物理文件构成的,其格式为 RMAN 自有格式。备份机与镜像副本的区别在于,备份集内可以包含多个数据文件,且备份过程中可以进行特殊处理,例如压缩或增量备份( Incremental Backup)等。备份集必须使用 RMAN 来恢复。
6.2 RMAN catalog
为什么要使用catalog
1.因为nocatalog下,rman的备份信息是写在控制文件中的,若是控制文件损坏或丢失,代表着rman的备份信息也就丢失了。
2.因为rman的备份信息是写在控制文件中的,存放时间受CONTROL_FILE_RECORD_KEEP_TIME参数的影响,若是在CONTROL_FILE_RECORD_KEEP_TIME期间备份信息过多,也会导致控制文件不断增大。控制文件也会影响数据库的性能。
catalog的作用
当我们使用一个数据库作为catalog,那么我们可以将其他的数据库实例注册到上面,使得我们的备份信息保留到该catalog里面。catalog可以为多个数据库存放rman的备份信息。
6.3 rman几种恢复方式
1、丢失数据文件,进行完全恢复
RMAN>startup mount;
RMAN>restore database;
RMAN>recover database;
RMAn>sql 'alter database open';
2、丢失重做日志文件,进行不完全恢复
SQL>startup mount;
SQL>recover database until cancel;
SQL>alter database open resetlogs;
3、丢失数据文件、控制文件和重做日志文件,进行不完全恢复
RMAN>startup nomount;
RMAN>restore controfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;
4、丢失初始化文件、控制文件数据文件和重做日志文件,进行不完全恢复
SQL>startup nomount pfile='D:\oracle\product\10.2.0\db_1\admin\orcl\pfile\init.ora.27201414210'; #pfile的路径
RMAN>restore spfile from autobackup;
SQL>shutdown immediate;
SQL>startup nomount;
RMAN>restore controlfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;