文档解释
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 需要当前控制文件”的错误。