Uploaded by Jerry X

Oracle+DataGuard方式迁移数据库

advertisement
云和恩墨 成就所托
www.enmotech.com
Oracle DataGuard 数据库迁移方案
(2015/10/16)
云和恩墨(北京)信息技术有限公司
http://www.enmotech.com
技术顾问 章芋文
http://www.enmotech.com
实力成就稳健 技术创造价值
-1-
www.enmotech.com
云和恩墨 成就所托
目
录
1. 报告概述 ......................................................................................................................................................... - 3 2. 迁移步骤 ......................................................................................................................................................... - 3 3. 迁移前期工作 ................................................................................................................................................. - 3 4. 配置 DG .......................................................................................................................................................... - 3 5. 切换 DG .......................................................................................................................................................... - 7 -
http://www.enmotech.com
实力成就稳健 技术创造价值
-2-
云和恩墨 成就所托
www.enmotech.com
1. 报告概述
近期需要将数据库从存储上迁移到本地硬盘上,采用 DG 搭建一套备库,然后将备库切换为主库的方式来
迁移。
2. 迁移步骤
迁移前期环境准备工作、配置 DG 备库、主备切换、应用连接切换后的主库测试、迁移完成。
3. 迁移前期工作
目标端环境准备,包括主机存储网络等环境的准备,安装相同版本的数据库。
原库打开归档。
4. 配置 DG
在生产端数据库服务器和容灾端数据库服务器上配置 ADG,具体步骤包括:
1) 主库检查。例如:
--开归档
archive log list
--开 force logging
select force_logging from v$database;
--alter database force logging;
--查看监听参数
show parameter listener
--查看 name
show parameter name
--查看 password 验证方式
show parameter password
2) 配置主备库 tnsnames.ora,例如:
orcl =
(DESCRIPTION =
http://www.enmotech.com
实力成就稳健 技术创造价值
-3-
云和恩墨 成就所托
www.enmotech.com
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.1.103.13)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.1.103.14)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
oadb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.1.103.12)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oadb)
)
)
3) 配置备库监听:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = standby)
(ORACLE_HOME = /oracle/app/oracle/product/11.2/db_1)
(SID_NAME = standby)
)
)
4) 调整主库参数文件:
SQL> alter system set db_recovery_file_dest='/arch' scope=both;
System altered.
SQL> alter system set log_archive_config='dg_config=(primary,standby)' scope=spfile;
System altered.
http://www.enmotech.com
实力成就稳健 技术创造价值
-4-
云和恩墨 成就所托
www.enmotech.com
SQL>
alter
system
set
LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary' scope=spfile;
System altered.
SQL>
alter
system
set
LOG_ARCHIVE_DEST_2='SERVICE=standby
LGWR
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby' scope=spfile;
ASYNC
System altered.
SQL> alter system set LOG_ARCHIVE_DEST_STATE_1='ENABLE' scope=spfile;
System altered.
SQL> alter system set LOG_ARCHIVE_DEST_STATE_2='ENABLE' scope=spfile;
System altered.
SQL> alter system set standby_file_management='AUTO' scope=spfile;
System altered.
SQL> alter system set fal_client='primary' scope=spfile;
System altered.
参数修改完成以后,备份参数文件
SQL> create pfile='/tmp/pfile.ora' from spfile;
File created.
5) 准备备库密码文件:
#在主库执行
scp orapwpdm standby:/oracle/app/oracle/product/11.2/db_1/dbs
#在备库执行
mv orapwpdm orapwstandby
6) 准备备库参数文件:
*.audit_file_dest='/oracle/app/oracle/admin/standby/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/oradata/PRIMARY/controlfile/o1_mf_8ph6tn64_.ctl','/arch/PRIMARY/controlfile/o
1_mf_8ph6tnp3_.ctl'
*.db_block_size=8192
*.db_create_file_dest='/oradata'
*.db_create_online_log_dest_1=''
http://www.enmotech.com
实力成就稳健 技术创造价值
-5-
云和恩墨 成就所托
www.enmotech.com
*.db_domain=''
*.db_name='primary'
*.db_recovery_file_dest='/arch'
*.db_recovery_file_dest_size=7340032000
*.diagnostic_dest='/oracle/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=primaryXDB)'
*.fal_client='standby'
*.fal_server='primary'
*.log_archive_config='dg_config=(primary,standby)'
*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=standby'
*.log_archive_dest_2='SERVICE=primary
LGWR
ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=primary'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.open_cursors=300
*.pga_aggregate_target=209715200
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=838860800
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.db_unique_name='standby'
*.service_names='standby'
7) 创建 standbylogfile,大小与生产一致,数量为(日志组数量+1)*实例数量:
#在主库执行
alter database
alter database
alter database
alter database
add
add
add
add
standby
standby
standby
standby
logfile
logfile
logfile
logfile
'/oradata/PRIMARY/onlinelog/std01.log'
'/oradata/PRIMARY/onlinelog/std02.log'
'/oradata/PRIMARY/onlinelog/std03.log'
'/oradata/PRIMARY/onlinelog/std04.log'
size
size
size
size
100m;
100m;
100m;
100m;
8) 克隆数据库:
#启动备库到 nomount
SQL>startup nomount
#在主库执行
rman target sys/oracle@primary auxiliary sys/oracle@standby
run {
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate channel prmy3 type disk;
allocate channel prmy4 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby from active database
http://www.enmotech.com
实力成就稳健 技术创造价值
-6-
云和恩墨 成就所托
www.enmotech.com
spfile
parameter_value_convert 'primary','standby'
set db_unique_name='standby'
set log_archive_max_processes='5'
set
control_files='/oradata/PRIMARY/controlfile/o1_mf_8ph6tn64_.ctl','/arch/PRIMARY/controlfile/o1_
mf_8ph6tnp3_.ctl'
set fal_client='standby'
set fal_server='primary'
set standby_file_management='AUTO'
set log_archive_config='dg_config=(primary,stabdby)'
set
log_archive_dest_2='service=primary
ASYNC
valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE)
db_unique_name=primary'
;
}
9) 在备库启用日志同步
alter database recover managed standby database using current logfile disconnect from session;
#确保备库与主库的日志同步完成
SELECT ARCH.THREAD# "Thread", ARCH.SEQUENCE# "Last Sequence Received", APPL.SEQUENCE# "Last
Sequence Applied"
FROM
(SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT
THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH,
(SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN (SELECT
THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL
WHERE
ARCH.THREAD# = APPL.THREAD#
ORDER BY 1;
--确保输出结果里面 Last Sequence Received 和 Last Sequence Applied 完全一致;
5. 切换 DG
(1) 检查备库日志应用和主库保持一致:
Tue Oct 30 19:06:24 CST 2012
Media Recovery Log /u2/fra/RT/archivelog/arc_1_670629641_90481.dbf
Media Recovery Waiting for thread 1 sequence 90482
Tue Oct 30 19:06:34 CST 2012
Redo Shipping Client Connected as PUBLIC
-- Connected User is Valid
RFS[4]: Assigned to RFS process 2050
RFS[4]: Identified database type as 'physical standby'
Tue Oct 30 19:06:44 CST 2012
Redo Shipping Client Connected as PUBLIC
http://www.enmotech.com
实力成就稳健 技术创造价值
-7-
云和恩墨 成就所托
www.enmotech.com
-- Connected User is Valid
RFS[5]: Assigned to RFS process 2052
RFS[5]: Identified database type as 'physical standby'
RFS[5]: Successfully opened standby log 5: '/ora1/RT/stdredo05a.log'
Tue Oct 30 19:06:49 CST 2012
Media Recovery Log /u2/fra/RT/archivelog/arc_1_670629641_90482.dbf
Media Recovery Waiting for thread 1 sequence 90483
(2) 检查主库状态:
SQL> select DATABASE_ROLE, PROTECTION_MODE, SWITCHOVER_STATUS, FLASHBACK_ON from v$database;
DATABASE_ROLE
PROTECTION_MODE
SWITCHOVER_STATUS
FLASHBACK_ON
---------------- -------------------- -------------------- -----------------PRIMARY
MAXIMUM PERFORMANCE SESSIONS ACTIVE
NO
(3) 切换主库为备库:
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
Database altered.
(4) 检查备库是否可以切换为主库:
SQL> select DATABASE_ROLE, PROTECTION_MODE, SWITCHOVER_STATUS, FLASHBACK_ON from v$database;
DATABASE_ROLE
PROTECTION_MODE
SWITCHOVER_STATUS
FLASHBACK_ON
---------------- -------------------- -------------------- -----------------PHYSICAL STANDBY MAXIMUM PERFORMANCE TO PRIMARY
NO
(5) 切换备库为主库:
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
Database altered.
SQL> select open_mode from V$database;
OPEN_MODE
---------MOUNTED
SQL> alter database open;
Database altered.
SQL> select open_mode from V$database;
OPEN_MODE
---------READ WRITE
http://www.enmotech.com
实力成就稳健 技术创造价值
-8-
Download