小測某Q友其應用人員不小心把RAC表空間tablespace資料檔案datafile建在本地檔案系統
背景
某Q友談及其公司應用人員不小心把RAC的表空間資料檔案建立在本地檔案系統上,造成應用訪問資料庫報錯,查詢DBA_DATA_FILES也報錯。結論
1,查閱官方手冊Oracle? Database Backup and Recovery Reference
11g Release 2 (11.2)
Part Number E10643-06
獲取backup命令的使用,採用datafile的映象複製方式,即backup as copy datafile 6 format
2,遷移RAC環境下建在某RAC節點的本地檔案系統的資料檔案到共享儲存的ASM,指令碼如下:
請見下述測試,總結:
A,主要採用
backup as copy datafile 6 format '';
run
{
sql "alter tablespace tbs_localfilesystem2 offline immediate";--tablespace offline
switch datafile '/home/oracle/only_local.dbf' to datafilecopy '+DATA/jingfa/datafile/mig_localsystem.dbf'; --switch update controlfile
recover tablespace tbs_localfilesystem2; --recover tablespace
sql "alter tablespace tbs_localfilesystem2 online"; --tablespace online
}
3,如不小心把表空間資料檔案建在本地節點,當前節點dba_data_files查詢正常,但在非正常節點查詢會報錯
所以一定要小心,防止造成業務不正常,因為可能應用業務會透過RAC其它節點運算元據庫
4,再引申一下,一定要控制相關許可權,以防不必要的人員運算元據庫,引發隱患問題,責任權利一定要明晰
5,為了防止後期再出現相關問題,以郵件通知開發相關人員,為其闡明利害
6,如果是基於已存在的表空間新增資料檔案時,不小心建到了本地節點的檔案系統,道理同上,(其實就是把上述的tablespace變為datafile)
指令碼如下:
backup as copy datafile 7 format '+DATA/jingfa/datafile/part_dba.dbf';
{
sql "alter database datafile 7 offline";--offline datafile
switch datafile 7 to datafilecopy '+DATA/jingfa/datafile/part_dba.dbf';
recover datafile 7; --recover datafile
sql "alter database datafile 7 online";--online datafile
}
測試
---10.2.0.1 rac
SQL> select * from v$version where rownum=1;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
SQL> show parameter cluster_database
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cluster_database boolean TRUE
cluster_database_instances integer 2
---node1 檢視當前資料檔案
SQL> col file_name for a50
SQL> select file_id,file_name from dba_data_files;
FILE_ID FILE_NAME
---------- --------------------------------------------------
1 +DATA/jingfa/datafile/system.268.850150891
2 +DATA/jingfa/datafile/undotbs1.267.850150919
3 +DATA/jingfa/datafile/sysaux.264.850150935
4 +DATA/jingfa/datafile/undotbs2.266.850150953
5 +DATA/jingfa/datafile/users.259.850150971
---node2 檢視當前資料檔案
SQL> col file_name for a50
SQL> select file_id,file_name from dba_data_files;
FILE_ID FILE_NAME
---------- --------------------------------------------------
1 +DATA/jingfa/datafile/system.268.850150891
2 +DATA/jingfa/datafile/undotbs1.267.850150919
3 +DATA/jingfa/datafile/sysaux.264.850150935
4 +DATA/jingfa/datafile/undotbs2.266.850150953
5 +DATA/jingfa/datafile/users.259.850150971
---node1 建立一個基於本地檔案系統的表空間資料檔案,可以顯示出新新增的本地檔案系統的表空間資料檔案
SQL> create tablespace tbs_localfilesystem2 datafile '/home/oracle/only_local.dbf' size 10m autoextend off;
Tablespace created.
SQL> select file_id,file_name from dba_data_files;
FILE_ID FILE_NAME
---------- --------------------------------------------------
1 +DATA/jingfa/datafile/system.268.850150891
2 +DATA/jingfa/datafile/undotbs1.267.850150919
3 +DATA/jingfa/datafile/sysaux.264.850150935
4 +DATA/jingfa/datafile/undotbs2.266.850150953
5 +DATA/jingfa/datafile/users.259.850150971
6 /home/oracle/only_local.dbf
6 rows selected.
---node2 查詢卻提示在node1建立的7號表空間資料檔案找不到,原因很簡單,因為基於NODE1的本地檔案系統,當然報錯
SQL> select file_id,file_name from dba_data_files;
ERROR:
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: '/home/oracle/only_local.dbf'
no rows selected
--node1把建在本地檔案系統的表空間資料檔案遷移到共享儲存ASM
--透過RMAN轉換本地檔案系統資料檔案為ASM方式
RMAN> backup as copy datafile 6 format '+DATA/jingfa/datafile/mig_localsystem.dbf';
Starting backup at 25-NOV-15
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile fno=00006 name=/home/oracle/only_local.dbf
output filename=+DATA/jingfa/datafile/mig_localsystem.dbf tag=TAG20151125T234637 recid=1 stamp=896744798
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
--更新控制檔案
run
{
sql "alter tablespace tbs_localfilesystem2 offline immediate";
switch datafile '/home/oracle/only_local.dbf' to datafilecopy '+DATA/jingfa/datafile/mig_localsystem.dbf';
recover tablespace tbs_localfilesystem2;
sql "alter tablespace tbs_localfilesystem2 online";
}
--node1及NODE2查詢檔案6已遷移到ASM
SQL> select file_id,file_name from dba_data_files;
FILE_ID FILE_NAME
---------- --------------------------------------------------
1 +DATA/jingfa/datafile/system.268.850150891
2 +DATA/jingfa/datafile/undotbs1.267.850150919
3 +DATA/jingfa/datafile/sysaux.264.850150935
4 +DATA/jingfa/datafile/undotbs2.266.850150953
5 +DATA/jingfa/datafile/users.259.850150971
6 +DATA/jingfa/datafile/mig_localsystem.dbf
6 rows selected.
---繼續在node1測試,如果是在已經儲存的表空間新增一個本地檔案系統的資料檔案
SQL> alter tablespace tbs_localfilesystem2 add datafile '/home/oracle/part_datafile.dbf' size 10m autoextend off;
Tablespace altered.
SQL> select tablespace_name,file_id,file_name from dba_data_files;
TABLESPACE_NAME FILE_ID FILE_NAME
------------------------------ ---------- --------------------------------------------------
SYSTEM 1 +DATA/jingfa/datafile/system.268.850150891
UNDOTBS1 2 +DATA/jingfa/datafile/undotbs1.267.850150919
SYSAUX 3 +DATA/jingfa/datafile/sysaux.264.850150935
UNDOTBS2 4 +DATA/jingfa/datafile/undotbs2.266.850150953
USERS 5 +DATA/jingfa/datafile/users.259.850150971
TBS_LOCALFILESYSTEM2 6 +DATA/jingfa/datafile/mig_localsystem.dbf
TBS_LOCALFILESYSTEM2 7 /home/oracle/part_datafile.dbf
7 rows selected.
--NODE2報錯
SQL> select file_id,file_name from dba_data_files;
ERROR:
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01110: data file 7: '/home/oracle/part_datafile.dbf'
no rows selected
--NODE1開始恢復上述新增的資料檔案到ASM共享儲存
Tablespace altered.
RMAN> backup as copy datafile 7 format '+DATA/jingfa/datafile/part_dba.dbf';
Starting backup at 26-NOV-15
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=130 instance=jingfa1 devtype=DISK
channel ORA_DISK_1: starting datafile copy
input datafile fno=00007 name=/home/oracle/part_datafile.dbf
output filename=+DATA/jingfa/datafile/part_dba.dbf tag=TAG20151126T001458 recid=3 stamp=896746499
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 26-NOV-15
{
sql "alter database datafile 7 offline";--offline datafile
switch datafile 7 to datafilecopy '+DATA/jingfa/datafile/part_dba.dbf';
recover datafile 7; --recover datafile
sql "alter database datafile 7 online";--online datafile
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-1846834/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 移動資料檔案、系統表空間檔案、臨時表空間檔案
- 11G Oracle RAC新增新表空間時資料檔案誤放置到本地檔案系統的修正Oracle
- MySQL InnoDB系統表空間資料檔案配置MySql
- Oracle Bigfile Tablespace大檔案表空間Oracle
- 表空間&資料檔案和控制檔案(zt)
- 【TABLESPACE】通過重建控制檔案調整表空間資料檔案位置及名稱
- MySQL 系統表空間檔案解析MySql
- oracle rac on aix 下為表空間增加資料檔案OracleAI
- Oracle 表空間與資料檔案Oracle
- 表空間和資料檔案管理
- oracle 資料檔案表空間管理Oracle
- oracle 將表空間下的資料檔案從檔案系統遷移到ASM磁碟組OracleASM
- 表空間和資料檔案的管理
- oracle 表空間 資料檔案 筆記Oracle筆記
- 資料檔案,表空間的移動
- 表空間資料檔案故障處理
- 線上遷移表空間資料檔案
- Oracle 表空間資料檔案遷移Oracle
- 表空間新增資料檔案的疑惑
- RMAN恢復表空間,資料檔案,歸檔檔案,控制檔案等介紹
- oracle 小議如何從表空間 刪除 資料檔案Oracle
- 某個表空間的資料檔案損壞的修復思路
- MySQL innodb共享表空間新增表空間資料檔案方法MySql
- 達夢資料庫系統表空間資料檔案遷移過程資料庫
- 表空間中有資料也可以壓縮表空間(資料檔案)大小
- 大檔案表空間
- ASM與檔案系統之間copy資料檔案--檔案系統到ASMASM
- 【學習日記】oracle之表空間、資料檔案、控制檔案Oracle
- 新建的表空間(或資料檔案)丟失以及控制檔案丟失,有新建表空間(或資料檔案)前的控制文
- 透過xtts遷移單例項檔案系統表空間到RAC ASM儲存表空間TTS單例ASM
- 通過xtts遷移單例項檔案系統表空間到RAC ASM儲存表空間TTS單例ASM
- oracle 普通表空間資料檔案壞塊Oracle
- 表空間(資料檔案shrink)收縮示例
- oracle 回收表空間的資料檔案大小Oracle
- 誤刪oracle資料庫表空間檔案Oracle資料庫
- 重新命名資料檔案和表空間
- InnoDB資料表空間檔案平滑遷移
- 錯誤新增表空間的資料檔案