可按以下步骤配置闪回数据库:(确保数据库处于ARCHIVELOG 模式。)
1 配置快速恢复区。
2 使用初始化参数DB_FLASHBACK_RETENTION_TARGET 设置保留目标。可指定
一个上限(以分钟为单位),指示数据库能够闪回到多长时间以前。本示例使用
了 2880 分钟,相当于两天。此参数只是一个目标,并不提供任何保证。闪回时间
间隔取决于快速恢复区中保留的闪回数据量的大小。
3 使用以下命令启用闪回数据库:
ALTER DATABASE FLASHBACK ON;
必须先配置数据库以进行归档,且必须在 MOUNT EXCLUSIVE 模式下启动数据库
后,才能发出此命令来启用闪回数据库。
可以使用以下查询来确定是否已启用闪回数据库:
SELECT flashback_on FROM v$database;
可以使用ALTER DATABASE FLASHBACK OFF 命令禁用闪回数据库。这样,会自动删
除所有现有的闪回数据库日志。
注:仅当在独占模式下装载(而不是打开)数据库时才能启用闪回数据库。
1确认当前模式
SYS AS SYSDBA on 29-MAR-05 >select flashback_on from v$database;
FLA
---
NO
2检查/修改恢复区设置
SYS AS SYSDBA on 29-MAR-05 >show parameter db_recovery_file_dest
NAME TYPEVALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_deststring /u01/app/oracle/flash_recovery_areadb_recovery_file_dest_size big integer 10G
SYS AS SYSDBA on 29-MAR-05 >alter system set db_recovery_file_dest='/u01/app/oracle/flash_recovery_area';
SYS AS SYSDBA on 29-MAR-05 >alter system set db_recovery_file_dest_size=15G;
3检查/修改闪回时间设置
SYS AS SYSDBA on 29-MAR-05 >show parameter db_flashback_retention_target
NAME TYPEVALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_targetinteger 60
SYS AS SYSDBA on 29-MAR-05 >alter system set db_flashback_retention_target=1440;--分钟
System altered
如何设置flash recovery area
(1)db_recovery_file_dest:指定闪回恢复区的位置
(2)db_recovery_file_dest_size:指定闪回恢复区的可用空间大小
(3)db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟,也就是一天。当然,实际上可回退的时间还决定于闪回恢复区的大小,因为里面保存了回退所需要的 flash log。所以这个参数要和db_recovery_file_dest_size配合修改。
alter system set db_flashback_retention_target=1440;
alter system set db_recovery_file_dest='/u01/app/oracle/flash_recovery_area';
alter system set db_recovery_size=15G;
4重新启动数据库到Mount状态
启动flashback database选项。
SYS AS SYSDBA on 29-MAR-05 >shutdown immediate;
Database closed
Database dismounted
ORACLE instance shut down
SYS AS SYSDBA on 29-MAR-05 >startup mount exclusive;
ORACLE instance started
Total System Global Area 314572800 bytes
Fixed Size 1301704 bytes
Variable Size 261890872 bytes
Database Buffers 50331648 bytes
Redo Buffers1048576 bytes
Database mounted
SYS AS SYSDBA on 29-MAR-05 >alter database flashback on;
Database altered
SYS AS SYSDBA on 29-MAR-05 >alter database open;
Database altered
数据库中的undo、rollback,既撤消和回滚。首先这2个 *** 作是针对事务来说的,事务的概念请楼主自行百度。
举一个简单的例子,A给B转账,在数据库中就需要给A,B进行update *** 作。这2条sql语句必须都执行或者都不执行(称为一个事务)。假如先执行B的update语句,B的金额增加了100,然后执行A的update语句,A的金额减100。如果A的余额大于100,那么2个语句没问题,但是A的余额小于100时,再减100就变成负的了,这不符合实际情况。所以第二条sql就出现无法执行,那么数据库的状态必须回到没有执行B的update语句之前。
当一个事务执行的时候,数据库会依次执行中间的sql语句,当某一条sql发生错误以后,根据事务的原子性,通过2种方式使数据库回到事务没有执行的状态。撤销就是相当于不执行commit;回滚就是执行一遍相反的 *** 作,比如再执行B的update金额减100。
//举例子,比如你在写一个级联删除的方法的时候,为了保证数据完整性,删除的时候一定要确定该删的都删了才行,否则就要回滚,下面是删除方法的例子:public boolean delete(int sID) {//成功删除会返回true;
dbc = new DataBaseConnection();//根据你自己的方式创建数据库的连接
Connection con = dbcgetConnection();//得到Connection
try {
consetAutoCommit(false);// 更改JDBC事务的默认提交方式,默认是true,是自动提交;
dbcexecuteUpdate("delete from xiao where ID=" + sID);//删除
dbcexecuteUpdate("delete from xiao_content where ID=" + sID);//删除
dbcexecuteUpdate("delete from xiao_affix where bylawid=" + sID);//删除
concommit();//提交JDBC事务,如果没问题,这时才真正的删除了;
consetAutoCommit(true);// 恢复JDBC事务的默认提交方式,这是个好习惯;
dbcclose();//关闭连接
return true;//删除成功
}
catch (Exception exc) {
conrollBack();//回滚JDBC事务,出现异常,为保证数据完整性,此次 *** 作回滚,不删除;
excprintStackTrace();//输出异常信息;
dbcclose();//关闭连接
return false;//删除失败
}
}//顺便说一下,java中JDBC的事务管理,跟你用的是什么数据库没关系,用什么数据库都是这样;
数据库中常用的段有数据段、索引段、临时段和回退段四类,分别起以下作用:
1、数据段用来存储表或簇的数据。
2、索引段用来存放索引信息,包括ROWID和索引键值。
3、临时段用来保存SQL语句在解释和执行过程中所产生的临时数据。
4、回退段用于保存数据修改之前的信息,包括数据修改前的值及其位置,即记录数据库中所有事务修改之前信息的段。
数据库的概念实际包括两层意思:
(1)数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。
(2)数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。
1、首先oracle已提交的数据是可以使用闪回功能来找回数据的。
2、其次要先确定提交的数据的大体时间。
3、最后点击闪回按键,选择重新执行,就可以选择提交的数据信息进行闪回了。
以上就是关于如何执行Oracle数据库闪回查询全部的内容,包括:如何执行Oracle数据库闪回查询、数据库中前滚、回滚什么意思、JAVA 里面怎写Oracle的数据库回滚等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)