您的位置:首页 > 数据库 > Oracle

oracle-dba-控制文件和数据库启动

2017-03-03 23:19 225 查看
控制文件和数据库启动

控制文件和数据库启动概述

2进制文件

记录数据库的状态信息,如重做日志文件与数据文件的名字和位置,归档重做日志的历史等。

<=64M

Mount阶段被读取,

一个控制文件只能与一个数据库相关联。

只有数据库服务器可以修改控制文件中信息

数据库启动与控制文件的关系

启动数据库(通过默认搜索规则找到参数文件)打开参数文件(在参数文件中找到控制文件的位置)打开控制文件

如何获得控制文件信息

通常一个数据库文件至少需要3个控制文件,控制文件最好不要放在一起,可以防止磁盘故障造成数据库无法启动。

可以通过参数文件获得控制文件位置,但是这样容易修改。Oracle提供了视图

使用视图vparamete查看控制文件位置selectvaluefromvparameter where name=’control_files’;

使用show parameter查看当前控制文件的位置

Show parameter control_files;不添加S也可以

通过数据字典vcontrolfile查看控制文件的名字和存储目录Selectstatus,namefromvcontrolfile;

控制文件的内容

内容

 数据库名:在初始化DB_NAME获得,或者CREATE DATABASE语句执行时用的名字

 数据库标识符:数据库创建时oracle记录得标示符

 数据库创建时间:创建数据库时由oracle自动记录

 表空间信息:当表增加或者删除表空间时记录该信息

 重做日志文件历史:在日志切换时记录

 归档日志文件的位置和状态信息:在归档进程发生时完成

 备份的状态信息和位置:由恢复管理器记录

 当前日志序列号:日志切换时记录

 校验点信息:当校验点事件发生时记录

查看所存内容的记录信息

查询控制文件中所存内容的记录信息

select type , record_size, records_total,records_used from vcontrolfilerecordsection;很多动态数据字典视图就是从控制文件中获得数据。Vbackup

 VdatabaseVtempfile

 VtablespaceVarchive

 VlogVlogfile

 VloghistVarchived_log

 V$database

查看数据库id,创建时间,数据库是否处于归档模式等

Select name,created,log_mode from v$database;

存储多重控制文件

Oracle数据库会同时维护多个完全相同的控制文件,称为多重控制文件

在不同磁盘上存储多重控制文件可以避免控制文件的单点失效问题。

如果一个磁盘的控制文件失效,oracle会自动使用参数文件中记录的其他控制文件启动数据库。

控制文件目录

G:\ORACLEDB\ORADATA\ORCL\CONTROL01.CTL, G:\ORACLEDB\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL

参数文件目录

G:\oracleDB\product\11.2.0\dbhome_1\dbs\init.ora

使用pfile(init.ora)文件时移动控制文件

可以直接打开修改。黄色区域更换为控制文件地址即可。

关闭并重启数据库,

验证控制文件的修改结果

Select * from v$controlfile;

使用spfile文件时移动控制文件

修改spfile中的控制文件名

Alter system set control_files=

‘G:\ORACLEDB\ORADATA\ORCL\CONTROL01.CTL’,

’ G:\ORACLEDB\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL’

SCOPE=SPFILE;

添加控制文件

CONTROL01.CTL复制到另外一个目录,多添加一个文件的目录即可。

Alter system set control_files=

‘G:\ORACLEDB\ORADATA\ORCL\CONTROL01.CTL’,

’ G:\ORACLEDB\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL’

SCOPE=SPFILE;

备份和恢复控制文件

备份

使用database backup controlfile备份控制文件

alter database backup controlfile to ‘d:\ss.ora’;

备份控制文件,将控制文件备份到追踪文件中,使用该文件可以恢复控制文件。

1:设置参数sql_trace=true,默认false

alter session set sql_trace=true;

2:备份控制文件到追踪文件中

Alter database backup controlfile to trace;

查看跟踪文件的存储目录

Show parameter user_dump_dest;

恢复

1:部分控制文件损坏

关闭数据库,将完好的控制文件复制到已经丢失或者出错的控制文件的位置。更改文件名字为该丢失或者出错的控制文件的名字。

如果目录也被损坏,重建新目录放控制文件。需要修改数据库初始参数文件中控制文件的位置信息。

2:控制文件全部损坏或丢失

关闭数据库,将备份的控制文件复制到先前控制文件所在位置,

并更改备份控制文件名为先前控制文件的文件名

打开数据库到mount状态

Startup mount

打开数据库

Alter datebase open using backup controlfile;

3:通过跟踪文件重建控制文件

跟踪文件记录了用于建立控制文件的sql语句,适当的编辑下。然后使用slq命令即可

G:\oracleDB\diag\rdbms\orcl\orcl\trace\alert_orcl.log

4:手工重建控制文件

Create controlfile 指令逐步创建控制文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: