ORACLE闪回----闪回查询flashback-data archive

flashback分类:

   1)flashback drop

   2)flashback query

   3)flashback data archive

   4)flashback table

   5)flashback version query

   6)flashback transaction

   7)flashback database

开启归档方法

闪回数据归档一定要开启归档模式下进行

设置闪回数据归档有两个先决条件:1)使能automatic undo managent 2)tablespace要ASSM的。

SYS@ prod>shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SYS@ prod>
SYS@ prod>startup monut
SP2-0714: 无效的  STARTUP 选项组合
SYS@ prod>startup mount
ORACLE 例程已经启动。

Total System Global Area  768294912 bytes
Fixed Size                  2257192 bytes
Variable Size             465571544 bytes
Database Buffers          297795584 bytes
Redo Buffers                2670592 bytes
数据库装载完毕。
SYS@ prod>alter database archivelog;

数据库已更改。

SYS@ prod>

SYS@ prod>alter database open;

数据库已更改。

SYS@ prod>

SYS@ prod>archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     24
下一个存档日志序列   26
当前日志序列           26
SYS@ prod>

闪回归档概念

无限期的存储表行数据,通过后台进程FBDA,捕捉必要的数据并将其保存在归档上,然后可以使用常规闪回查询命令(as of)查询需要的数据,但闪回可以回朔到多年以前。

闪回归档的要点

1、创建一个表空间来单独存放归档表(理论上是可以与表存放再同一表空间,但不建议这样做)

SYS@ prod>create tablespace archive_tbs datafile '/u01/oradata/prod/arch.tbs' size 10M ;

表空间已创建。

SYS@ prod>

SYS@ prod>create  flashback archive fla tablespace archive_tbs quota 9M retention 3 year;

闪回档案已创建。

SYS@ prod>

2、将表定义成归档表

SYS@ prod>alter table test.emp flashback archive fla;

表已更改。

SYS@ prod>select * from test.emp;

     EMPNO ENAME                          JOB                                MGR HIREDATE                   SAL       COMM     DEPTNO
---------- ------------------------------ --------------------------- ---------- ------------------- ---------- ---------- ----------
      7369 SMITH                          CLERK                             7902 1980-12-17 00:00:00        800               20
      7499 ALLEN                          SALESMAN                          7698 1981-02-20 00:00:00       1600        300    30
      7521 WARD                           SALESMAN                          7698 1981-02-22 00:00:00       1250        500    30
      7566 JONES                          MANAGER                           7839 1981-04-02 00:00:00       2975               20
      7654 MARTIN                         SALESMAN                          7698 1981-09-28 00:00:00       1250       1400    30
      7698 BLAKE                          MANAGER                           7839 1981-05-01 00:00:00       2850               30
      7782 CLARK                          MANAGER                           7839 1981-06-09 00:00:00       2450               10
      7788 SCOTT                          ANALYST                           7566 1987-04-19 00:00:00       3000               20
      7839 KING                           PRESIDENT                              1981-11-17 00:00:00       5000               10
      7844 TURNER                         SALESMAN                          7698 1981-09-08 00:00:00       1500     0         30
      7876 ADAMS                          CLERK                             7788 1987-05-23 00:00:00       1100               20
      7900 JAMES                          CLERK                             7698 1981-12-03 00:00:00        950               30
      7902 FORD                           ANALYST                           7566 1981-12-03 00:00:00       3000               20
      7934 MILLER                         CLERK                             7782 1982-01-23 00:00:00       1300               10

已选择14行。

SYS@ prod>

TEST@ prod>update emp set  empno=7000 where MGR=7566;

已更新2行。

TEST@ prod>commit;

提交完成。

TEST@ prod>delete emp where sal<1000;

已删除2行。

TEST@ prod>commit
  2  ;

提交完成。

TEST@ prod>drop table emp;
drop table emp
           *
第 1 行出现错误:
ORA-55610: 针对历史记录跟踪表的 DDL 语句无效


TEST@ prod>col owner_name for a15;
TEST@ prod>col FLASHBACK_ARCHIVE_NAME for a20
TEST@ prod>col LAST_PURGE_TIME for a30;
TEST@ prod>select * from dba_flashback_archive;

OWNER_NAME      FLASHBACK_ARCHIVE_NA FLASHBACK_ARCHIVE# RETENTION_IN_DAYS CREATE_TIME                                                                 LAST_PURGE_TIME                STATUS
--------------- -------------------- ------------------ ----------------- --------------------------------------------------------------------------- ------------------------------ ---------------------
SYS             FLA1                                  1               365 2021-03-18 15:59:59.000000000                                               2021-03-18 15:59:59.000000000
SYS             FLA                                   2              1095 2021-03-24 06:25:43.000000000                                               2021-03-24 06:25:43.000000000

TEST@ prod>
TEST@ prod>select * from dba_flashback_archive_ts; 

FLASHBACK_ARCHIVE_NA FLASHBACK_ARCHIVE# TABLESPACE_NAME                                                                            QUOTA_IN_MB
-------------------- ------------------ ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------
FLA1                                  1 FDA                                                                                        2
FLA                                   2 ARCHIVE_TBS                                                                                9

TEST@ prod>select * from dba_flashback_archive_tables;

TABLE_NAME                                                                                 OWNER_NAME      FLASHBACK_ARCHIVE_NA ARCHIVE_TABLE_NAME
------------------------------------------------------------------------------------------ --------------- -------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------
STATUS
---------------------------------------
EMP                                                                                        TEST            FLA                  SYS_FBA_HIST_88849
ENABLED

从闪回归档中取消

SYS@ prod>alter table test.emp no flashback archive;

表已更改。

设置为默认的闪回归档

 

SYS@ prod>alter flashback archive fla set default;

闪回档案已变更。

SYS@ prod>SELECT flashback_archive_name, status FROM dba_flashback_archive;

FLASHBACK_ARCHIVE_NA STATUS
-------------------- ---------------------
FLA                  DEFAULT

解释:此时FLA就是默认的闪回归档了,同时test.emp表就可以保留2年的闪回查询数据了。延长了闪回查询的时间

 alter table test.emp flashback archive;   不用指定归档名,emp绑定了FLA(DEFAULT)。

解除闪回归档

alter table test.emp no flashback archive;

删除闪回归档

drop flashback archive fla;   sys用户操作

涉及报错

TEST@ prod>drop table emp;
drop table emp
           *
第 1 行出现错误:
ORA-55610: 针对历史记录跟踪表的 DDL 语句无效

此报错信息是因为对emp表使用了闪回归档(alter table test.emp flashback archive fla)

解决方法:

1、查看表使用的是哪一个闪回方案:

 emp表使用的是FLA归档策略

TEST@ prod> select * from dba_flashback_archive_tables;

TABLE_NAME      OWNER_NAME      FLASHBACK_ARCHIVE_NA ARCHIVE_TABLE_NAME   STATUS
--------------- --------------- -------------------- -------------------- ---------------------------------------
EMP             TEST            FLA                  SYS_FBA_HIST_88849   ENABLED

2、查看闪回归档策略:

表空间ARCHIVE_TBS 配额quota  9M状态default及其所属SYS


TEST@ prod>select * from dba_flashback_archive_ts;

FLASHBACK_ARCHIVE_NA FLASHBACK_ARCHIVE# TABLESPACE_NAME                                                                            QUOTA_IN_MB
-------------------- ------------------ ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------
FLA                                   2 ARCHIVE_TBS                                                                                9

TEST@ prod>SELECT flashback_archive_name, status,owner_name FROM dba_flashback_archive;

FLASHBACK_ARCHIVE_NA STATUS                OWNER_NAME
-------------------- --------------------- ---------------
FLA                  DEFAULT               SYS

3、解除emp表的闪回归档追踪策略:

TEST@ prod>alter table  emp  no flashback archive;
alter table  emp  no flashback archive
*
第 1 行出现错误:
ORA-55620: 无权使用闪回归档

需要SYS用户

SYS@ prod>alter table  test.emp  no flashback archive;

表已更改。

SYS@ prod>

删除表

TEST@ prod>drop table emp;

表已删除。

TEST@ prod>

 

 

 

Jrojyun

2021-03-29

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值