commit --lgwr
- 事务相干的操作,保障事务的平安
checkpoint --dbwr
- 数据相干的操作,保证数据的平安
实例的复原 crash recovery
什么时候产生oracle实例复原
- shutdown abort
- 数据库异样down掉(机器死机,掉电)
从Redo的什么地位开始复原?
在某一点,在这一点之前的所有数据,Oracle都曾经胜利的写入到了磁盘上。
实例复原是一个主动的过程,不须要人工干预
实例复原产生在那个阶段?
–sql>startup nomount(读取spfle) ,没有实例复原。
–sql>alter database mount (读取管制文件),没有实例复原。
–sql>alter database open (查看管制文件,数据文件头),产生实例复原。
- 如果间接startup命令,会通过启动装载关上三个步骤。
SQL> shutdown abort;ORACLE 例程曾经敞开。SQL> startup;ORACLE 例程曾经启动。Total System Global Area 3307048960 bytesFixed Size 2180264 bytesVariable Size 1828719448 bytesDatabase Buffers 1459617792 bytesRedo Buffers 16531456 bytes数据库装载结束。数据库曾经关上。SQL> shutdown abort;ORACLE 例程曾经敞开。SQL> startup nomount;ORACLE 例程曾经启动。Total System Global Area 3307048960 bytesFixed Size 2180264 bytesVariable Size 1828719448 bytesDatabase Buffers 1459617792 bytesRedo Buffers 16531456 bytesSQL> alter database mount;数据库已更改。SQL> alter database open;数据库已更改。
oracle在关上数据库时(alter database open),会查看每个文件头上的信息(SCN),并同管制文件中相应的信息(SCN)比拟,如果不统一就进行实例复原。
实例复原的过程
- 前滚rolling forward
读取状态为current和active状态的日志(redo log),将产生crash时,没有来得及写磁盘的数据块,应用redo信息来复原。
- 关上数据库alter database open
- 回滚rolling back
将没有提交的事务进行回滚
<!--more-->
介质复原
当产生以下状况时,实例复原有效,须要进行介质复原:
- 数据文件失落,损坏。
- 在线日志文件(onlineredo)失落,损坏。
- 数据文件太旧(比方从一个备份集中恢复过来的文件。)
- 文件太新(比方,其它所有的文件都是从备份中恢复过来的)
数据损坏时根本都要进行介质复原
Oracle的备份形式
Rman(物理备份)--Recovery Manager
备份和还原数据库文件、归档日志和管制文件。它也能够用来执行齐全或不齐全的数据库复原。
Rman比较慢,雷同状况下个别应用Dataguard
Rman是是oracle数据库自带的一个备份工具,用Rman备份的步骤如下:
C:\Users\clg>sqlplus / as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on 星期二 3月 8 17:33:37 2016Copyright (c) 1982, 2010, Oracle. All rights reserved.连贯到:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> alter database open;数据库已更改。SQL> quit;从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options 断开C:\Users\clg>rman target /复原管理器: Release 11.2.0.1.0 - Production on 星期二 3月 8 17:34:10 2016Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.连贯到指标数据库: ORCL (DBID=1433387646)RMAN> backup database;启动 backup 于 08-3月 -16应用指标数据库管制文件代替复原目录调配的通道: ORA_DISK_1通道 ORA_DISK_1: SID=134 设施类型=DISK通道 ORA_DISK_1: 正在启动全副数据文件备份集通道 ORA_DISK_1: 正在指定备份集内的数据文件输出数据文件: 文件号=00001 名称=D:\APP\CLG\ORADATA\ORCL\SYSTEM01.DBF输出数据文件: 文件号=00002 名称=D:\APP\CLG\ORADATA\ORCL\SYSAUX01.DBF输出数据文件: 文件号=00003 名称=D:\APP\CLG\ORADATA\ORCL\UNDOTBS01.DBF输出数据文件: 文件号=00005 名称=D:\APP\CLG\ORADATA\ORCL\EXAMPLE01.DBF输出数据文件: 文件号=00004 名称=D:\APP\CLG\ORADATA\ORCL\USERS01.DBF通道 ORA_DISK_1: 正在启动段 1 于 08-3月 -16通道 ORA_DISK_1: 已实现段 1 于 08-3月 -16段句柄=D:\APP\CLG\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2016_03_08\O1_MF_NNNDF_TAG20160308T173510_CFX76H7L_.BKP 标记=TAG20160308T173510 正文=NONE通道 ORA_DISK_1: 备份集已实现, 通过工夫:00:00:35通道 ORA_DISK_1: 正在启动全副数据文件备份集通道 ORA_DISK_1: 正在指定备份集内的数据文件备份集内包含以后管制文件备份集内包含以后的 SPFILE通道 ORA_DISK_1: 正在启动段 1 于 08-3月 -16通道 ORA_DISK_1: 已实现段 1 于 08-3月 -16段句柄=D:\APP\CLG\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2016_03_08\O1_MF_NCSNF_TAG20160308T173510_CFX77M5Q_.BKP 标记=TAG20160308T173510 正文=NONE通道 ORA_DISK_1: 备份集已实现, 通过工夫:00:00:01实现 backup 于 08-3月 -16
如果这是备份表空间,能够用一下语句实现
SQL> select tablespace_name from dba_tablespaces;TABLESPACE_NAME------------------------------SYSTEMSYSAUXUNDOTBS1TEMPUSERSEXAMPLE已抉择6行。SQL> quit;C:\Users\clg>rman target /RMAN>RMAN> backup tablespace users;
这样就能够备份制订的表空间。
exp,expdp(逻辑备份)
–用户,数据库对象(表,分区...)
只读表空间+传递表空间
OLAP(Online Analytical Process)数据库的一种备份计划
Dataguard--重点
最简略的备份计划
- 备份主动
- 故障复原工夫十分短
毛病和限度
- 须要数据库归档(OLAP类型的数据库不合适归档)
- 对于海量数据不适合
Oracle的闪回技术--flashback
数据库的闪回
默认数据库的闪回是敞开的。
能够用以下命令查问看是否是开启的
select flashback_on from v$database;
能够用以下命令开启,倡议开启flashback
alter database flashback on;
基于SCN的闪回
个别不太容易晓得SCN,不易取得SCN
基于工夫的闪回
数据库闪回到具体工夫
表的闪回
system用户删除的table不进recyclebin,普通用户删除的table会进入recyclebin。具体如下:
SQL> show user;USER 为 "SYS"SQL> create table t1(id int);表已创立。SQL> drop table t1;表已删除。SQL> show recyclebin;SQL> SELECT * FROM RECYCLEBIN;未选定行/*可见回收站中并没有t1表*/SQL> conn liuyifei/a4852396已连贯。SQL> create table t1(id int);表已创立。SQL> drop table t1;表已删除。SQL> show recyclebin;ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME---------------- ------------------------------ ------------ -------------------T1 BIN$EqiCMfIYSHGQW4KrIX0Alg==$0 TABLE 2016-03-08:19:20:23SQL> flashback table t1 to before drop;闪回实现。SQL> desc t1; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER(38)
彻底删除表,不进入回收站的方法
SQL> drop table t1 purge;
对于回收站的材料如下:
http://www.jb51.net/article/34733.htm
DML操作的闪回
事务的闪回
版本的闪回
下面三种闪回前面在进行补充
以下是对于归档模式和非归档模式的常识:
归档模式转换为非归档模式:
查看数据库是否是归档模式:两种形式
SQL> select name,log_mode from v$database;NAME LOG_MODE--------- ------------ORCL NOARCHIVELOGSQL> archive log list;数据库日志模式 非存档模式主动存档 禁用存档起点 USE_DB_RECOVERY_FILE_DEST最早的联机日志序列 28以后日志序列 30
非归档模式转换为归档模式:
SQL>SHUTDOWN NORMAL/IMMEDIATE; 先down下数据 SQL>START MOUNT; 启动数据库实例到mount状态,但不要关上 SQL>ALTER DATABASE ARCHIVELOG; 设置数据库为归档日志模式 SQL>ALTER DATABASE OPEN; 关上数据库 SQL>archive log list; 确认数据库当初处于归档日志模式
个别设置数据库为归档日志模式时会呈现如下谬误:
ORA-00265: 要求实例复原, 无奈设置 ARCHIVELOG 模式
这是咱们能够依照如下步骤解决:
SQL> alter database archivelog;alter database archivelog*第 1 行呈现谬误:ORA-00265: 要求实例复原, 无奈设置 ARCHIVELOG 模式SQL> shutdown immediate;ORA-01109: 数据库未关上曾经卸载数据库。ORACLE 例程曾经敞开。SQL> startup restrict;ORACLE 例程曾经启动。Total System Global Area 3307048960 bytesFixed Size 2180264 bytesVariable Size 1828719448 bytesDatabase Buffers 1459617792 bytesRedo Buffers 16531456 bytes数据库装载结束。数据库曾经关上。SQL> shutdown immediate;数据库曾经敞开。曾经卸载数据库。ORACLE 例程曾经敞开。SQL> startup mount;ORACLE 例程曾经启动。Total System Global Area 3307048960 bytesFixed Size 2180264 bytesVariable Size 1828719448 bytesDatabase Buffers 1459617792 bytesRedo Buffers 16531456 bytes数据库装载结束。SQL> archive log list;数据库日志模式 非存档模式主动存档 禁用存档起点 USE_DB_RECOVERY_FILE_DEST最早的联机日志序列 30以后日志序列 32SQL> alter database archivelog;数据库已更改。SQL> archive log list;数据库日志模式 存档模式主动存档 启用存档起点 USE_DB_RECOVERY_FILE_DEST最早的联机日志序列 30下一个存档日志序列 32以后日志序列 32SQL> alter database open;数据库已更改。
记得帮我点赞哦!
精心整顿了计算机各个方向的从入门、进阶、实战的视频课程和电子书,依照目录正当分类,总能找到你须要的学习材料,还在等什么?快去关注下载吧!!!
朝思暮想,必有回响,小伙伴们帮我点个赞吧,非常感谢。
我是职场亮哥,YY高级软件工程师、四年工作教训,回绝咸鱼争当龙头的斜杠程序员。听我说,提高多,程序人生一把梭
如果有幸能帮到你,请帮我点个【赞】,给个关注,如果能顺带评论给个激励,将不胜感激。
职场亮哥文章列表:更多文章
自己所有文章、答复都与版权保护平台有单干,著作权归职场亮哥所有,未经受权,转载必究!