################################
# [
################################
################################
# [
################################
SQL> create table arch (status varchar(
表已創建
SQL> alter system switch logfile;
系統已更改
SQL> insert into arch select
已創建
SQL> commit;
提交完成
SQL> insert into arch select
已創建
SQL> commit;
提交完成
SQL> alter system switch logfile;
系統已更改
SQL> insert into arch select
已創建
SQL> commit;
提交完成
SQL> select GROUP#
GROUP# SEQUENCE# ARC STATUS
SQL> shutdown
數據庫已經關閉
已經卸載數據庫
ORACLE 例程已經關閉
此時模擬刪除當前在線日志組
SQL>
SQL>
SQL> startup nomount
ORACLE 例程已經啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
SQL> CREATE CONTROLFILE REUSE DATABASE
控制文件已創建
SQL> alter database open resetlogs;
數據庫已更改
SQL> select count(*)
COUNT(*) ST
#########################################
# [
#########################################
####################################################
[測試
沒有數據文件備份
####################################################
SQL> create table arch (status varchar(
表已創建
SQL> alter system switch logfile;
系統已更改
SQL> insert into arch select
已創建
SQL> commit;
提交完成
SQL> insert into arch select
已創建
SQL> commit;
提交完成
SQL> alter system switch logfile;
SQL> insert into arch select
已創建
SQL> commit;
提交完成
SQL> select GROUP#
GROUP# SEQUENCE# ARC STATUS
SQL> insert into arch select
已創建
SQL> shutdown abort
ORACLE 例程已經關閉
SQL> startup
ORACLE 例程已經啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
數據庫裝載完畢
ORA
ORA
ORA
OSD
O/S
SQL> alter database clear logfile group
alter database clear logfile group
*
ERROR 位於第
ORA
ORA
SQL> startup nomount
ORACLE 例程已經啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
SQL> CREATE CONTROLFILE REUSE DATABASE
控制文件已創建
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位於第
ORA
ORA
SQL> recover database using backup controlfile until cancel;
ORA
ORA
ORA
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA
ORA
ORA
ORA
我們看到如果是abort DOWN機的話
這時必須加隱含參數強制打開數據庫
SQL> show parameter spfile
NAME TYPE VALUE
spfile string %ORACLE_HOME%\DATABASE\SPFILE
ORACLE_SID%
SQL> create pfile=
文件已創建
SQL> create pfile=
文件已創建
編輯c:\pfiletest
增加三個參數
_allow_resetlogs_corruption=true
_corrupted_rollback_segments=true
_offline_rollback_segments=true
SQL> shutdown immediate
ORA
已經卸載數據庫
ORACLE 例程已經關閉
SQL>
SQL>
SQL>
SQL> startup pfile=
ORACLE 例程已經啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
數據庫裝載完畢
ORA
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位於第
ORA
SQL>
SQL>
SQL> exit
從Oracle
With the Partitioning
JServer Release
C:\>sqlplus
SQL*Plus: Release
Copyright (c)
已連接到空閒例程
SQL> startup pfile=
ORACLE 例程已經啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
數據庫裝載完畢
數據庫已經打開
SQL>
####################################################
# [測試
# 有數據文件備份
####################################################
SQL> create table arch (status varchar(
表已創建
SQL> alter system switch logfile;
系統已更改
SQL> insert into arch select
已創建
SQL> commit;
提交完成
SQL> insert into arch select * from arch;
已創建
SQL> /
已創建
SQL> /
已創建
SQL> /
已創建
SQL> commit;
提交完成
SQL> alter system switch logfile;
系統已更改
SQL> insert into arch select
已創建
SQL> commit;
提交完成
SQL> select GROUP#
GROUP# SEQUENCE# ARC STATUS
SQL> shutdown abort
ORACLE 例程已經關閉
SQL> startup nomount
ORACLE 例程已經啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
SQL> CREATE CONTROLFILE REUSE DATABASE
CREATE CONTROLFILE REUSE DATABASE
*
ERROR 位於第
ORA
ORA
~~~~~~~~~~~~~~~~~~~~~~
如果是NORESETLOGS
SQL> CREATE CONTROLFILE REUSE DATABASE
CREATE CONTROLFILE REUSE DATABASE
*
ERROR 位於第
ORA
ORA
ORA
OSD
O/S
SQL> CREATE CONTROLFILE REUSE DATABASE
CREATE CONTROLFILE REUSE DATABASE
*
ERROR 位於第
ORA
ORA
ORA
ORA
OSD
O/S
SQL> shutdown
ORA
ORACLE 例程已經關閉
SQL> startup nomount
ORACLE 例程已經啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
SQL> CREATE CONTROLFILE REUSE DATABASE
控制文件已創建
SQL> alter database open;
alter database open
*
ERROR 位於第
ORA
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位於第
ORA
ORA
SQL> recover database using backup controlfile until cancel;
ORA
ORA
ORA
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA
ORA
ORA
ORA
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA
ORA
ORA
ORA
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA
ORA
OSD
O/S
SQL> recover database using backup controlfile until cancel;
ORA
ORA
ORA
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
介質恢復已取消
SQL> alter database open resetlogs;
數據庫已更改
SQL> select count(*)
COUNT(*) ST
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果數據庫是abort或者老的數據文件備份
不需要當前在線日志
全恢復
當前在線日志被破壞的
我們知道如果是abort關閉的
create controlfile
打開時就需要當前在線日志恢復
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
####################################################
# [測試
# 當前在線日志損壞
####################################################
還原原來備份的數據文件
SQL> shutdown
ORA
ORACLE 例程已經關閉
SQL> startup mount
ORACLE 例程已經啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
ORA
SQL> recover database using backup controlfile ;
ORA
ORA
ORA
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA
ORA
ORA
ORA
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA
ORA
ORA
ORA
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA
ORA
OSD
O/S
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位於第
ORA
ORA
SQL> select resetlogs_change#
RESETLOGS_CHANGE#
SQL> recover database using backup controlfile until cancel;
ORA
ORA
ORA
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
介質恢復已取消
SQL> select resetlogs_change#
RESETLOGS_CHANGE#
SQL> alter database open resetlogs;
數據庫已更改
SQL> select count(*)
COUNT(*) ST
######################################################
# [
######################################################
SQL> create table arch (status varchar(
表已創建
SQL> alter system switch logfile;
系統已更改
SQL> insert into arch select
已創建
SQL> commit;
提交完成
SQL> insert into arch select
已創建
SQL> commit;
提交完成
SQL> alter system switch logfile;
系統已更改
SQL> insert into arch select
已創建
SQL> commit;
提交完成
SQL> select GROUP#
GROUP# SEQUENCE# ARC STATUS
SQL> alter tablespace tools add datafile
size
表空間已更改
SQL> shutdown
數據庫已經關閉
已經卸載數據庫
ORACLE 例程已經關閉
模擬控制文件丟失
SQL> CREATE CONTROLFILE REUSE DATABASE
控制文件已創建
SQL> alter database open;
數據庫已更改
SQL> select name
NAME STATUS
C:\ORACLE\ORADATA\TESTDB\SYSTEM
C:\ORACLE\ORADATA\TESTDB\UNDOTBS
C:\ORACLE\ORADATA\TESTDB\INDX
C:\ORACLE\ORADATA\TESTDB\TOOLS
C:\ORACLE\ORADATA\TESTDB\USERS
C:\ORACLE\ORA
已選擇
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我們發現C:\ORACLE\ORA
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SQL> alter database rename file
數據庫已更改
SQL> recover datafile
完成介質恢復
SQL> alter database datafile
數據庫已更改
~~~~~~~~~~~~~~~~~~~~~~~~~
如果用備份控制文件
控制文件少了新增加的兩個文件
用rename來解決
~~~~~~~~~~~~~~~~~~~~~~~~~
使用備份控制文件
recover AUTOMATIC database using backup controlfile until cancel
ORA
ORA
ORA
ORA
~~~~~~~~~~~~~~~~~~~~
這是因為前滾時發現file#中
有兩個文件
我們可以在v$datafile中看到
所以恢復中斷
~~~~~~~~~~~~~~~~~~~~
SELECT FILE#
FROM V$DATAFILE;
FILE# NAME
這時對文件進行改名就可以了
ALTER DATABASE RENAME FILE
ALTER DATABASE RENAME FILE
RECOVER AUTOMATIC DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL
######################################################
# [
######################################################
SQL> alter tablespace tools add datafile
size
表空間已更改
SQL> alter tablespace tools read only;
表空間已更改
SQL> select name
NAME ENABLED
C:\ORACLE\ORADATA\TESTDB\SYSTEM
C:\ORACLE\ORADATA\TESTDB\UNDOTBS
C:\ORACLE\ORADATA\TESTDB\INDX
C:\ORACLE\ORADATA\TESTDB\TOOLS
C:\ORACLE\ORADATA\TESTDB\USERS
C:\ORACLE\ORADATA\TESTDB\TOOLS
已選擇
SQL> startup nomount
ORACLE 例程已經啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
SQL> CREATE CONTROLFILE REUSE DATABASE
控制文件已創建
SQL> select name from v$datafile;
NAME
C:\ORACLE\ORADATA\TESTDB\SYSTEM
C:\ORACLE\ORADATA\TESTDB\UNDOTBS
C:\ORACLE\ORADATA\TESTDB\INDX
C:\ORACLE\ORADATA\TESTDB\TOOLS
C:\ORACLE\ORADATA\TESTDB\USERS
SQL> alter database open;
數據庫已更改
SQL> select name from v$datafile;
NAME
C:\ORACLE\ORADATA\TESTDB\SYSTEM
C:\ORACLE\ORADATA\TESTDB\UNDOTBS
C:\ORACLE\ORADATA\TESTDB\INDX
C:\ORACLE\ORADATA\TESTDB\TOOLS
C:\ORACLE\ORADATA\TESTDB\USERS
C:\ORACLE\ORA
已選擇
SQL> alter database rename file
S
alter database rename file
BF
*
ERROR 位於第
ORA
ORA
ORA
ORA
ORA
OSD
O/S
*
ERROR 位於第
ORA
ORA
SQL> alter database datafile
數據庫已更改
SQL> alter database datafile
alter database datafile
*
ERROR 位於第
ORA
SQL> alter database open ;
數據庫已更改
SQL> alter database datafile
數據庫已更改
SQL> alter database rename file
LS
數據庫已更改
SQL> alter tablespace tools online;
表空間已更改
方法
SQL> SHUTDOWN
數據庫已經關閉
已經卸載數據庫
ORACLE 例程已經關閉
SQL> STARTUP NOMOUNT
ORACLE 例程已經啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
SQL> CREATE CONTROLFILE REUSE DATABASE
控制文件已創建
SQL> SELECT NAME FROM V$DATAFILE;
NAME
C:\ORACLE\ORADATA\TESTDB\SYSTEM
C:\ORACLE\ORADATA\TESTDB\UNDOTBS
C:\ORACLE\ORADATA\TESTDB\INDX
C:\ORACLE\ORADATA\TESTDB\TOOLS
C:\ORACLE\ORADATA\TESTDB\USERS
C:\ORACLE\ORADATA\TESTDB\TOOLS
已選擇
SQL> ALTER DATABASE OPEN;
ALTER DATABASE OPEN
*
ERROR 位於第
ORA
ORA
SQL> RECOVER TABLESPACE TOOLS;
完成介質恢復
SQL> ALTER DATABASE OPEN;
數據庫已更改
##################################
# [
#
##################################
前面有很多例子
From:http://tw.wingwit.com/Article/program/Oracle/201311/17289.html