当前位置:  编程技术>综合
本页文章导读:
    ▪Oracle Flashback之flashback table      一,Flashback Table功能描述 将数据表恢复到之前的一个时间点或SCN号。 注意:该功能将改变当前表及附属对象统一闪回到之前的一个状态。 二,需要修改的系统参数 undo_management,参数需要是.........
    ▪第十篇 jmp $              在汇编中 $ 的作用是取 $ 所在处的地址。所以jmp $就是一个死循环了。除非有 中断,会转去执行中断服务程序。但要注意的是:返回的地址还是jmp  $,而不.........
    ▪关于eclipse使用svn merge部分的详细说明---带详图,接上一篇      这个说明接上一篇 建议最好先看看上一篇http://ylq365.iteye.com/blog/1763856 上一篇主要是说明了用tortoisesvn怎么merge 下面主要说一下在eclipse下怎么merge,这里eclipse没有安装工具的就先安装svn,可以参.........

[1]Oracle Flashback之flashback table
    来源: 互联网  发布时间: 2013-11-07

一,Flashback Table功能描述
将数据表恢复到之前的一个时间点或SCN号。
注意:该功能将改变当前表及附属对象统一闪回到之前的一个状态。

二,需要修改的系统参数
undo_management,参数需要是“AUTO”,保证回滚段使用模式是SMU mode
undo_retention,单位是秒,调整可回滚的时间范围
确认系统的相关参数

三,原理
闪回表(Flashback table)与闪回查询(Flashback query)的原理大致相同,也是利用undo信息来恢复表对象到以前的某一个时间点(一个快照),因此也要确

保AUM(automatic undo management)有足够的Retention值。Flashback  table技术是以Undo segment中的内容为基础的, 因此受限于UNDO_RETENTON参数。要

使用flashback 的特性,必须启用自动撤销管理表空间。

但闪回表不等于闪回查询,其区别如下:
闪回查询只是查询以前的一个快照而已,并不改变当前表的状态。
闪回表则是将恢复当前表及附属对象一起回到以前的时间点。

四,特性:
1.  在线操作
2.  恢复到指定的时间点(或者SCN)的任何数据
3.  自动恢复相关属性
4.  满足分布式的一致性
5.  数据的一致性,所有相关对象将自动一致。

五,语法:
 SQL> flashback table flashback_table_test to timestamp to_timestamp('2012-12-29 16:44:17', 'yyyy-mm-dd hh24:mi:ss');
 SQL> flashback table flashback_table_test to scn 662421;
 SQL> flashback table flashback_table_test to timestamp to_timestamp('2012-12-29 16:44:17', 'yyyy-mm-dd hh24:mi:ss') enable triggers;

六,运用闪回表前提
  1,普通用户中需要有Flashback any table的系统权限。命令如:
  2.,有该表的select、insert、delete、alter权限。
  3,必须保证该表有row movement(行移动)。

七,下面是具体的实验:
SQL> show parameter undo

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
undo_management                      string                 AUTO
undo_retention                       integer                900
undo_tablespace                      string                 UNDOTBS1


 1.创建flashback_table_test表
SQL> conn hr/hr
Connected.
SQL> create table flashback_table_test as select * from employees;

Table created.

2.查询flashback_table_test表中数据量
SQL> select count(*) from flashback_table_test;

  COUNT(*)
----------
       107

3.为flashback_table_test表创建索引和触发器(触发器为null,不做任何操作)
SQL>create index ind_test on flashback_table_test(employee_id);

SQL> create or replace trigger tr_test
after update on flashback_table_test
for each row
begin
       null;
end
tr_test;
/

Trigger created


4.记录当时的时间点,试图恢复到该时间点
SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;

TIME                                   SCN
-------------------------------------- --------------------------------------------------------------------------------
2012-12-29 16:44:17                    662421


oracle 10g可以通过下面得到SCN。
SQL> SELECT current_scn from v$database;

CURRENT_SCN
-----------
     662403


5.删除flashback_table_test表中数据
SQL> delete from flashback_table_test;

107 rows deleted.


SQL> commit;

Commit complete.


6.查询删除数据后的flashback_table_test,确定其表中已没有数据
SQL> select count(*) from flashback_table_test;

  COUNT(*)
----------
         0


7.删除flashback_table_test表中索引ind_test

SQL> drop index ind_test;

Index dropped

8.更改tr_test触发器

SQL> create or replace trigger tr_test
after insert on flashback_table_test
for each row
begin
       null;
end
tr_test;
/

Trigger created

9.确保该表中的行迁移(row movement)功能

SQL> alter table flashback_table_test enable row movement;

Table altered

10.恢复flashback_table_test表到刚记录的时间点(或scn),由于表中存在触发器,因此使用了关键字enable triggers;
SQL>  flashback table flashback_table_test to timestamp to_timestamp('2012-12-29 16:44:17', 'yyyy-mm-dd hh24:mi:ss') enable triggers;

Flashback complete.


11.查看恢复结果如下:(数据回来了)
SQL> select count(*) from flashback_table_test;

  COUNT(*)
----------
       107

但是索引没有回来
SQL> select index_name from user_indexes where table_name = 'flashback_table_test';

INDEX_NAME

------------------------------

SQL>  select object_name, status from user_objects where object_name in('TR_TEST', 'IND_TEST');

OBJECT_NAME                    STATUS
------------------------------ --------------
TR_TEST                        VALID


SQL> set pages 0
SQL> set line 100
SQL> set long 2000
SQL> select text from user_source t where t.name = 'TR_TEST';
trigger tr_test
after insert on flashback_table_test
for each row
begin
       null;
end
tr_test;

7 rows selected.


总结:

1. Flashback table在真正的高可用环境中,使用意义不大,受限比较多,要必须确保行迁移功能
2. Flashback table过程中,阻止写操作
3. 使用flashback table可以将delete方式删除的表闪回到之前某个时间点,而表中索引却不能正常恢复,因为drop索引的过程是不记录undo的。
4. 恢复的触发器本身还是修改后的,并不随表flashback到修改以前的时间点。说明关键字enable triggers只能保证触发器的状态正常,而不是内容回滚.
5. 由于原理利用其undo信息,来恢复其对象,因此也是不能恢复truncate数据
6. 恢复数据用flashback query实现比较好
7,flashback table功能不能够将被truncate的表内容恢复出来,原因也是truncate操作过程是不记录undo信息。

其他注意:
1.当闪回删除操作之前,如果某个键值如主键被重用,将导致违反主键约束,闪回失败。
2.若闪回所需要的UNDO信息不存在,将引发ORA-08180:no snapshot found based on specified time(未找到基于指定时间的快照)错误
3.如果受闪回影响的记录被其它用户锁定,将引发ORA-00054:resource busy and acquire with NOWAIT specified (资源忙碌)错误
4.表定义在闪回期间不能发生变化,否则导致ORA-01466:unable to read data - table definition has changed(表定义已变化)错误
5.闪回前未启用row movement,将收到ORA-08189: cannot flashback the table because row movement is not enabled 错误
6.对于存在参照关系的情况,建议将主表等一起实施闪回,否则,将收到ORA-02091: transaction rolled back,ORA-02291错误
7.SYS 模式中的表不能使用表闪回技术

作者:waterxcfg304 发表于2013-1-6 16:46:53 原文链接
阅读:46 评论:0 查看评论

    
[2]第十篇 jmp $
    来源: 互联网  发布时间: 2013-11-07

        在汇编中 $ 的作用是取 $ 所在处的地址。所以jmp $就是一个死循环了。除非有

中断,会转去执行中断服务程序。但要注意的是:返回的地址还是jmp  $,而不是其

下一条语句。

       因为,在jmp $执行是会把jmp $语句所在的地址装到程序计数器PC中。中断来临

后PC被压栈。中断服务程序返回后,从栈中取回PC的值并开始执行。此时,PC的值

是jmp $的地址!

       微机课设就栽在了这条语句上了。。。

       个人觉得遇到这个问题的主要原因就在于不够理解什么才叫“下一条语句”。在调用

函数返回的时候,我们经常会说返回到下一条语句,而这下一条语句时由PC指定的。

作者:Lulipeng_cpp 发表于2013-1-6 16:43:20 原文链接
阅读:48 评论:0 查看评论

    
[3]关于eclipse使用svn merge部分的详细说明---带详图,接上一篇
    来源:    发布时间: 2013-11-07
这个说明接上一篇

建议最好先看看上一篇http://ylq365.iteye.com/blog/1763856
上一篇主要是说明了用tortoisesvn怎么merge
下面主要说一下在eclipse下怎么merge,这里eclipse没有安装工具的就先安装svn,可以参考
http://ylq365.iteye.com/blog/1571052#bc2288353

在eclipse下就行代码的merge也很简单

首先把svn拉到本地,这个还用我们一篇中建的工程




然后查看我们的工程,点右键merge

这里面的三个选项和tortoisesvn是对应的


这是唯一不一样的就是,tortoisesvn的第二项在这里变成了第三项,就是这个名字reintegrate 如果选了这个本地文件是不能有修改的,其他两个没有这方面的要求















已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—




    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3