【Oracle问题集7】ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated

说明:【oracle问题集】是博主平时操作数据库遇到的问题以及解决方案。
执行语句:表示操作数据库过程
出错现象:表示操作数据库过程出现错误现象
出错原因:表示出现错误的原因
解决方法:表示解决错误的方法
相关知识:表示与这个主题相关的知识
======================================================================================

执行语句:

    启动数据库startup

出错现象:

     ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated

出错原因:

    db_recovery_file_dest所对应的硬盘没有挂载,即db_recovery_file_dest无法找到目录

解决方法:

 第一种方法:  删除spfile参数文件中db_recovery_file_dest对应的目录配置

 第二种方法:挂载相应的目录 (用mount命令即可解决)

备注:本文就第一种方法给出详细的过程

步骤1:用init.ora文件启动数据库

startup mount pfile=‘/home/oracle/app/oracle/admin/orcl/pfile/init.ora’

路径修改成当前init.ora所在的目录即可

这个是作者所在数据库目录

[oracle@localhost pfile]$ ls /home/oracle/app/oracle/admin/orcl/pfile
init.ora.117201120430

用mv把init.ora.117201120430修改成init.ora

步骤2:修改数据库启动状态,切换到open状态

alter database open

步骤3:创建新的spfile

create spfile from pfile=‘/home/oracle/app/oracle/admin/orcl/pfile/init.ora’

步骤4:关闭数据库,并重启数据库

关闭shutdown immediate

重启startup


相关知识:

在步骤1当中,启动数据库报控制文件错误

ORA-00214: control file
'/home/oracle/app/oracle/flash_recovery_area/orcl/control02.ctl' version 4106
inconsistent with file '/home/oracle/app/oracle/oradata/orcl/control01.ctl'
version 9971

ORA-00205: error in identifying control file, check alert log for more info

原因是:init.ora控制文件版本不一致,删除多余的控制文件配置参数即可

这个是init.ora修改以前的配置:control_files=("/home/oracle/app/oracle/oradata/orcl/control01.ctl", 

           "/home/oracle/app/oracle/flash_recovery_area/orcl/control02.ctl")

修改成一个即可以,注意:数据库中控制文件必须要存在。例如如下

control_files=("/home/oracle/app/oracle/oradata/orcl/control01.ctl")


在步骤4中报flashback 启动失败

SQL> startup
ORACLE instance started.

Total System Global Area  422670336 bytes
Fixed Size    1336960 bytes
Variable Size  260049280 bytes
Database Buffers  155189248 bytes
Redo Buffers    6094848 bytes
Database mounted.
ORA-38760: This database instance failed to turn on flashback database

原因是当前数据库开启的了闪恢复功能。

解决方法:关闭删回复功能

a.先检查restore_point:     select name from V$restore_point;

b.如果不为空,请先执行drop restore point 【name名字】,然后在执行alter database flashback off

c.如果为空,直接执行alter database flashback off


你可能感兴趣的:(oracle问题集)