Oracle高级培训 第3课 学习笔记

 
Oracle高级培训 第3课 学习笔记
本课笔记中的页码与《Oracle9i 数据库管理基础II Ed 1.1 Vol.1.pdf》对应
指南下载地址:
 
作者:JackYang (JackYang.sh@gmail.com)
日期:2006-10-10
 
本课包含多个实验,目前还未通过上机验证。
P295
用户管理的备份
RMAN Recovery Manager
 
备份恢复的2种方法:
1.         用户管理的备份恢复
能够说明备份和恢复的原理,无法实现增量备份。
2.         RMAN
可实现增量备份。
 
P297
术语
1.         整体数据库备份(整体备份),对数据库的所有数据文件和控制文件进行备份。无论数据库是打开的还是关闭的,都可以执行整体备份。
2.         部分备份,仅备份一部分数据文件、一部分控制文件或一部分表空间。
3.         一致备份,在数据库安全关闭(使用NORMAL、IMMEDIATE或TRANSACTIONAL选项关闭)后进行的整体备份。
还原后不需要恢复。
特点:所有的数据文件和控制文件的SCN相等。
无论归档模式还是非归档模式,一致性备份都有用。
4.         不一致备份,如果数据库打开并可操作,数据文件的标头(SCN)将与控制文件不一致,除非数据库是以只读模式打开的。如果使用ABORT选项关闭数据库,这种不一致性将一直存在。这两种状态下的数据库备份称为不一致备份。
还原后需要恢复,才能使数据库进入一致状态。
特点:所有控制文件和数据文件的SCN不一致。
归档模式下,不一致备份有用。
非归档模式下,不一致备份无用,不能用于恢复。
 
P299
用户管理的备份和恢复
用户的恢复要用OS命令
 
使用RMAN,无论备份和恢复都用RMAN自带的命令。
 
P300
获得数据库文件信息
对每个数据库进行备份,查询下列视图可以知道数据文件和控制文件在哪里:
V$DATAFILE
V$CONTROLFILE
V$LOGFILE
DBA_DATA_FILES
 
P303
数据库工作在非归档模式下,数据库安全关闭(除SHUTDOWN ABORT)后的备份才有用。
数据库工作在归档模式下,数据库无论打开还是关闭时做的备份,都有用。
 
 
P304
数据库打开情况下,无法得到一致性备份(也称为一致的整体数据库备份或关闭的数据库的备份)。只能在数据库关闭情况下得到。
参数文件和口令文件最好也备份。
 
 
P305
一致的整体数据库备份的优点:
1.         概念上简单易懂;
2.         易于执行;
3.         几乎不需要交互操作;
 
P306
一致性整体数据库备份的缺点:
1.         数据库损坏后,只能恢复到上一次完全一致的整体数据库备份时的状态;
 
P307
一致的整体数据库备份的方法
备份的文件包括:数据文件、控制文件、重做日志文件、口令文件和参数文件。
 
P309
处于打开状态的数据库的备份
条件:
1.         一定要在归档模式下备份
2.         所有归档重做日志文件一定要存在
3.         联机的重做日志文件不可备份
 
注意:千万不要备份联机重做日志文件。联机重做日志文件不允许备份。
 
 
P310
处于打开状态的数据库的备份的优点:
1.         保持较高的数据库可用性;
2.         可以在表空间级或数据文件级进行备份;
3.         支持业务活动不中断;
4.         能备份到故障发生时刻,不损失任何数据;
 
非归档模式下,必须备份所有文件;
归档模式下,可以知备份一个表空间或一个数据文件;
 
 
P313
进行联机表空间的备份的2条备份命令:
1.         SQL> ALTER TABLESPACE users BEGIN BACKUP;
使表空间的users进入备份状态。所有对这个表空间的修改不进入数据文件,而是进入重做日志文件。而且是一个block一个block的进入。
所以,备份完要尽快结束,不然,重做日志的数据增长飞快。
平时,数据文件是一个block一个block的写入,重传日志文件是一条一条的写入。
 
2.         SQL> !cp /.../users01.dbf /BACKUP/users01.dbf
 
ORACLE 9.2以后多了ALTER DATABASE BEGIN BACKUP; 命令
 
P314
结束联机表空间的备份
SQL> ALTER TABLESPACE users END BACKUP;
 
 
P315
通过以下动态视图查询备份状态信息:
V$BACKUP            查看数据文件是否处在备份状态
V$DATAFILE_HEADER
 
 
P318
结束联机备份命令
查询V$BACKUP以检查备份状态
Oracle9i中使用以下命令:
SQL> ALTER DATABASE END BACKUP;
 
 
实验一:
实验目的:关闭状态下,一致的整体数据库备份。
1.         启动OracleServiceDB0服务;
 
2.         D:/lab10g> SET ORACLE_SID=DB0
 
3.         D:/lab10g> sqlplus /nolog
 
4.         SQL> connect sys/ora123 as sysdba
 
5.         SQL> startup
 
6.         SQL> archive log list
       查看数据库是否在归档模式下,默认进入非归档模式。
 
7.         SQL> column name format a35
 
8.         SQL> column member format a35
 
9.         SQL> select name from v$controlfile;
 
10.     SQL> select name from v$datafile;
 
11.     SQL> select name from v$tempfile;
 
12.     SQL> select name from v$logfile;
执行这些select查询,是为了看一下文件在哪里,确保不备份错。
 
13.     SQL> shutdown immediate
 
14.     SQL> host copy E:/ora01g/oradata/db0/*.dbf E:/backup/db0/cold
数据库关闭状态下的备份叫冷备份
 
15.     SQL> host copy E:/ora01g/oradata/db0/*.ctl E:/backup/db0/cold
 
16.     SQL> host copy E:/ora01g/oradata/db0/*.log E:/backup/db0/cold
 
 
实验二:
实验目的:数据库打开状态下的备份,前提是在归档模式下进行备份。
1.         SQL> startup mount
 
2.         SQL> archive log list
 
3.         SQL> ALTER DATABASE ARCHIVELOG;
       进入归档模式;
 
4.         SQL> ALTER DATABASE OPEN;
       数据库从mount状态进入open状态
 
5.         SQL> ALTER SYSTEM ACHIVE LOG CURRENT;
       手工归档,在db0/arc 路径下生成归档文件。
 
6.         SQL> ALTER DATABASE BEGIN BACKUP;
 
7.         SQL> select * from v$backup;
查看数据文件是否进入备份状态。
 
8.         SQL> select name.file#.status from v$datafile;
       文件号1,2,3分别是不同的数据文件。
 
9.         SQL> host copy E:/ora01g/oradata/db0/*.dbf E:/backup/db0/hot
 
10.     SQL> ALTER DATABASE END BACKUP;
 
11.     SQL> select * from v$backup;
 
12.     SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
 
13.     SQL> ALTER DATABASE BACKUP controlfile to ‘E:/backup/db0/hot/con1.vtl’ reuse;
       把控制文件备份成二进制文件。
       注意:每次备份结束,要马上做一次强行归档。因为下一次利用备份恢复时一定要用到归档。
       控制文件还有一种备份方法是备份成脚本文件。在/db0/udump/db0_ora_3680.TRC,其中的create controlfile语句,可以重建控制文件。
       controlfile的两种备份方法恢复起来的差别很大。
 
14.     SQL> ALTER DATABASE BACKUP controlfile to trace;
注意:不要备份(联机重做日志文件)redo log file
 
 
P320
只读表空间备份
只读表空间的SCN不变,只读表空间不参加集体备份。
表空间进入只读状态时,马上对只读表空间进行一次备份;
表空间处于只读状态下,不再做备份;
一旦表空间回到读写状态,重新加入集体备份;
 
P321
控制文件也需要备份
控制文件的特点是数量多,但个头小。
 
凡是数据库的数据结构一改,立刻备份控制文件。控制文件反映数据库最新的改变状态。
 
数据库发生物理或逻辑改变,会导致数据库的数据结构发生改变。
如:增加表空间、增加数据文件、移动数据文件、创建表空间等。
 
P322
记录与不记录选项的比较
记录,LOGGING模式,缺省的
不记录,NOLOGGING模式,速度快,重做日志只记录最少量内容,适合大量数据写入。
 
P323
手动备份控制文件
创建二进制映像的命令如下:
SQL> ALTER DATABASE BACKUP CONTROLFILE TO ‘control1.bkp’;
 
创建文本跟踪文件(脚本文件)的命令如下:
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
 
P324
会更改数据库配置并导致控制文件更改的命令列表。
执行列表中任何一条命令后,都需要备份控制文件。
 
P325
备份初始化参数文件
 
P326
使用DBVERIFY实用程序验证备份
DBVERIFY实用程序的两个作用:
1.         确保备份数据库(或数据文件)在还原之前是有效的;
2.         遇到数据损坏问题时用作诊断辅助工具;
 
P327
DEVERIFY命令用于检查备份是否有效
也可以在备份前检查,判断将被备份文件是否损坏。
 
 
以下出现的页码与《Oracle9i 数据库管理基础II Ed 1.1 Vol.2.pdf》对应
指南下载地址:
 
P17
用户管理的完全恢复
备份的目的是为了恢复
 
P19
介质恢复
主要的恢复,由于磁盘损坏或误操作造成文件损坏。
 
介质恢复分为2步
1.         还原文件
原备份文件拷回原来位置,替代丢失的或损坏的文件。
2.         文件恢复
使用联机重做日志文件和归档重做日志文件来恢复从备份时刻到当前时刻的数据。
 
P20
恢复的步骤:
1.         还原
 
2.         恢复
恢复细分为2步,前滚(roll forward)和回滚(roll back)
前滚操作之后,数据文件中可能包含未提交的交易;
回滚操作是丢弃掉此类未提交的交易;相当于图中第4步;
 
经过这两步操作,已提交的数据一点不少,也不包含未提交的数据。
 
P21
使用操作系统命令来还原文件。
 
P22
恢复有两种模式ARCHIVELOG模式(归档模式)和NOARCHIVELOG(非归档模式)
在非归档模式下恢复最简单,还原所有数据文件和控制文件。
只坏一个数据文件,就必须把所有数据文件和控制文件拷回以保持一致性。
缺点:拷贝文件多,数据会丢掉些;
优点:操作简单,风险小;
 
是否使用非归档模式,应该由老板决定。如果数据一点不能丢,就不能用此模式,除非手工插入数据补全。
 
非归档模式下的恢复很简单,就两种情况:
1.         恢复包含联机重做日志文件的备份;
2.         恢复不包含联机重做日志文件的备份;
 
实验三:
在NOARCHIVELOG模式(非归档模式)下,备份包含联机重做日志文件的恢复步骤:
1.         SQL> SHUTDOWN IMMEDIATE;
 
2.         SQL> host copy E:/backup/db0/cold/* E:/ora01g/oradata/db0
       联机重做日志文件也被一起COPY回来
       模拟错误,可以先删除E:/ora01g/oradata/db0/ 路径下的所有文件。
 
3.         SQL> connect sys/ora123 as sysdba
 
4.         SQL> startup
 
实验四:
在NOARCHIVELOG模式(非归档模式)下,备份不包含联机重做日志文件的恢复步骤:
1.         SQL> shutdown immediate;
 
2.         把cold目录下非redo开头的文件拷回E:/ora01g/oradata/db0
 
3.         SQL> connect sys/ora123 as sysdba
 
4.         SQL> startup mount
       只能mount不能open,因为没有联机重做日志文件(redologfile)
 
5.         SQL> recover database until cancel using backup controlfile;
       数据库恢复阶段马上发CANCEL。
       没有归档日志文件,不是真的recovery,是假的recovery。通过模拟一次recovery操作,来重建redo log file。
 
6.         SQL> alter database open resetlogs;
       redo log file就生成了,生成在oradata/db0/路径下。
       resetlog使数据库产生替身,sequence number 重置为1,redo log file从空白开始。
       using backup controlfile 之后一定要 resetlogs ,两者匹配。
 
 
P27
归档模式下
只有RMAN能进行增量备份
 
不仅可以完全,也可以不完全
完全和不完全不是空间概念而是时间概念
 
不完全,以前某个版本,一定要resetlog,把redo log file的sequence number清0。
 
P28
还原控制文件和重做日志文件就无法做完全恢复,只能不完全恢复。
 
P29
优缺点
因为缺点,所以归档目标要有2个,确保不缺归档文件。
 
P30
第二个视图应该有第3个视图的所有文件。
 
P32
RECOVER TABLESPACE 和 RECOVER DATAFILE 不同
因为一个表空间里含有多个数据文件
 
Online备份恢复的优点:
表空间中一个数据文件损失,同一个表空间中的另一个数据文件仍能访问。
 
P33
Oracle 9i才需要自动应用重传日志文件。
 
 
实验五:
实验目的:归档模式下的完全恢复情况之一。
能够offline的数据文件丢失。
1.         SQL> select name from v$datafile;
 
2.         SQL> select name from v$tablespace;
有一个DATA1包含两个数据文件,一个是DATA1.DBF另一个是DATA2.DBF
 
3.         SQL> select * from dept;
 
4.         SQL> select * from dept2;
 
5.         SQL> select file#.name from v$datafile;
       查看数据文件的文件号
 
6.         SQL> alter database datafile 5 offline;
       使文件号为5的数据文件脱机
 
7.         SQL> select * from dept2;
       此时不能访问表dept2
       删除oradata/db1/ 路径下的data2.dbf文件,模拟发生故障。
       因为数据库处于归档模式下,所以可以只恢复一个文件。
 
8.         SQL> desc v$recover_file;
 
9.         SQL> select * from v$recover_file;
       查看哪些文件需要恢复,脱机文件要恢复。
 
10.     SQL> host copy E:/backup/db1/hot/data2.dbf E:/ora01g/oradata/db1
       把数据文件拷贝回来,这是还原操作
 
11.     SQL> select * from v$recover_file;
       ERROR没有了,但数据文件的状态仍然是offline
 
12.     SQL> select * from dept;
 
13.     SQL> select * from dept2;
       表dept2仍然不可访问
 
14.     SQL> recover datafile 5;
 
15.     SQL> alter database datafile 5 online;
 
16.     SQL> select * from dept2;
       表dept2,可以被访问了
 
实验总结:
这种方法系统表空间不能恢复。
系统表空间的一个数据文件坏了,数据库启不了,要把数据库shutdown后再恢复。
 
绝对不能恢复控制文件和联机重做日志文件。
 
每次恢复操作以后做备份,做归档。
 
 
实验六:
实验目的:归档模式下的完全恢复情况之二,恢复系统表空间故障。
1.         SQL> shutdown immediate;
 
2.         删除SYSTEM01.DBF 模拟系统表空间故障
 
3.         把备份的SYSTEM01.DBF文件拷贝回来。
 
4.         SQL> startup mount
 
5.         SQL> recover database
 
6.         SQL> alter database open;
 
7.         SQL> select * from dept2;
       表dept2可以被访问
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值