RMAN异构平台迁移 1.实验环境简介 1.1 SOA生产系统 数据库名 comSOA 实例名 Comsoa DBID 4133565260 数据库版本 Windows 32bit 10.2.R2 数据文件目录 E:\ORASOA\ORADATA\COMSOA\ Pfile Initcomsoa.ora 1.2 待恢SOA系统 数据库名 comSOA 实例名 Comsoa DBID 4133565260 数据库版本 Linux 64it 10.2R2 数据文件目录 /U01/ORADATA/COMSOA/ Pfile Initcomsoa.ora 2 备份 2.1 备份注意事项 1. 迁移库只能在同字节顺序平台之间(即ENDIAN_FORMAT相同)且得是ORACLE所支持的平台,可以在V$TRANSPORTABLE_PLATFORM中查看。 2. 传输前需要将源库置为只读。 3. 生成的2个脚本文件要仔细根据需要修改。 2.2 源库操作 2.2.1 将库只读,并检查是否支持迁移 一.将库只读,并检查是否支持迁移 SQL> startup mount SQL> alter database open read only; 2.2.2 检查支持迁移平台 SQL> select * from v$transportable_platform; PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT ----------- -------------------------------- -------------- 2 Solaris[tm] OE (64-bit) Big 7 Microsoft Windows IA (32-bit) Little 10 Linux IA (32-bit) Little 6 AIX-Based Systems (64-bit) Big 4 HP-UX IA (64-bit) Big 11 Linux IA (64-bit) Little 15 HP Open VMS Little 8 Microsoft Windows IA (64-bit) Little 17 rows selected. 2.2.3 利用dbms_tdb 包检查数据库 二.利用dbms_tdb 包检查数据库能否被传输以及列出外部表和DIRECTORY 等无法传输的对象信息,分别在windows平台数据库通过SQLPLUS执行以下两个存储过程 SQL> set serveroutput on SQL> declare 2 db_ready boolean; 3 begin 4 /* db_ready is ignored, but with SERVEROUTPUT set to ON any 5 * conditions preventing transport will be output to console */ 6 db_ready := dbms_tdb.check_db('Microsoft Windows IA (32-bit)', 7 dbms_tdb.skip_none); 8 end; 9 / PL/SQL procedure successfully completed. SQL> declare 2 external boolean; 3 begin 4 /* value of external is ignored, but with SERVEROUTPUT set to ON 5 * dbms_tdb.check_external displays report of external objects 6 * on console */ 7 external := dbms_tdb.check_external; 8 end; 9 / PL/SQL procedure successfully completed. 2.2.4 RMAN ConvertDB 连接target database 查看数据库打开模式 C:\ Administrator > set oracle_sid=comsoa C:\ Administrator > sqlplus / as sysdba SQL> select open_mode from v$database; OPEN_MODE ---------- READ ONLY 利用RMAN convertDB 转化数据库 C:\ Administrator > rman target / RMAN> convert database new database 'comsoa' 2> transport script 'f:\transdb.sql' 3> to platform 'Linux IA (64-bit)' 4> db_file_name_convert 'e:\orasoa\oradata\comsoa\','f:\trans_dir\'; 注: 'f:\transdb.sql':数据库转化脚本生产位置 'Linux IA (64-bit)':被转化的平台 e:\orasoa\oradata\comsoa\:源数据库数据文件位置 'f:\trans_dir\':转化后生成新的数据文件位置 启动 convert 于 08-12月-11 使用目标数据库控制文件替代恢复目录 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=318 devtype=DISK 在数据库中找到目录 SYS.WORK_DIR 在数据库中找到目录 SYS.ADMIN_DIR 在数据库中找到目录 SYS.DATA_PUMP_DIR ……… ………. ……….. 通道 ORA_DISK_1: 数据文件转换完毕, 经过时间: 00:00:01 在目标平台上运行 SQL 脚本 F:\TRANSDB.SQL 以创建数据库 编辑 init.ora 文件 E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INIT_00MTMNQN_1_0.ORA。 此 PFILE 将用于在目标平台上创建数据库据 要重新编译所有 PL/SQL 模块, 请在目标平台上运行 utlirp.sql 和 utlrp.sql 要更改内部数据库标识符, 请使用 DBNEWID 实用程序 完成 backup 于 03-12月-11 2.2.5 修改pfile参数文件 修改在E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INIT_00MTMNQN_1_0.ORA 生成的参数文件并重新命名为initcomsoa.ora # Please change the values of the following parameters: control_files = "/u01/app/oracle/oradata/comsoa/control01.ctl", "/u01/app/oracle/oradata/comsoa/control02.ctl", "/u01/app/oracle/oradata/comsoa/control03.ctl" db_recovery_file_dest = "/u01/app/oracle/flash_recovery_area" db_recovery_file_dest_size= 2147483648 audit_file_dest = "/u01/app/oracle/comsoa/admin/adump" background_dump_dest = "/u01/app/oracle/comsoa/admin/bdump" user_dump_dest = "/u01/app/oracle/comsoa/admin/udump" core_dump_dest = "/u01/app/oracle/comsoa/admin/cdump" db_name = "COMSOA" # Please review the values of the following parameters: __shared_pool_size = 100663296 __large_pool_size = 4194304 __java_pool_size = 4194304 __streams_pool_size = 0 __db_cache_size = 205520896 remote_login_passwordfile= "EXCLUSIVE" db_domain = "" dispatchers = "(PROTOCOL=TCP) (SERVICE=COMSOAXDB)" # The values of the following parameters are from source database: processes = 300 sessions = 335 sga_max_size = 318767104 nls_language = "SIMPLIFIED CHINESE" nls_territory = "CHINA" sga_target = 318767104 db_block_size = 8192 compatible = "10.2.0.1.0" # log_archive_dest_1 = "location=/u01/orasoa/archive/comsoa" db_file_multiblock_read_count= 16 undo_management = "AUTO" undo_tablespace = "UNDOTBS1" job_queue_processes = 10 open_cursors = 300 pga_aggregate_target = 336870912 2.2.6 重建控制文件脚本TRANSDB.SQL 根据linux主机路径修改相应的数据文件目录 -- The following commands will create a new control file and use it -- to open the database. STARTUP NOMOUNT PFILE='/u01/app/oracle/product/10.2.0/db_1/dbs/initcomsoa.ora' CREATE CONTROLFILE REUSE SET DATABASE "COMSOA" RESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 '/u01/app/oracle/oradata/comsoa/redo01.log' SIZE 50M, GROUP 2 '/u01/app/oracle/oradata/comsoa/redo02.log' SIZE 50M, GROUP 3 '/u01/app/oracle/oradata/comsoa/redo03.log' SIZE 50M DATAFILE '/u01/app/oracle/oradata/comsoa/SYSTEM01.DBF', '/u01/app/oracle/oradata/comsoa/UNDOTBS01.DBF', '/u01/app/oracle/oradata/comsoa/SYSAUX01.DBF', '/u01/app/oracle/oradata/comsoa/USERS01.DBF', '/u01/app/oracle/oradata/comsoa/TBS_IDX_COMSOA.ORA', '/u01/app/oracle/oradata/comsoa/TBS_IDX_DXPT.ORA', '/u01/app/oracle/oradata/comsoa/TBS_IDX_KB.ORA', '/u01/app/oracle/oradata/comsoa/TBS_IDX_WORKFLOW.ORA', '/u01/app/oracle/oradata/comsoa/TBS_KB.ORA', '/u01/app/oracle/oradata/comsoa/TBS_WORKFLOW.ORA', '/u01/app/oracle/oradata/comsoa/WORKFLOW_MAIN_1.ORA', '/u01/app/oracle/oradata/comsoa/TBS_COMSOA.ORA', '/u01/app/oracle/oradata/comsoa/TBS_DXPT.ORA', '/u01/app/oracle/oradata/comsoa/WORKFLOW_MAIN.ORA' CHARACTER SET ZHS16GBK ; -- Database can now be opened zeroing the online logs. ALTER DATABASE OPEN RESETLOGS; -- Commands to add tempfiles to temporary tablespaces. -- Online tempfiles have complete space information. -- Other tempfiles may require adjustment. ALTER TABLESPACE TBS_TMP_DXPT ADD TEMPFILE '/u01/app/oracle/oradata/comsoa/TS-TBS_TMP_DXPT.dbf' SIZE 52428800 AUTOEXTEND OFF; ALTER TABLESPACE TBS_TMP_COMSOA ADD TEMPFILE '/u01/app/oracle/oradata/comsoa/TS-TBS_TMP_COMSOA.dbf' SIZE 52428800 AUTOEXTEND OFF; ALTER TABLESPACE TEMP01 ADD TEMPFILE '/u01/app/oracle/oradata/comsoa/TS-TEMP01.dbf' SIZE 52428800 AUTOEXTEND OFF; -- End of tempfile additions. -- set echo off prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ prompt * Your database has been created successfully! prompt * There are many things to think about for the new database. Here prompt * is a checklist to help you stay on track: prompt * 1. You may want to redefine the location of the directory objects. prompt * 2. You may want to change the internal database identifier (DBID) prompt * or the global database name for this database. Use the prompt * NEWDBID Utility (nid). prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHUTDOWN IMMEDIATE STARTUP UPGRADE PFILE='/u01/app/oracle/product/10.2.0/db_1/dbs/initcomsoa.ora' @@ /u01/app/oracle/product/10.2.0/db_1/rdbms/admin/utlirp.sql SHUTDOWN IMMEDIATE STARTUP PFILE='/u01/app/oracle/product/10.2.0/db_1/dbs/initcomsoa.ora' -- The following step will recompile all PL/SQL modules. -- It may take serveral hours to complete. @@ /u01/app/oracle/product/10.2.0/db_1/rdbms/admin/utlrp.sql set feedback 6; 注:在此文件中注意Linux目标数据库的路径要保证正确,目录属主权限要正确 2.3 Linux平台主机操作 2.3.1 安装oracle数据库软件,建立相关文件夹 安装好oracle后根据pfile文件内容来创建相关的目录 $mkdir –p /u01/app/oracle/comsoa/admin/adump $mkdir –p /u01/app/oracle/comsoa/admin/bdump $mkdir –p /u01/app/oracle/comsoa/admin/cdump $mkdir –p /u01/app/oracle/comsoa/admin/udump $mkdir –p /u01/app/oracle/flash_recovery_area $mkdir –p /u01/orasoa/archive/comsoa $mkdir –p /u01/app/oracle/oradata/comsoa/ 2.3.2 迁移转化 将在windows环境中生成的文件拷贝到linux主机下包括以下文件 1. f:\trans_dir\目录下的转化后的所有数据文件,还有幻化脚本TRANSDB.SQL拷贝到/u01/app/oracle/oradata/comsoa/目录下, 2. 将修改后的initcomsoa.ora拷贝到/u01/app/oracle/product/10.2.0/db_1/dbs/目录下 2.3.3 创建实例comsoa 执行转化脚本 $cd /u01/app/oracle/oradata/comsoa [oracle@SOA comsoa]$export ORACLE_SID=comsoa [oracle@SOA comsoa]$ sqlplus / as sysdba SQL > @TRANSDB.SQL SQL脚本执行完成后提示以下信息 SQL> Rem ========================================================= SQL> Rem Run component validation procedure SQL> Rem ========================================================== SQL> SET serveroutput on SQL> EXECUTE dbms_registry_sys.validate_components; PL/SQL procedure successfully completed. SQL> set feedback 6; SQL>@utlip.sql 编译无效PLSQL过程 SQL> Rem ================================================= SQL> Rem END utlip.sql SQL> Rem ================================================= 2.4 数据库验证 查看数据库名称 SQL> select name from v$database; NAME --------- COMSOA 查询数据库实例 SQL> select status from v$instance; STATUS ------------ OPEN 查询数据库打开模式 SQL> select open_mode from v$database; OPEN_MODE ---------- READ WRITE 数据库用户登陆验证 SQL> select username from dba_users; USERNAME ------------------------------ DXPT KB WORKFLOW WORKFLOW_YWZY LTWG MONITOR …….. …….. DBSNMP 27 rows selected. 登陆验证 SQL> conn kb/******* Connected. KB用户在经过windows环境迁移Linux主机后可以正常登陆 表空间验证,查询迁移后的表空间 SQL> select tablespace_name,file_id from dba_data_files; TABLESPACE_NAME FILE_ID ------------------------------ ---------- WORKFLOW_MAIN 14 WORKFLOW_MAIN 13 TBS_WORKFLOW 12 TBS_KB 11 TBS_IDX_WORKFLOW 10 TBS_IDX_KB 9 TBS_IDX_DXPT 8 TBS_IDX_COMSOA 7 TBS_DXPT 6 TBS_COMSOA 5 USERS 4 SYSAUX 3 UNDOTBS1 2 SYSTEM 1 14 rows selected. 插入数据验证 SQL> create table test (i int); Table created. SQL> insert into test values (1); 1 row created. SQL> select * from test; I ---------- 1 切换日志测试 SQL> alter system switch logfile; System altered. 2.5 迁移注意事项 1. 确保源库与目标数据库的字符集一致 2. 数据库32bit迁移到64位后要把无效的数据库对象重新编译,确保正确执行utlrp.sql,utlirp.sql 3. 数据库迁移后,确保应用系统用户可以正确连接,登陆有效 4. 监听要重新配置,检查临时表空间的属主与可用性 5. 迁移完成后要立即进行一次全备份
转载于:https://blog.51cto.com/evils798/1420911