首页 数据库 mysql教程 Oracle教程:实例故障恢复

Oracle教程:实例故障恢复

Jun 07, 2016 pm 05:03 PM
o 数据库

调整实例恢复的持续时间:1.设置一些初始化参数影响恢复需要的refo log记录和数据块的数量;(新参数)FAST_START_MTTR_TARGET:指

MTBF:Mean-Time-Between-Failures两次故障之间的平均无故障时间
MTTR:Mean-Time-To-Recover故障恢复平均时间

故障分类:
1.SQL表达式引起的故障
BUG,非法数据,超过权限,配额限制
2.用户进程故障
断开连接,会话注销,用户进程BUG,PMON自动处理此故障
3.用户故障
人为清空、删除表
4.网络故障
断网
5.实例故障
断电,SMON进程处理此故障
6.介质故障
磁盘损坏,RMAN热备和dataguard容灾

内存结构
database buffer cache:存储从datafile中读取的blocks。数据由server process从数据文件读入database buffer cache,数据由DBWn进程从database buffer cache写入datafile;

redo log buffer:存储对数据库的任何改变,由LGWR写到redo logs

Large pool:可选组件,备份等需要使用的大内存

shared pool:存储已经解析的SQL表达式和PL/SQL过程,数据字典信息

java pool:存储java code和JVM

后台进程
DBWn(Database writer):把database buffer cache的脏数据(即已修改的数据)写到datafile。

LGWR(Log writer):把redo log buffer数据写到redo log files

SMON(System monitor):自动实例恢复,恢复临时段的空间当不再使用时,合并零散空间。

PMON(Process monitor):清理连接进程;回滚进程操作和资源。

CKPT(checkpoint) :把当前redo log信息同步到datafile和control files的头上。

ARCn(Archiver):可选,把redo logs自动复制到其他地方。

用户进程
连接数据库的程序进程,如:sqlplus

服务进程
接收用户进程请求,处理请求。专有服务进程和共享服务进程

数据库文件
Datafile:数据的物理存储,至少一个。
Redo logs:存储数据改变,至少2组。
Control files:记录了数据库的状态,物理结构,RMAN预处理数据
Archive logs :联机重做日志文件的物理备份。

initialization parameter file:Pfile文件,存储实例启动所需参数
Server initialization parameter file:SPfile文件,存储实例启动所需持久的参数,二进制文件。
Password file:存储能启动、停止和恢复数据库的特权用户的信息;二进制文件。可使用工具ORAPWD.EXE手工创建密码文件

动态视图
v$sga
v$sgastat
v$instance
v$process
v$bgprocess
v$database
v$datafile

large pool:用于Oracle备份和还原操作,I/O server processes,共享服务者(shared server)进程的会话内存。
配置large pool可以阻止RMAN在其它部件分配内存,RMAN用large pool进行备份和还原当你设置DBWR_IO_SLAVES或者BACKUP_TAPE_IO_SLAVES参数去模拟异步I/O时。如果2个参数都没设置,ORACLE会从local process memory分配备份缓冲区,而不是从shared pool。

如果large_pool_size参数被设置了,oracle会尝试去large pool获取内存。如果这个值不够大,oracle也不会尝试去shared pool获取缓冲区。如果没配置,oracle会分配共享内存缓冲区从shared pool。
如果orcle不能得到充足的内存,它就会从local process memory得到I/O缓冲区。而且会写信息到alert.log中,指出同步I/O被用于备份。

database buffer cache:用于存储大多数最近使用的数据块的区域,使用最近最少使用算法(LRU)去决定覆盖某些以用来容纳新的block。

DBWn:写修改过的数据到数据文件,以确保可以从datafile读取新的block到database buffer cache。周期性的同步database buffer cache和datafile(即把database buffer cache写回到datafile)。繁重的工作可配置20个DWBn进程,DBW0-DBW9,DBWA-DBWJ。

redo log buffer:是一个有对数据库改变信息的环形缓冲区,这些信息存储在redo entries。
redo entries包含需要重建或重做的信息,如INSERT、UPDATE、DELETE、CREATE、ALTER、DROP操作。redo entries用于数据库恢复,如果需要的话。redo entries被server process从用户内存空间复制到redo log buffer。

LGWR:当redo log buffer三分之一满,当每3秒,当有1MB的redo信息,当在DBWn写修改过的数据到数据文件之前,当commit时,写redo log file。

checkpoint position:恢复开始的地方,联机重做日志文件里的一个点。
它是checkpoint queue的第一个entry的开始标志。
例如:checkpoint这一点之前的redo log数据已被写到数据文件里。

checkpoint queue:内存中的队列链表。
checkpoint queue里的每个entry包含数据块的标识和与之相关的redo entry的信息。这样的一个entry被称为RBA(redo byte address)。DBWn读取checkpoint queue的一个entry写入数据文件后删除这个entry。

checkpoint的类型
FULL checkpoint:全checkpoint,把所有的buffer都写入数据文件。当shutdown normal,immediate,transactional和alter system checkpoint时发生。

Incremental checkpoint:增量checkpoint,周期性写,闲置时写。

partial checkpoint:部分checkpoint,,写表空间的脏数据。当alter tablespace begin backup和alter tablespace xxx offline normal。

CKPT:在检查点发生时通知DBWn进程去写datafile后,更新datafiles和control files的头去指出最近的checkpoint。每隔3秒,CKPT记录检查点队列里面的第一个entry的RBA信息到控制文件中。只有在日志切换的时候,CKPT才会更新数据文件的头,为了提高性能不会马上更新所有的头,而是“懒写”。日志切换时不会把所有的脏数据写到磁盘。

control file:二进制文件,它描述了数据库的结构,当数据库处于mount或open状态的时候它必须能被数据库服务器来写。它的名字取决于操作系统。没有这个文件数据库不能被mount。推荐配置最少2个控制文件放在不同的磁盘以减少控制文件丢失带来的影响。控制文件损坏一个数据库就不能工作。控制文件包含数据库名字、数据库创建的时间戳,恢复所需的同步信息、数据文件和联机重做日志文件的名字和位置、数据库的归档模式、当前log sequence number、RMAN的备份元信息。

archived log file:用作media recovery。当被设置为归档模式时,LGWR进程会等联机重做日志文件被归档后才继续工作。

ARCn:可选进程。当被启动时,它会把redo log files拷贝到指定的存储区域。这个进程对7*24数据库的备份恢复有很大的意见。当日志切换时,ARCn进程被触发,把最近没归档的redo log组的一个成员拷贝到指定位置。

数据库同步:
1.所有数据文件(除了离线与只读的)必须被同步后数据库才能被open。
2.同步是基于当前checkpoint number。
3.发现不同步,数据库使用redo log files改变的记录同步数据文件
4.redo log files自动被数据库服务器请求。

实例恢复:
1.判断数据文件是否同步;
2.利用redo log前滚:写redo log files最近一个checkpoint之后的数据(包括undo数据)到数据文件;
3.数据文件现在包含提交的和未提交的改变,数据库可以被open;
4.利用undo log回滚未提交的改变:删除datafile中未提交的数据;
5.至此所有数据都提交。
不像media recovery,crash recovery和instance recovery是自动的。crash recovery是所有实例都恢复,instance recovery是单实例恢复。

调整实例恢复的持续时间:
1.设置一些初始化参数影响恢复需要的refo log记录和数据块的数量;
(新参数)
FAST_START_MTTR_TARGET:指定恢复时间最大值,单位为秒。
(2个老参数)
LOG_CHECKPOINT_TIMEOUT:2次检查点发生间隔的时间。
LOG_CHECKPOINT_INTERVAL:增量检查点与最近写到redo log的块之间的redo log file块的数目。
2.控制redo log file的大小和refo log块的大小来影响checkpoint发生的频率;
3.用SQL表达式手动强制检查点发生
4.并行恢复

实例恢复视图v$instance_recovery;
实例恢复优化
1.前滚:采用并行块恢复策略,recovery_parallelism可以设置并行进程数。
2.回滚:采用急需和并发2种恢复策略,fast_start_parallel_rollback可以设置并行程度,false为不使用并行,low:回滚进程数为CPU数的2倍,high:回滚进程数为CPU数的4倍。
回滚对应的2个视图:v$fast_start_servers:并发进程的信息;v$fast_start_transactions:需要回滚的transaction信息。

linux

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 Jul 18, 2024 am 05:48 AM

苹果公司最新发布的iOS18、iPadOS18以及macOSSequoia系统为Photos应用增添了一项重要功能,旨在帮助用户轻松恢复因各种原因丢失或损坏的照片和视频。这项新功能在Photos应用的"工具"部分引入了一个名为"已恢复"的相册,当用户设备中存在未纳入其照片库的图片或视频时,该相册将自动显示。"已恢复"相册的出现为因数据库损坏、相机应用未正确保存至照片库或第三方应用管理照片库时照片和视频丢失提供了解决方案。用户只需简单几步

在PHP中使用MySQLi建立数据库连接的详尽教程 在PHP中使用MySQLi建立数据库连接的详尽教程 Jun 04, 2024 pm 01:42 PM

如何在PHP中使用MySQLi建立数据库连接:包含MySQLi扩展(require_once)创建连接函数(functionconnect_to_db)调用连接函数($conn=connect_to_db())执行查询($result=$conn->query())关闭连接($conn->close())

如何在PHP中处理数据库连接错误 如何在PHP中处理数据库连接错误 Jun 05, 2024 pm 02:16 PM

PHP中处理数据库连接报错,可以使用以下步骤:使用mysqli_connect_errno()获取错误代码。使用mysqli_connect_error()获取错误消息。通过捕获并记录这些错误信息,可以轻松识别并解决数据库连接问题,确保应用程序的顺畅运行。

如何在 Golang 中使用数据库回调函数? 如何在 Golang 中使用数据库回调函数? Jun 03, 2024 pm 02:20 PM

在Golang中使用数据库回调函数可以实现:在指定数据库操作完成后执行自定义代码。通过单独的函数添加自定义行为,无需编写额外代码。回调函数可用于插入、更新、删除和查询操作。必须使用sql.Exec、sql.QueryRow或sql.Query函数才能使用回调函数。

btc交易app怎么安装注册? btc交易app怎么安装注册? Feb 21, 2025 pm 07:09 PM

本篇文章将详细介绍如何安装和注册比特币交易应用。比特币交易应用允许用户管理和交易比特币等加密货币。文章逐步指导用户完成安装和注册过程,包括下载应用程序、创建账户、进行身份验证和首次存款。文章的目标是为初学者提供清晰易懂的指南,帮助他们轻松进入比特币交易的世界。

如何在 Golang 中将 JSON 数据保存到数据库中? 如何在 Golang 中将 JSON 数据保存到数据库中? Jun 06, 2024 am 11:24 AM

可以通过使用gjson库或json.Unmarshal函数将JSON数据保存到MySQL数据库中。gjson库提供了方便的方法来解析JSON字段,而json.Unmarshal函数需要一个目标类型指针来解组JSON数据。这两种方法都需要准备SQL语句和执行插入操作来将数据持久化到数据库中。

Go WebSocket 如何与数据库集成? Go WebSocket 如何与数据库集成? Jun 05, 2024 pm 03:18 PM

如何将GoWebSocket与数据库集成:设置数据库连接:使用database/sql包连接到数据库。将WebSocket消息存储到数据库:使用INSERT语句将消息插入数据库。从数据库检索WebSocket消息:使用SELECT语句检索数据库中的消息。

PHP 数据库连接陷阱:避免常见的错误和误区 PHP 数据库连接陷阱:避免常见的错误和误区 Jun 05, 2024 pm 10:21 PM

要避免PHP数据库连接错误,请遵循最佳实践:检查连接错误,变量名称与凭据匹配。使用安全存储或环境变量,避免硬编码凭据。使用完后关闭连接,防止SQL注入,使用准备好的语句或绑定参数。

See all articles