日期:2014-05-16  浏览次数:20355 次

oracle 在线删除归档、闪回日志后

因为开启归档、闪回后,空间磁盘不够了。没有多想就在数据库处于open状态下,rm了所有的归档、闪回日志。

等到重启数据库时出现错误:

?

?

SQL> conn /as sysdba

Connected to an idle instance.

SQL> startup

ORACLE instance started.

?

Total System Global Area ?422670336 bytes

Fixed Size ? ? ? ? ? ? ? ? ?1336960 bytes

Variable Size ? ? ? ? ? ? 310380928 bytes

Database Buffers ? ? ? ? ?104857600 bytes

Redo Buffers ? ? ? ? ? ? ? ?6094848 bytes

Database mounted.

ORA-38760: This database instance failed to turn on flashback database

?

处理过程如下:

先关闭数据库的闪回功能,再alter ?database open:

?

?

SQL>?

SQL> alter database flashback off;

?

Database altered.

?

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-38760: This database instance failed to turn on flashback database

还是同一个错误。
google了一下,是我的数据库中有restore point的缘故。
so,下面是删除restore point的工作:
SQL> select flashback_on from v$database;?

FLASHBACK_ON
------------------
RESTORE POINT ONLY

SQL>?
SQL>?
SQL> select name from v$restore_point;

NAME
--------------------------------------------
BEFOR_UPGRADE

关于restore point的东西,在数据库open状态下可查询:
SELECT name, scn, time, database_incarnation#, guarantee_flashback_database, storage_size FROM v$restore_pint; (RAC环境要查询gv$restore_pint)

SQL> drop restore point BEFOR_UPGRADE;

Restore point dropped.

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
NO

SQL> alter database open;

Database altered.

这样数据库就open了。

谢谢:http://dba.tw/index.php?topic=221.0