控制文件初探

1、个数和位置的管理(因为控制文件时在参数文件定义的,所以可以直接修改参数文件)

SPfile修改的步骤:
a) 修改SPFILE参数control_files
b) 一致性关闭数据库
c) 增加或减少控制文件
d) 启动数据库使用SPFILE
e) 验证结果

实验
减少控制文件:
a)SQL> show parameter control_f;
b)Sql>alter system set control_files='/oracle/oradata/oracleto/control01.ctl' scope=spfile;
c)Shutdown immediate
d)Startup  完成

增加控制文件:
a)sql>show parameter control_f;  确认控制文件的路径等相关信息。
b)Sql>alter system set  control_files='/oracle/oradata/oracleto/control01.ctl' ,'/oracle/oradata/oracleto/control02.ctl','/oracle/oradata/oracleto/control03.ctl' scope=spfile;
c)Shutdown immediate;
d)Startup 此时会报版本号错误,那么需要从高版本的拷贝至低版本。
ORA-00214: control file '/oracle/oradata/oracleto/control01.ctl' version 771 inconsistent with file '/oracle/oradata/oracleto/control02.ctl' version 762
e)sql>show parameter control_f;  确认控制文件的路径等相关信息。
f)SQL> ho cp /oracle/oradata/oracleto/control01.ctl /oracle/oradata/oracleto/control02.ctl
g)SQL> ho cp /oracle/oradata/oracleto/control01.ctl /oracle/oradata/oracleto/control03.ctl
h)Alter database mount;  检查是否解决问题。
i)Startup   完成。


Pfile修改的步骤:
a) 一致性关闭数据库
b) 修改Pfile参数
c) 增加或减少控制文件
d) 启动数据库使用PFILE
e) 验证结果


2、状态管理
目的是看数据库使用的控制文件与参数定义控制文件是否吻合。
文件。每到数据库启动到mount都读控制文件并把数据库的结构对应到实际的文件上去才能启动。
存在状态:
a) 找位置和个数   show parameter control_f 查处的结果在通过操作系统来对比
Ho ll -h /路径 
b) 需要查看磁盘空间使用情况  sql>ho df -H
c) 查看文件的大小  sql>ho ls -lh /oracle/oradata/ora.ctl 
控制文件尽量控制在100M以内,如果超过了,那么需要尽快采取措施,一般情况下需要重建控制文件。

3、控制文件备份
a) Sql>alter database backup controlfile to '/oracle/bakcup/control20120522.bak';    归档模式下这样备份才有作用 ,当控制文件出现问题是,可以直接在操作系统下拷贝过去就行。
b) Sql>alter database backup controlfile to trace as '/oracle/....txt'  这样就得到一个重建控制文件的脚本。
c) 通过rman备份  也需要归档模式才能使用rman
Rman>backup current controlfile;  自动就在闪回目录下。
或者rman>backup database include current controlfile; 备份数据库的同时也备份控制文件

4、重建控制文件原则
恢复管理:
如果控制文件丢失和不一致了,需要DBA处理,首先确认控制文件交易号码那个比较新那个比较旧。复制新的给旧的或者直接更改参数文件control_file使用新的

5、几种丢失情况的解决:
确认数据库是否处于归档模式,不是归档,则先全备,然后建立新的控制文件即可。
解决办法:
a)、确认数据文件,默认的数据文件保存在$ORACLE_BASE/oradata//xxxx.dbf 文件。
b)查看告警日志  vi $ORACLE_BASE/admin/$ORACLE_SID/bdump/alter_orcl.log
c)建立控制文件(有些相关的文件可以通过ALTER日志查询到相关的数据,数据文件,日志文件个数、路径、大小很重要,一定要搞清楚)
CREATE CONTROLFILE REUSE DATABASE "ORACLETO" NORESETLOGS  NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/oracle/oradata/oracleto/redo01.log'  SIZE 50M,
  GROUP 2 '/oracle/oradata/oracleto/redo02.log'  SIZE 50M,
  GROUP 3 '/oracle/oradata/oracleto/redo03.log'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  '/oracle/oradata/oracleto/system01.dbf',
  '/oracle/oradata/oracleto/undotbs01.dbf',
  '/oracle/oradata/oracleto/sysaux01.dbf',
  '/oracle/oradata/oracleto/users01.dbf',
  '/oracle/oradata/oracleto/example01.dbf'
CHARACTER SET WE8ISO8859P1

d)执行这个sql语句  控制文件就会建立
e)Sql>alter database open;
这里会提示数据库中有一个文件需要恢复
f)Sql>recover database;  一定要执行这条语句 ,如果需要恢复的内容能在日志文件能找到,那么就可以恢复,如果不能恢复,那么就需要你加隐藏参数让数据库不进行一致性认证。(下面的情况就用到了)
g)Sql>alter databas open;这样就可以打开数据了。


归档和日志都在;先全备,然后再使用备份的控制文件恢复即可
a) 在所有操作之前要做全备,很重要
b) 同样查看警告日志 vi $ORACLE_BASE/admin/$ORACLE_SID/bdump/alter_orcl.log,确认问题所在
c) 确认控制文件时候在,show parameter control_f 查路径,ls -l 查看
d) 确定不在之后,那么就可以从备份文件恢复
e)
SQL> show parameter control_
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
control_file_record_keep_time        integer                7
control_files                        string                 /oracle/oradata/oracleto/contr
                                                            ol01.ctl, /oracle/oradata/orac
                                                     leto/control02.ctl, /oracle/or
                                                          adata/oracleto/control03.ctl

SQL> ho cp /oracle/controlbak.ctl /oracle/oradata/oracleto/control01.ctl
SQL> ho cp /oracle/controlbak.ctl /oracle/oradata/oracleto/control02.ctl
SQL> ho cp /oracle/controlbak.ctl /oracle/oradata/oracleto/control03.ctl
SQL> ho ls /oracle/oradata/oracleto/
SQL> alter database mount;
Database altered.
SQL> alter database open;                  ------------恢复失败
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open 
SQL> alter database recover database using backup controlfile;  用备份的控制文件恢复
alter database recover database using backup controlfile
*
ERROR at line 1:
ORA-00279: change 792378 generated at 05/24/2012 07:32:41 needed for thread 1
ORA-00289: suggestion : /oracle/flash_recovery_area/ORACLETONY/archivelog/2012_05_26/o1_mf_1_13_%u_.arc
ORA-00280: change 792378 for thread 1 is in sequence #13

SQL> shutdwon immediate  
SQL> startup
ORACLE instance started.
Total System Global Area  167772160 bytes
Fixed Size                  1218316 bytes
Variable Size             130025716 bytes
Database Buffers           33554432 bytes
Redo Buffers                2973696 bytes
Database mounted.   -----------仍然不能恢复
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> shutdonwn immediate
在重做上面一步:
SQL> alter database recover database using backup controlfile; 不行
SQL> alter database recover database using backup controlfile until change 792378;                            ---------------也不行
alter database recover database using backup controlfile until change 792378
*
ERROR at line 1:
ORA-00275: media recovery has already been started
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01156: recovery in progress may need access to files

SQL> shutdown immediate;
SQL> startup
SQL> alter database recover database using backup controlfile until change 792378;
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile; 使用隐藏参数,不让数据库进行一致性验证。
SQL> startup force
SQL> alter database open resetlogs;  可以启动了
Sql>startup
最后要干掉隐藏参数,不然以后系统会出现ORA-600的内部错误。
Sql>show parameter _allow
Sql>alter database reset "_allow_resetlogs_corruption" scope=spfile sid='*';
归档模式下使用正常的方式来恢复。上面那种方法错误的未执行alter database open resetlogs, 而先执行 alter database recover database using backup controlfile,最后还使用了不该用的隐藏参数。

所以建议使用下面的办法:

第一种方法
SQL> startup

ORACLE instance started.
Total System Global Area  167772160 bytes
Fixed Size                  1218316 bytes
Variable Size             125831412 bytes
Database Buffers           37748736 bytes
Redo Buffers                2973696 bytes
ORA-00205: error in identifying control file, check alert log for more info     查看告警日志。Vi $ORACLE_BASE/admin/alter.....log
SQL> shwo parameter control_f
SQL> ho ls /oracle/oradata/oracleto
SQL> ho cp /oracle/control2012.ctl /oracle/oradata/oracleto/control01.ctl          
SQL> ho cp /oracle/control2012.ctl /oracle/oradata/oracleto/control02.ctl
SQL> ho cp /oracle/control2012.ctl /oracle/oradata/oracleto/control03.ctl
SQL> shutdown immediate
SQL> startup
ORACLE instance started.
Total System Global Area  167772160 bytes
Fixed Size                  1218316 bytes
Variable Size             125831412 bytes
Database Buffers           37748736 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced  连接中断
SQL> startup   可以正常启动了
ORACLE instance started.

‚第一种方法出现第二种情况
SQL>alter database open resetlogs;
如果这里提示数据库一致性验证错误,那么需要做以下几步操作
Sql>recover database;
提示需要用老的控制文件。
Sql>alter database recover  database using backup controlfile;
还是不行。提示错误
Sql>shutdown immediate
Sql>startup
Sql>alter database open resetlogs;
Sql>recover database 同样提示需要老的控制文件
Sql>alter database recover  database using backup controlfile;
执行之后会提示归档日志找不到,需要从日志文件中找,所以指定日志文件,那么你可以挨个将日志文件的路径输入进去,
$ORACLE_BASE/oradata/.....(需要绝对路径)
Sql> alter database resetlogs;  这样就可以恢复了。

ƒ第二种方法是用隐藏参数 (一般不用)
SQL> startup
ORACLE instance started.
Total System Global Area  167772160 bytes
Fixed Size                  1218316 bytes
Variable Size             125831412 bytes
Database Buffers           37748736 bytes
Redo Buffers                2973696 bytes
ORA-00205: error in identifying control file, check alert log for more info     查看告警日志。Vi $ORACLE_BASE/admin/alter.....log
SQL> shwo parameter control_f
SQL> ho ls /oracle/oradata/oracleto
SQL> ho cp /oracle/control2012.ctl /oracle/oradata/oracleto/control01.ctl          
SQL> ho cp /oracle/control2012.ctl /oracle/oradata/oracleto/control02.ctl
SQL> ho cp /oracle/control2012.ctl /oracle/oradata/oracleto/control03.ctl
SQL> shutdown immediate
SQL> startup
ORACLE instance started.
Total System Global Area  167772160 bytes
Fixed Size                  1218316 bytes
Variable Size             125831412 bytes
Database Buffers           37748736 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
Sql>recover database;
提示不能恢复,需要是用老的控制文件恢复
Sql>alter database recover  database using backup controlfile; 还是不行
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile; 使用隐藏参数,不让数据库进行一致性验证。
Sql>start force
Sql>alter database open resetlog;  实例终端
Sql>重新连接,startup
最后去掉隐藏参数
Sql>show parameter _allow
Sql>alter database reset "_allow_resetlogs_corruption" scope=spfile sid='*';
完成。
归档但日志不全;先全备,然后建立新的控制文件。
参考重建控制文件部分。

新建控制文件语句:
可以在在数据库运行在OPEN和mount的时候,可以执行alter database backup controlfile to trace as '<dir路径>'得到建立语句;,但要注意[no]archivelog [no]resetlogs 2个参数的区别。

D、开启归档模式 (SQL> archive log list 数据库OPEN阶段可以查询)
首先数据库要处于mount阶段才能开启, SQL> alter database archivelog;
然后把数据打开 SQL> archive log list 查询确认。

转载于:https://www.cnblogs.com/maruidong/p/6394192.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

String类的使用 Part2

StringBuilder 类的使用 属性&#xff1a; namespace StringBuilderTest {class Program{static void Main(string[] args){StringBuilder s new StringBuilder("hello,world!");Console.WriteLine(s);//Length属性Console.WriteLine("s.Length{0}", s.Le…

JAVA项目怎么不是蓝色_解决IDEA创建maven项目时pom.xml没有变蓝的问题

如下所示&#xff1a;选中pom.xml&#xff0c;右键点击add as maven project&#xff0c;稍等片刻后就可以了补充知识&#xff1a;Idea导入maven项目不自动识别pom.xml*Idea导入maven项目不自动识别pom.xml*当在idea中导入maven项目时&#xff0c;不能自动识别pom文件解决方法&…

C# 6.0:Expression – Bodied Methods

Expression-bodied 方法是C# 6.0 中另一个能简化代码的特性。我们已经对lambda表达式将funciton和delegation关联起来的这种用法很熟悉了。Expression-bodied 将lambda 表达式的这种用法扩展到了方法上。 像下面代码所示&#xff0c;我们有一个GetTime() 方法返回一个格式化的时…

zabbix3.0安装

本次安装准备安装3.0的zabbix(LNMP)第一步 安装zabbix官方的zabbix源&#xff0c;地址如下&#xff1a;http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm安装zabbix的官方源rpm -ivh zabbix-release-3.0-1.el6.noarch.rpm第二步 使用yu…

android UI自动化测试工具Robotium VS NativeDriver VS Calabash

http://kongqingyun123.blog.163.com/blog/static/6377283520126294029822/ 自从上次对Robotium和nativedriver这两个工具做对比已经过去将近一年的时间了&#xff08;上次内容见http://kongqingyun123.blog.163.com/blog/static/637728352011614111010446/&#xff09;&#x…

POJ 1228 Grandpa's Estate --深入理解凸包

题意&#xff1a; 判断凸包是否稳定。 解法&#xff1a; 稳定凸包每条边上至少有三个点。 这题就在于求凸包的细节了&#xff0c;求凸包有两种算法&#xff1a; 1.基于水平序的Andrew算法 2.基于极角序的Graham算法 两种算法都有一个类似下面的语句&#xff1a; for(int i0;i&…

赵强老师免费公开课第一季:Hadoop的背景起源

标签&#xff1a;免费直播课 Hadoop 大数据 赵强原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://51edu.blog.51cto.com/8899635/1897555 Hadoop大数据免费公开课招募啦~~~赵强…

.NET Windows服务应用程序

此文旨在记录个人对windows服务的理解以及学习记录&#xff0c;高人可以直接绕行。 1.Windows 服务体系结构 http://technet.microsoft.com/zh-cn/library/aa998749(vexchg.65).aspx Windows 服务&#xff08;也称服务应用程序&#xff09;是无论用户是否登录都运行在 Windows …

io流技术java_技术文章-java中的IO流

1.File类Java中对文件有操作时&#xff0c;可以实例化一个File对象&#xff0c;将文件路径利用这样的形式赋给File对象。File f new File(filePath);File类的基本操作包括&#xff1a;判断是否存在&#xff1a;f.exists()获取文件名&#xff1a;f.getName()获取其绝对路径&…

bootstrap-代码-内联代码

说明通过 <code> 标签包裹内联样式的代码片段示例<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"view…

java类似php魔术方法_PHP与类有关的几个魔术方法

与类有关的其他魔术方法序列化与反序列化技术含义&#xff1a;序列化&#xff1a;就是将一个变量所代表的“内存”数据&#xff0c;转换为“字符串”形式并持久保存在硬盘上的一种做法。反序列化&#xff1a;就是将序列化之后保存在硬盘上的“字符串数据”&#xff0c;恢复为其…

IIS ARR设置HTTP跳转到HTTPS

GUI Version - Select the website you wish to configure- In the “Features View” panel, double click URL Rewrite You will notice there are currently no rules configured for this site. Click “Add Rules…” in the Actions menu to the right of the “Features…

2013.7.15DAY2

今天自己做了炸土豆 吼吼~ 才知道鸡蛋和小麦粉一起弄成浆糊涂到土豆条上炸效果很好~不过做失败了一些啦 失败的就用青椒炒着吃。。。。 下午准备做冰品来着。。。结果快递都到了特别忙。。。就只弄了杯冰啤酒。。。 虐了两道水题&#xff0c;贴上代码。。过于水了。。。 Descri…

AutoCAD.NET API 最新(2012)教程下载及在线视频教程DevTV

Autodek最近发布了基于最新版的AutoCAD 2012的.net API开发教程。基本内容包括&#xff1a; Overview of .NETPlugin BasicsUser InteractionDatabase fundamentalsDictionariesUser InterfaceEventsInputPoint MonitorJigs现在就可以从AutoCAD开发者中心下载&#xff0c; 看图…

inherits java_JAVA内部类和组合的区别

Why inner classes?At this point you’ve seen a lot of syntax and semantics describing the way inner classes work, but this doesn’t answer the question of why they exist. Why did Sun go to so much trouble to add this fundamental language feature? Feedbac…

SQL Server里一些未公开的扩展存储过程

SQL Server里一些未公开的扩展存储过程 [转帖] 博客天地 www.inbaidu.comSQL Server里一些未公开的扩展存储过程 扩展存储过程&#xff08;xp&#xff09;是直接运行在SQL Server地址空间里的动态链接库&#xff0c;是通过使用SQL Server开放数据服务API&#xff08;SQL Server…

Linux技巧:一次删除一百万个文件最快方法

昨天&#xff0c;我看到一个非常有趣的删除一个目录下的海量文件的方法。这个方法来自http://www.quora.com/How-can-someone-rapidly-delete-400-000-files里的Zhenyu Lee。 他没有使用find 或 xargs&#xff0c;他很有创意的利用了rsync的强大功能&#xff0c;使用rsync –de…

install python_python install on windows 10

图 1官网2、下载安装包&#xff1a;图 2 Downloads – windows图 3选择版本图 4选择离线安装版本图 5保存下载文件—文件名自己可以修改可能有人看到windows 几个版本&#xff0c;对几个版本有迷惑的地方&#xff0c;解释图 6几个版本的差异说明文字解释&#xff1a;An e…

iOS开发常见错误

错误1&#xff1a; 1.1这种错误都是storyboard有问题 解决&#xff1a;当前storyboard的Custom Class是MJViewController&#xff0c;代码中MJViewController继承自UITableViewController。 而storyboard目前提供的是UIViewController&#xff0c;并没有为MJViewController提供…

windows bat 批处理 !vm 合并快播文件

今天简单的写了一个bat批处理文件 用来处理快播的p2p的文件&#xff0c;一般回事这样的目录 你可以下载如下代码 echo off for /r %%a in (.) do (echo %%acd %%acopy /b *.!mv test.rmvb ) pause保存为merge.bat&#xff0c;就可以执行了 代码解释&#xff1a; 扫描该目录下的…