oracle11g重建控制文件-关闭状态控制文件丢失
来源:互联网 发布:电力大数据解决方案 编辑:程序博客网 时间:2024/06/07 17:28
实验环境:centos7+11.2.0.4+单实例
这个实验的目的是在没有使用DG、RAC、RMAN的情况下,丢失了控制文件,
总结分为几种情况:
开机状态
1.noresetlog模式;
2.resetlog模式
关机状态
有备份:直接还原备份的控制文件
无备份:1.noresetlog模式;2.resetlog模式
验证结果:
1.数据库能够正常启动
2.表中的数据正常
实验前步骤:
1.创建两个表空间:test1
2.在表空间test1中创建表 users并添加数据,设置为只读变空间
3.备份控制文件
创建表空间test1
create tablespace test1
datafile '/u01/app/oracle/oradata/orcl/test1.dbf'
size 10M
autoextend on
next 5M maxsize 100M;
创建表users1并添加数据
create table users1(id int,name varchar(200)) tablespace test1;
insert into users1(id,name) values(1,'张三');
insert into users1(id,name) values(1,'李四');
insert into users1(id,name) values(1,'王五');
commit;
修改test1表空间为只读表空间
alter tablespace test1 read only;
SQL> create tablespace test2
datafile '/u01/app/oracle/oradata/orcl/test2.dbf'
size 10M
autoextend on
next 5M maxsize 100M;
SQL> create table users2(id int,name varchar(200)) tablespace test2;
insert into users2(id,name) values(1,'张三');
insert into users2(id,name) values(2,'李四');
insert into users2(id,name) values(3,'王五');
commit;
备份控制文件
alter database backup controlfile to '/oracle/backup/control.bkp';
删除所有控制文件
1.noresetlog 方式
启动数据库到nomount状态,这里直接启动会报错的,也只会启动到nomount状态
SQL> startup nomount
执行创建控制文件语句。
CREATE CONTROLFILE REUSEDATABASE orcl
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log',
GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log',
GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log'
NORESETLOGS
DATAFILE '/u01/app/oracle/oradata/orcl/system01.dbf',
'/u01/app/oracle/oradata/orcl/sysaux01.dbf',
'/u01/app/oracle/oradata/orcl/users01.dbf',
'/u01/app/oracle/oradata/orcl/undotbs01.dbf',
'/u01/app/oracle/oradata/orcl/test2.dbf'
MAXLOGFILES 50
MAXLOGMEMBERS 3
MAXLOGHISTORY 400
MAXDATAFILES 200
MAXLOGMEMBERS 3
MAXLOGHISTORY 400
MAXDATAFILES 200
MAXINSTANCES 6
ARCHIVELOG
character set ZHS16GBK;
SQL> recover database
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required
SQL> alter system archive log all;
SQL> alter database open;
恢复只读表空间
SQL> alter database rename file 'MISSING00005'
2 to '/u01/app/oracle/oradata/orcl/test1.dbf';
SQL> alter tablespace "TEST1" online;
2.resetlog方式
启动数据库到nomount状态,这里直接启动会报错的,也只会启动到nomount状态
SQL> startup nomount
执行创建控制文件语句。需要把除了只读表空间和临时表空间的所有数据文件写入进来
CREATE CONTROLFILE REUSEDATABASE orcl
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' size 50m,
GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log' size 50m,
GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log' size 50m
RESETLOGS
DATAFILE '/u01/app/oracle/oradata/orcl/system01.dbf',
'/u01/app/oracle/oradata/orcl/sysaux01.dbf',
'/u01/app/oracle/oradata/orcl/users01.dbf',
'/u01/app/oracle/oradata/orcl/undotbs01.dbf',
'/u01/app/oracle/oradata/orcl/test2.dbf'
MAXLOGFILES 50
MAXLOGMEMBERS 3
MAXLOGHISTORY 400
MAXDATAFILES 200
MAXLOGMEMBERS 3
MAXLOGHISTORY 400
MAXDATAFILES 200
MAXINSTANCES 6
ARCHIVELOG
character set ZHS16GBK;
恢复数据需要指定日志文件,默认找最新的归档日志,不存在需要指定最新的redo_log。(同样的路径打了两次第一次失败,第二吃成功。。。)
SQL> recover database using backup controlfile;
ORA-00279: change 1006901 generated at 09/23/2017 19:23:06 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2017_09_23/o1_mf_1_1_%u_.arc
ORA-00280: change 1006901 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/redo01.log
ORA-00308: cannot open archived log '/u01/app/oracle/oradata/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/orcl/redo01.log
Log applied.
Media recovery complete.
SQL>alter database open resetlogs;
SQL> ALTER DATABASE RENAME FILE 'MISSING00005'
TO '/u01/app/oracle/oradata/orcl/test1.dbf';
SQL> ALTER TABLESPACE "TEST1" ONLINE;
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf'
SIZE 30408704 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
这样就创建完成了,数据库正常启动了。数据也正常
创建控制文件的语句参考官方文档,
http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_5003.htm#SQLRF01203
重建控制文件参数介绍(借助google网页翻译)
控制文件创建句法
CREATE CONTROLFILE
[ REUSE ] [ SET ] DATABASE database
[ logfile_clause ]
{ RESETLOGS | NORESETLOGS }
[ DATAFILE file_specification
[, file_specification ]... ]
[ MAXLOGFILES integer
| MAXLOGMEMBERS integer
| MAXLOGHISTORY integer
| MAXDATAFILES integer
| MAXINSTANCES integer
| { ARCHIVELOG | NOARCHIVELOG }
| FORCE LOGGING
]...
[ REUSE ] [ SET ] DATABASE database
[ logfile_clause ]
{ RESETLOGS | NORESETLOGS }
[ DATAFILE file_specification
[, file_specification ]... ]
[ MAXLOGFILES integer
| MAXLOGMEMBERS integer
| MAXLOGHISTORY integer
| MAXDATAFILES integer
| MAXINSTANCES integer
| { ARCHIVELOG | NOARCHIVELOG }
| FORCE LOGGING
]...
[ character_set_clause ] ;
LOGFILE
[ GROUP integer ] file_specification
[ GROUP integer ] file_specification
[, [ GROUP integer ] file_specification ]...
CHARACTER SET character_set
REUSE:指定ruse表示由初始化参数识别现有控制文件control_files可以重复使用,覆盖其当前可能包含的任何信息。如果省略此子句,并且任一控制文件已存在,则Oracle数据库将返回错误
DATABASE Clause:
指定数据库的名称。此参数的值必须是由先前
CREATE
DATABASE
语句或CREATE
CONTROLFILE
语句建立的现有数据库名称。SET DATABASE Clause:
使用
SET
DATABASE
更改数据库的名称。数据库的名称可以长达八个字节。指定此子句时,还必须指定
RESETLOGS
。如果要重命名数据库并保留现有日志文件,则在发出此CREATE
CONTROLFILE
语句后,必须使用ALTER
DATABASE
RECOVER
USING
BACKUP
CONTROLFILE
语句完成完整的数据库恢复。logfile_clause
使用
logfile_clause
指定的重做日志文件的数据库。您必须列出所有重做日志文件组的所有成员。GROUP INT:指定日志文件组号。如果指定
GROUP
值,则Oracle数据库将GROUP
在数据库上次打开时使用值验证这些值。如果省略此子句,则数据库将使用系统默认值创建日志文件。另外,如果已经设置了
DB_CREATE_ONLINE_LOG_DEST_
n
或者DB_CREATE_FILE_DEST
初始化参数,并且如果你已经指定了RESETLOGS
,那么数据库在DB_CREATE_ONLINE_LOG_DEST_
n参数中指定的默认logfile目标中创建两个日志,如果没有设置,那么在DB_CREATE_FILE_DEST
参数中。RESETLOGS 指定
RESETLOGS
是否希望Oracle数据库忽略LOGFILE
子句中列出的文件的内容。这些文件不必存在。如果指定了该子句,则必须指定此SET
DATABASE
子句。每个
redo_log_file_spec
中LOGFILE
子句都必须指定的SIZE
参数。数据库将所有在线重做日志文件组分配给线程1,并使此线程可以由任何实例公开使用。使用此子句后,必须使用语句的RESETLOGS
子句打开数据库ALTER
DATABASE
。NORESETLOGS 指定
NORESETLOGS
是否希望Oracle数据库在LOGFILE
子句中使用数据库上次打开时的所有文件。这些文件必须存在,并且必须是当前联机重做日志文件,而不是恢复的备份。数据库将重做日志文件组重新分配给先前分配给它们的线程,并重新启用线程,因为它们先前已启用。DATAFILE Clause
指定数据库的数据文件。您必须列出所有数据文件。这些文件必须全部存在,尽管它们可能是还原需要介质恢复的备份。
在
DATAFILE
子句中不要包含只读表空间和临时表空间。稍后可以将这些类型的文件添加到数据库。MAXLOGFILES Clause
指定可以为数据库创建的联机重做日志文件组的最大数量。Oracle数据库使用此值来确定在控制文件中为重做日志文件的名称分配多少空间。默认值和最大值取决于您的操作系统。指定的值不应小于
GROUP
任何重做日志文件组的最大值。MAXLOGMEMBERS Clause
为重做日志文件组指定最大成员数或相同副本。Oracle数据库使用此值来确定在控制文件中为重做日志文件的名称分配多少空间。最小值为1
MAXLOGHISTORY Clause
仅当您使用Oracle数据库
ARCHIVELOG
模式时,此参数才有用。指定当前对数据库自动介质恢复所需的归档重做日志文件组的最大数量的估计。数据库使用此值来确定在控制文件中为归档重做日志文件的名称分配多少空间。MAXDATAFILES Clause
在
CREATE
DATABASE
或指定控制文件的数据文件部分的初始大小CREATE
CONTROLFILE
。尝试添加数字大于MAXDATAFILES
但小于等于DB_FILES
的文件会导致控制文件自动扩展,以便数据文件部分可以容纳更多的文件。您的实例可访问的数据文件数也受到初始化参数的限制
DB_FILES
。MAXINSTANCES Clause
指定可以同时使数据库装载和打开的最大实例数。该值优先于初始化参数的值
INSTANCES
。最小值为1.最大值和默认值取决于您的操作系统。ARCHIVELOG | NOARCHIVELOG
指定
ARCHIVELOG
重新使用重做日志文件的内容进行存档。本节准备介质恢复以及实例或系统故障恢复的可能性。如果省略了
ARCHIVELOG
子句和NOARCHIVELOG
子句,则Oracle数据库NOARCHIVELOG
默认选择模式。创建控制文件后,您可以使用语句在ARCHIVELOG
模式和NOARCHIVELOG
模式之间切换ALTER
DATABASE
。FORCE LOGGING
FORCE
LOGGING
在创建控制文件后,使用此子句将数据库置于模式。当数据库处于此模式时,Oracle数据库将记录数据库中的所有更改,除了临时表空间和临时段的更改。此设置优先于并独立于为单个表空间指定的任何NOLOGGING
或FORCE
LOGGING
设置以及NOLOGGING
为单个数据库对象指定的任何设置。如果省略此子句,则在FORCE
LOGGING
创建控制文件后,数据库将不会处于模式。character_set_clause
如果指定了一个字符集,那么Oracle数据库会重新构建控制文件中的字符集信息。如果随后需要数据库的介质恢复,则在数据库打开之前,此信息将可用,以便在恢复期间可以正确解释表空间名称。仅当您使用除默认值之外的字符集时,才需要此子句,这取决于您的操作系统。Oracle数据库
$ORACLE_HOME/log
在启动期间将当前数据库字符集打印到警报登录。备份控制文件
使用以下语句将控制文件备份到二进制文件(先有控制文件的副本);
alter database backup controlfile to '/oracle/backup/control.bkp';
生成可以用于重新创建控制文件的SQL的语句;
alter database backup controlfile to trace;
阅读全文
0 0
- oracle11g重建控制文件-关闭状态控制文件丢失
- oracle11g重建控制文件-关闭状态控制文件丢失--markdown格式
- oracle11g重建控制文件-open状态控制文件丢失
- oracle11g 控制文件丢失重建控制文件
- oracle11G 处理控制文件的丢失
- 【oracle11g,9】控制文件
- 重建控制文件恢复丢失表空间一例
- 重建控制文件
- 重建控制文件
- oracle 重建控制文件
- 重建控制文件
- 重建控制文件
- oracle控制文件重建
- 重建控制文件
- 重建控制文件详解
- 重建控制文件
- 重建控制文件之后
- oracle重建控制文件
- Goldilocks's two dogs
- Noip提高2013 Day1 T2 火柴排队 归并求逆序对
- jQuery 中 jQuery(function(){})与(function(){})(jQuery) 的区别
- LNMP编译安装常见问题
- Android Studio 首坑 Gradle sync failed: Cause: error in opening zip file 的错误
- oracle11g重建控制文件-关闭状态控制文件丢失
- 解决firefox火狐浏览器无法看支持html5视频又不想装flash的方法
- java 虚拟机启动参数
- caffe官网关于fine tuning的一个例子
- 代码审查工具Pharicator
- 【51Nod1753】相似子串
- 队列(Queue)——先进先出(FIFO)的数据结构(Data Structures)
- JavaScript之路(1)JavaScript数据类型
- 快速排序