您好,欢迎访问一九零五行业门户网

ASM时的OFM特性对影的建数据文件名的影响及为SYSTEM表空间的数据

客户遇到个dg的问题,存储使用的asm管理,有多个磁盘盘。 在主库创建数据文件,备库自动创建的数据文件都在同一磁盘组,并且在主库创建数据文件是指定的是类似**.dbf的名字,到备库也变成了使用asm的数字格式**.266.123456 这是因为使用了omf特性。 omf,全称
客户遇到个dg的问题,存储使用的asm管理,有多个磁盘盘。
在主库创建数据文件,备库自动创建的数据文件都在同一磁盘组,并且在主库创建数据文件是指定的是类似**.dbf的名字,到备库也变成了使用asm的数字格式**.266.123456
这是因为使用了omf特性。
omf,全称是oracle_managed files,即oracle文件管理。
使用omf可以简化管理员的管理工作,不用指定文件的名字、大小、路径,其名字,大小,路径由oracle 自动分配。在删除不再使用的日志、数据、控制文件时,omf也可以自动删除其对应的os文件。
oracle数据库是否启用omf特性可以通过查看db_create_file_dest参数来获得。
当db_create_file_dest参数值为空时表示未启用omf功能,设置为目录名则是开启omf。
实验数据库版本:11.2.0.4.0,一、启用omf时的数据文件创建情况1.主库在指定磁盘组创建数据文件,备库会在db_create_file_dest=+dg1指定的磁盘组创建备库参数
sql> show parameter standby_file
name type value
------------------------------------ ----------- ------------------------------
standby_file_management string auto
sql> show parameter db_create_file_dest
name type value
------------------------------------ ----------- ------------------------------
db_create_file_dest string +dg1
sql> col name for a50
sql> set linesize 1000
sql> select * from v$dbfile;
file# name
---------- --------------------------------------------------
1 +dg1/dg2/datafile/system.258.852146097
2 +dg1/dg2/datafile/sysaux.257.852146099
3 +dg1/dg2/datafile/undotbs1.256.852146101
4 +dg1/dg2/datafile/users.259.852146107
5 +dg2/dg/datafile/test1.dbf
主库创建在dg2磁盘组创建表空间:
sql> col name for a50
sql> set linesize 1000
sql> select * from v$dbfile;
file# name
---------- --------------------------------------------------
1 +dg1/dg/datafile/system.260.852134271
2 +dg1/dg/datafile/sysaux.261.852134303
3 +dg1/dg/datafile/undotbs1.262.852134329
4 +dg1/dg/datafile/users.264.852134361
5 +dg2/dg/datafile/test1.dbf
sql> create tablespace test2 datafile '+dg2/dg/datafile/test2.dbf' size 10m;
tablespace created.
sql> alter system switch logfile;
system altered.
在备份库上查询表空间及数据文件创建情况:在db_create_file_dest指定的磁盘组+dg1中创建
sql> select * from v$dbfile;
file# name
---------- --------------------------------------------------
1 +dg1/dg2/datafile/system.258.852146097
2 +dg1/dg2/datafile/sysaux.257.852146099
3 +dg1/dg2/datafile/undotbs1.256.852146101
4 +dg1/dg2/datafile/users.259.852146107
5 +dg2/dg/datafile/test1.dbf
6 +dg1/dg2/datafile/test2.272.852147911
修改备库db_create_file_dest参数为+dg2:
sql> sql> show parameter db_create_file_dest
name type value
------------------------------------ ----------- ------------------------------
db_create_file_dest string +dg2
在主库创建表空间:
sql> create tablespace test3 datafile '+dg1/dg/datafile/test3.dbf' size 10m;
tablespace created.
sql> alter system switch logfile;
system altered.
在备库查询:
sql> select * from v$dbfile;
file# name
---------- --------------------------------------------------
1 +dg1/dg2/datafile/system.258.852146097
2 +dg1/dg2/datafile/sysaux.257.852146099
3 +dg1/dg2/datafile/undotbs1.256.852146101
4 +dg1/dg2/datafile/users.259.852146107
5 +dg2/dg/datafile/test1.dbf
6 +dg1/dg2/datafile/test2.272.852147911
7 +dg2/dg2/datafile/test3.260.852148535二、关闭omf特性修改备库db_create_file_dest参数为空,关闭omf特性。--我这里只关闭了备库的
sql> show parameter db_create_file_dest
name type value
------------------------------------ ----------- ------------------------------
db_create_file_dest string +dg2
sql> alter system set db_create_file_dest='';
system altered.
sql> show parameter db_create_file_dest
name type value
------------------------------------ ----------- ------------------------------
db_create_file_dest string
主库做操作:
sql> create tablespace test4 datafile '+dg1/dg/datafile/test4.dbf' size 10m;
tablespace created.
sql> create tablespace test5 datafile '+dg2/dg/datafile/test5.dbf' size 10m;
tablespace created.
sql> select * from v$dbfile;
file# name
---------- --------------------------------------------------
1 +dg1/dg/datafile/system.260.852134271
2 +dg1/dg/datafile/sysaux.261.852134303
3 +dg1/dg/datafile/undotbs1.262.852134329
4 +dg1/dg/datafile/users.264.852134361
5 +dg2/dg/datafile/test1.dbf
6 +dg2/dg/datafile/test2.dbf
7 +dg1/dg/datafile/test4.dbf
8 +dg2/dg/datafile/test5.dbf
备库做查询:
sql> select * from v$dbfile;
file# name
---------- --------------------------------------------------
1 +dg1/dg2/datafile/system.258.852146097
2 +dg1/dg2/datafile/sysaux.257.852146099
3 +dg1/dg2/datafile/undotbs1.256.852146101
4 +dg1/dg2/datafile/users.259.852146107
5 +dg2/dg/datafile/test1.dbf
6 +dg1/dg2/datafile/test2.272.852147911
7 +dg1/dg/datafile/test4.dbf8 +dg2/dg/datafile/test5.dbf
三、观察下asm磁盘组中对于数据文件别名的存储形式asmcmd> ls -al
warning:option 'a' is deprecated for 'ls'
please use 'absolutepath'
type redund striped time sys name
datafile unprot coarse jul 05 22:00:00 y none => sysaux.257.852146099
datafile unprot coarse jul 05 22:00:00 y none => system.258.852146097
datafile unprot coarse jul 05 22:00:00 y none => test2.272.852147911
datafile unprot coarse jul 05 22:00:00 y +dg1/dg/datafile/test4.dbf => test4.279.852157365
datafile unprot coarse jul 05 22:00:00 y none => undotbs1.256.852146101
datafile unprot coarse jul 05 22:00:00 y none => users.259.852146107
asmcmd> ls -al
warning:option 'a' is deprecated for 'ls'
please use 'absolutepath'
type redund striped time sys name
datafile unprot coarse jul 05 22:00:00 y +dg2/dg/datafile/test1.dbf => test1.256.852146103
datafile unprot coarse jul 05 22:00:00 y +dg2/dg/datafile/test5.dbf => test5.260.852157413
四、为asm中system表空间使用别名比如上面创建的表空间test4其对应的数据文件test4.dbf是一个别名,真实的数据文件与别名的对应是:+dg1/dg/datafile/test4.dbf => test4.279.852157365
,然而(system,undotbs,sysaux,users)对应的都是真实的数据文件,没有别名,这时如果要对这些表空间使用别名,就需要重建控制文件。示例如下:
alter diskgroup dg1 add alias '+dg1/dg2/datafile/system1.dbf' for '+dg1/dg2/datafile/system.258.852146097';
此时asmcmd中查看:
asmcmd> ls -al
warning:option 'a' is deprecated for 'ls'
please use 'absolutepath'
type redund striped time sys name
datafile unprot coarse jul 05 23:00:00 y none => sysaux.257.852146099
datafile unprot coarse jul 05 23:00:00 y +dg1/dg2/datafile/system1.dbf => system.258.852146097
n system1.dbf => +dg1/dg2/datafile/system.258.852146097
sql> startup nomount;
oracle instance started.
total system global area 418484224 bytes
fixed size 1365040 bytes
variable size 255855568 bytes
database buffers 155189248 bytes
redo buffers 6074368 bytes
sql> create controlfile reuse database dg resetlogs force logging archivelog …………
重建控制文件完成后数据库是mount状态,此时查询:
sql> select * from v$dbfile;
file# name
---------- --------------------------------------------------
8 +dg2/dg/datafile/test5.dbf
7 +dg1/dg/datafile/test4.dbf
6 +dg1/dg2/datafile/test2.272.852147911
5 +dg2/dg/datafile/test1.dbf
4 +dg1/dg2/datafile/users.259.852146107
3 +dg1/dg2/datafile/undotbs1.256.852146101
2 +dg1/dg2/datafile/sysaux.257.852146099
1 +dg1/dg2/datafile/system1.dbf
其它类似信息

推荐信息