使用OMF可以简化管理,不用指定文件的名字、路径(仍然可指定如autoextend, size, next, maxsize的数据文件属性),删除时OMF会自动删除对应OS文件,不用指定including contents and datafiles
表空间或数据文件的相关语法没什么变化:
create tablespace omftest datafile size 10m;
Alter tablespace add datefile;
create TEMPORARY tablespace omftemp tempfile size 10m;
使用OMF并不会对之前创建的数据文件产生影响,它们还是按原来方式操作,新建的文件将以OMF方式管理。因此数据库是可以OMF与非OMF混合方式管理存在的
- OMF支持下列文件的自动管理
- Tablespaces
- Redo log files
- Control files
- Archived logs
- Block change tracking files
- Flashback logs
- RMAN backups
This feature does not affect the creation or naming of administrative files such as trace files, audit files, alert logs, and core files.
- OMF适用场景
- 数据库使用了逻辑卷,支持条带及raid,可动态扩展空间
- 对OS端不关心或测试库
OMF对使用raw disk的数据库没影响,因为它使用的是操作系统函数来进行空间分配的(即通过文件系统分配),而裸盘不支持文件系统(it is done manually)。另外因为你不能指定数据文件位置,所以可能I/O性能上有所损耗。所以推荐在逻辑卷上使用
- 开启OMF
可以在三个位置使用OMF,每个位置互不影响,即如果你没设置DB_CREATE_FILE_DEST, 但设置了DB_CREATE_ONLINE_LOG_DEST_n, 则只对redo log及control file使用OMF, 对datafile及tempfile还是正常指定数据文件
Show parameters db_create
Show parameters db_recovery
- DB_CREATE_FILE_DEST: 数据文件,临时文件默认创建位置。如果未指定DB_CREATE_ONLINE_LOG_DEST_n,还会把redo log及control files存于此目录
- DB_CREATE_ONLINE_LOG_DEST_n: redo log及control files默认创建位置,通过n来指定多个位置,对它们进行多路复用,n最大为5
- DB_RECOVERY_FILE_DEST: Fast Recovery Area的位置,默认存RMAN备份,归档日志,闪回日志。如果未指定DB_CREATE_ONLINE_LOG_DEST_n,它还会保存redo log与control files以达到多路复用
- DB_RECOVERY_FILE_DEST_SIZE:指定Fast Recovery Area的大小
- OMF命名
OFA(Optimal Flexible Architecture)是Oracle的一个标准安装目录结构,不同的目录用于存放特定的文件,见《OFA安装目录 》
OMF是按OFA标准来对文件命名的,如设置了db_create_file_dest为/u01/app/oracle/oradata,则它会在oradata/db_unique_name/datafile下创建相应数据库的文件。文件后缀也是一致的,日志是log,数据文件是dbf
如一个数据文件命名为o1_mf_tbs1_2ixh90q_.dbf, o1_mf跟操作系统相关,tbs1为表空间名,2ixh90q是唯一生成id;日志文件是把表空间名替换成了日志组号。
- 注意事项
- 虽然创建不让写路径和文件名,但可以对已创建的数据文件操作:
ALTER DATABASE RENAME FILE '/u01/oradata/mydb/datafile/o1_mf_tbs01_ziw3bopb_.dbf'
TO '/u01/oradata/mydb/tbs0101.dbf';
ALTER DATABASE DROP LOGFILE '/u01/oradata/mydb/onlinelog/o1_mf_1_wo94n2xi_.log';
ALTER TABLE emp ALLOCATE EXTENT (DATAFILE '/u01/oradata/mydb/datafile/o1_mf_tbs1_2ixfh90q_.dbf');
- OMF下通过 ALTER DATABASE BACKUP CONTROLFILE TO TRACE备份出来的控制文件脚本
Noresetlogs:
CREATE CONTROLFILE
DATABASE sample
LOGFILE
GROUP 1 ('/u01/oradata/SAMPLE/onlinelog/o1_mf_1_o220rtt9_.log',
'/u02/oradata/SAMPLE/onlinelog/o1_mf_1_v2o0b2i3_.log')
SIZE 100M,
GROUP 2 ('/u01/oradata/SAMPLE/onlinelog/o1_mf_2_p22056iw_.log',
'/u02/oradata/SAMPLE/onlinelog/o1_mf_2_p02rcyg3_.log')
SIZE 100M
NORESETLOGS
DATAFILE '/u01/oradata/SAMPLE/datafile/o1_mf_system_xu34ybm2_.dbf'
SIZE 100M,
'/u01/oradata/SAMPLE/datafile/o1_mf_sysaux_aawbmz51_.dbf'
SIZE 100M,
'/u01/oradata/SAMPLE/datafile/o1_mf_sys_undo_apqbmz51_.dbf'
SIZE 100M
MAXLOGFILES 5
MAXLOGHISTORY 100
MAXDATAFILES 10
MAXINSTANCES 2
ARCHIVELOG;
Resetlogs:
CREATE CONTROLFILE
DATABASE sample
RESETLOGS
DATAFILE '/u01/oradata/SAMPLE/datafile/o1_mf_system_aawbmz51_.dbf',
'/u01/oradata/SAMPLE/datafile/o1_mf_sysaux_axybmz51_.dbf',
'/u01/oradata/SAMPLE/datafile/o1_mf_sys_undo_azzbmz51_.dbf'
SIZE 100M
MAXLOGFILES 5
MAXLOGHISTORY 100
MAXDATAFILES 10
MAXINSTANCES 2
ARCHIVELOG;
另外如果要使用OMF,在建库前不要配置参数文件的CONTROL_FILES参数,这样才会使用OMF.
- redo日志操作
Alter database add logfile [Group 4]; --创建新的日志组,根据参数设置自动多路复用
Alter database add logfile member '/u01/app/oracle/oradata/orcl/redo04-2.log' to group 4;
---加member必须要指定文件名,不能不写
Alter database drop logfile group 4;