你这里不是控制文件不存在,而是files_name这张视图不存在(至少我没听说过这个视图)。
查询一般是用select * from v$controlfile;
在sql的提示符下也可以用show parameter control_files
尝试检查1、现有控制文件已删除
2、参数文件中指定的控制文件路径正确
3、数据文件所需目录存在且有写入权限
4、创建语句中的路径指定正确
什么是控制文件:每个ORACLE数据库都有一个控制文件。控制文件是一个小型的二进制文件,它可以记录数据库的物理结构,其中包含以下内容:
数据库名称
相关的数据文件和联机重做日志文件的名称和位置
数据库创建的时标
当前日志的序号
检验点信息
无论何时打开数据库,控制文件必须能够由ORACLE数据库服务器写入内容。没有控制文件,数据库就不能装载。
在不同的磁盘上复用控制文件
每个ORACLE数据库都应该至少有两个控制文件,它们分别存储在不同的磁盘上。当一个磁盘失败导致控制文件损坏,可以由另一个恢复损坏的控制文件。
依据数据库初始化参数文件中的初始化参数CONTROL_FILES列出的所有文件名,ORACLE会将相应的内容写入到所有这些控制文件中。
初始化参数CONTROL_FILES中列出的第一个文件是ORACLE数据库服务器在数据库运行期间惟一可以读取的文件。
在整个数据库运行期间,如果任何一个控制文件变为不可用,那么实例就不能再继续运行,而且应该中止这个实例。
联机重做日志多路复用:将控制文件的副本存储在每个存储有联机重做日志组成员的磁盘上,可以尽量减少在一个磁盘的失败中丢失所有控制文件和所有联机重做日志组的风险。
当发布CEATE DATABASE语句中,会创建ORACLE数据库的初始控制文件。
以下情况需要备份控制文件:1,添加、取消或重命名数据文件;2,添加或撤消表空间或者更改表空间的读写状态;3,添加或取消重做日志文件。 方法:关闭数据库,将现在控制文件复制到另一位置。重启数据库。
以下情况需要创建新的控制文件:1,所有数据库的控制文件都损坏,且没有备份;2,想改变其中某个数据库参数的永久性设置,这些参数最初是在CREATE DATABASE语句中指定的。
创建一个新的控制文件:
1, 制作一个包含数据库的所有数据文件和联机重做日志文件的列表。
在数据库能正常打开时,产生以下列表!
select member from v$logfile
select name from v$datafile
select value from v$parameter where name='control_files'
2, 关闭数据库
shutdown
3, 备份数据库的所有数据文件和联机重做日志文件。
4, 启动一个新的实例,但是不要装载或打开数据库:
STARTUP NOMOUNT;
5, 使用CREATE CONTROLFILE语句为数据库创建一个新的控制文件。
在丢失了联机重做日志组、或者重命名了数据库必须指定RESETLOGS选项。
6, 在离线存储设置上存储新控制文件的备份。
7, 为数据库编辑CONTROL_FILES初始化参数,以便指出现在所有控制文件都是第5步创建的数据库的一部分。
8, 如果有必要可以恢复数据库。
9, 打开数据库。
备份控制文件:
1,将控制文件备份为二进制文件(现有控制文件的复制品)
ALTER DATABASE BACKUP CONTROLFILE TO ‘g:\JYSH\BAK\CONTROL.BAK'
2,制作以后可用于重新创建控制文件的SQL语句:
alter dtatbase backup controlfile to trace
此命令将SQL脚本写入数据库的跟踪文件,在这个跟踪文件中可以找到这个SQL脚本并对脚本进行编辑,以重新产生控制文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)