TB级别库迁移操作

一、场景
因一套RAC库的机器需要更换机房,必须在原先机房保留一套与之一样的数据库,以便应用不断的情形做机器的搬迁:
1)、应用暂停为零最好,这种情形用goldengate做,可以做到零停机,成本太高;
2)、利用rman+dg来做,应用暂停时间大约在切应用和apply最后一批日志,因为是TB级库,如果顺利,控制在30分钟-50分钟左右;否则启用第二套方案,这里不作说明。

二、原理
采用10g RMAN duplicate方式将primary最近的备份集clone成auxiliary机器配的"standby"库,在clone完成到应用切这段时间做apply归档日志应用
注意事项:
a、standby库是理论上的备库,不是真正dg的备库;
b、primary库不自动同步日志,需要定期手工apply日志到备库上;
c、做完备库之后,应用一条最近的归档日志,open read only数据;
d、没有将停完应用的最后一批日志apply到standby库里,一定不能切换role,否则一定会丢数据;
e、停应用之后primary库的oracle网络及实例都掐断,防止有人连接;
f、切完standby为primary后,修改参数文件,去了相关参数,正常关闭启动数据,验证库有没有问题

三、primary及standby配置
1)、primary机器配置
a、双节点10.2.0.5.0版本的RAC
b、存储文件系统:ASM,47块盘做磁盘阵列
c、存储大小:大约8TB
d、数据量:3.2TB
e、最近一次备份集大小:350GB
f、无效对象:无
g、无效索引:3条,历史表,与实际生产数据没有关系
h、每周归档大约为1TB以上:归档采用压缩方式
i、redhat 5.5 x86_64
j、内存32GB,8cpu
2)、standby机器配置:
a、单实例10.2.0.5.0数据
b、存储文件系统:本地存储,30多块盘做磁盘阵列
c、存储大小:大约8.5TB
d、最近一次备份集大小:350GB
e、redhat 5.8 x86_64
f、内存194GB,8cpu

四、standby端配置
注:主库无需变动,因为不是真正上的dg,只要求做个physical standby库,手工同步日志
1)、配置密码及参数文件
create pfile='/tmp/initgpsdb.ora' from spfile;
orapwd file=orapwgpsdb password=zm_321Tl;
将产生的文件放置
/u01/app/oracle/product/10.2.0/db_1/dbs下
[oracle@gpsdb dbs]$ ll
-rw-r--r-- 1 oracle oinstall    12920 May  3  2001 initdw.ora
-rw-r--r-- 1 oracle oinstall     1179 Jun  4 10:03 initgpsdb.ora
-rw-r----- 1 oracle oinstall     8385 Sep 11  1998 init.ora
-rw-r----- 1 oracle oinstall     1536 May 26 15:32 orapwgpsdb

参数文件配置
[oracle@gpsdb dbs]$ more initgpsdb.ora
gpsdb.__db_cache_size=13824425984
gpsdb.__java_pool_size=33554432
gpsdb.__large_pool_size=16777216
gpsdb.__shared_pool_size=7516192768
gpsdb.__streams_pool_size=33554432
gpsdb._kghdsidx_count=3
*.audit_file_dest='/u01/app/oracle/admin/gpsdb/adump'
*.background_dump_dest='/u01/app/oracle/admin/gpsdb/bdump'
*.compatible='10.2.0.5.0'
*.control_files='/oradata/gpsdb/control1.ctl','/oradata/gpsdb/control2.ctl'
*.core_dump_dest='/u01/app/oracle/admin/gpsdb/cdump'
*.db_block_size=8192
*.db_cache_size=12884901888
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='gpsdb'
*.db_recovery_file_dest='/oradata/archivelog_dest'
*.db_recovery_file_dest_size=1152642973696
*.dispatchers='(PROTOCOL=TCP) (SERVICE=gpsdbXDB)'
*.java_pool_size=25165824
*.job_queue_processes=10
*.large_pool_size=10485760
*.log_archive_format='%t_%s_%r.arc'
*.open_cursors=300
*.pga_aggregate_target=8589934592
*.processes=500
*.remote_login_passwordfile='exclusive'
*.sessions=555
*.sga_max_size=22296920064
*.sga_target=22296920064
*.shared_pool_size=7516192768
*.streams_pool_size=33554432
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/gpsdb/udump'
*.LOG_ARCHIVE_DEST_1= 'LOCATION=/oradata/archivelog_dest  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB
_UNIQUE_NAME=gpsdb'
*.LOG_ARCHIVE_DEST_2= 'SERVICE=gpsdb_net LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_
UNIQUE_NAME=gpsdb'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.LOG_ARCHIVE_MAX_PROCESSES=30
*.db_file_name_convert='+DATADG/gpsdb','/oradata/gpsdb','+FLASHAREA_DG/gpsdb','/oradata/gpsdb_fl
asharea_dg'
*.log_file_name_convert='+DATADG/gpsdb','/oradata/gpsdb'
*.FAL_SERVER=gpsdb_net
*.FAL_CLIENT=gpsdb
*.STANDBY_FILE_MANAGEMENT=AUTO

2)、目录
[oracle@gpsdb gpsdb]$ pwd
/u01/app/oracle/admin/gpsdb
[oracle@gpsdb gpsdb]$ ll
total 24
drwxr-x--- 2 oracle oinstall 4096 May 20 12:36 adump
drwxr-x--- 2 oracle oinstall 4096 May 20 12:41 bdump
drwxr-x--- 2 oracle oinstall 4096 May 13 12:26 cdump
drwxr-x--- 2 oracle oinstall 4096 May 13 12:27 dpdump
drwxr-x--- 2 oracle oinstall 4096 May 20 13:43 pfile
drwxr-x--- 2 oracle oinstall 4096 May 20 12:36 udump

3)、网络配置:
tnsnames.ora
##连接primary库
gpsdb_p =
  (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.118.51)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.118.52)(PORT = 1521))
      (LOAD_BALANCE = yes)
    (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = gpsdb.trsen.zhang.com)
    )
  )
##连接stanby库
gpsdb_s =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.19.88)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = gpsdb)
     )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

listener.ora
##配置静态监听和动态监听
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME=gpsdb)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (SID_NAME = gpsdb)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = gpsdb)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

/etc/hosts配置
[oracle@gpsdb admin]$ more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
10.1.19.88     gpsdb

查看监听配置是否成功
[oracle@gpsdb admin]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 04-JUN-2014 14:57:53
Copyright (c) 1991, 2010, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=gpsdb)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Start Date                26-MAY-2014 15:09:25
Uptime                    8 days 23 hr. 48 min. 27 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=gpsdb)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "gpsdb" has 2 instance(s).
  Instance "gpsdb", status UNKNOWN, has 1 handler(s) for this service...
  Instance "gpsdb", status READY, has 1 handler(s) for this service...
Service "gpsdbXDB" has 1 instance(s).
  Instance "gpsdb", status READY, has 1 handler(s) for this service...
Service "gpsdb_XPT" has 1 instance(s).
  Instance "gpsdb", status READY, has 1 handler(s) for this service...
The command completed successfully

测试rman duplicate连接
[oracle@gpsdb admin]$rman target sys/zm_321Tl@gpsdb_p AUXILIARY sys/zm_321Tl@gpsdb_s
Recovery Manager: Release 10.2.0.5.0 - Production on Fri May 30 22:29:33 2014
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
connected to target database: GPSDB (DBID=201808262)
connected to auxiliary database: GPSDB (not mounted)
RMAN>

五、做standby数据库
1)、脚本
[oracle@gpsdb ~]$ more duplicate.sh
#!/bin/bash

. /etc/profile
. ~/.bash_profile
date
rman target sys/zm_321Tl@gpsdb_p AUXILIARY sys/zm_321Tl@gpsdb_s <<EOF
run
{
allocate auxiliary channel aux1 device type disk;
allocate auxiliary channel aux2 device type disk;
allocate auxiliary channel aux3 device type disk;
DUPLICATE TARGET DATABASE FOR STANDBY;
}
EOF
date

2)、duplicate日志,整个过程花费将近7小时
[oracle@gpsdb ~]$ more duplicate.log
Fri May 30 22:29:33 CST 2014

Recovery Manager: Release 10.2.0.5.0 - Production on Fri May 30 22:29:33 2014

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: GPSDB (DBID=201808262)
connected to auxiliary database: GPSDB (not mounted)

RMAN> 2> 3> 4> 5> 6> 7>
using target database control file instead of recovery catalog
allocated channel: aux1
channel aux1: sid=536 devtype=DISK

allocated channel: aux2
channel aux2: sid=535 devtype=DISK

allocated channel: aux3
channel aux3: sid=534 devtype=DISK

Starting Duplicate Db at 30-MAY-14

contents of Memory Script:
{
   restore clone standby controlfile;
   sql clone 'alter database mount standby database';
}
executing Memory Script

Starting restore at 30-MAY-14

channel aux1: restoring control file
channel aux1: copied control file copy
input filename=/tmp/ctl
output filename=/oradata/gpsdb/control1.ctl
output filename=/oradata/gpsdb/control2.ctl
Finished restore at 30-MAY-14

sql statement: alter database mount standby database

contents of Memory Script:
{
   set newname for tempfile  1 to
 "/oradata/gpsdb/temp01.dbf";
   set newname for tempfile  2 to
 "/oradata/gpsdb/gps_temp_01.dbf";
   set newname for tempfile  3 to
 "/oradata/gpsdb/gps_temp_02.dbf";
   switch clone tempfile all;
   set newname for datafile  1 to
 "/oradata/gpsdb/system01.dbf";
   set newname for datafile  2 to
 "/oradata/gpsdb/undotbs01.dbf";
   set newname for datafile  3 to
 "/oradata/gpsdb/sysaux01.dbf";
   set newname for datafile  4 to
 "/oradata/gpsdb/users01.dbf";
   set newname for datafile  5 to
 "/oradata/gpsdb/undotbs02.dbf";
   set newname for datafile  6 to
 "/oradata/gpsdb/wzt_tbs_01.dbf";
   set newname for datafile  7 to
 "/oradata/gpsdb/wzt_tbs_02.dbf";
   set newname for datafile  8 to
 "/oradata/gpsdb/wzt_tbs_03.dbf";
   set newname for datafile  9 to
 "/oradata/gpsdb/wzt_tbs_04.dbf";
   set newname for datafile  10 to
 "/oradata/gpsdb/wzt_tbs_05.dbf";
   set newname for datafile  11 to
 "/oradata/gpsdb/splex_tbs_01.dbf";
   set newname for datafile  12 to
 "/oradata/gpsdb/wzt_tbs_06.dbf";
   set newname for datafile  13 to
 "/oradata/gpsdb/wzt_tbs_07.dbf";
   set newname for datafile  14 to
 "/oradata/gpsdb/wzt_tbs_08.dbf";
   set newname for datafile  15 to
 "/oradata/gpsdb/wzt_tbs_09.dbf";
   set newname for datafile  16 to
 "/oradata/gpsdb/wzt_tbs_10.dbf";
   set newname for datafile  17 to
 "/oradata/gpsdb/dbf_130501.dbf";
   set newname for datafile  18 to
 "/oradata/gpsdb/dbf_130502.dbf";
   set newname for datafile  19 to
 "/oradata/gpsdb/dbf_130503.dbf";
   set newname for datafile  20 to
 "/oradata/gpsdb/wzt_tbs_11.dbf";
   set newname for datafile  21 to
 "/oradata/gpsdb/wzt_tbs_12.dbf";
   set newname for datafile  22 to
 "/oradata/gpsdb/wzt_tbs_13.dbf";
   set newname for datafile  23 to
 "/oradata/gpsdb/wzt_tbs_14.dbf";
   set newname for datafile  24 to
 "/oradata/gpsdb/wzt_tbs_15.dbf";
   set newname for datafile  25 to
 "/oradata/gpsdb/wzt_tbs_16.dbf";
   set newname for datafile  26 to
 "/oradata/gpsdb/wzt_tbs_17.dbf";
   set newname for datafile  27 to
 "/oradata/gpsdb/wzt_tbs_18.dbf";
   set newname for datafile  28 to
 "/oradata/gpsdb/wzt_tbs_19.dbf";
   set newname for datafile  29 to
 "/oradata/gpsdb/wzt_tbs_20.dbf";
   set newname for datafile  30 to
 "/oradata/gpsdb/idx_trenzhangmot_01.dbf";
   set newname for datafile  31 to
 "/oradata/gpsdb/idx_trenzhangmot_02.dbf";
   set newname for datafile  32 to
 "/oradata/gpsdb/idx_trenzhangmot_03.dbf";
   set newname for datafile  33 to
 "/oradata/gpsdb/idx_trenzhangmot_04.dbf";
   set newname for datafile  34 to
 "/oradata/gpsdb/idx_trenzhangmot_05.dbf";
   set newname for datafile  35 to
 "/oradata/gpsdb/idx_trenzhangmot_06.dbf";
   set newname for datafile  36 to
 "/oradata/gpsdb/idx_trenzhangmot_07.dbf";
   set newname for datafile  37 to
 "/oradata/gpsdb/idx_trenzhangmot_08.dbf";
   set newname for datafile  38 to
 "/oradata/gpsdb/idx_trenzhangmot_09.dbf";
   set newname for datafile  39 to
 "/oradata/gpsdb/idx_trenzhangmot_10.dbf";
   set newname for datafile  40 to
 "/oradata/gpsdb/dbf_06_1.dbf";
   set newname for datafile  41 to
 "/oradata/gpsdb/dbf_06_2.dbf";
   set newname for datafile  42 to
 "/oradata/gpsdb/dbf_06_3.dbf";
   set newname for datafile  43 to
 "/oradata/gpsdb/dbf_07_1.dbf";
   set newname for datafile  44 to
 "/oradata/gpsdb/dbf_07_2.dbf";
   set newname for datafile  45 to
 "/oradata/gpsdb/dbf_07_3.dbf";
   set newname for datafile  46 to
 "/oradata/gpsdb/wzt_tbs_21.dbf";
   set newname for datafile  47 to
 "/oradata/gpsdb/wzt_tbs_22.dbf";
   set newname for datafile  48 to
 "/oradata/gpsdb/wzt_tbs_23.dbf";
   set newname for datafile  49 to
 "/oradata/gpsdb/wzt_tbs_24.dbf";
   set newname for datafile  50 to
 "/oradata/gpsdb/wzt_tbs_25.dbf";
   set newname for datafile  51 to
 "/oradata/gpsdb/dbf_08_1.dbf";
   set newname for datafile  52 to
 "/oradata/gpsdb/dbf_08_2.dbf";
   set newname for datafile  53 to
 "/oradata/gpsdb/dbf_08_3.dbf";
   set newname for datafile  54 to
 "/oradata/gpsdb_flasharea_dg/dbf_08_2.dbf";
   set newname for datafile  55 to
 "/oradata/gpsdb_flasharea_dg/wzt_tbs_26.dbf";
   set newname for datafile  56 to
 "/oradata/gpsdb/dbf_06_1b.dbf";
   set newname for datafile  57 to
 "/oradata/gpsdb/dbf_06_2b.dbf";
   set newname for datafile  58 to
 "/oradata/gpsdb/dbf_06_3b.dbf";
   set newname for datafile  59 to
 "/oradata/gpsdb/dbf_07_1b.dbf";
   set newname for datafile  60 to
 "/oradata/gpsdb/dbf_07_2b.dbf";
   set newname for datafile  61 to
 "/oradata/gpsdb/dbf_07_3b.dbf";
   set newname for datafile  62 to
 "/oradata/gpsdb/dbf_08_1b.dbf";
   set newname for datafile  63 to
 "/oradata/gpsdb/dbf_08_2b.dbf";
   set newname for datafile  64 to
 "/oradata/gpsdb/dbf_08_3b.dbf";
   set newname for datafile  65 to
 "/oradata/gpsdb/wzt_tbs_26.dbf";
   set newname for datafile  66 to
 "/oradata/gpsdb/undotbs03.dbf";
   set newname for datafile  67 to
 "/oradata/gpsdb/undotbs04.dbf";
   set newname for datafile  68 to
 "/oradata/gpsdb/undotbs05.dbf";
   set newname for datafile  69 to
 "/oradata/gpsdb/undotbs06.dbf";
   set newname for datafile  70 to
 "/oradata/gpsdb/undotbs07.dbf";
   set newname for datafile  71 to
 "/oradata/gpsdb/undotbs08.dbf";
   set newname for datafile  72 to
 "/oradata/gpsdb/dbf_09_1.dbf";
   set newname for datafile  73 to
 "/oradata/gpsdb/dbf_09_2.dbf";
   set newname for datafile  74 to
 "/oradata/gpsdb/dbf_09_3.dbf";
   set newname for datafile  75 to
 "/oradata/gpsdb/dbf_10_1.dbf";
   set newname for datafile  76 to
 "/oradata/gpsdb/dbf_10_2.dbf";
   set newname for datafile  77 to
 "/oradata/gpsdb/dbf_10_3.dbf";
   set newname for datafile  78 to
 "/oradata/gpsdb/dbf_11_1.dbf";
   set newname for datafile  79 to
 "/oradata/gpsdb/dbf_11_2.dbf";
   set newname for datafile  80 to
 "/oradata/gpsdb/dbf_11_3.dbf";
   set newname for datafile  81 to
 "/oradata/gpsdb/dbf_12_1.dbf";
   set newname for datafile  82 to
 "/oradata/gpsdb/dbf_12_2.dbf";
   set newname for datafile  83 to
 "/oradata/gpsdb/dbf_12_3.dbf";
   set newname for datafile  84 to
 "/oradata/gpsdb/dbf_09_1_01.dbf";
   set newname for datafile  85 to
 "/oradata/gpsdb/wzt_tbs_27.dbf";
   set newname for datafile  86 to
 "/oradata/gpsdb/wzt_tbs_28.dbf";
   set newname for datafi
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值