oracle的数据备份与恢复

方法一:
Oracle恢复被删除的数据
数据用Delete误删除掉后,而且提交了。

1.打开Flash存储的权限
ALTER TABLE tablename ENABLE row movement ;
2.把表还原到指定时间点
flashback table tablename to timestamp to_timestamp(''2008-02-28 10:40:00'',''yyyy-mm-dd hh24:mi:ss'');
后面的参数为要还原的时间点.此方法有个缺点就是指定的时间点之后的数据也没有有了.




方法二:
查询表FLASHBACK_TRANSACTION_QUERY,从得到的结果中,
取UNDO_SQL字段的值,该字段是记录了恢复操作的语句,执行该sql就可以了. 该表记录了每一个操作的日志.
例如查找test表在2009-8-11 17:05:00到2009-8-11 17:05:59之间所做的删除操作
select * from FLASHBACK_TRANSACTION_QUERY where table_owner='GTOA2' and table_name='TEST' and operation='DELETE'
and commit_timestamp between to_timestamp('2009-8-11 17:01:00','yyyy-mm-dd hh24:mi:ss')
and to_timestamp('2009-8-11 17:05:59','yyyy-mm-dd hh24:mi:ss')


方式三:
查询test表1个小时前的数据:
SELECT * FROM test
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' hour)
对于TIMESTAMP 的设置有下面几中方式:
TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' hour) --查询一小时前的数据
TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' day) --查询一天前的数据
TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' minute ) --查询十分钟前的数据
TIMESTAMP (SYSTIMESTAMP - INTERVAL '50' second ) --查询50秒前的数据



方法四:
对于Oracle9i,采用Oracle默认的安装设置进行安装后,数据库处于非归档日志模式,为了实现数据库的备份和恢复,我们通常要把数据库切

换到归档日志模式。我们可以总结了一下,大概有一下几个步骤(Oracle For Windows)。
1、在命令行状态下进入SqlPlus,连接数据库
C:\>sqlplus /nolog
SQL>conn /as sysdba

2、(这一步可以不执行)由动态参数文件创建静态参数文件
SQL>create pfile from spfile;

3、(这一步可以不执行)作用是修改归档目录路径,经上一步创建的静态参数文件,一般存储在$OracleHome:\database:\下,文件名为INIT[SID],在其中增加以下参数:
*.log_archive_start='TRUE'
*.log_archive_max_processes=6
*.log_archive_dest_1='LOCATION=E:\oracle:\ora92:\arc'    --修改本地归档目标路径
*.log_archive_dest_2='LOCATION=E:\oracle:\ora92:\arcbak'  --修改远程归档目标路径
*.log_archive_format='ARC%S.ARC'
注:以上参数需根据实际情况设定

4、(是否需要执行与第3步一样)建立上述参数中涉及到的文件夹,如过按上述参数设置,则应建立E:\oracle:\ora92:\arc和E:\oracle:\ora92:\arcbak两个文件夹

5、关闭数据库,要采用一致性关闭,既不要Shutdown abort
SQL>shutdown immediate

6、(是否需要执行跟第2步一样)由静态参数文件创建动态参数文件
SQL>create spfile from pfile;

7、启动数据哭到mount阶段
SQL>startup mount

8、将数据库切换到归档日志模式
SQL>alter database archivelog;

9、打开数据库,完成切换
SQL>alter database open;

10、参考附件中的热备份.


你可能感兴趣的:(oracle,sql,windows,Flash)