oracle實驗記錄 (恢復read only tablespace(2))
看下read only tablespace與 重建立控制檔案,和使用備份控制檔案
情況一重建控制檔案
SQL> alter tablespace testtb read only;
SQL> alter database backup controlfile to trace;
資料庫已更改。
CREATE CONTROLFILE REU
SE DATABASE "ORCL" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG' SIZE 50M,
GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG' SIZE 50M,
GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',~~~~~~~~~~~~~~此時沒有 read only tablespace datafile的資訊
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF',
'D:\TEST.DBF'
CHARACTER SET ZHS16GBK
;
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup nomount
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 339741572 bytes
Database Buffers 264241152 bytes
Redo Buffers 7135232 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG' SIZE 50M,
9 GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG' SIZE 50M,
10 GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG' SIZE 50M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
14 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
15 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
16 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
17 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF',
18 'D:\TEST.DBF'
19 CHARACTER SET ZHS16GBK
20 ;
控制檔案已建立。
SQL> select count(*) from v$archived_log;
COUNT(*)
----------
0
SQL> alter database open;
資料庫已更改。
解決很簡單 可以重新create controlfile 時候加上D:\TESTTB.DBF ,也
SQL> select tablespace_name ,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
SYSAUX ONLINE
TEMP ONLINE
USERS ONLINE
EXAMPLE ONLINE
TEST ONLINE
TESTTB READ ONLY(資料字典中還有SYSTEM TABLESPACE)
已選擇8行。
SQL> alter tablespace testtb read write;
alter tablespace testtb read write
*
第 1 行出現錯誤:
ORA-01135: DML/query ?????????? 7 ????????????
ORA-01111: ???????? 7 ???????? - ??????????????????
ORA-01110: ???????? 7: 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING00007'
但無法使用了)
SQL> alter session set events 'immediate trace name controlf level 8';
會話已更改。
DATA FILE #7:
(name #10) E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING00007~~~~~~~~~~~~~可以看到沒有準確的檔名字
creation size=0 block size=8192 status=0xc4 head=10 tail=10 dup=1
tablespace 11, index=8 krfil=7 prev_file=0
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:4294967295 scn: 0x0000.00130425 01/01/1988 00:00:00
Stop scn: 0x0000.00130425 09/07/2009 13:15:01
Creation Checkpointed at scn: 0x0000.0011cf7f
thread:0 rba:(0x0.0.0)
SQL> select file#,status from v$datafile;(資訊來自controlfile)
FILE# STATUS
---------- -------
1 SYSTEM
2 ONLINE
3 ONLINE
4 ONLINE
5 ONLINE
6 ONLINE
7 OFFLINE
SQL> alter database datafile 7 online;
資料庫已更改。
SQL> select tablespace_name ,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
SYSAUX ONLINE
TEMP ONLINE
USERS ONLINE
EXAMPLE ONLINE
TEST ONLINE
TESTTB READ ONLY
已選擇8行。
Rename 解決有問題
SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING0000
7' to 'd:\testtb.dbf';
資料庫已更改。
SQL> alter tablespace testtb read write;
alter tablespace testtb read write
*
第 1 行出現錯誤:
ORA-00600: 內部錯誤程式碼, 引數: [krhpfh_03-1208], [fno =], [7], [fecpc =],~~~~~~~~~~~~~~~~~~~~~~有問題
[4294967295], [fhcpc =], [28], []
ORA-01110: 資料檔案 7: 'D:\TESTTB.DBF'
SQL> alter tablespace testtb read only;
alter tablespace testtb read only
*
第 1 行出現錯誤:
ORA-01644: 表空間 'TESTTB' 已經是隻讀
還是用重新建立controlfile 來恢復吧
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup nomount
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 352324484 bytes
Database Buffers 251658240 bytes
Redo Buffers 7135232 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG' SIZE 50M,
9 GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG' SIZE 50M,
10 GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG' SIZE 50M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
14 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
15 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
16 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
17 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF',
18 'D:\TEST.DBF',
19 'D:\TESTTB.DBF'**************************************
20 CHARACTER SET ZHS16GBK
21 ;
控制檔案已建立。
SQL>
SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-01113: ?? 7 ??????
ORA-01110: ???? 7: 'D:\TESTTB.DBF'
SQL> recover datafile 7;
完成介質恢復。
SQL> alter database open;
資料庫已更改。
SQL> alter tablespace testtb read write;
表空間已更改。
SQL> create table t22 (a int) tablespace testtb;
表已建立。
SQL> insert into t22 values(1);
已建立 1 行。
SQL> commit;
提交完成。
情況二 使用備份控制檔案(備份控制檔案 資訊中表空間為讀寫,而現在為read only 或反過來)
SQL> @d:\backup\backupctl.txt
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> alter tablespace testtb read only;
表空間已更改。
SQL> select tablespace_name ,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
SYSAUX ONLINE
TEMP ONLINE
USERS ONLINE
EXAMPLE ONLINE
TEST ONLINE
TESTTB READ ONLY
已選擇8行。
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
將備份控制檔案RESTORE 到原位置
SQL> recover database using backup controlfile;
ORA-00279: 更改 1250359 (在 09/07/2009 14:01:39 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: E:\ARCHIVELOG\ARC00028_0695918991.001.ARC
ORA-00280: 更改 1250359 (用於執行緒 1) 在序列 #28 中
指定日誌: {
E:\oracle\product\10.2.0\oradata\orcl\redo02.log
已應用的日誌。
完成介質恢復。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> alter tablespace testtb read write;
表空間已更改。
SQL> insert into t22 values(2);
已建立 1 行。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12020513/viewspace-614102/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle實驗記錄 (恢復read only tablespace(1))Oracle
- oracle實驗記錄 (恢復-完全恢復)Oracle
- oracle實驗記錄 (恢復-rman恢復)Oracle
- oracle實驗記錄 (恢復-rman維護(2))Oracle
- oracle實驗記錄 (恢復-redo)Oracle
- oracle實驗記錄 (恢復-不完全恢復)Oracle
- oracle實驗記錄(恢復-checkpoint cnt)Oracle
- oracle實驗記錄 (可恢復session)OracleSession
- oracle實驗記錄 (恢復-關於控制檔案(2))Oracle
- oracle實驗記錄 (bigfile tablespace)Oracle
- oracle實驗記錄 (transport tablespace(Rman))Oracle
- oracle實驗記錄 (恢復-rman catalog)Oracle
- oracle實驗記錄 (恢復-rman保留策略)Oracle
- read only tablespace backup restoreREST
- oracle實驗記錄 (transport tablespace(EXPDP/IMPDP))Oracle
- oracle實驗記錄 (exp/imp transport tablespace)Oracle
- oracle實驗記錄 (恢復-rman維護(1))Oracle
- oracle實驗記錄 (恢復-rman增量備份)Oracle
- oracle實驗記錄 (恢復-使用resetlogs open前備份恢復)Oracle
- oracle實驗記錄 (恢復-rman基於控制檔案的恢復)Oracle
- oracle實驗記錄 (恢復-rman reset incatnation(1))Oracle
- oracle實驗記錄 (恢復-關於熱備份)Oracle
- oracle實驗記錄 (恢復-rman操作delete(all) input )Oracledelete
- oracle實驗記錄 (恢復-恢復未備份的資料檔案)Oracle
- oracle實驗記錄 (恢復-關於控制檔案(1))Oracle
- oracle實驗記錄 (恢復-關於控制檔案(3))Oracle
- oracle實驗記錄 (恢復-關於控制檔案(4))Oracle
- oracle實驗記錄 (恢復-rman操作(設定&備份))Oracle
- oracle實驗記錄 (恢復-表空間基於時間點恢復(rman))Oracle
- oracle實驗記錄 (恢復-表空間基於時間點恢復(手動))Oracle
- oracle實驗記錄 (oracle 10G dataguard(9)rman恢復與dg)Oracle
- When you issue "ALTER TABLESPACE xxx READ ONLY",what will oracle do?Oracle
- 關於tablespace在read only狀態下的DML ,DDL操作--Read-Only Tablespaces
- Oracle恢復實驗(一)Oracle
- Oracle恢復實驗(二)Oracle
- Oracle恢復實驗(三)Oracle
- Oracle恢復實驗(四)Oracle
- oracle實驗記錄 (恢復,備份-含壞塊資料檔案)Oracle