備份與恢復--一個表空間能否被多個資料庫讀寫?
SQL> SELECT NAME FROM V$DATABASE;
NAME
---------
ORCL
SQL> alter tablespace users read write;
alter tablespace users read write
*
ERROR at line 1:
ORA-01256: error in locking database file 4
ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'
再看看目標庫的情況
SQL> SELECT NAME FROM V$DATABASE;
NAME
---------
JOLLY
SQL> alter tablespace users read write;
Tablespace altered.
SQL> select owner,table_name from all_tables where tablespace_name='TEST';
OWNER TABLE_NAME
------------------------------ ------------------------------
JGLU TEST1
SQL> insert into jglu.test1 select * from dba_objects where rownum<100;
99 rows created.
SQL> commit;
Commit complete.
SQL> select count(*) from jglu.test1;
COUNT(*)
----------
298
在目標資料庫可以將表空間置為讀寫狀態,而且可以順利的寫入資料。
在源庫是否能看到目標庫的修改資料?答案是不能
ORCL set sqlp 'ORCL>'
ORCL> select count(*) from jglu.test1;
COUNT(*)
----------
199
對於只讀的表空間,Oracle肯定認為資料沒有發生改變,現在得到的結果應該是從記憶體的CACHE返回的。嘗
試將表空間置為OFFLINE,在置於ONLINE狀態,使得記憶體中的CACHE過期,但是操作發現報錯:
ORCL>alter tablespace users offline;
Tablespace altered.
ORCL>alter tablespace users online;
alter tablespace users online
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'
看來目標資料庫的獨佔鎖導致了這個問題,那麼先在目標資料庫中將表空間置回只讀狀態:
SQL> set sqlp 'JOLLY>'
JOLLY>alter tablespace users read only;
Tablespace altered.
在源庫再來online
ORCL>alter tablespace users online;
alter tablespace users online
*
ERROR at line 1:
ORA-01190: control file or data file 4 is from before the last RESETLOGS
ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'
嘗試recover,但是失敗
ORCL>recover tablespace users;
ORA-00283: recovery session canceled due to errors
ORA-19909: datafile 4 belongs to an orphan incarnation
ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'
嘗試重建控制檔案也無法恢復此表空間,因為此表空間的資料檔案被兩個資料庫同時開啟,而且目標資料庫可以使用讀寫方式開啟,但是這個資料檔案對於源資料庫來說已經發生了改變,在恢復時找到她原始的incarnation,一旦資料庫重新載入這個檔案就會出現異常。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1016383/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 備份與恢復--一個表空間能否被多個資料庫同時開啟?資料庫
- 表空間級資料庫備份恢復資料庫
- Oracle12c多租戶資料庫備份與恢復 - 備份表空間Oracle資料庫
- Oracle12c多租戶資料庫備份與恢復 - 恢復一個PDBOracle資料庫
- Oracle12c多租戶資料庫備份與恢復 - 僅備份一個PDB資料庫Oracle資料庫
- mysql 無備份恢復drop資料-共享表空間MySql
- 【管理篇備份恢復】rman恢復測試(一) 表空間資料檔案
- 備份與恢復:polardb資料庫備份與恢復資料庫
- 【Oracle】rman 恢復只讀表空間資料庫Oracle資料庫
- DB2 使用表空間備份恢復庫DB2
- 備份與恢復系列 九 丟失表空間資料檔案的還原與恢復
- Oracle 11g RAN恢復-表空間在只讀時做了資料庫的備份Oracle資料庫
- Oracle12c多租戶資料庫備份與恢復 - 備份CDB下的多個PDBsOracle資料庫
- 【物理熱備】(下)備份恢復系統表空間 手工備份恢復
- 資料庫(表)的邏輯備份與恢復資料庫
- 【備份恢復】從備份恢復資料庫資料庫
- 資料庫備份與恢復----第一課資料庫
- 【備份恢復】下:還原和恢復資料庫(即將一個庫還原到另外一個庫)資料庫
- 【備份恢復】上:還原和恢復資料庫(即將一個庫還原到另外一個庫)資料庫
- postgresql備份與恢復資料庫SQL資料庫
- mongo資料庫備份與恢復Go資料庫
- 資料庫的備份與恢復資料庫
- Informix資料庫備份與恢復ORM資料庫
- 備份與恢復:Polardb資料庫資料基於時間點恢復資料庫
- mysql無備份恢復-獨立表空間MySql
- [DB2]線上備份資料庫與表空間DB2資料庫
- 利用MySQL全備份(mysqldump),如何只恢復一個庫或者一個表?MySql
- Oracle 11g RMAN恢復-只讀表空間的恢復(備份是在表空間只讀狀態下做的)Oracle
- rman資料庫全庫備份與恢復資料庫
- RMAN恢復單個表空間或被DROP/DELETE/TRUNCATE的表delete
- RMAN備份恢復整個庫
- mysql的資料庫備份與恢復MySql資料庫
- oracle資料庫的備份與恢復Oracle資料庫
- 資料庫備份與恢復技術資料庫
- 備份&恢復之八:RMAN備份歸檔模式下損壞(丟失)多個資料檔案,進行整個資料庫的恢復模式資料庫
- Oracle 11g資料庫恢復:場景10:新建表空間沒有備份Oracle資料庫
- 歸檔模式下,offline表空間備份與恢復模式
- (Les16 執行資料庫恢復)-表空間恢復資料庫