ORA-38727: FLASHBACK DATABASE requires a current control file.

文档解释

ORA-38727: FLASHBACK DATABASE requires a current control file.

Cause: The control file being used is a backup control file.

Action: FLASHBACK DATABASE cannot be used with a backup control file. If the database must be taken back in time then a restore and an incomplete recovery must be performed.

## 错误说明

ORA-38727,也称为“FLASHBACK DATABASE 需要当前控制文件”,是指在使用 flashback 查询或者databse 功能时,Oracle 不能找到可用的当前控制文件。ORA-38727 是由 Oracle 无法找到当前控制文件所导致的一种恢复错误。控制文件是管理数据库的一种文件,用来跟踪数据库的各种记录,它保存了活动数据库的全部文件,包括每个数据库的定义以及哪些文件是系统中可用,系统启动时会读取控制文件,所以当控制文件出现损坏或破坏时,系统启动可能会出现问题。

常见案例

如果控制文件丢失或者损坏,已知更改数据库管理信息和关联操作将会无法完成,比如`FLASHBACK DATABASE` ,`CREATE CONTROLFILE` 等操作将无法完成,可能会报出 ORA-38727的错误消息。

## 解决方法

为了解决 ORA-38727 : FLASHBACK DATABASE 需要当前控制文件,我们需要检查控制文件是否正常,并重新创建控制文件。

**检查控制文件**

可以连接到Oracle,使用以下SQL语句查看控制文件:

“`

select * from v$controlfile;

“`

这样可以查询到控制文件名称。我们可以使用以下命令来检查控制文件:

“`

SQL> select rowid, name from v$controlfile;

SQL> alter database backup controlfile to trace;

“`

**重新创建控制文件**

可以使用 create controlfile 语句来重新创建控制文件。为了使语句正常运行,有以下要求:

– 要确保在同一路径中有一份活跃的控制文件拷贝;

– 要知道数据库文件所在的路径;

– 指定数据库使用的中央路径;

可以使用以下语句来重新创建控制文件:

“`

CREATE CONTROLFILE SET DATABASE “TEST”

RESETLOGS

NOARCHIVELOG

MAXLOGFILES 5

MAXDATAFILES 500

MAXINSTANCES 5

MAXLOGHISTORY 50

LOGFILE

GROUP 1 (‘log_file_1’, ‘log_file_2’) SIZE 100M,

GROUP 2 (‘log_file_3’, ‘log_file_4’) SIZE 100M

DATAFILE

‘/data/oradata/test/sysaux.dbf’,

‘/data/oradata/test/system.dbf’,

‘/data/oradata/test/undotbs1.dbf’,

‘/data/oradata/test/undotbs2.dbf’

CHARACTER SET AL32UTF8;

“`

重新创建控制文件后就能解决“FLASHBACK DATABASE 需要当前控制文件”的错误啦!

## 结语

总而言之,ORA-38727,也称为“FLASHBACK DATABASE 需要当前控制文件”,是指在使用 flashback 查询或者database 功能时,Oracle 不能找到可用的当前控制文件这种恢复错误,为了解决这类问题,需要先检查控制文件是否正常,并重新创建控制文件,以此来解决“FLASHBACK DATABASE 需要当前控制文件”的错误。

你可能感兴趣的