OMF全称是Oracle Managed Files,即Oracle文件管理。简单的说,OMF能够自动的创建文件和删除文件,能够遵循一个规则自动的为文件命名,从而减少DBA的管理任务。
OMF支持下列文件的自动管理:
1 Tablespaces
2 Redo log files
3 Control files
4 Archived logs
5 Block change tracking files
6 Flashback logs
7 RMAN backups
建议不要在裸设备上使用OMF,因为没有操作系统负责管理裸设备存储空间的分配。
OMF的使用
使用OMF前提条件:必须设置3个相关参数。分别如下:
1.1数据文件OMF管理参数:db_create_file_dest
此参数是用来定义一个缺省的目录。当创建数据文件,临时表空间文件时,如果没有明确指明文件路径和名称,新的文件就会被创建在这个目录下。如果定义了这个参数,而没有定义DB_CREATE_ONLINE_LOG_DEST_n参数,则联机日志和控制文件也会被创建在这个目录下。
支持文件:Datafiles Tempfiles Redo log files Control files Block change tracking files
1 --查看参数db_create_file_dest
2 SQL> show parameter db_create_file_
3
4 NAME TYPE VALUE
5 ------------------------------------ ----------- ------------------------------
6 db_create_file_dest string +DATA01
7 SQL>
8
9 --此参数已被我定义。文件,临时文件等会被自动创建到DATA01磁盘组。
10 --设置参数db_create_file_dest:alter system set db_create_file_dest='+DATA01' scope=spfile;
11
12 --创建表空间sun_tb
13 SQL> create tablespace sun_tb; --没有指定参数db_create_file_dest时,语句会报错。
14
15 Tablespace created.
16
17 --查看表空间对应的文件
18 SQL> select tablespace_name,file_name,bytes/1024/1024
19 2 from dba_data_files
20 3 where tablespace_name='SUN_TB';
21
22 TABLESPACE_NAME FILE_NAME BYTES/1024/1024
23 --------------- --------------------------------------------- ---------------
24 SUN_TB +DATA01/sun/datafile/sun_tb.273.814042949 100 --创建表空间时,数据文件被自动创建,大小默认为100m。文件大小可以自行指定
25
26 --删除表空间
27 SQL> drop tablespace SUN_TB; --在使用OMF情况下,删除表空间时其包含的数据文件会一并被除(物理删除,相当:rm -f)
28
29 --alter_xxx.log 日志
30 ......
31 drop tablespace SUN_TB
32 Mon Apr 29 19:14:59 2013
33 Deleted Oracle managed file +DATA01/sun/datafile/sun_tb.273.814042949
34 Completed: drop tablespace SUN_TB
35
36 --查看+DATA01/sun/datafile/sun_tb.273.814042949文件是否被删除
37 -bash-3.00$ export ORACLE_SID=+ASM
38 -bash-3.00$ asmcmd
39 ASMCMD> ls -l DATA01/sun/datafile/ --文件已经被物理删除
40 Type Redund Striped Time Sys Name
41 DATAFILE MIRROR COARSE APR 29 18:00:00 Y EXAMPLE.263.812809507
42 DATAFILE MIRROR COARSE APR 29 18:00:00 Y SUN01.260.812809551
43 DATAFILE MIRROR COARSE APR 29 18:00:00 Y SUN02.258.812809553
44 DATAFILE MIRROR COARSE APR 29 18:00:00 Y SUN03.257.812809557
45 DATAFILE MIRROR COARSE APR 29 18:00:00 Y SYSAUX.264.812809463
46 DATAFILE MIRROR COARSE APR 29 18:00:00 Y SYSTEM.265.812809377
47 DATAFILE MIRROR COARSE APR 29 18:00:00 Y UNDOTBS1.261.812809543
48 DATAFILE MIRROR COARSE APR 29 18:00:00 Y USERS.256.812809561
49 DATAFILE MIRROR COARSE APR 29 18:00:00 Y USERS.259.812809559
50 DATAFILE MIRROR COARSE APR 29 18:00:00 Y USERS.262.812809557
51 ASMCMD>
总结:使用OMF管理文件的方法
1.使用ALTER SYSTEM SET db_create_file_dest = '<path>'设置路径
2.查看刚刚的设置SHOW PARAMETER db_create_file_dest;
3.创建表空间及数据文件CREATE TABLESPACE tablespace_name;
4.单独创建表空间CREATE TABLESPACE <> DATAFILE '<path>' SIZE <>;
5.也可以创建undo和temporary tablespace 。CREATE UNDO TABLESPACE tablespace_name ;CREATE TEMPORARY TABLESPACE tablespace_name;
6.删除表空间DROP TABLESPACE tablespace_name ;OMF情况下则删除物理文件,等效于未使用OMF创建,使用INCLUDING CONTENTS AND DATAFILES 删除方式
1.2日志文件的OMF管参数:db_create_online_log_dest_n
这是一组参数,共有5个,也就是最多可以定义5个缺省目录。如果创建联机日志,控制文件时没有明确定义文件路径和名称,则文件就会在这些目录下创建;如果定义了多个目录,则自动实现了复用(Multiplexed)的功能。如果没有设置这些参数,而是设置了db_create_file_dest,则联机日志,控制文件就会被创建在参数db_create_file_dest指定的目录下
支持文件:Redo log files Control files
1 --查看日志文件的参数
2 SQL> show parameter db_create_online
3
4 NAME TYPE VALUE
5 ------------------------------------ ----------- -----------
6 db_create_online_log_dest_1 string +DATA01 --联机日志,控制文件被指定在DATA01磁盘组下,没有使用复用
7 db_create_online_log_dest_2 string
8 db_create_online_log_dest_3 string
9 db_create_online_log_dest_4 string
10 db_create_online_log_dest_5 string
11
12 --实现复用
13 SQL> alter system set db_create_online_log_dest_2='+DATA02' scope=both; --增加一个联机日志,控制文件存储位置,实现复用
14
15 System altered.
16
17 SQL> show parameter db_create_online
18
19 NAME TYPE VALUE
20 ------------------------------------ ----------- ------------------------------
21 db_create_online_log_dest_1 string +DATA01
22 db_create_online_log_dest_2 string +DATA02
23 db_create_online_log_dest_3 string
24 db_create_online_log_dest_4 string
25 db_create_online_log_dest_5 string
26 SQL>
27
28 --查看当前联机日志目录
29 SQL> select group#,member from v$logfile; --3组,每组一个日志文件
30
31 GROUP# MEMBER
32 ---------- ---------------------------------------------
33 1 +DATA01/sun/onlinelog/group_1.268.812811035
34 2 +DATA01/sun/onlinelog/group_2.269.812811077
35 3 +DATA01/sun/onlinelog/group_3.270.812811139
36
37 --增加一组联机日志
38 SQL> ALTER DATABASE ADD logfile;--现在一组是两个日志文件
39
40 Database altered.
41
42 SQL> select group#,member from v$logfile;
43
44 GROUP# MEMBER
45 ---------- ---------------------------------------------
46 4 +DATA01/sun/onlinelog/group_4.273.814050091
47 4 +DATA02/sun/onlinelog/group_4.257.814050107
48 1 +DATA01/sun/onlinelog/group_1.268.812811035
49 2 +DATA01/sun/onlinelog/group_2.269.812811077
50 3 +DATA01/sun/onlinelog/group_3.270.812811139
51
52 --删除日志组文件
53 SQL> alter database drop logfile group 4; --DATA01 DATA02中的日志文件都会被物理删除
54
55 Database altered.
56
57 --alert_XXX.log日志
58 .............
59 alter database drop logfile group 4
60 Mon Apr 29 21:07:43 2013
61 Deleted Oracle managed file +DATA01/sun/onlinelog/group_4.273.814050091
62 Deleted Oracle managed file +DATA02/sun/onlinelog/group_4.257.814050107
总结:日志文件的OMF管理
1.当定义了db_recovery_file_dest 和db_create_file_dest路径,且没有定义db_create_online_log_dest_n的时候,则OMF将日志文件存放在db_recovery_file_dest和db_create_file_dest路径下,而且日志组下为个成员
2.当定义了db_create_online_log_dest_1则将日志文件存放到db_create_online_log_dest_1和db_create_file_dest路径下,且日志组下为个成员
3.当定义了db_create_online_log_dest_1和db_create_online_log_dest_2则存放到db_create_online_log_dest_1和db_create_online_log_dest_2下
3.当定义了多个db_create_online_log_dest_n,则为每个组n个日志成员,且多路复用
4.增加日志文件的方法;
alter database add logfile;
alter database add logfile [group n];
alter database add logfile member '<dir>' to group [n]
/*add logfile member这个方法仅使用未使用OMF的日志文件,对于已经运用了OMF的日志组,无法使用该功能添加日志文件*/
5.删除日志文件组时,对于OMF的日志文件组,其对应的物理文件同时被删除
alter database drop logfile group [n]
1.2.1使用OMF管理控制文件
使用OMF管理控制文件同管理日志文件类似,其默认参数也是:db_create_online_log_dest_n,也可以实现复用。
但前提条件:去掉control_files参数 alter system reset control_files scope = spfile sid = '*';
1 --查看control_files
2 SQL> show parameter control
3
4 NAME TYPE VALUE
5 ------------------------------------ ----------- ------------------------------
6 control_file_record_keep_time integer 7
7 control_files string +DATA01/sun/controlfile/contro
8 l01, +DATA02/sun/controlfile/c
9 ontrol02
10 --人为手动对控制文件操作的相对比较少,建议不要使用OMF管理
1.3 恢复文件OMF管理参数:DB_RECOVERY_FILE_DEST
在使用RMAN进行备份时,如果没有明确指明备份集的格式,则备份文件保存在这个目录下;归档日志文件也是使用这个目录。同参数db_create_file_dest
相同,在没有定义db_create_online_log_dest_n时,则联机日志和控制文件也会在这个目录下创建。
提示:在定义三个参数时,其目录最好区分开,避免混乱
--alter_xxx.log
WARNING: db_create_online_log_dest_2 is same as db_recovery_file_dest