视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle控制文件损坏恢复
2020-11-09 11:18:31 责编:小采
文档


Oracle控制文件损坏恢复,SQLgt; alter database backup controlfile to trace; mdash;mdash;将控制文件备份到trace文件

一、使用trace文件恢复

SQL> alter database backup controlfile to trace; ——将控制文件备份到trace文件

Database altered.

SQL> @gettrace --得到trace文件的路径

TRACE_FILE_NAME
--------------------------------------------------------------------------------
/Oracle/app/admin/ora10g/udump/ora10g_ora_31270.trc

SQL> !
[oracle@ ~]$ more /oracle/app/admin/ora10g/udump/ora10g_ora_31270.trc

/oracle/app/admin/ora10g/udump/ora10g_ora_31270.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
ORACLE_HOME = /oracle/app/oracle/product/10.2.0/db_1
System name: Linux
Node name:
Release: 2.6.18-1.el5
.
.
.

-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORA10G" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/ora10g/redo01.log' SIZE 50M,
GROUP 2 '/oradata/ora10g/redo02.log' SIZE 50M,
GROUP 3 '/oradata/ora10g/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/oradata/ora10g/system01.dbf',
'/oradata/ora10g/undotbs01.dbf',
.
.
.

ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/ora10g/temp01.dbf'
SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
-- End of tempfile additions.
--

[oracle@ udump]$ cd
[oracle@ ~]$ vim recontro.sql ——拷贝trace文件中有用的语句重建控制文件。如果在之前没有备份的trace文件,,我们可以从init{SID}.ora文件中得到数据文件、日志文件、数据库表空间等信息,把init{SID}.ora文件中的内容按以下格式创建重构控制文件脚本

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORA10G" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/ora10g/redo01.log' SIZE 50M,
GROUP 2 '/oradata/ora10g/redo02.log' SIZE 50M,
GROUP 3 '/oradata/ora10g/redo03.log' SIZE 50M
DATAFILE
'/oradata/ora10g/system01.dbf',
'/oradata/ora10g/undotbs01.dbf',
'/oradata/ora10g/sysaux01.dbf',
'/oradata/ora10g/users01.dbf'
CHARACTER SET ZHS16GBK
;
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','OFF');
RECOVER DATABASE
ALTER SYSTEM ARCHIVE LOG ALL;
ALTER DATABASE OPEN;
SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORA10G" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/ora10g/redo01.log' SIZE 50M,
GROUP 2 '/oradata/ora10g/redo02.log' SIZE 50M,
GROUP 3 '/oradata/ora10g/redo03.log' SIZE 50M
DATAFILE
'/oradata/ora10g/system01.dbf',
'/oradata/ora10g/undotbs01.dbf',
'/oradata/ora10g/sysaux01.dbf',
'/oradata/ora10g/users01.dbf'
CHARACTER SET ZHS16GBK
;
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','OFF');
RECOVER DATABASE USING BACKUP CONTROLFILE
ALTER DATABASE OPEN RESETLOGS;
SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
"recontro.sql" 49L, 11C 已写入
[oracle@ ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jul 19 03:30:34 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> set echo on ——打开显示输出
SQL> @recontro ——使用刚建立的重构控制文件的脚本重建控制文件
SQL> STARTUP NOMOUNT
ORACLE instance started.

Total System Global Area 209715200 bytes
Fixed Size 1218556 bytes
Variable Size 75499524 bytes
Database Buffers 130023424 bytes
Redo Buffers 2973696 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "ORA10G" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 '/oradata/ora10g/redo01.log' SIZE 50M,
9 GROUP 2 '/oradata/ora10g/redo02.log' SIZE 50M,
10 GROUP 3 '/oradata/ora10g/redo03.log' SIZE 50M
11 DATAFILE
12 '/oradata/ora10g/system01.dbf',
13 '/oradata/ora10g/undotbs01.dbf',
14 '/oradata/ora10g/sysaux01.dbf',
15 '/oradata/ora10g/users01.dbf'
16 CHARACTER SET ZHS16GBK
17 ;

Control file created.

SQL> VARIABLE RECNO NUMBER;
SQL> EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','OFF');

PL/SQL procedure successfully completed.

SQL> RECOVER DATABASE

SQL> ALTER SYSTEM ARCHIVE LOG ALL;

System altered.

SQL> ALTER DATABASE OPEN;

Database altered.

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/ora10g/temp01.dbf'
2 SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;

Tablespace altered.

SQL> STARTUP NOMOUNT
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> CREATE CONTROLFILE REUSE DATABASE "ORA10G" RESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 '/oradata/ora10g/redo01.log' SIZE 50M,
9 GROUP 2 '/oradata/ora10g/redo02.log' SIZE 50M,
10 GROUP 3 '/oradata/ora10g/redo03.log' SIZE 50M
11 DATAFILE
12 '/oradata/ora10g/system01.dbf',
13 '/oradata/ora10g/undotbs01.dbf',
14 '/oradata/ora10g/sysaux01.dbf',
15 '/oradata/ora10g/users01.dbf'
16 CHARACTER SET ZHS16GBK
17 ;
CREATE CONTROLFILE REUSE DATABASE "ORA10G" RESETLOGS ARCHIVELOG

SQL> VARIABLE RECNO NUMBER;
SQL> EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','OFF');

PL/SQL procedure successfully completed.

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE

SQL> ALTER DATABASE OPEN RESETLOGS;

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/ora10g/temp01.dbf'
2 SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/ora10g/temp01.dbf'

Tablespace altered.
SQL> select open_mode from v$database;

OPEN_MODE
----------
READ WRITE

下载本文
显示全文
专题