oracle备份与恢复 数据库备份与恢复测试(3)
数据库备份与恢复测试(3)
################################ # [ ] 有trace 活动在线日志损坏 ################################ ################################ # [ ] 有trace 活动在线日志损坏 正常shutdown或是当前的数据文件 ################################SQL> create table arch (status varchar( ));
表已创建
SQL> alter system switch logfile;
系统已更改
SQL> insert into arch select ok from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> insert into arch select ok from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> alter system switch logfile;
系统已更改
SQL> insert into arch select no from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> select GROUP# SEQUENCE# archived STATUS from v$log;
GROUP# SEQUENCE# ARC STATUS YES ACTIVE YES ACTIVE NO CURRENT SQL> shutdown 正常关闭数据库数据库已经关闭 已经卸载数据库 ORACLE 例程已经关闭
此时模拟删除当前在线日志组 SQL>SQL>SQL> startup nomountORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesSQL> CREATE CONTROLFILE REUSE DATABASE testdb RESETLOGS ARCHIVELOG SET STANDBY TO MAXIMIZE PERFORMANCE MAXLOGFILES MAXLOGMEMBERS MAXDATAFILES MAXINSTANCES MAXLOGHISTORY LOGFILE GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M STANDBY LOGFILE DATAFILE C:ORACLEORADATAtestdbSYSTEM DBF C:ORACLEORADATAtestdbUNDOTBS DBF C:ORACLEORADATAtestdbINDX DBF C:ORACLEORADATAtestdbTOOLS DBF C:ORACLEORADATAtestdbUSERS DBF CHARACTER SET ZHS GBK ;
控制文件已创建
SQL> alter database open resetlogs;
数据库已更改 SQL> select count(*) status from arch group by status;
COUNT(*) ST no ok
>>没有丢失任何数据 因为你的数据都已经写到数据文件里了
######################################### # [ ] 有trace 活动在线日志损坏 shutdown abort 或是非当前的数据文件 当前在线日志文件损坏 #########################################
####################################################[测试 ] shutdown abort 备份控制文件或者resetlog的trace 没有数据文件备份 采用强制打开数据库的方法####################################################SQL> create table arch (status varchar( )); 表已创建
SQL> alter system switch logfile;
系统已更改
SQL> insert into arch select ok from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> insert into arch select ok from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> alter system switch logfile;SQL> insert into arch select no from dba_objects;
已创建 行
SQL> mit;
提交完成 SQL> select GROUP# SEQUENCE# archived STATUS from v$log;
GROUP# SEQUENCE# ARC STATUS YES ACTIVE NO CURRENT YES INACTIVE
SQL> insert into arch select no from dba_objects;
已创建 行
SQL> shutdown abortORACLE 例程已经关闭
SQL> startupORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytes数据库装载完毕 ORA : 无法打开日志组 (线程 ) 的成员ORA : 联机日志 线程 : C:ORACLEORADATATESTDBREDO LOG ORA : 无法读取文件的标题块OSD : ReadFile() 失败 无法读取文件O/S Error: (OS ) 到达文件结尾
SQL> alter database clear logfile group ;alter database clear logfile group *ERROR 位于第 行:ORA : 线程 的紧急恢复需要日志 ORA : 联机日志 线程 : C:ORACLEORADATATESTDBREDO LOG
SQL> startup nomountORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesSQL> CREATE CONTROLFILE REUSE DATABASE testdb RESETLOGS ARCHIVELOG SET STANDBY TO MAXIMIZE PERFORMANCE MAXLOGFILES MAXLOGMEMBERS MAXDATAFILES MAXINSTANCES MAXLOGHISTORY LOGFILE GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M STANDBY LOGFILE DATAFILE C:ORACLEORADATAtestdbSYSTEM DBF C:ORACLEORADATAtestdbUNDOTBS DBF C:ORACLEORADATAtestdbINDX DBF C:ORACLEORADATAtestdbTOOLS DBF C:ORACLEORADATAtestdbUSERS DBF CHARACTER SET ZHS GBK ;
控制文件已创建
SQL> alter database open resetlogs;alter database open resetlogs*ERROR 位于第 行:ORA : ?? ?????????????ORA : ???? : C:ORACLEORADATATESTDBSYSTEM DBF
SQL> recover database using backup controlfile until cancel;ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:ORACLEORADATATESTDBARCHIVE _ DBFORA : ?? ???? ???? # ???
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}cancelORA : ??: RECOVER ??? OPEN RESETLOGS ???????ORA : ?? ?????????????ORA : ???? : C:ORACLEORADATATESTDBSYSTEM DBF
ORA : ???????
我们看到如果是abort DOWN机的话 打开数据库都需要应用在线活动日志
这时必须加隐含参数强制打开数据库 并进行导出 重建数据库 导入业务数据
SQL> show parameter spfile NAME TYPE VALUE spfile string %ORACLE_HOME%DATABASESPFILE ORACLE_SID% ORA SQL> create pfile= pfiletest ora from spfile; 文件已创建 SQL> create pfile= c:pfiletest ora from spfile; 文件已创建 编辑c:pfiletest ora 增加三个参数 _allow_resetlogs_corruption=true _corrupted_rollback_segments=true _offline_rollback_segments=true SQL> shutdown immediate ORA : 数据库未打开 已经卸载数据库 ORACLE 例程已经关闭 SQL> SQL> SQL> SQL> startup pfile= c:pfiletest ora ORACLE 例程已经启动 Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes 数据库装载完毕 ORA : 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项 SQL> alter database open resetlogs; alter database open resetlogs * ERROR 位于第 行: ORA : ORACLE 例程终止 强行断开连接 SQL> SQL> SQL> exit 从Oracle i Enterprise Edition Release Production With the Partitioning OLAP and Oracle Data Mining options JServer Release Production中断开 C:>sqlplus /as sysdba SQL*Plus: Release Production on 星期五 月 : : Copyright (c) Oracle Corporation All rights reserved 已连接到空闲例程 SQL> startup pfile= c:pfiletest ora ORACLE 例程已经启动 Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes 数据库装载完毕 数据库已经打开 SQL>
##################################################### [测试 ] shutdown abort resetlog的trace # 有数据文件备份 当前在线日志损坏 控制文件损坏 有trace####################################################SQL> create table arch (status varchar( )) tablespace users;
表已创建
SQL> alter system switch logfile;
系统已更改
SQL> insert into arch select ok from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> insert into arch select * from arch;
已创建 行
SQL> /
已创建 行
SQL> /
已创建 行
SQL> /
已创建 行
SQL> mit;
提交完成
SQL> alter system switch logfile;
系统已更改
SQL> insert into arch select no from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> select GROUP# SEQUENCE# archived STATUS from v$log;
GROUP# SEQUENCE# ARC STATUS NO CURRENT YES ACTIVE NO ACTIVE
SQL> shutdown abortORACLE 例程已经关闭 SQL> startup nomountORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesSQL> CREATE CONTROLFILE REUSE DATABASE testdb NORESETLOGS ARCHIVELOG
SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
MAXINSTANCES
MAXLOGHISTORY
LOGFILE GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M
GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M
STANDBY LOGFILE
DATAFILE
C:ORACLEORADATAtestdbSYSTEM DBF
C:ORACLEORADATAtestdbUNDOTBS DBF
C:ORACLEORADATAtestdbINDX DBF
C:ORACLEORADATAtestdbTOOLS DBF
C:ORACLEORADATAtestdbUSERS DBF
CHARACTER SET ZHS GBK
;CREATE CONTROLFILE REUSE DATABASE testdb NORESETLOGS ARCHIVELOG*ERROR 位于第 行:ORA : CREATE CONTROLFILE ??ORA : ??????????
~~~~~~~~~~~~~~~~~~~~~~如果是NORESETLOGS 那么他要检查当前的在线日志 而现在没有了
SQL> CREATE CONTROLFILE REUSE DATABASE testdb NORESETLOGS ARCHIVELOG
SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
MAXINSTANCES
MAXLOGHISTORY
LOGFILE
GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M
GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M
GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M
STANDBY LOGFILE
DATAFILE
C:ORACLEORADATAtestdbSYSTEM DBF
C:ORACLEORADATAtestdbUNDOTBS DBF
C:ORACLEORADATAtestdbINDX DBF
C:ORACLEORADATAtestdbTOOLS DBF
C:ORACLEORADATAtestdbUSERS DBF
CHARACTER SET ZHS GBK
;CREATE CONTROLFILE REUSE DATABASE testdb NORESETLOGS ARCHIVELOG*ERROR 位于第 行:ORA : CREATE CONTROLFILE ??ORA : ???? C:ORACLEORADATAtestdbREDO LOG ??? >>这个文件不在了ORA : ??????OSD : N^ ( r?*ND<~O/S Error: (OS ) O M UR ; =V ( DND<~!#
SQL> CREATE CONTROLFILE REUSE DATABASE testdb RESETLOGS ARCHIVELOG
SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
MAXINSTANCES
MAXLOGHISTORY
LOGFILE GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M
GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M
STANDBY LOGFILE
DATAFILE
C:ORACLEORADATAtestdbSYSTEM DBF
C:ORACLEORADATAtestdbUNDOTBS DBF
C:ORACLEORADATAtestdbINDX DBF
C:ORACLEORADATAtestdbTOOLS DBF
C:ORACLEORADATAtestdbUSERS DBF
CHARACTER SET ZHS GBK
;CREATE CONTROLFILE REUSE DATABASE testdb RESETLOGS ARCHIVELOG*ERROR 位于第 行:ORA : CREATE CONTROLFILE ??ORA : ????????ORA : ????: C:oracleoradatatestdbcontrol ctl 这个文件不能被覆蓋 删除三个控制文件ORA : skgfglk: ?????? ?????OSD : N^ ( r?*ND<~O/S Error: (OS ) >>x CNJ!#
SQL> shutdownORA : ??????
ORACLE 例程已经关闭 SQL> startup nomountORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesSQL> CREATE CONTROLFILE REUSE DATABASE testdb RESETLOGS ARCHIVELOG
SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
MAXINSTANCES
MAXLOGHISTORY
LOGFILE GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M
GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M
STANDBY LOGFILE
DATAFILE
C:ORACLEORADATAtestdbSYSTEM DBF
C:ORACLEORADATAtestdbUNDOTBS DBF
C:ORACLEORADATAtestdbINDX DBF
C:ORACLEORADATAtestdbTOOLS DBF
C:ORACLEORADATAtestdbUSERS DBF
CHARACTER SET ZHS GBK
;
控制文件已创建
SQL> alter database open;alter database open*ERROR 位于第 行:ORA : ??????????? RESETLOGS ? NORESETLOGS ??
SQL> alter database open resetlogs;alter database open resetlogs*ERROR 位于第 行:ORA : ?? ????????????ORA : ???? : C:ORACLEORADATATESTDBSYSTEM DBF
SQL> recover database using backup controlfile until cancel;ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:ORACLEORADATATESTDBARCHIVE _ DBFORA : ?? ???? ???? # ???
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:ORACLEORADATATESTDBARCHIVE _ DBFORA : ?? ???? ???? # ???ORA : ??????????? C:ORACLEORADATATESTDBARCHIVE _ DBF
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:ORACLEORADATATESTDBARCHIVE _ DBFORA : ?? ???? ???? # ???ORA : ??????????? C:ORACLEORADATATESTDBARCHIVE _ DBF
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA : ???????? C:ORACLEORADATATESTDBARCHIVE _ DBF ORA : ??????OSD : N^ ( r?*ND<~O/S Error: (OS ) O M UR ; =V ( DND<~!#
SQL> recover database using backup controlfile until cancel;ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:ORACLEORADATATESTDBARCHIVE _ DBFORA : ?? ???? ???? # ???
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}cancel介质恢复已取消 SQL> alter database open resetlogs;
数据库已更改
SQL> select count(*) status from arch group by status;
COUNT(*) ST ok 还原了部分数据 但不能还原在线日志中的数据
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~如果数据库是abort或者老的数据文件备份 那么就涉及到控制文件和数据文件不一致 需要恢复 就涉及到当前被破坏的在线日志 启动时仍然需要用在线活动日志进行恢复 如果是正常的shutdown 而且没有用老的数据备份 那么控制文件和数据文件是一致的 不需要当前在线日志 而在abort或者老的数据文件备份在这种情况下 只能用备份的datafile和备份的controlfile来做不完全恢复 都将造成数据丢失 因此多重controlfile 和 online redo log file 很重要 通常情况下是在正常运行数据库时 当前在线日志被破坏的 此时马上会数据库不正常DOWN机 也就出现 的情景我们知道如果是abort关闭的 那么有些事务是不完整的或者有些事务没有被写到数据文件 在数据文件中有这样的标识 这样 用create controlfile noresetlogs或者resetlogs创建时读取数据文件头信息 该文件在控制文件信息 比如结束SCN设置为无穷大)打开时就需要当前在线日志恢复~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##################################################### [测试 ] shutdown abort 控制文件损坏 备份控制文件 # 当前在线日志损坏 有数据文件备份####################################################
还原原来备份的数据文件 控制文件SQL> shutdownORA : 数据库未打开
ORACLE 例程已经关闭 SQL> startup mountORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesORA : ??????? C:oracleora DATABASEPWDtestdb ORA
SQL> recover database using backup controlfile ;ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:ORACLEORADATATESTDBARCHIVE _ DBFORA : ?? ???? ???? # ???
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:ORACLEORADATATESTDBARCHIVE _ DBFORA : ?? ???? ???? # ???ORA : ??????????? C:ORACLEORADATATESTDBARCHIVE _ DBF
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:ORACLEORADATATESTDBARCHIVE _ DBFORA : ?? ???? ???? # ???ORA : ??????????? C:ORACLEORADATATESTDBARCHIVE _ DBF
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA : ???????? C:ORACLEORADATATESTDBARCHIVE _ DBF ORA : ??????OSD : N^ ( r?*ND<~O/S Error: (OS ) O M UR ; =V ( DND<~!#
SQL> alter database open resetlogs;alter database open resetlogs*ERROR 位于第 行:ORA : ?? ??????ORA : ???? : C:ORACLEORADATATESTDBSYSTEM DBF
SQL> select resetlogs_change# CONTROLFILE_CHANGE# from v$database;
RESETLOGS_CHANGE# CONTROLFILE_CHANGE#
SQL> recover database using backup controlfile until cancel;ORA : ?? (? / / : : ??) ???? ????ORA : ??: C:ORACLEORADATATESTDBARCHIVE _ DBFORA : ?? ???? ???? # ???
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}cancel介质恢复已取消 SQL> select resetlogs_change# CONTROLFILE_CHANGE# from v$database;
RESETLOGS_CHANGE# CONTROLFILE_CHANGE#
SQL> alter database open resetlogs;
数据库已更改
SQL> select count(*) status from arch group by status;
COUNT(*) ST ok
###################################################### # [ ] 控制文件损坏 如果trace不是最新的数据库结构 如少了个数据文件######################################################

SQL> create table arch (status varchar( ));
表已创建
SQL> alter system switch logfile;
系统已更改
SQL> insert into arch select ok from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> insert into arch select ok from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> alter system switch logfile;
系统已更改
SQL> insert into arch select no from dba_objects;
已创建 行
SQL> mit;
提交完成
SQL> select GROUP# SEQUENCE# archived STATUS from v$log;
GROUP# SEQUENCE# ARC STATUS NO ACTIVE YES ACTIVE NO CURRENT SQL> alter tablespace tools add datafile C:ORACLEORADATATESTDBTOOLS dbf size m;
表空间已更改
SQL> shutdown数据库已经关闭 已经卸载数据库 ORACLE 例程已经关闭
模拟控制文件丢失
SQL> CREATE CONTROLFILE REUSE DATABASE testdb NORESETLOGS ARCHIVELOG SET STANDBY TO MAXIMIZE PERFORMANCE MAXLOGFILES MAXLOGMEMBERS MAXDATAFILES MAXINSTANCES MAXLOGHISTORY LOGFILE GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M STANDBY LOGFILE DATAFILE C:ORACLEORADATAtestdbSYSTEM DBF C:ORACLEORADATAtestdbUNDOTBS DBF C:ORACLEORADATAtestdbINDX DBF C:ORACLEORADATAtestdbTOOLS DBF C:ORACLEORADATAtestdbUSERS DBF CHARACTER SET ZHS GBK ;
控制文件已创建
SQL> alter database open;
数据库已更改
SQL> select name status from v$datafile;
NAME STATUS C:ORACLEORADATATESTDBSYSTEM DBF SYSTEMC:ORACLEORADATATESTDBUNDOTBS DBF ONLINEC:ORACLEORADATATESTDBINDX DBF ONLINEC:ORACLEORADATATESTDBTOOLS DBF ONLINEC:ORACLEORADATATESTDBUSERS DBF ONLINEC:ORACLEORA DATABASEMISSING RECOVER 这个文件现在是recover状态
已选择 行
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~我们发现C:ORACLEORA DATABASEMISSING 并不存在 只不过是个标记而已~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SQL> alter database rename file MISSING to C:ORACLEORADATATESTDBTOOLS dbf ; MISSING 不要加路径
数据库已更改
SQL> recover datafile C:ORACLEORADATATESTDBTOOLS dbf ;完成介质恢复
SQL> alter database datafile C:ORACLEORADATATESTDBTOOLS dbf online;
数据库已更改
~~~~~~~~~~~~~~~~~~~~~~~~~如果用备份控制文件 且备份控制文件少了新增加的两个文件 恢复时会提示错误 我们可以用rename来解决~~~~~~~~~~~~~~~~~~~~~~~~~使用备份控制文件recover AUTOMATIC database using backup controlfile until cancel ORA : recovery session canceled due to errors ORA : unnamed datafile(s) added to controlfile by media recoveryORA : data file : /oracle/dbs/db f ORA : data file : /oracle/dbs/db f
~~~~~~~~~~~~~~~~~~~~这是因为前滚时发现file#中有两个文件 但控制文件没有我们可以在v$datafile中看到所以恢复中断~~~~~~~~~~~~~~~~~~~~SELECT FILE# NAME FROM V$DATAFILE;
FILE# NAME /oracle/dbs/db f /oracle/dbs/UNNAMED /oracle/dbs/UNNAMED
这时对文件进行改名就可以了
ALTER DATABASE RENAME FILE /db/UNNAMED TO /oracle/dbs/db f ;ALTER DATABASE RENAME FILE /db/UNNAMED TO /oracle/dbs/db f ;
RECOVER AUTOMATIC DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL
###################################################### # [ ] 控制文件损坏 如果trace不是最新的数据库结构 如少了个只读数据文件######################################################
SQL> alter tablespace tools add datafile C:ORACLEORADATATESTDBTOOLS dbf size m ;
表空间已更改 SQL> alter tablespace tools read only;
表空间已更改 SQL> select name ENABLED from v$datafile;
NAME ENABLED C:ORACLEORADATATESTDBSYSTEM DBF READ WRITEC:ORACLEORADATATESTDBUNDOTBS DBF READ WRITEC:ORACLEORADATATESTDBINDX DBF READ WRITEC:ORACLEORADATATESTDBTOOLS DBF READ ONLYC:ORACLEORADATATESTDBUSERS DBF READ WRITEC:ORACLEORADATATESTDBTOOLS DBF READ ONLY
已选择 行 SQL> startup nomountORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesSQL> CREATE CONTROLFILE REUSE DATABASE testdb NORESETLOGS ARCHIVELOG SET STANDBY TO MAXIMIZE PERFORMANCE MAXLOGFILES MAXLOGMEMBERS MAXDATAFILES MAXINSTANCES MAXLOGHISTORY LOGFILE GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M STANDBY LOGFILE DATAFILE C:ORACLEORADATAtestdbSYSTEM DBF C:ORACLEORADATAtestdbUNDOTBS DBF C:ORACLEORADATAtestdbINDX DBF C:ORACLEORADATAtestdbTOOLS DBF C:ORACLEORADATAtestdbUSERS DBF CHARACTER SET ZHS GBK ;
控制文件已创建SQL> select name from v$datafile;
NAME
C:ORACLEORADATATESTDBSYSTEM DBFC:ORACLEORADATATESTDBUNDOTBS DBFC:ORACLEORADATATESTDBINDX DBFC:ORACLEORADATATESTDBTOOLS DBFC:ORACLEORADATATESTDBUSERS DBFSQL> alter database open;
数据库已更改
SQL> select name from v$datafile;
NAME
C:ORACLEORADATATESTDBSYSTEM DBFC:ORACLEORADATATESTDBUNDOTBS DBFC:ORACLEORADATATESTDBINDX DBFC:ORACLEORADATATESTDBTOOLS DBFC:ORACLEORADATATESTDBUSERS DBFC:ORACLEORA DATABASEMISSING OPEN时增加了不认识的文件名
已选择 行
SQL> alter database rename file MISSING to C:ORACLEORA DATABASETOOLS DBF ;alter database rename file MISSING to C:ORACLEORA DATABASETOOLS DBF *ERROR 位于第 行:ORA : 重命名日志/数据文件时出错ORA : 重命名数据文件 时出错 未找到新文件 C:ORACLEORA DATABASETOOLS DBF ORA : 数据文件 名称未知 请重命名以更正文件ORA : 数据文件 : C:ORACLEORA DATABASEMISSING ORA : 无法打开文件OSD : 无法打开文件O/S Error: (OS ) 系统找不到指定的文件 *ERROR 位于第 行:ORA : ?? ??????ORA : ???? : C:ORACLEORADATATESTDBTOOLS DBF
SQL> alter database datafile C:ORACLEORADATATESTDBTOOLS DBF offline;
数据库已更改
SQL> alter database datafile C:ORACLEORADATATESTDBTOOLS DBF offline;alter database datafile C:ORACLEORADATATESTDBTOOLS DBF offline*ERROR 位于第 行:ORA : ???????? ????????? C:ORACLEORADATATESTDBTOOLS DBF
SQL> alter database open ;
数据库已更改
SQL> alter database datafile MISSING offline; >>注意只读表空间必须先offline 而且注意MISSING 不能写全路径
数据库已更改
SQL> alter database rename file MISSING to C:ORACLEORADATATESTDBTOOLS DBF ;
数据库已更改 SQL> alter tablespace tools online;
表空间已更改
方法 SQL> SHUTDOWN数据库已经关闭 已经卸载数据库 ORACLE 例程已经关闭 SQL> STARTUP NOMOUNTORACLE 例程已经启动
Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesSQL> CREATE CONTROLFILE REUSE DATABASE testdb NORESETLOGS ARCHIVELOG
SET STANDBY TO MAXIMIZE PERFORMANCE MAXLOGFILES MAXLOGMEMBERS MAXDATAFILES MAXINSTANCES MAXLOGHISTORY LOGFILE GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M GROUP C:ORACLEORADATAtestdbREDO LOG SIZE M STANDBY LOGFILE DATAFILE C:ORACLEORADATAtestdbSYSTEM DBF C:ORACLEORADATAtestdbUNDOTBS DBF C:ORACLEORADATAtestdbINDX DBF C:ORACLEORADATAtestdbTOOLS DBF C:ORACLEORADATAtestdbTOOLS DBF 创建语句中加入该数据文件 C:ORACLEORADATAtestdbUSERS DBF CHARACTER SET ZHS GBK ;
控制文件已创建
SQL> SELECT NAME FROM V$DATAFILE;
NAME
C:ORACLEORADATATESTDBSYSTEM DBFC:ORACLEORADATATESTDBUNDOTBS DBFC:ORACLEORADATATESTDBINDX DBFC:ORACLEORADATATESTDBTOOLS DBFC:ORACLEORADATATESTDBUSERS DBFC:ORACLEORADATATESTDBTOOLS DBF
已选择 行
SQL> ALTER DATABASE OPEN;ALTER DATABASE OPEN*ERROR 位于第 行:ORA : ?? ??????ORA : ???? : C:ORACLEORADATATESTDBTOOLS DBF
SQL> RECOVER TABLESPACE TOOLS;完成介质恢复 SQL> ALTER DATABASE OPEN;
数据库已更改
################################## # [ ] 使用备份的控制文件进行恢复 # ##################################
lishixinzhi/Article/program/Oracle/201311/17289