无法删除Oracle闪回数据存档。

3

我想对闪回数据存档进行一次干净的测试,因此需要删除现有的存档。

我在启用的所有表上禁用了FDA并删除了FDA。

但是我仍然在DBA_FLASHBACK_ARCHIVE和DBA_FLASHBACK_ARCHIVE_TS中看到记录。

如果我尝试删除表空间,则会收到“ora-55641无法删除由闪回数据存档使用的表空间”的错误。当我删除FDA时,它成功完成且没有出现错误。

我尝试使用alter flashback data archive purge,但我仍然无法删除TS。

alter flashback archive fla1 purge all;

我尝试修改FDA并查看是否可以取消链接 - alter flashback archive fla1 remove tablespace tbs2; 我收到错误信息“ORA-55626:无法删除闪回存档的主表空间”

请问是否需要清除任何内部表格。


1
对于投票关闭此问题的用户:我想保持这个问题开放。虽然Flashback Data Archive的日常维护确实是数据库管理员的任务,但我们开发人员需要知道它的存在并在尝试中积累经验。因此,我经常看到人们编写大量代码来实现内置Oracle功能的相同功能,因为他们不知道该功能的存在。 - wolφi
无法复现。您能展示一下您使用的“CREATE”语句吗? - wolφi
我遇到了同样的问题;在Oracle 12.2中,我在开发实例中遇到了闪回数据存档的问题,并试图摆脱它,但仍然遇到了相同的问题。我可能需要向Oracle提交一个工单。 - Mark Stewart
1个回答

1
我曾遇到类似的情况;在我的情况下,我用一些查询遇到了Flashback Data Archive(也称为FBA、FBDA、FDA)的一些问题,可能是由于物化视图。因此,为了解决这个问题,我使用DBMS_FLASHBACK_ARCHIVE.DISASSOCIATE_FBA(owner_name, table_name)取消了那些表与FBDA的关联,解决了性能问题,但当然这些表不再被跟踪。

现在,我暂时放弃了该实例上的FBA,并在清理时遇到了相同的ORA-55641和ORA-55626错误。

最终我做的是重新将表关联到闪回数据存档,并且(不确定是否需要,但...)清除了所有记录:

alter flashback archive ARCH_FLASHBACK_10_YEAR purge all;

-- Identify tables tied to the flashback archive; mine was named ARCH_FLASHBACK_10_YEAR 
select owner_name, table_name, FLASHBACK_ARCHIVE_NAME, 
    ARCHIVE_TABLE_NAME, status from DBA_FLASHBACK_ARCHIVE_TABLES;

-- look for ones with a STATUS of "DISASSOCIATED" and do the next two 
-- statements for those tables

exec DBMS_FLASHBACK_ARCHIVE.REASSOCIATE_FBA ('YOUR_OWNER', 'YOUR_TABLE')
alter table YOUR_OWNER.YOUR_TABLE no flashback archive;

-- Then query again.  When clean:

alter flashback archive ARCH_FLASHBACK_10_YEAR remove  tablespace ARCH_HIST;
drop  flashback archive ARCH_FLASHBACK_10_YEAR;

-- And if ARCH_HIST has no other data:
drop tablespace ARCH_HIST including contents and datafiles;


在执行这些步骤之后,我能够删除闪回存档,并删除与该闪回存档相关联的表空间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接