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. 迁移完成后要立即进行一次全备份
Oracle 10g RMAN 跨平台迁移
最新推荐文章于 2024-04-14 19:38:57 发布