关于db_file_name_convert,log_file_name_convert,standby_file_management 参数,理解dg文件管理
SQL> show parameter standby_file(standby)
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------
standby_file_management string auto
SQL> show parameter name_convert(standby)
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string g:\oracle\product\10.2.0\orada
ta\xh, e:\standby\datafile
log_file_name_convert string g:\oracle\product\10.2.0\orada
ta\xh, e:\standby\datafile
SQL> show parameter recov_(standby)
NAME TYPE VALUE
------------------------------------ ----------- ---------------------------
db_recovery_file_dest string e:\standby\archive
1.primary上create tablespace
SQL> create tablespace xhtr datafile 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\xhtr.d
bf' size 10m;
表空间已创建。
SQL> col file_name format a35
SQL> col tablespace_name format a10
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- -----------------------------------
USERS G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH
\USERS01.DBF
SYSAUX G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH
\SYSAUX01.DBF
UNDOTBS1 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH
\UNDOTBS01.DBF
SYSTEM G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH
\SYSTEM01.DBF
TABLESPACE FILE_NAME
---------- -----------------------------------
EXAMPLE G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH
\EXAMPLE01.DBF
XHTR G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH
\XHTR.DBF
已选择6行。
SQL> alter system switch logfile;
系统已更改。
SQL>
2.standby1 上应用
SQL> alter database recover managed standby database disconnect from session;
数据库已更改。
SQL> alter database recover managed standby database cancel;
数据库已更改。
SQL> alter database open read only;
数据库已更改。
SQL> col file_name format a35
SQL> col tablespace_name format a10
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- -----------------------------------
USERS E:\STANDBY\DATAFILE\USERS01.DBF
SYSAUX E:\STANDBY\DATAFILE\SYSAUX01.DBF
UNDOTBS1 E:\STANDBY\DATAFILE\UNDOTBS01.DBF
SYSTEM E:\STANDBY\DATAFILE\SYSTEM01.DBF
EXAMPLE E:\STANDBY\DATAFILE\EXAMPLE01.DBF
XHTR E:\STANDBY\DATAFILE\XHTR.DBF~~~~~~~~看到primary db上 新create 的datafile
已选择6行。
如果要是primary 上 drop tablespace的话 ,standby 也会应用完archivelog后 自动drop tablespace
3.primary 上create tablespace (standby standby_file_management改为manual)
SQL> alter system set standby_file_management=MANUAL;(standby)
系统已更改。
SQL> create tablespace xhtr2 datafile 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\xhtr2(primary)
.dbf' size 10m;
表空间已创建。
SQL> alter system switch logfile;(primary)
系统已更改。
SQL> alter database recover managed standby database disconnect from session;(standby)
数据库已更改。
SQL> select applied from v$archived_log;(standby)
APP
---
.................
YES
NO~~~~~~~~~~~~~~~~~~~~~~可以看到 这个archivelog 没有应用完
已选择16行。
查看standby 的alert.log
ORA-01111: name for data file 7 is unknown - rename to correct file
ORA-01110: data file 7: 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00007'
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01111: name for data file 7 is unknown - rename to correct file
ORA-01110: data file 7: 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00007
从alert信息可以看到standby应用archived log时没有对应的目录,standby file 管理为手动
SQL> select name from v$datafile;(standby)
NAME
------------------------------
E:\STANDBY\DATAFILE\SYSTEM01.D
BF
E:\STANDBY\DATAFILE\UNDOTBS01.
DBF
E:\STANDBY\DATAFILE\SYSAUX01.D
BF
E:\STANDBY\DATAFILE\USERS01.DB
F
NAME
------------------------------
E:\STANDBY\DATAFILE\EXAMPLE01.
DBF
E:\STANDBY\DATAFILE\XHTR.DBF
G:\ORACLE\PRODUCT\10.2.0\DB_1\~~~~~可以看到standby有一个错误的文件名字
DATABASE\UNNAMED00007
已选择7行。
SQL> select name from v$tablespace;(standby)
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR
XHTR2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~standby 中加入了primary 的新tablespace信息
已选择8行。
SQL> alter database create datafile 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNA
MED00007' as 'e:\standby\datafile\xhtr2.dbf';**********
数据库已更改。
SQL> select name from v$datafile;(standby)
NAME
------------------------------
E:\STANDBY\DATAFILE\SYSTEM01.D
BF
E:\STANDBY\DATAFILE\UNDOTBS01.
DBF
E:\STANDBY\DATAFILE\SYSAUX01.D
BF
E:\STANDBY\DATAFILE\USERS01.DB
F
NAME
------------------------------
E:\STANDBY\DATAFILE\EXAMPLE01.
DBF
E:\STANDBY\DATAFILE\XHTR.DBF
E:\STANDBY\DATAFILE\XHTR2.DBF
已选择7行。
SQL> alter database recover managed standby database disconnect from session;(standby)
数据库已更改。
SQL> select applied from v$archived_log;(standby)
......
YES
YES~~~~应用了
已选择16行。
SQL> drop tablespace xhtr2 including contents and datafiles;(primary)
表空间已删除。
SQL> alter system switch logfile;(primary)
系统已更改。
SQL> select name from v$tablespace;(standby)
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR
已选择7行。
SQL> select name from v$datafile;(standby)
NAME
------------------------------
E:\STANDBY\DATAFILE\SYSTEM01.D
BF
E:\STANDBY\DATAFILE\UNDOTBS01.
DBF
E:\STANDBY\DATAFILE\SYSAUX01.D
BF
E:\STANDBY\DATAFILE\USERS01.DB
F
NAME
------------------------------
E:\STANDBY\DATAFILE\EXAMPLE01.
DBF
E:\STANDBY\DATAFILE\XHTR.DBF
已选择6行。
可以看到manual情况 中standby 的tablespace信息删除了 ,但实际的数据文件 没删除
C:\>dir e:\standby\datafile
驱动器 E 中的卷没有标签。
卷的序列号是 AC5C-2ED7
e:\standby\datafile 的目录
.................................
2009-11-03 17:18 10,493,952 XHTR2.DBF***********************物理上还存在
16 个文件 1,132,747,162 字节
4.primary create tablespace 但 datafile 不含在 standby 参数db_file_name_convert中(standby_file_management auto)
SQL> alter system set standby_file_management=AUTO;(standby)
系统已更改。
SQL> show parameter db_file_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string g:\oracle\product\10.2.0\orada
ta\xh, e:\standby\datafile
下面是primary 和standby的 状态
SQL> col tablespace_name format a10
SQL> col file_name format a50
SQL> select tablespace_name,file_name from dba_data_files;(primary)
TABLESPACE FILE_NAME
---------- --------------------------------------------------
USERS G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\USERS01.DBF
SYSAUX G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSAUX01.DBF
UNDOTBS1 G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\UNDOTBS01.DBF
SYSTEM G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\SYSTEM01.DBF
EXAMPLE G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\EXAMPLE01.DBF
XHTR G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\XHTR.DBF
已选择7行。
SQL> select name from v$tablespace;(standby)
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR
已选择8行。
SQL> select name from v$datafile;(standby)
NAME
--------------------------------------------------------------------------------
E:\STANDBY\DATAFILE\SYSTEM01.DBF
E:\STANDBY\DATAFILE\UNDOTBS01.DBF
E:\STANDBY\DATAFILE\SYSAUX01.DBF
E:\STANDBY\DATAFILE\USERS01.DBF
E:\STANDBY\DATAFILE\EXAMPLE01.DBF
E:\STANDBY\DATAFILE\XHTR.DBF
SQL> create tablespace xhtr2 datafile 'g:\xhtr2.dbf' size 10m; (primary)
表空间已创建。
SQL> alter system switch logfile; (primary)
系统已更改。
SQL> select CREATOR,applied from v$archived_log;(standby)
ARCH YES
CREATOR APP
------- ---
ARCH NO~~~~~~看到 这个由arch进程传递过来的最新归档没有应用
已选择23行。
查看standby alert.log
Some recovered datafiles maybe left media fuzzy
Media recovery may continue but open resetlogs may fail
Wed Nov 04 09:39:47 2009
Errors in file e:\standby\bdump\standby1_mrp0_2616.trc:
ORA-01274: cannot add datafile 'G:\XHTR2.DBF' - file could not be created
ORA-01119: error in creating database file 'G:\XHTR2.DBF'
ORA-27038: created file already exists
OSD-04010: 指定了
但这个文件 已由primary建立
SQL> select name from v$datafile;(standby)
NAME
--------------------------------------------------------------------------------
E:\STANDBY\DATAFILE\SYSTEM01.DBF
E:\STANDBY\DATAFILE\UNDOTBS01.DBF
E:\STANDBY\DATAFILE\SYSAUX01.DBF
E:\STANDBY\DATAFILE\USERS01.DBF
E:\STANDBY\DATAFILE\EXAMPLE01.DBF
E:\STANDBY\DATAFILE\XHTR.DBF
G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00007(一个不知名的文件)
已选择7行。
SQL> select name from v$tablespace;(standby)
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR
XHTR2~~~~~~~~~~~~~~~~~信息已经应用
已选择8行。
SQL> alter database create datafile 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNA (standby)
MED00007' as 'e:\standby\datafile\xhtr2.dbf';
alter database create datafile 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00
007' as 'e:\standby\datafile\xhtr2.dbf'
*
第 1 行出现错误:
ORA-01275: 自动进行备用文件管理时, 不允许进行 CREATE DATAFILE 操作。
SQL> alter system set standby_file_management=MANUAL; (standby)~~~必须改会manual才行
系统已更改。
SQL> alter database create datafile 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNA (standby)
MED00007' as 'e:\standby\datafile\xhtr2.dbf';
数据库已更改。
SQL> alter database recover managed standby database disconnect from session;(standby)
数据库已更改。
SQL> select applied from v$archived_log;(standby)
APP
---
YES~~~~~~~~~~~~~~~已经应用成功
已选择23行。
这样就明白了db_file_name_convert的 意义主要就是应用redo时 转换目录映射目录.(log_file_name_convert意思是一样的)
不含在db_file_name_conver中可以用 OMF解决
但前提是standby_file_management=auto
SQL> show parameter standby_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string MANUAL
SQL>
SQL> alter system set db_create_file_dest='e:\standby\datafile';(standby)
系统已更改。
SQL> show parameter db_create_file_dest (standby)
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string e:\standby\datafile
SQL> create tablespace xhtr3 datafile 'g:\xhtr3.dbf' size 10m;(primary)
表空间已创建。
SQL> alter system switch logfile;(primary)
系统已更改。
SQL> select applied from v$archived_log;(standby)
APP
---
YES
NO~~~~在standby 这个 收到的archivelog 还是没有 应用
已选择24行。
查看standby alert.log
Wed Nov 04 10:05:54 2009
Errors in file e:\standby\bdump\standby1_mrp0_3624.trc:
ORA-01111: name for data file 8 is unknown - rename to correct file
ORA-01110: data file 8: 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00008'
ORA-01157: cannot identify/lock data file 8 - see DBWR trace file
ORA-01111: name for data file 8 is unknown - rename to correct file
ORA-01110: data file 8: 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00008'
这个错误是standby_file_management manual时错误
SQL> alter system set standby_file_management=AUTO;
系统已更改。
SQL> alter database recover managed standby database disconnect from session;(standby)
数据库已更改。
SQL> select applied from v$archived_log;(standby)
YES
YES
YES
YES
APP
---
YES
NO~~~~~~~~~~~~~~~~~~~~~~~还是应用不行
已选择24行。
SQL> show parameter db_create_file_dest(standby)
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string e:\standby\datafile
SQL> show parameter standby_file_management
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string AUTO
SQL> select name from v$tablespace;(standby)
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR
XHTR2
XHTR3
已选择9行。
SQL> select name from v$datafile;(standby)
NAME
--------------------------------------------------------------------------------
E:\STANDBY\DATAFILE\SYSTEM01.DBF
E:\STANDBY\DATAFILE\UNDOTBS01.DBF
E:\STANDBY\DATAFILE\SYSAUX01.DBF
E:\STANDBY\DATAFILE\USERS01.DBF
E:\STANDBY\DATAFILE\EXAMPLE01.DBF
E:\STANDBY\DATAFILE\XHTR.DBF
E:\STANDBY\DATAFILE\XHTR2.DBF
G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00008
已选择8行。
SQL> alter system set standby_file_management=MANUAL;(standby)
系统已更改。
SQL> alter database create datafile 'G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNA (standby)
MED00008' as 'e:\standby\datafile\xhtr3'
2 ;
数据库已更改。
SQL> alter database recover managed standby database disconnect from session;
(standby)
数据库已更改。
SQL> select applied from v$archived_log;(standby)
APP
---
APP
---
YES
YES~~~~~~~~~~~成功应用
已选择24行。
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR
XHTR2
XHTR3
已选择9行。
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\STANDBY\DATAFILE\SYSTEM01.DBF
E:\STANDBY\DATAFILE\UNDOTBS01.DBF
E:\STANDBY\DATAFILE\SYSAUX01.DBF
E:\STANDBY\DATAFILE\USERS01.DBF
E:\STANDBY\DATAFILE\EXAMPLE01.DBF
E:\STANDBY\DATAFILE\XHTR.DBF
E:\STANDBY\DATAFILE\XHTR2.DBF
E:\STANDBY\DATAFILE\XHTR3
已选择8行。
SQL> alter system set standby_file_management=AUTO;(standby)
系统已更改。
SQL> create tablespace xhtr4 datafile 'g:\xhtr4.dbf' size 10m;(primary)
表空间已创建。
SQL> alter system switch logfile;(primary)
系统已更改。
SQL> select applied from v$archived_log;(standby)
YES~~~~~~~~~~~~~~应用成功
已选择27行。
SQL> select name from v$tablespace;(standby)
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
XHTR
XHTR2
XHTR3
XHTR4
已选择10行。
SQL> select name from v$datafile;(standby)
NAME
--------------------------------------------------------------------------------
E:\STANDBY\DATAFILE\SYSTEM01.DBF
E:\STANDBY\DATAFILE\UNDOTBS01.DBF
E:\STANDBY\DATAFILE\SYSAUX01.DBF
E:\STANDBY\DATAFILE\USERS01.DBF
E:\STANDBY\DATAFILE\EXAMPLE01.DBF
E:\STANDBY\DATAFILE\XHTR.DBF
E:\STANDBY\DATAFILE\XHTR2.DBF
E:\STANDBY\DATAFILE\XHTR3
E:\STANDBY\DATAFILE\STANDBY1\DATAFILE\O1_MF_XHTR4_5H2778OZ_.DBF 应用成功文件名按OMF 管理名字命名
已选择9行。
上面可以看 出 如果standby file managment 为auto ,而primary 添加的datafile 不再 db_file_name_convert中可以 用omf解决,不过要提前设置omf 和 standby file management 为auto,standby要是开着恢复模式(recover managed standby) 那么日志信息会应用~~controlfile中会记录下错误的信息,这之后再开omf或设为auto已经晚了 ,因为control file中已经有了该文件的错误信息
SQL> create tablespace xhtr5 datafile 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\XH\xhtr5(primary)
.dbf' size 10m;
表空间已创建。
SQL> alter system switch logfile;(primary)
系统已更改。
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
E:\STANDBY\DATAFILE\SYSTEM01.DBF
E:\STANDBY\DATAFILE\UNDOTBS01.DBF
E:\STANDBY\DATAFILE\SYSAUX01.DBF
E:\STANDBY\DATAFILE\USERS01.DBF
E:\STANDBY\DATAFILE\EXAMPLE01.DBF
E:\STANDBY\DATAFILE\XHTR.DBF
E:\STANDBY\DATAFILE\XHTR2.DBF
E:\STANDBY\DATAFILE\XHTR3
E:\STANDBY\DATAFILE\STANDBY1\DATAFILE\O1_MF_XHTR4_5H2778OZ_.DBF
E:\STANDBY\DATAFILE\STANDBY1\DATAFILE\O1_MF_XHTR5_5H28JPVT_.DBF~~~~即便primary建立时,在db_file_name_convert中 ,且standby file管理为auto,但日志应用时候还是 建立在omf指定的上面
已选择10行。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12020513/viewspace-619711/ ,如需转载,请注明出处,否则将追究法律责任。