dataguard下增删表空间与数据文件、TTS、Rename DataFile

环境说明:
以下测试都是基于一个节点的rac + 单节点 asm 备库






主库大部分的操作都会通过Redo data自动同步到物理standby。 但还有一些操作是需要DBA 手工进行同步的。  




1)  添加数据文件或者创建表空间 
STANDBY_FILE_MANAGEMENT 参数控制添加数据文件是否自动同步到备库。 


(1)如果物理备库的STANDBY_FILE_MANAGEMENT 参数设置为AUTO,主库上添加任何的数据文件都会自动同步到物理standby。 


示范:


-- 备库查看 STANDBY_FILE_MANAGEMENT 参数。


SQL> show parameter standby_file


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------
standby_file_management              string      auto


-- 主库创建表空间
SQL>create tablespace andy datafile '+DATA/devdb/datafile/andy01.dbf' size 1m AUTOEXTEND ON next 10M maxsize unlimited EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO  ;
Tablespace created.


--主库添加数据文件
SQL> alter tablespace andy add datafile '+DATA/devdb/datafile/andy02.dbf' size 1m AUTOEXTEND ON next 10M maxsize unlimited;


Tablespace altered.


--备库查看
SQL> select name from v$tablespace;


NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
EXAMPLE
ANDY


7 rows selected.


SQL> select name from v$datafile;


NAME
-------------------------------------------------
+DATA/phydb/datafile/system.257.938174739
+DATA/phydb/datafile/sysaux.259.938174741
+DATA/phydb/datafile/undotbs1.260.938174743
+DATA/phydb/datafile/users.261.938174743
+DATA/phydb/datafile/example.258.938174741
+DATA/phydb/datafile/andy.270.938631373
+DATA/phydb/datafile/andy.271.938631903


7 rows selected.
(2)如果物理备库的STANDBY_FILE_MANAGEMENT 参数设置为MANUAL,那么主库添加的数据文件必须手工在备库添加。 


(3)如果是从其他数据库copy 的数据文件到主库,STANDBY_FILE_MANAGEMENT参数就不管用了。那么也必须将这个数据文件copy 到备库,同时要重建standby control file。




2)  Drop 表空间和删除数据文件
在主库drop 表空间或者delete 数据文件的时候,会自动同步到物理备库。




-- 主库删除 andy 表空间的一个数据文件
SQL> alter tablespace andy  drop datafile '+DATA/devdb/datafile/andy02.dbf';


Tablespace altered.


-- 备库查询
SQL> select name from v$datafile;


--我们删除主库的 andy 表空间:


SQL> drop tablespace andy including contents and datafiles;


Tablespace dropped.


--备库查询 andy 表空间是否已经删除
SQL> select name from v$tablespace;


NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
EXAMPLE


6 rows selected.





3)Raw 设备下的STANDBY_FILE_MANAGEMENT 参数  


3.1 主备有相同的 raw 设备。


SQL> CREATE TABLESPACE MTS2 DATAFILE '/dev/raw/raw100' size 1m;
Tablespace created.


SQL> ALTER SYSTEM SWITCH LOGFILE; 
System altered.


如果我们在主备库都创建了/dev/raw/raw100的裸设备,那么在备库就可以正常应用。 






3.2 主备没有相同的 RAW


1. 备库 raw 停用 mgr ,防止备库没有创建raw文件导致的Redo Apply 停止问题
SQL> alter database recover managed standby database using current logfile disconnect from session;


2. 主库 raw 创建表空间,并执行日志切换。
SQL> CREATE TABLESPACE MTS3 DATAFILE '/dev/raw/raw101' size 1m;
Tablespace created.
 
SQL> ALTER SYSTEM SWITCH LOGFILE;
System altered.


注意:备库没有创建raw文件导致的Redo Apply 停止, alert 会有记录。


3. 在备库创建raw设备,并对oracle 用户分配权限。 


4.备库查询v$datafile 视图,确定当前的数据文件信息: 


SQL> SELECT NAME FROM V$DATAFILE;


NAME -------------------------------------------------------------------------------
/u01/MILLER/MTS/system01.dbf
/u01/MILLER/MTS/undotbs01.dbf
/u01/MILLER/MTS/sysaux01.dbf
/u01/MILLER/MTS/users01.dbf
/u01/MILLER/MTS/mts.dbf
/dev/raw/raw100
/u01/app/oracle/product/10.1.0/dbs/UNNAMED00007
 


SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL; 


-- 备库数据库文件改为主库创建的数据文件名
SQL> ALTER DATABASE CREATE DATAFILE '/u01/app/oracle/product/10.1.0/dbs/UNNAMED00007' AS '/dev/raw/raw101'; 


5. 被备库的alert log就会看到如下信息:
Fri Apr  8 10:09:30 2005
alter database create datafile
'/dev/raw/raw101' as '/dev/raw/raw101'


Fri Apr  8 10:09:30 2005
Completed: alter database create datafile
'/dev/raw/raw101' a
 
6. 在备库将STANDBY_FILE_MANAGEMENT修改成AUTO,并重启Redo Apply:
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
SQL> RECOVER MANAGED STANDBY DATABASE DISCONNECT;
 
 
4) 在物理standby 情况下使用Transportable Tablespaces 


在DG 环境下,我们也可以使用传输表空间。 传输表空间属于数据泵的一种应用。
步骤如下:
1. 使用expdp工具导出表空间的结构信息。


2. 复制数据库对应的数据文件和expdp 的dump 文件到主库。 复制数据文件到备库。 


如果已经配置了DB_FILE_NAME_CONVERT参数,必须保证主备库数据文件的路径一致。
如果没有配置这个参数,可以使用不同的路径,然后执行alter database rename file 来重命令数据文件。
 
注意在rename 数据文件之前,必须先将STANDBY_FILE_MANAGEMENT 参数设置为MANUAL。 


3. 在主库调用impdp导出表空间的结构信息。主库生产的Redo data 会自动传送到备库并应用。 


这个和我们单实例的表空间传输步骤基本一致,除了在第二步,我们也需要copy 一份数据文件。 








5)Rename 主库的DataFile 


当我们在主库 rename 一个或者多个数据文件时,这些改变不会同步到备库。 因此我们需要手工的在备库执行这些rename操作。  


具体的操作步骤如下: 


SQL> create tablespace andy datafile '+DATA/devdb/datafile/andy01.dbf' size 1m;
Tablespace created.


SQL> create table asmandy (id int) tablespace andy ;


Table created.


SQL> insert into asmandy values(1);


1 row created.


SQL> select * from asmandy;


        ID
----------
         1


SQL> commit; 


1.在主库offline 表空间
SQL> alter tablespace andy offline;
Tablespace altered.
 
2.在主库操作系统层面将数据文件移动到其他位置
ASMCMD> cp +DATA/devdb/datafile/andy01.dbf +DATA/devdb/andy01.dbf


3.在主库rename 数据文件并将表空间改成online状态


SQL> alter tablespace andy rename datafile '+DATA/devdb/datafile/andy01.dbf' to '+DATA/devdb/andy01.dbf';
Tablespace altered.


SQL> alter tablespace andy online;
Tablespace altered.


4. 在备库取消MRP
SQL> alter database recover managed standby database cancel;
Database altered.
 


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


NAME                                          FILE#
---------------------------------------- ----------
+DATA/phydb/datafile/system.257.93817473          1
9


+DATA/phydb/datafile/sysaux.259.93817474          2
1


+DATA/phydb/datafile/undotbs1.260.938174          3
743


+DATA/phydb/datafile/users.261.938174743          4
+DATA/phydb/datafile/example.258.9381747          5


NAME                                          FILE#
---------------------------------------- ----------
41


+DATA/phydb/datafile/andy.270.938634415           6


5.shutdown 备库


SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.


6.备库移动备库的数据文件


注意可能主备同一数据文件的名字不一样 (主库创建时可能有别名,但备库同步过去采用的OMF  可以根据 file# 确认)
ASMCMD> cp +DATA/phydb/datafile/andy.270.938634415 +DATA/phydb/andy
 
7. 将备库启动到mount状态


SQL> startup mount
ORACLE instance started.


Total System Global Area  814227456 bytes
Fixed Size                  2232760 bytes
Variable Size             457182792 bytes
Database Buffers          352321536 bytes
Redo Buffers                2490368 bytes
Database mounted.


8. 备库参数调整
SQL> alter system set STANDBY_FILE_MANAGEMENT=manual; 


SQL> alter database rename file '+DATA/phydb/datafile/andy.270.938634415' to '+DATA/phydb/andy';
Database altered.


SQL> alter system set STANDBY_FILE_MANAGEMENT=auto;
System altered.


SQL> alter database open;


9.在备库启动Redo Apply


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


10. 主备数据检查
SQL> select * from asmandy;


        ID
----------
         1


11. 因为采用的是asm的cp,所以删除旧文件
-- 主库参数 cp 前的多余(原)数据文件
ASMCMD> cd +DATA/devdb/datafile/
ASMCMD> rm -rf andy01.dbf


--备库检查 cp 前的多余数据文件
ASMCMD> pwd
+data/phydb/datafile
ASMCMD> ls
EXAMPLE.258.938174741
SYSAUX.259.938174741
SYSTEM.257.938174739
UNDOTBS1.260.938174743
USERS.261.938174743


说明:很奇怪, cp 前的多余(原)数据文件,已经自动不见了。 我的备库环境是单机asm ,这个现象有待确定,可能跟
 cp +DATA/phydb/datafile/andy.270.938634415 +DATA/phydb/andy   没有 .270.938634415 OMF文件标识有关

猜你喜欢

转载自blog.csdn.net/zhang123456456/article/details/67640985
今日推荐