相关操作视频: http://pan.baidu.com/share/link?shareid=492078&uk=3912660076
一、.使用EM恢复数据库
不在这里赘述了,嘿嘿.......
如果数据库在备份时处于“打开”状态,则在备份之前将关闭并装载它。在备份完毕之后再打开数据库。
完全备份:将所有数据备份到备份集中,只跳过那些从未使用过的数据文件块;
增量备份:则只备份上次备份后发生变化的数据
ARCHIVELOG模式有如下特点:可以进行热备份,所谓热备份指在数据库打开状态下进行 的备份;可以恢复至指定的时间点,但必须为日志提供空间;
NOARCHIVELOG模式有如下特点:只能进行冷备份,所谓冷备份指数据库以MOUNT方式打开时,对目标数据库进行备份;不能恢复到指定的时间点上;在数据库损坏时可能会丢失数据。
二、.RMAN技术
备份片(Backup pieces)
备份集合(Backup sets)
通道(channel)
多文件备份(File multiplexing)
全备份集合(Full backup sets)
镜像复制(Image copies)
增量备份集合(Incremental backup sets)
恢复目录(catalog)
恢复目录同步(Recovery catalog resyncing)
特此说明的是 RMAN是和SQLPLUS一个级别的
@@@@@@@@@@@@@@RMAN@@@@@@@@@@@@
1.将数据库设置为归档日志模式
必须满足以下条件:
1)以SYSDBA的身份登录,变更登录用户:connect sys/oracle as sysdba
2)关闭数据库:shutdown immediate
3)启动数据库,但不打开实例:startup mount
4)切换实例为归档日志模式了:alter database archivelog;
2.创建恢复目录所使用的表空间
需要创建表空间存放与RMAN相关的数据:alter database open;
3.创建RMAN用户并授权
4.创建恢复目录
首先连接到:
恢复目录数据库:一种
另一种:
第三种(不能用Conn)
这上下两副图该怎么区分呢?一个没有密码的输入如何连接到目标数据库了!!!难道存在类似于密码Session的文件吗?还是其他,疑问中。。。。(资历尚浅)
然后创建恢复目录:
5.注册目标数据库
6.run命令定义一组要执行的RMAN备份语句
全数据库备份:
单独备份归档日志文件:
要恢复归档日志信息,可以使用如下命令:
@@@@@@@@@@@@@@@@@@@@@@@@@@
三、闪回(Flashback)技术
闪回恢复区是用来存储恢复相关文件的存储空间:
目录。
文件系统。
自动存储管理(ASM)磁盘组。
可以在闪回恢复区中存储如下几种文件:
控制文件。
归档的日志文件。
闪回日志。
控制文件和 SPFILE 自动备份。
RMAN 备份集。
数据文件拷贝。
@@@@@@@@@@@@Flashback@@@@@@@@@@@@@
1.设置数据库为闪回数据库
假如现在你辛辛苦苦建立了一张珍贵的表,然后,一个笨蛋触发了一个病毒,把这张表删了。
你可以用下面的语句恢复这张表。注意时间!!!
———————————闪回表——————————————————
Flashback table <表名>
To [before drop [rename to <表别名>]] | [scn | timestamp ] <表达式> [Enable | disable triggers];
假如表的结构已经损坏。。。
现在开始对表进行闪回。。。。。。。。。。。。。
@@@@@@@@@@闪回回收站@@@@@@@@@@@@
删除回收站中的数据,使用Purge命令
Purge table t1;
清空回收站
Purge dba_recyclebin
若是普通用户,用purge recyclebin清空回收站
闪回查询(Flashback Query)
闪回查询可以查询指定时间点时表中的数据
要实现闪回查询,必须将初始化参数UNDO_MANAGEMENT设置为AUTO,这是此参数的默认值。
初始化参数UNDO_RETENTION决定了能往前闪回查询的最大时间,值越大可以往前闪回查询的最大时间越长,但占用的磁盘空间也越大。
闪回版本的查询。
(1)首先创建一个测试用的表test,它由一个number类型字段score组成。
11:28:47 SQL> create table test (score number);
表已创建。
(2)在表中插入一条记录。
11:29:06 SQL> insert into test values(100);
已创建 1 行。
11:29:13 SQL> commit;
提交完成。
(3)更新表中的数据。
11:29:15 SQL> update test set score=110 where score=100;
已更新 1 行。
11:29:28 SQL> commit;
提交完成。
(4)删除表中的数据。
13:32:13 SQL> delete from test where score>0;
已删除 1 行。
13:32:24 SQL> commit;
提交完成。
(5)使用闪回版本查询。
11:29:45 SQL> select versions_starttime, versions_operation, score
11:29:52 2 from test versions between timestamp minvalue and maxvalue;
闪回事务查询
闪回事务保存表flashback_transaction_query
13:52:23 SQL> select table_name,undo_sql from flashback_transaction_query where rownum<3;