Data Guard环境下Temp表空间和Temp文件管理概述(一)

2014-11-24 17:23:43 · 作者: · 浏览: 2

--------------------------------------分割线 --------------------------------------


相关参考:


--------------------------------------分割线 --------------------------------------


1、实验环境介绍


我们在Oracle 11gR2环境下的Dataguard中进行测试。具体版本为11.2.0.4。当前Primary情况如下:


--Primary名称ora11g


SQL> select DATABASE_ROLE, open_mode from v$database;


DATABASE_ROLE OPEN_MODE


---------------- --------------------


PRIMARY READ WRITE


当前数据库中只有一个临时文件,对应表空间TEMP。



SQL> select file_name, tablespace_name from dba_temp_files;



FILE_NAME TABLESPACE_NAME


------------------------------------------------------------ ------------------------------

/u01/app/oradata/ORA11G/datafile/o1_mf_temp_9mnjxpk4_.tmp TEMP



对Dataguard而言,最重要的文件管理参数为standby_file_management。如果保持为AUTO,就可以保证数据文件同步创建。



SQL> show parameter standby_file



NAME TYPE VALUE


------------------------------------ ----------- ------------------------------


standby_file_management string AUTO



Standby端情况也比较简单,处在mount状态。文件自动创建管理。




SQL> select DATABASE_ROLE, open_mode from v$database;


DATABASE_ROLE OPEN_MODE


---------------- --------------------


PHYSICAL STANDBY MOUNTED




SQL> select name, file# from v$tempfile;



NAME FILE#

-------------------------------------------------------------------------------- ----------

/u01/app/oradata/ORA11GSY/datafile/o1_mf_temp_9pcqbdd6_.tmp 1


SQL> show parameter standby_file


NAME TYPE VALUE


------------------------------------ ----------- ------------------------------


standby_file_management string AUTO



2、Primary端临时表空间操作



我们首先实验在Primary端进行表空间操作。



(primary)


SQL> alter tablespace temp add tempfile size 100m autoextend off;


Tablespace altered



SQL> select file_name, tablespace_name from dba_temp_files;



FILE_NAME TABLESPACE_NAME


------------------------------------------------------------ ------------------------------

/u01/app/oradata/ORA11G/datafile/o1_mf_temp_9mnjxpk4_.tmp TEMP


/u01/app/oradata/ORA11G/datafile/o1_mf_temp_9pm3ct62_.tmp TEMP



SQL> alter system switch logfile;


System altered


切换之后,正常redo log信息应该已经传递到standby端。Standby端启动redo apply过程,查看临时文件是否创建。


SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered



SQL> select name, file# from v$tempfile;



NAME FILE#

-------------------------------------------------------------------------------- ----------

/u01/app/oradata/ORA11GSY/datafile/o1_mf_temp_9pcqbdd6_.tmp 1

启动redo apply之后,standby端依然只有一个临时文件,也就是说明临时文件没有联动的传递过来。至此,Primary和Standby文件结构出现差异。

此时是否可以在standby端直接添加文件呢?mount状态下,是拒绝的。


SQL> alter tablespace temp add tempfile size 100m autoextend off;


altertablespace temp add tempfile size 100m autoextend off


ORA-01109: 数据库未打开


与数据文件对应的临时表空间,如果我们在Primary端进行创建时,会不会联动创建呢?


(主库)


SQL> create temporary tablespace temp1 tempfile size 10m autoextend off


2 extent management local uniform size 1m;



Tablespace created



SQL> select file_name, tablespace_name from dba_temp_files;



FILE_NAME TABLESPACE_NAME


--------------------------------------------------