ORA-55610: Invalid DDL statement on history-tracked table (flashback archive)

ORA-55610: Invalid DDL statement on history-tracked table

 

今天是2013-10-28,刚刚我进行实验的时候发现不能删除一个表,随即模拟了一下过程:
如下:
SQL> drop table rhys.amy;
drop table rhys.amy
                *
ERROR at line 1:
ORA-55610: Invalid DDL statement on history-tracked table


SQL>
查看错误信息:
SQL> !oerr ora 55610
55610, 00000, "Invalid DDL statement on history-tracked table"
// *Cause: An attempt was made to perform certain DDL statement that is
//         disallowed on tables that are enabled for Flashback Archive.
// *Action: No action required.
//

SQL>
提示说这个表存在flashback archive。查看dba_flashback_archive视图发现如下:
SQL> select owner_name,flashback_archive_name,create_time,status from dba_flashback_archive;

OWNER_NAME           FLASHBACK_ARCHIVE_NAME                   CREATE_TIME                                                                 STATUS
-------------------- ---------------------------------------- --------------------------------------------------------------------------- -------
SYS                  ARCHIVE_1                                28-JAN-13 11.31.46.000000000 PM
SYS                  ARCHIVE_DEFAULT                          28-JAN-13 11.14.29.000000000 PM                                             DEFAULT

SQL>
发现还真是之前搞的来着。
解决办法:
取消该表的flashback archive功能即可:

SQL> alter table rhys.amy no flashback archive;

Table altered.

SQL>
SQL> drop table rhys.amy;

Table dropped.

SQL>
做到这里在复习一下之前研究的这个功能的相关命令吧。如下所示:

1)创建表空间
SQL> create tablespace fdba datafile '/opt/app/oracle/oradata/fdba.dbf' size 200m autoextend off segment space management auto;

Tablespace created.

SQL> create tablespace fdba_1 datafile '/opt/app/oracle/oradata/fdba1.dbf' size 20m autoextend off segment space management auto;

Tablespace created.
2)创建闪回归档

SQL> create flashback archive archive_1 tablespace fdba quota 100m retention 20 day;

Flashback archive created.
创建默认闪回归档,必须使用sys用户:
SQL> show user
USER is "RHYS"
SQL> GRANT FLASHBACK ARCHIVE ADMINISTER TO RHYS;

Grant succeeded.

SQL> CREATE FLASHBACK ARCHIVE DEFAULT ARCHIVE_DEFAULT TABLESPACE FDBA_1 RETENTION 1 YEAR;
CREATE FLASHBACK ARCHIVE DEFAULT ARCHIVE_DEFAULT TABLESPACE FDBA_1 RETENTION 1 YEAR
                                                            *
ERROR at line 1:
ORA-55611: No privilege to manage default Flashback Archive
SQL> create flashback archive default archive_default tablespace fdba_1 retention 1 year;

Flashback archive created.

SQL> show  suer
SP2-0158: unknown SHOW option "suer"
SQL> show user
USER is "SYS"
SQL>
3)为闪回归档添加表空间
SQL> alter flashback archive archive_1 add tablespace rhys quota 1M;

Flashback archive altered.

SQL>
4)在闪回归档中移除表空间
SQL> alter flashback archive archive_1 remove tablespace rhys;

Flashback archive altered.

SQL>
5)修改闪回归档占用表空间配合。
SQL> alter flashback archive archive_1 modify tablespace fdba quota 200M;

Flashback archive altered.

SQL>
6)修改闪回归档中保留期限
SQL> alter flashback archive archive_1 modify retention 20 day;

Flashback archive altered.

SQL>

7)使用闪回归档

SQL> create table t (
  2  a number,
  3  b varchar2(20)
  4  )
  5  flashback archive archive_1;

Table created.

SQL> alter table rhys.emp flashback archive archive_1;

Table altered.

SQL>
8)删除闪回归档数据:
eg:
删除一段时间之前的数据
alter flashback archive archive_1 purge before timestamp to_timestamp('2013-10-28 23:27:00','YYYY-MM-DD HH24:MI:SS');
ALTER FLASHBACK ARCHIVE ARCHIVE_1 PURGE BERFOR SCN 100000000;
删除一天内的数据
ALTER FLASHBACK ARCHIVE ARCHIVE_1 PURGE BEFORE TIMESTAMP (SYSTIMESTAMP-INTERVAL '1' DAY);
删除所有的数据
alter flashback archive archive_1 purge all;
9)删除闪回归档
drop flashback archive archive_1;
10)取消表的flashback archive功能:
alter table rhys.amy no flashback archive;
11)闪回归档常用视图;
dba_flashback_archive
dba_flashback_archive_tables;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值