
客戶遇到個DG的問題,存儲使用的ASM管理,有多個磁盤盤。 在主庫創建數據文件,備庫自動創建的數據文件都在同一磁盤組,并且在主庫創建數據文件是指定的是類似**.DBF的名字,到備庫也變成了使用ASM的數字格式**.266.123456 這是因為使用了OMF特性。 OMF,全稱
客戶遇到個DG的問題,存儲使用的ASM管理,有多個磁盤盤。
在主庫創建數據文件,備庫自動創建的數據文件都在同一磁盤組,并且在主庫創建數據文件是指定的是類似**.DBF的名字,到備庫也變成了使用ASM的數字格式**.266.123456
這是因為使用了OMF特性。
OMF,全稱是Oracle_Managed Files,即Oracle文件管理。
使用OMF可以簡化管理員的管理工作,不用指定文件的名字、大小、路徑,其名字,大小,路徑由oracle 自動分配。在刪除不再使用的日志、數據、控制文件時,OMF也可以自動刪除其對應的OS文件。
Oracle數據庫是否啟用OMF特性可以通過查看DB_CREATE_FILE_DEST參數來獲得。
當DB_CREATE_FILE_DEST參數值為空時表示未啟用OMF功能,設置為目錄名則是開啟OMF。
實驗數據庫版本:11.2.0.4.0,
一、啟用OMF時的數據文件創建情況
1.主庫在指定磁盤組創建數據文件,備庫會在DB_CREATE_FILE_DEST=+DG1指定的磁盤組創建
備庫參數
SQL> show parameter standby_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string AUTO
SQL> show parameter DB_CREATE_FILE_DEST
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string +DG1
SQL> col name for a50
SQL> set linesize 1000
SQL> select * from v$dbfile;
FILE# NAME
---------- --------------------------------------------------
1 +DG1/dg2/datafile/system.258.852146097
2 +DG1/dg2/datafile/sysaux.257.852146099
3 +DG1/dg2/datafile/undotbs1.256.852146101
4 +DG1/dg2/datafile/users.259.852146107
5 +DG2/dg/datafile/test1.dbf
主庫創建在DG2磁盤組創建表空間:
SQL> col name for a50
SQL> set linesize 1000
SQL> select * from v$dbfile;
FILE# NAME
---------- --------------------------------------------------
1 +DG1/dg/datafile/system.260.852134271
2 +DG1/dg/datafile/sysaux.261.852134303
3 +DG1/dg/datafile/undotbs1.262.852134329
4 +DG1/dg/datafile/users.264.852134361
5 +DG2/dg/datafile/test1.dbf
SQL> create tablespace test2 datafile '+DG2/dg/datafile/test2.dbf' size 10m;
Tablespace created.
SQL> alter system switch logfile;
System altered.
在備份庫上查詢表空間及數據文件創建情況:在DB_CREATE_FILE_DEST指定的磁盤組+DG1中創建
SQL> select * from v$dbfile;
FILE# NAME
---------- --------------------------------------------------
1 +DG1/dg2/datafile/system.258.852146097
2 +DG1/dg2/datafile/sysaux.257.852146099
3 +DG1/dg2/datafile/undotbs1.256.852146101
4 +DG1/dg2/datafile/users.259.852146107
5 +DG2/dg/datafile/test1.dbf
6 +DG1/dg2/datafile/test2.272.852147911
修改備庫DB_CREATE_FILE_DEST參數為+DG2:
SQL> SQL> show parameter DB_CREATE_FILE_DEST
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string +DG2
在主庫創建表空間:
SQL> create tablespace test3 datafile '+DG1/dg/datafile/test3.dbf' size 10m;
Tablespace created.
SQL> alter system switch logfile;
System altered.
在備庫查詢:
SQL> select * from v$dbfile;
FILE# NAME
---------- --------------------------------------------------
1 +DG1/dg2/datafile/system.258.852146097
2 +DG1/dg2/datafile/sysaux.257.852146099
3 +DG1/dg2/datafile/undotbs1.256.852146101
4 +DG1/dg2/datafile/users.259.852146107
5 +DG2/dg/datafile/test1.dbf
6 +DG1/dg2/datafile/test2.272.852147911
7 +DG2/dg2/datafile/test3.260.852148535
二、關閉OMF特性
修改備庫DB_CREATE_FILE_DEST參數為空,關閉OMF特性。--我這里只關閉了備庫的
SQL> show parameter DB_CREATE_FILE_DEST
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string +DG2
SQL> alter system set DB_CREATE_FILE_DEST='';
System altered.
SQL> show parameter DB_CREATE_FILE_DEST
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string
主庫做操作:
SQL> create tablespace test4 datafile '+DG1/dg/datafile/test4.dbf' size 10m;
Tablespace created.
SQL> create tablespace test5 datafile '+DG2/dg/datafile/test5.dbf' size 10m;
Tablespace created.
SQL> select * from v$dbfile;
FILE# NAME
---------- --------------------------------------------------
1 +DG1/dg/datafile/system.260.852134271
2 +DG1/dg/datafile/sysaux.261.852134303
3 +DG1/dg/datafile/undotbs1.262.852134329
4 +DG1/dg/datafile/users.264.852134361
5 +DG2/dg/datafile/test1.dbf
6 +DG2/dg/datafile/test2.dbf
7 +DG1/dg/datafile/test4.dbf
8 +DG2/dg/datafile/test5.dbf
備庫做查詢:
SQL> select * from v$dbfile;
FILE# NAME
---------- --------------------------------------------------
1 +DG1/dg2/datafile/system.258.852146097
2 +DG1/dg2/datafile/sysaux.257.852146099
3 +DG1/dg2/datafile/undotbs1.256.852146101
4 +DG1/dg2/datafile/users.259.852146107
5 +DG2/dg/datafile/test1.dbf
6 +DG1/dg2/datafile/test2.272.852147911
7 +DG1/dg/datafile/test4.dbf
8 +DG2/dg/datafile/test5.dbf
三、觀察下ASM磁盤組中對于數據文件別名的存儲形式
ASMCMD> ls -al
WARNING:option 'a' is deprecated for 'ls'
please use 'absolutepath'
Type Redund Striped Time Sys Name
DATAFILE UNPROT COARSE JUL 05 22:00:00 Y none => SYSAUX.257.852146099
DATAFILE UNPROT COARSE JUL 05 22:00:00 Y none => SYSTEM.258.852146097
DATAFILE UNPROT COARSE JUL 05 22:00:00 Y none => TEST2.272.852147911
DATAFILE UNPROT COARSE JUL 05 22:00:00 Y +DG1/dg/datafile/test4.dbf => TEST4.279.852157365
DATAFILE UNPROT COARSE JUL 05 22:00:00 Y none => UNDOTBS1.256.852146101
DATAFILE UNPROT COARSE JUL 05 22:00:00 Y none => USERS.259.852146107
ASMCMD> ls -al
WARNING:option 'a' is deprecated for 'ls'
please use 'absolutepath'
Type Redund Striped Time Sys Name
DATAFILE UNPROT COARSE JUL 05 22:00:00 Y +DG2/dg/datafile/test1.dbf => TEST1.256.852146103
DATAFILE UNPROT COARSE JUL 05 22:00:00 Y +DG2/dg/datafile/test5.dbf => TEST5.260.852157413
四、為ASM中SYSTEM表空間使用別名
比如上面創建的表空間test4其對應的數據文件TEST4.DBF是一個別名,真實的數據文件與別名的對應是:+DG1/dg/datafile/test4.dbf => TEST4.279.852157365
,然而(system,undotbs,sysaux,users)對應的都是真實的數據文件,沒有別名,這時如果要對這些表空間使用別名,就需要重建控制文件。示例如下:
alter diskgroup dg1 add alias '+DG1/dg2/datafile/SYSTEM1.DBF' FOR '+DG1/dg2/datafile/system.258.852146097';
此時ASMCMD中查看:
ASMCMD> ls -al
WARNING:option 'a' is deprecated for 'ls'
please use 'absolutepath'
Type Redund Striped Time Sys Name
DATAFILE UNPROT COARSE JUL 05 23:00:00 Y none => SYSAUX.257.852146099
DATAFILE UNPROT COARSE JUL 05 23:00:00 Y +DG1/DG2/DATAFILE/SYSTEM1.DBF => SYSTEM.258.852146097
N SYSTEM1.DBF => +DG1/DG2/DATAFILE/SYSTEM.258.852146097
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 418484224 bytes
Fixed Size 1365040 bytes
Variable Size 255855568 bytes
Database Buffers 155189248 bytes
Redo Buffers 6074368 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "DG" RESETLOGS FORCE LOGGING ARCHIVELOG …………
重建控制文件完成后數據庫是MOUNT狀態,此時查詢:
SQL> select * from v$dbfile;
FILE# NAME
---------- --------------------------------------------------
8 +DG2/dg/datafile/test5.dbf
7 +DG1/dg/datafile/test4.dbf
6 +DG1/dg2/datafile/test2.272.852147911
5 +DG2/dg/datafile/test1.dbf
4 +DG1/dg2/datafile/users.259.852146107
3 +DG1/dg2/datafile/undotbs1.256.852146101
2 +DG1/dg2/datafile/sysaux.257.852146099
1 +DG1/dg2/datafile/system1.dbf
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com