设为首页 收藏本站
查看: 856|回复: 0

[经验分享] Oracle闪回技术(笔记)

[复制链接]

尚未签到

发表于 2018-9-9 07:16:28 | 显示全部楼层 |阅读模式
1、设置SQL*Plus提示符
  临时设置
  set sqlprompt "_user'@'_connect_identifier>"
  永久设置
  为了对所有SQL*Plus会话自动设置sqlprompt.将上面的命令放置在ORACLE_HOME_HOME/sqlplus/admin目录中的glogin.sql文件内
2、查看是否启用闪回临视
  SQL> select flashback_on from v$database;
  FLASHBACK_ON
  ------------------
  YES
3、查询回收站
  show recyclebin;会显示当前的用户有三个删除的表并显示:原先的名称、回收站名称以及删除的时间。
  右要了解更详细的信息,查询数据字典视图USER_RECYCLEBIN或DBA_RECYCLEBIN来查看全局视图
  select owner,original_name,type,droptime,can_undrop,space fromdba_recyclebin;
4、PURGE命令永久性地清除删除的对象
  (1)删除表并且不将它转移到回收站
  drop table  purge;
  (2)从回收站中清除表,如果存在多个具有相同原始名称的对象,那么将清除时间最久的对象。也可以通过指定回收站名称来避免这种混淆
  purge table ;
  (3)从回收站中清除索引
  purge index;
  (4)从表空间中清除所有删除的对象
  purge tablespace;
  (5)从表空间中清除属于一个用户的所有删除的对象
  purge tablespace user ;
  (6)清除您删除的所有对象
  purge user_recyclebin;
  (7)清除所有删除的对象,但是执行它需要DBA权限。
  purge dba_recyclebin;
5、配置闪回数据库
  (1)确保数据库处于归档日志模式
  归档日志模式是启用闪回数据库的先决条件
  SQL> select log_mode from v$database;
  LOG_MODE
  ------------
  ARCHIVELOG
  (2)创建闪回恢复区

  SQL>>
  SQL>>  (3)设置闪回保留目标时间

  SQL>>  (4)干净地关闭并加载数据库
  SQL> shutdown immediate
  SQL> startup mount;
  (5)启用闪回日志记录。

  SQL>>  (6)打开数据库

  SQL>>6、创建闪回数据归档
  (1)创建一个供闪回数据库归档使用的表空间:
  create tablespace fda datafile 'fda1.dbf'size 10m;
  (2)在表空间创建一个保留时间为7年的闪回数据归档:
  create flashback archive fla1 tablespacefda retention 7 year;
  (3)创建用于此练习的模式,并授予它DBA角色:

  grant dba to fbdauser>  (4)授予用户操作归档的必要权限:
  grant flashback archive on fla1 tofbdauser;
  (5)作为fbdauser进行连接。创建一个表并为此表启用闪回数据归档:
  conn fbdauser/fbdauser
  create table t1 as select * from all_users;
  alter table t1 flashback archive fla1;
  (6)运行这些查询来确定归档创建的对象。可能必须等待几分钟,因为对象不是立即创建的。
  select object_name,object_type from user_objects;
  select segment_name,segment_type from dba_segments wheretablespace_name='FDA';
  (7)对保护的表执行一些DML:
  delete from t1;
  commit;
  (8)使用标准的闪回查询语法对保护的表执行闪回查询,然后查询归档中的历史表。
  select count(*) from t1;
  select count(*) from t1 as of timestamp(sysdate-20/1440);
  select ENDSCN,USER_ID,CREATED from SYS_FBA_HIST_75307;
  (9)尝试对保护的表执行一些DDL命令:
  alter table t1 drop column created;
  truncate table t1;
  drop table t1;
  作为SYSDBA连接,并尝试执行如下命令:
  drop user fbdauser cascade;
  drop tablespace fda including contents and datafiles;
  注意,这些命令将会生成与归档和保护的表的存在有关的错误。
  (10)删除表的除归档保护:
  alter table fdbauser.t1 no flashbackarchive;
  (11)删除闪回数据归档
  drop flashback archive fla1;
  (12)重新运行步骤(9)中的所有命令。
7、闪回查询实验
  (1)记录时间
  SCOTT@orcl>select sysdate from dual;
  SYSDATE
  -------------------
  2015-10-06 18:46:43
  (2)从表中删除一些行,并提交更改。
  SCOTT@orcl>delete from regions where region_name like 'A%';
  2 rows deleted.
  SCOTT@orcl>commit;
  Commit complete.
  (3)查询确认表中只有两行。
  SCOTT@orcl>select * from regions;
  REGION_ID REGION_NAME
  ---------- --------------------------------------------------
  1 Europe
  4 Middle East and Africa
  (4)查询针对以前某个时间的表
  SCOTT@orcl>select * from regions as of timestampto_timestamp('2015-10-06 18:46:43','yyyy-mm-dd hh24:mi:ss');
  REGION_ID REGION_NAME
  ---------- --------------------------------------------------
  1 Europe
  2 Americas
  3 Asia
  4 Middle East and Africa
  SCOTT@orcl>select * from regions as of timestampto_timestamp('2015-10-06 18:46:43','yyyy-mm-dd hh24:mi:ss') minus select * fromregions;
  REGION_ID REGION_NAME
  ---------- --------------------------------------------------
  2 Americas
  3 Asia
8、通过SQL*Plus使用闪回删除
  在本练习中创建一个新的模式并在该模式内创建一个表,然后使用flashback drop恢复它
  (1)作为用户SYSTEM使用SQL*Plus连接数据库
  (2)创建一个用户

  SYS@orcl>create user dropper>  SYS@orcl>grant create session,resource to dropper;
  SYS@orcl>conn dropper/dropper
  (3)创建一个带有索引和约束的表,并插入一行:
  DROPPER@orcl>create table names (name varchar2(10));
  DROPPER@orcl>create index name_idx on names(name);
  DROPPER@orcl>alter table names add (constraint name_uunique(name));
  DROPPER@orcl>insert into names values('John');
  DROPPER@orcl>commit;
  (4)确认模式的内容
  DROPPER@orcl>select object_name,object_type from user_objects;
  DROPPER@orcl>select constraint_name,constraint_type,table_namefrom user_constraints;
  (5)删除该表:
  DROPPER@orcl>drop table names;
  (6)重新运行步骤(4)中的查询。注意,已从user_objects中删除了对象,但是仍存在采用系统生成的约束。
  (7)查询回收站以查看原始的名称到回收站名称的映射:
  DROPPER@orcl>select object_name,original_name,type fromuser_recyclebin;
  注意,该视图并没有显示约束
  (8)这表明可以查询回收站但是无法对它执行DML。
  DROPPER@orcl>select * from"BIN$IVfJDb9uy+zgVQAAAAAAAQ==$0";
  NAME
  ----------
  John
  (9)使用flashback drop恢复表:
  DROPPER@orcl>flashback table names to before drop;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-568396-1-1.html 上篇帖子: Oracle Active Database Duplication-Sysdba 下篇帖子: Oracle 11g rman备份相关
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表