控制文件相关操作
				
		
		
				
				 
		
				
						    接着来介绍一下关于Controlfile的操作问题,这部分内容需要好好记住,因为控制文件损坏之后的影响是比较严重的,如果没有备份,最后只能手动修复,这样出错的可能性就会大大增加。好了,看一下相关操作。
				
		
		
				
						
						
				 
		
				
				 
		
				
						一、CREATE CONTROLFILE错误
				
		
		
				
				 
		
				
						
								    1、检查文件差异
						
				
		
		
				
						
						
				 
		
				
						    创建新的控制文件之后会检查数据字典和控制文件之间的矛盾,以检查丢失或多余的文件。
				
		
		
				
						
						
				 
		
				
						    丢失:
				
		
		
				
						        若数据字典中存在某数据文件,而控制文件中没有,则Oracle在控制文件中创建一个名为MISSINGnnn的占位符入口,表示作为脱机并需要介质恢复的标志。可以通过重命名MISSINGnnn来访问MISSINGnnn对应的真正数据文件,但该文件必须是只读或正常脱机的。
				
		
		
				
						        又因为数据文件需要介质恢复,而RESETLOGS的结果排除了介质恢复的可能,所以当使用了RESETLOGS子句时,必须撤销包含数据文件的表空间。
				
		
		
				
						
						
				 
		
				
						    多余:
				
		
		
				
						        当控制文件记录的数据文件不在数据字典中时,Oracle会从新的控制文件中删除对数据文件的引用。
				
		
		
				
						
						
				 
		
				
						    注:无论是丢失还是多余,都会在相应实例的alert.log文件中包含一条解释性消息。
				
		
		
				
						
						
				 
		
				
						
								    2、创建过程中的错误
						
				
		
		
				
				 
		
				
						    一般在创建新的控制文件后打开数据库,可能会返回一下错误类型:
				
		
		
				
						    ORA-01173、ORA-01176、ORA-01177、ORA-01215、ORA-01216
				
		
		
				
						
						
				 
		
				
						    最大的可能是在在创建时有文件丢失或多余文件。
				
		
		
				
						    此时应该找到备份的数据文件和联机重做日志文件,覆盖当前文件,并使用正确的CREATE CONTROLFILE语句重新创建。
				
		
		
				
						
						
				 
		
				
						
						
				 
		
				
						
								二、备份控制文件
						
				
		
		
				
				 
		
				
						
								    1、备份控制文件为二进制文件
						
				
		
		
				
						
						
				 
		
				
						    ALTER DATABASE BACKUP CONTROLFILE TO '/oracle/backup/control.bkp';
				
		
		
				
						
						
				 
		
				
						
								    2、制作以后可以重新创建控制文件的SQL
						
				
		
		
				
						
						
				 
		
				
						    ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
				
		
		
				
						
						
				 
		
				
						
								    3、可以使用RMAN对控制文件进行备份
						
				
		
		
				
						
						
				 
		
				
						
						
				 
		
				
						
								三、恢复控制文件
						
				
		
		
				
						
						
				 
		
				
						
								    1、控制文件损坏
						
				
		
		
				
						
						
				 
		
				
						    ①关闭实例 ②将未损坏的控制文件副本覆盖已损坏文件 ③打开数据库
				
		
		
				
						
						
				 
		
				
						
								    2、磁盘损坏
						
				
		
		
				
						
						
				 
		
				
						    ①关闭实例 ②经未损坏控制文件副本复制到新磁盘空间 ③修改CONTROL_FILES参数 ④打开数据库
				
		
		
				
						
						
				 
		
				
						    也可以先修改CONTROL_FILES参数,然后恢复控制文件,再把
				
		
		
				
						
						
				 
		
				
						
						
				 
		
				
						
								四、删除控制文件
						
				
		
		
				
				 
		
				
						    ① 关闭数据库
				
		
		
				
						
								    ② 修改CONTROL_FILES参数
				
		
		
				
						
								    ③启动数据库
				
		
		
				
						
								    ④ 在磁盘上删除相应CONTROLFILE文件
				
		
		
				
						
						
				 
		
				
						
						
				 
		
				
						
								五、控制文件信息
						
				
		
		
				
				 
		
				
						    通过一下视图来查看控制文件信息:
				
		
		
				
						
						
				 
		
				
						    V$CONTROLFILE:控制文件名称
				
		
		
				
						    V$CONTROLFILE_RECORD_SECTION:控制文件记录段信息
				
		
		
				
						    V$PARAMETER:初始化参数CONTROL_FILES的值