OMF和flash_recovery_area的關係!

warehouse發表於2008-06-29

在OMF出現之前(9i R1),oracle db的檔案,主要指dbf,redo,ctl是透過os管理的,為了簡化對資料庫檔案的管理,oracle引入了OMF,透過omf建立的dbf和redo,其default的大小都是100m,autoextend umlimited。9i R1的dbf檔案格式default:ora_%t_%u.dbf,

redo格式:ora_%g_%u.log;9iR2的格式發生了一些變化,把ora變成了o1_mf_%t(%g)_%u.dbf(log),其中%t表示dbf所屬的tbs,%g表示redo所屬的group#,%u表示唯一。

[@more@]

1、僅設定引數db_create_file_dest建立redo

SQL> show parameter db_create

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string c:temp
db_create_online_log_dest_1 string
db_create_online_log_dest_2 string
db_create_online_log_dest_3 string
db_create_online_log_dest_4 string
db_create_online_log_dest_5 string
SQL> show parameter recovery

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string e:oracleproduct10.2.0flash
_recovery_area
db_recovery_file_dest_size big integer 2G
recovery_parallelism integer 0
SQL> alter database add logfile ;

資料庫已更改。

SQL> desc v$logfile
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------

GROUP# NUMBER
STATUS VARCHAR2(7)
TYPE VARCHAR2(7)
MEMBER VARCHAR2(513)
IS_RECOVERY_DEST_FILE VARCHAR2(3)SQL> select member,

is_recovery_dest_file from v$logfile;

MEMBER
IS_
--------------------------------------------------------------------------------
-- ---
E:ORACLEPRODUCT10.2.0ORADATATESTREDO01.LOG
NO
C:TEMPTESTONLINELOGO1_MF_4_46H5X70Z_.LOG
NO
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTONLINELOGO1_MF_4_46H5XB98_.LO
G YES
E:ORACLEPRODUCT10.2.0ORADATATESTREDO02.LOG
NO
E:ORACLEPRODUCT10.2.0ORADATATESTREDO03.LOG
NO

--從上面查詢結果可以看出在設定了引數db_create_file_dest 而不設定db_create_online_log_dest_n

的時候,此時建立的redo oracle會在db_create_file_dest 指定的目錄和flash_recovery_area中同時創

建並且互為mirror。

2、設定引數db_create_online_log_dest_n之後建立redo

SQL> alter system set db_create_online_log_dest_1='c:temp1';

系統已更改。

SQL> alter database add logfile ;

資料庫已更改。

SQL> select member, is_recovery_dest_file from v$logfile;

MEMBER
IS_
--------------------------------------------------------------------------------
-- ---
E:ORACLEPRODUCT10.2.0ORADATATESTREDO01.LOG
NO
C:TEMPTESTONLINELOGO1_MF_4_46H5X70Z_.LOG
NO
E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTONLINELOGO1_MF_4_46H5XB98_.LO
G YES
E:ORACLEPRODUCT10.2.0ORADATATESTREDO02.LOG
NO
E:ORACLEPRODUCT10.2.0ORADATATESTREDO03.LOG
NO
C:TEMP1TESTONLINELOGO1_MF_5_46H65X00_.LOG
NO

已選擇6行。

從查詢結果可以看出如果設定了引數db_create_online_log_dest_n之後,此時

db_create_online_log_dest_n引數覆蓋了db_create_file_dest和flash_recovery_area,也就是說如果

設定了db_create_online_log_dest_n,那麼之後建立的redo僅存在db_create_online_log_dest_n中

3、oracle不會把datafile放在flash_recovery_area中

SQL> alter system set db_create_file_dest='';

系統已更改。

SQL> create tablespace test;
create tablespace test
*
第 1 行出現錯誤:
ORA-02199: 缺失 DATAFILE/TEMPFILE 子句


SQL> show parameter db_create

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string
db_create_online_log_dest_1 string c:temp1
db_create_online_log_dest_2 string
db_create_online_log_dest_3 string
db_create_online_log_dest_4 string
db_create_online_log_dest_5 string
SQL> alter database add logfile;

資料庫已更改。

SQL> alter system set db_create_online_log_dest_1='';

系統已更改。

SQL> show parameter db_create

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string
db_create_online_log_dest_1 string
db_create_online_log_dest_2 string
db_create_online_log_dest_3 string
db_create_online_log_dest_4 string
db_create_online_log_dest_5 string
SQL> alter database add logfile;

資料庫已更改。

SQL>

從上面試驗結果可以看出如果不設定 db_create_file_dest,那麼create tablespace test出現了錯誤,

也就是說oracle不會把datafile放在 falsh_recovery_area中;但是當把db_create_online_log_dest_1

也設定為null時,卻可以add logfile,也就是說有了falsh_recovery_area,即使不設定

db_create_online_log_dest_n,依然可以使用OMF.

4、使用OMF來管理ctl時和redo類似,不過需要注意的是此時我們需要修改引數control_files:
修改時使用reset把control_files從spfile中清除掉而不是使用alter system set control_files=''...要不然建立會出現錯誤:
ORA-01503: CREATE CONTROLFILE failed
ORA-09314: sltln: error translating logical name
OSD-04026: ????????????????

SQL> shutdown immediate
ORA-01109: ??????


已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup nomount
ORACLE 例程已經啟動。

Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 121636196 bytes
Database Buffers 41943040 bytes
Redo Buffers 2945024 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO01.LOG' SIZE 10M,
9 GROUP 2 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO02.LOG' SIZE 10M,
10 GROUP 3 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO03.LOG' SIZE 10M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'E:ORACLEPRODUCT10.2.0ORADATATESTSYSTEM01.DBF',
14 'E:ORACLEPRODUCT10.2.0ORADATATESTUNDOTBS01.DBF',
15 'E:ORACLEPRODUCT10.2.0ORADATATESTSYSAUX01.DBF',
16 'E:ORACLEPRODUCT10.2.0ORADATATESTUSERS01.DBF'
17 CHARACTER SET ZHS16GBK
18 ;
CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG
*
第 1 行出現錯誤:
ORA-01503: CREATE CONTROLFILE ??
ORA-09314: sltln: ????????
OSD-04026: ????????????????


SQL> select status from v$instance;

STATUS
------------
STARTED

SQL> show parameter db_create

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string c:temp
db_create_online_log_dest_1 string
db_create_online_log_dest_2 string
db_create_online_log_dest_3 string
db_create_online_log_dest_4 string
db_create_online_log_dest_5 string
SQL> alter session set nls_languare=american;
alter session set nls_languare=american
*
第 1 行出現錯誤:
ORA-00922: ???????


SQL> alter session set nls_language=american;

Session altered.

SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO01.LOG' SIZE 10M,
9 GROUP 2 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO02.LOG' SIZE 10M,
10 GROUP 3 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO03.LOG' SIZE 10M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'E:ORACLEPRODUCT10.2.0ORADATATESTSYSTEM01.DBF',
14 'E:ORACLEPRODUCT10.2.0ORADATATESTUNDOTBS01.DBF',
15 'E:ORACLEPRODUCT10.2.0ORADATATESTSYSAUX01.DBF',
16 'E:ORACLEPRODUCT10.2.0ORADATATESTUSERS01.DBF'
17 CHARACTER SET ZHS16GBK
18 ;
CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-09314: sltln: error translating logical name
OSD-04026: ????????????????


SQL> show parameter control_files

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string

SQL> alter system reset control_files scope=spfile sid='*';

System altered.

SQL> shutdown immediate
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 121636196 bytes
Database Buffers 41943040 bytes
Redo Buffers 2945024 bytes
ORA-00205: ?????????, ??????, ???????


SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO01.LOG' SIZE 10M,
9 GROUP 2 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO02.LOG' SIZE 10M,
10 GROUP 3 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO03.LOG' SIZE 10M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'E:ORACLEPRODUCT10.2.0ORADATATESTSYSTEM01.DBF',
14 'E:ORACLEPRODUCT10.2.0ORADATATESTUNDOTBS01.DBF',
15 'E:ORACLEPRODUCT10.2.0ORADATATESTSYSAUX01.DBF',
16 'E:ORACLEPRODUCT10.2.0ORADATATESTUSERS01.DBF'
17 CHARACTER SET ZHS16GBK
18 ;

控制檔案已建立。

SQL> alter database open;

資料庫已更改。

SQL> show parameter control_files;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string C:TEMP1TESTCONTROLFILEO1_M
F_46H9B2XS_.CTL
SQL> show parameter db_create

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string c:temp
db_create_online_log_dest_1 string c:temp1
db_create_online_log_dest_2 string
db_create_online_log_dest_3 string
db_create_online_log_dest_4 string
db_create_online_log_dest_5 string
SQL> alter system set db_create_online_log_dest_1='';

系統已更改。

SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup nomount
ORACLE 例程已經啟動。

Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 125830500 bytes
Database Buffers 37748736 bytes
Redo Buffers 2945024 bytes
SQL> show parameter control_files

NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_files string
C:TEMP1TESTCONTROLFILEO1_M
F_46H9B2XS_.CTL
SQL> alter system reset control_files scope=spfile sid='*';

系統已更改。

SQL> shutdown immediate
ORA-01507: ??????


ORACLE 例程已經關閉。
SQL> startup nomount
ORACLE 例程已經啟動。

Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 125830500 bytes
Database Buffers 37748736 bytes
Redo Buffers 2945024 bytes
SQL> show parameter control_files

NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_files string
E:ORACLEPRODUCT10.2.0DB_1
DATABASECTL1TEST.ORA
SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO01.LOG' SIZE 10M,
9 GROUP 2 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO02.LOG' SIZE 10M,
10 GROUP 3 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO03.LOG' SIZE 10M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'E:ORACLEPRODUCT10.2.0ORADATATESTSYSTEM01.DBF',
14 'E:ORACLEPRODUCT10.2.0ORADATATESTUNDOTBS01.DBF',
15 'E:ORACLEPRODUCT10.2.0ORADATATESTSYSAUX01.DBF',
16 'E:ORACLEPRODUCT10.2.0ORADATATESTUSERS01.DBF'
17 CHARACTER SET ZHS16GBK
18 ;

控制檔案已建立。

SQL> show parameter control_files

NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_files string
C:TEMPTESTCONTROLFILEO1_MF
_46H9M7G5_.CTL, E:ORACLEPROD
UCT10.2.0FLASH_RECOVERY_AREA

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-1006263/,如需轉載,請註明出處,否則將追究法律責任。

相關文章