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