文章目录
- 一、基础知识
- 1、体系结构详解
- 2、Database Files 数据库文件
- 3、Database Other Files 其他数据文件
- 4、Dynamic Views 动态视图
- 5、Large Pool
- 6、DB Buffer Cache,DBWn
- 7、Configuring Tablespaces 配置表空间
- 8、Redo Log Buffer, LGWR
- 二、基础操作
- 1、查看数据库动态视图
Instance and Media Recovery Structures 实例和介质恢复结构
目标:
- 掌握与恢复相关的Oracle进程、内存结构和文件
- 了解检查点、重做日志文件和归档日志文件的重要性
- 掌握优化实例恢复的方法
一、基础知识
1、体系结构详解
- SGA
- Database buffer cache:用于存储从数据文件读取的块的内存区域。数据由服务器进程读取到块中,并由DBWn异步写入。
- Log buffer:包含要写入重做日志的更改数据的前后映像副本的内存
- Large pool:SGA中的一个可选区域,为备份和恢复操作、I/O服务器进程以及共享服务器和 Oracle XA的会话内存提供大量内存分配。
- Shared pool:存储SOL语句、PL/SOLprocedures和数据字典信息的解析版本
- Java pool:在服务器内存中用于Java虚拟机(JVM)中所有特定于会话的Java代码和数据。
- Background Processes 后台进程
- Database writer(DBWn):将脏缓冲区从数据缓冲区缓存写入数据文件。此活动是异步的。
- Log writer (LGWR):将数据从重做日志缓冲区写入重做日志文件
- System monitor(SMON):执行自动实例恢复。在空间段不再使用时恢复它们。根据设置的参数合并可用空间的连续区域。
- Process monitor(PMON):清理用于正常终止的用户进程的连接/服务器进程。执行回滚并释放失败进程所占用的资源。
- Checkpoint(CKPT):将数据文件和控制文件的标头与当前重做日志和检查点编号同步
- Archiver (ARCn)(optional):自动复制已标记为存档的重做日志的过程。
- User & Server Process 用户和服务器进程
- The User Process:用户进程是在用户启动工具(如SQL*Plus、Oracle Forms Developer、Oracle Reports Developer、Oracle Enterprise Manager等)时创建的。此进程可能位于客户端或服务器上,并为用户提供一个界面,用于输入与数据库交互的命令。
- The Server Process:服务器进程接受来自用户进程的命令,并执行步骤来完成用户请求。如果数据库不在共享服务器配置中,则在建立有效连接时,会在包含实例的计算机上创建服务器进程。
2、Database Files 数据库文件
Oracle数据库由以下物理文件组成(这些文件的格式都是二进制的):
- Datafiles:数据的物理存储。每个数据库至少需要一个文件。此文件存储系统表空间。
- Redo logs:包含更改数据的前后映像副本,用于恢复目的。至少需要两组。
- Control files:记录数据库的状态。物理结构和RMAN元数据
- Archive logs(optional):联机重做日志文件的物理副本。当数据库设置为存档日志模式时创建。用于恢复中。
3、Database Other Files 其他数据文件
- Initialization parameter file初始化参数文件:实例启动所需的存储参数,数据类型为TEXT
- Server initialization parameter file服务器初始化参数文件:存储实例启动所需的持久参数,数据类型为二进制
- Password file(optional)密码文件(可选):存储可以启动关闭并恢复数据库的用户的信息,数据类型为二进制
4、Dynamic Views 动态视图
Oracle服务器提供了许多标准视图来获取数据库和实例的信息。这些视图包括:
- V$SGA:查询共享池、日志缓冲区、数据缓冲区的实例大小和固定的内存大小(取决于操作系统)
- V$INSTANCE:查询实例的状态,如实例模式、实例名称、启动时间和主机名
- V$PROCESS:查询为实例创建的后台和服务器进程
- V$BGPROCESS:查询为实例创建的后台进程
- V$DATABASE:列出有关数据库的状态和恢复信息。它包括关于数据库名称、唯一数据库标识符、创建日期、控制文件创建日期和时间、最后一个数据库检查点和其他信息的信息。
- V$DATAFILE:列出数据库中包含的数据文件的位置和名称。它包括与文件编号和名称、创建日期、状态(在线或离线)、启用 (只读、读写)、最后数据文件检查点、大小和其他信息有关的信息。
5、Large Pool
- 可配置为SGA中的单独内存区域,用于:
- Oracle备份和恢复操作
- I/0服务器进程
- 共享服务器的会话内存
- 由LARGE_POOL_SIZE参数确定大小
大池用于从共享内存中分配顺序的I/0缓冲区。对于I/0从站和甲骨文备份和恢复,RDBMS分配的缓冲区大小为几百KB。
配置大型池可以防止RMAN与其他子系统争夺相同的内存。当您将DBWR_IO_SLAWS或BACKUP_TAPE_IO_SLAWS参数设置为模拟异步10时,恢复管理器(RMAN)将使用大池进行备份和恢复。如果这两个参数都未启用,那么甲骨文将从本地进程内存而不是共享内存分配备份缓冲区。因此,不使用大池。如果设置了LARGE_POOL_SIZE,那么甲骨文将尝试从大型池中获取内存。如果这个值不够大,那么甲骨文不会尝试从共享池中获取缓冲区。如果没有设置LARGE_POOL_SIZE初始化参数,那么甲骨文服务器将尝试从SGA中的共享池中分配共享内存缓冲区。
如果甲骨文无法获得足够的内存,那么它从本地进程内存中获得1/0缓冲内存,并向alert.log文件写入一条消息,指示同步I/0用于备份。
6、DB Buffer Cache,DBWn
- Function of the Database Buffer Cache 数据库缓冲区缓存的功能:
- 数据库缓冲区缓存是SGA中用于存储最近使用的数据块的区域
- 服务器进程从数据文件中读取表、索引和撤消段,并在需要时对缓冲区缓存中的数据块进行更改
- Oracle服务器使用最近最少使用 (LRU) 算法来确定哪些缓冲区可以覆盖,以适应缓冲区缓存中的新块。
- Function of the DBWn Background Process DBWn后台进程的功能:
- 数据库写入程序进程(DBWn)将脏缓冲区从数据库缓冲区缓存写入数据文件。它确保数据库缓冲区缓存中有足够数量的可用缓冲区(当服务器进程需要从数据文件中读取块时,可以覆盖的缓冲区)。
- 数据库编写器定期同步数据库缓冲区缓存和数据文件:这是在各种情况下触发的检查点事件。
- 虽然一个数据库写入进程对于大多数系统来说已经足够了,但是如果您的系统需要大量修改数据,您可以配置其他进程(DBW1到DBW9)来提高写入性能。这些额外的数据库写入进程在单处理器系统上是没有用的。
7、Configuring Tablespaces 配置表空间
表空间包含一个或多个数据文件。重要的是要谨慎地创建表空间,以提供灵活和可管理的备份和恢复策略。以下是表空间的非典型配置,考虑到备份和恢复操作的要求:
- System: 如果系统和用户数据包含在不同的表空间中,备份和恢复就更加灵活
- Temporary:如果包含临时段 (用于排序等) 的表空间丢失,可以重新创建它,而不是恢复它。
- Undo(重要):备份撤销表空间的过程与备份任何其他读/写表空间的过程完全相同。由于自动撤消表空间对于恢复和读取一致性非常重要,因此应该经常对其进行备份。
- Read-only data: 可以减少备份时间,因为只有在将表空间设为只读时才必须备份表空间。
- Highly volatile data高度易失性数据(重要):应该更频繁地备份该表空间,同时减少恢复时间
- Index data: 应该创建只存储索引段的表空间。通常可以重新创建这些表空间而不是恢复它们。
8、Redo Log Buffer, LGWR
- Function of the Redo Log Buffer 恢复日志缓冲区的功能:
- 重做日志缓冲区是一个循环缓冲区,它保存有关对数据库所做更改的信息。这些信息存储在重做条目中。
- 重做条目包含重建或重做INSERT、UPDATE、DELETE、CREATE、ALTER或DROPoperation对数据库所做更改所需的信息。恢复条目用于数据库恢复(如有必要)。
- 重做条目由Oracle服务器进程从用户的内存空间复制到重做日志缓冲区。
- Function of the LGWR Background Process LGWR后台进程的功能:
- 日志写入器 (LGWR) 将重做条目从重做日志缓冲区写入重做日志文件,如下所示:
- 重做日志缓冲区已满三分之一时
- 当超时发生时(每三秒钟)
- 当有1MB的重做
- 在DBWn将数据库缓冲区缓存中的修改块写入数据文件之前
- 当一个事务提交
- Redo Log Switches
- 在日志切换时,当前重做日志组被分配一个日志序列号,该日志序列号标识存储在该重做日志组中的信息,并且也用于同步。
- 日志切换发生在LGWR停止写入一个重做日志组并开始写入另一个重做日志组时
- 当LGWR填充了一个日志文件组时,将发生日志切换
- DBA可以使用ALTER SYSTEM SWITCH LOGFILE命令强制进行日志切换
- 在日志开关处自动发生检查点。
- 只要组中至少有一个成员可用,处理就可以继续。如果成员损坏或不可用,消息将写入LGWR跟踪文件和警报日志。
二、基础操作
1、查看数据库动态视图
此处对应基础知识的第4部分
连接数据库查看动态视图
SELECT * FROM V$SGA;
- Fixed Size:是固定的大小
- Variable Size:大小是可变的,包括了Large pool、Shared pool、Java pool等
- Database Buffers:用于存储从数据文件读取的块的内存区域,这部分一般比较大
- Redo Buffers:包含要写入重做日志的更改数据的前后映像副本的内存
SELECT * FROM V$SGASTAT;
查看其他动态视图的方法也是这样的,可以参考基础知识的第四部分查看其他动态视图