您的位置:首页 > 其它

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

2014-07-05 23:13 309 查看
客户遇到个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.dbf
         8 +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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐