使用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混合方式管理存在的
This feature does not affect the creation or naming of administrative files such as trace files, audit files, alert logs, and core files.
OMF对使用raw disk的数据库没影响,因为它使用的是操作系统函数来进行空间分配的(即通过文件系统分配),而裸盘不支持文件系统(it is done manually)。另外因为你不能指定数据文件位置,所以可能I/O性能上有所损耗。所以推荐在逻辑卷上使用
可以在三个位置使用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
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');
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.
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;