OMF和flash_recovery_area的关系!

在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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/19602/viewspace-1006263/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值