首页 > Linux操作系统 > Linux操作系统 > 跨平台迁移oracle数据库指南
Oracle 10g开始提供了强大的数据库跨平台迁移功能,可以对不同体系架构,不同操作系统间的oracle数据库进行迁移!但endianess必须要相同,11g开始不同的endianess之间也可以进行相互迁移!下面演示下将windows 32位上的oracle数据库迁移到rhel6 64位上。
一:准备windows环境
这里采取32位winxp系统,如果之前安装过oracle服务器或者客户端需要卸载干净(清注册表),否则安装会报错,oracle版本为10.2.0.1
- SQL> select * from v$transportable_platform;
- PLATF PLATFORM_NAME ENDIAN_FORMAT
- ----- ---------------------------------------- --------------
- 1 Solaris[tm] OE (32-bit) Big
- 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
- 3 HP-UX (64-bit) Big
- 5 HP Tru64 UNIX Little
- 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
- 9 IBM zSeries Based Linux Big
- 13 Linux 64-bit for AMD Little
- 16 Apple Mac OS Big
- 12 Microsoft Windows 64-bit for AMD Little
- 17 Solaris Operating System (x86) Little
- 18 IBM Power Based Linux Big
- 17 rows selected
1.1 新建一个自定义的表空间,并在表空间上建表,插数据
- SQL> create tablespace win_migrate
- 2 datafile 'E:\oracle\product\10.2.0\oradata\winorcl\win_migrate01.dbf'
- 3 size 10M;
- 表空间已创建。
- SQL> create table t_migrate (a number) tablespace win_migrate;
- 表已创建。
- SQL> insert into t_migrate values (1);
- 已创建 1 行。
- SQL> commit;
- 提交完成
1.2 在源服务器上将数据库变成自读模式并使用rman转换副本
- SQL> shutdown immediate
- 数据库已经关闭。
- 已经卸载数据库。
- ORACLE 例程已经关闭。
- SQL> startup mount
- ORACLE 例程已经启动。
- Total System Global Area 612368384 bytes
- Fixed Size 1292036 bytes
- Variable Size 188745980 bytes
- Database Buffers 415236096 bytes
- Redo Buffers 7094272 bytes
- 数据库装载完毕。
- SQL> alter database open read only;
- 数据库已更改。
- C:\Users\Naruto>rman target /
- 恢复管理器: Release 10.2.0.3.0 - Production on 星期日 7月 17 19:57:49 2011
- Copyright (c) 1982, 2005, Oracle. All rights reserved.
- 连接到目标数据库: WINORCL (DBID=1904834971)
- RMAN> convert database to platform 'Linux 64-bit for AMD' format 'e:\data\%U';
- 启动 convert 于 17-7月 -11
- 使用目标数据库控制文件替代恢复目录
- 分配的通道: ORA_DISK_1
- 通道 ORA_DISK_1: sid=147 devtype=DISK
- 在数据库中找到外部表 SH.SALES_TRANSACTIONS_EXT
- 在数据库中找到目录 SYS.SUBDIR
- 在数据库中找到目录 SYS.XMLDIR
- 在数据库中找到目录 SYS.MEDIA_DIR
- 在数据库中找到目录 SYS.LOG_FILE_DIR
- 在数据库中找到目录 SYS.DATA_FILE_DIR
- 在数据库中找到目录 SYS.WORK_DIR
- 在数据库中找到目录 SYS.ADMIN_DIR
- 在数据库中找到目录 SYS.DATA_PUMP_DIR
- 在数据库中找到 BFILE PM.PRINT_MEDIA
- 在口令文件中找到用户 SYS (具有 SYSDBA and SYSOPER 权限)
- 通道 ORA_DISK_1: 启动数据文件转换
- 输入数据文件 fno=00001 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\WINORCL\SYSTEM01.DBF
- ——————————其他输出省略————————————
二:将e:\data目录下的所有文件和控制文件的跟踪脚本复制到linux服务器上,可以使用winscp和ftp等工具,这里直接采用samba共享
- SQL> select p.spid from v$session s ,v$process p
- 2 where p.addr=s.paddr
- 3 and s.username='SYS' and s.program like '%rman%';
- SPID
- ------------
- 476
- 3488
- 4056
三.在linux服务器上准备相应的目录,并将上传的文件移动到相关的目录,修改控制文件脚本和初始化参数文件
- [root@rhel6 ~]# mount -t cifs -o username=yang //192.168.50.195/data /mnt
- Password:
- [root@rhel6 ~]# ls /mnt
- DATA_D-WINORCL_I-1904915064_TS-EXAMPLE_FNO-5_03MHMQUN DATA_D-WINORCL_I-1904915064_TS-UNDOTBS1_FNO-2_04MHMQUU INIT_00MHMQTE_1_0.ORA
- DATA_D-WINORCL_I-1904915064_TS-SYSAUX_FNO-3_02MHMQU8 DATA_D-WINORCL_I-1904915064_TS-USERS_FNO-4_06MHMQV3 winorcl_ora_4056.trc
- DATA_D-WINORCL_I-1904915064_TS-SYSTEM_FNO-1_01MHMQTF DATA_D-WINORCL_I-1904915064_TS-WIN_MIGRATE_FNO-6_05MHMQV2
- [oracle@rhel6 ~]$ mkdir -p /u01/app/admin/winorcl/{adump,bdump,cdump,udump}
- [oracle@rhel6 ~]$ mkdir -p /u01/app/oradata/winorcl
- [oracle@rhel6 ~]$ mkdir -p /u01/app/flash_recovery_area/WINORCL
- [oracle@rhel6 ~]$ cp /mnt/DATA_D-WINORCL_I-1904915064_TS-* /u01/app/oradata/winorcl/
- [oracle@rhel6 ~]$ cp /mnt/INIT_00MHMQTE_1_0.ORA $ORACLE_HOME/dbs/initwinorcl.ora
- [oracle@rhel6 ~]$ cp /mnt/winorcl_ora_4056.trc ~/winorcl.sql
- [oracle@rhel6 ~]$ cd /u01/app/oradata/winorcl
- [oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-EXAMPLE_FNO-5_03MHMQUN example01.dbf
- [oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-SYSAUX_FNO-3_02MHMQU8 sysaux01.dbf
- [oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-SYSTEM_FNO-1_01MHMQTF system01.dbf
- [oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-UNDOTBS1_FNO-2_04MHMQUU undotbs1.dbf
- [oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-USERS_FNO-4_06MHMQV3 users01.dbf
- [oracle@rhel6 winorcl]$ mv DATA_D-WINORCL_I-1904915064_TS-WIN_MIGRATE_FNO-6_05MHMQV2 win_migrate01.dbf
- [oracle@rhel6 ~]$ cat winorcl.sql
- CREATE CONTROLFILE REUSE SET DATABASE "winorcl" RESETLOGS ARCHIVELOG
- MAXLOGFILES 16
- MAXLOGMEMBERS 3
- MAXDATAFILES 100
- MAXINSTANCES 8
- MAXLOGHISTORY 292
- LOGFILE
- GROUP 1 '/u01/app/oradata/winorcl/redo01.dbf' SIZE 50M,
- GROUP 2 '/u01/app/oradata/winorcl/redo02.dbf' SIZE 50M,
- GROUP 3 '/u01/app/oradata/winorcl/redo03.dbf' SIZE 50M
- DATAFILE
- '/u01/app/oradata/winorcl/system01.dbf',
- '/u01/app/oradata/winorcl/undotbs1.dbf',
- '/u01/app/oradata/winorcl/sysaux01.dbf',
- '/u01/app/oradata/winorcl/users01.dbf',
- '/u01/app/oradata/winorcl/example01.dbf',
- '/u01/app/oradata/winorcl/win_migrate01.dbf'
- CHARACTER SET ZHS16GBK
- ;
- [oracle@rhel6 dbs]$ grep -v '^$' initwinorcl.ora
- # Please change the values of the following parameters:
- control_files = "/u01/app/oradata/winorcl/control01.dbf","/u01/app/oradata/winorcl/control02.dbf"
- db_recovery_file_dest = "/u01/app/flash_recovery_area"
- db_recovery_file_dest_size= 21474836480
- audit_file_dest = "/u01/app/admin/winorcl/adump"
- background_dump_dest = "/u01/app/admin/winorcl/bdump"
- user_dump_dest = "/u01/app/admin/winorcl/udump"
- core_dump_dest = "/u01/app/admin/winorcl/cdump"
- db_name = "winorcl"
- # Please review the values of the following parameters:
- __shared_pool_size = 167772160
- __large_pool_size = 4194304
- __java_pool_size = 16777216
- __streams_pool_size = 0
- __db_cache_size = 415236096
- remote_login_passwordfile= "EXCLUSIVE"
- db_domain = "766.com"
- dispatchers = "(PROTOCOL=TCP) (SERVICE=winorclXDB)"
- # The values of the following parameters are from source database:
- processes = 150
- nls_language = "SIMPLIFIED CHINESE"
- nls_territory = "CHINA"
- sga_target = 612368384
- db_block_size = 8192
- compatible = "10.2.0.1.0"
- log_archive_format = "ARC%S_%R.%T"
- db_file_multiblock_read_count= 16
- undo_management = "AUTO"
- undo_tablespace = "UNDOTBS1"
- job_queue_processes = 10
- open_cursors = 300
- pga_aggregate_target = 203423744
四:开始迁移
- [oracle@rhel6 ~]$ export ORACLE_SID=winorcl
- [oracle@rhel6 ~]$ sqlplus /nolog
- SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jul 17 20:25:10 2011
- Copyright (c) 1982, 2005, Oracle. All rights reserved.
- SQL> conn /as sysdba
- Connected to an idle instance.
- SQL> create spfile from pfile;
- File created.
- SQL> startup nomount
- ORACLE instance started.
- Total System Global Area 612368384 bytes
- Fixed Size 2022696 bytes
- Variable Size 188744408 bytes
- Database Buffers 415236096 bytes
- Redo Buffers 6365184 bytes
- SQL> @/home/oracle/winorcl.sql;
- Control file created.
- SQL> alter database open resetlogs;
- Database altered.
- SQL> select dbid,name from v$database;
- DBID NAME
- ---------- ---------------------------
- 1904915064 WINORCL
- SQL> select * from t_migrate;
- A
- ----------
- 1
- SQL> select tablespace_name from dba_tablespaces;
- TABLESPACE_NAME
- --------------------------------------------------------------------------------
- SYSTEM
- UNDOTBS1
- SYSAUX
- TEMP
- USERS
- EXAMPLE
- WIN_MIGRATE
- 7 rows selected.
- SQL> alter tablespace temp add tempfile '/u01/app/oradata/winorcl/temp01.dbf' size 50M;
- Tablespace altered.
五:收尾工作
- SQL> shutdown immediate
- Database closed.
- Database dismounted.
- ORACLE instance shut down.
- SQL> startup upgrade
- ORACLE instance started.
- Total System Global Area 268435456 bytes
- Fixed Size 2020056 bytes
- Variable Size 83889448 bytes
- Database Buffers 176160768 bytes
- Redo Buffers 6365184 bytes
- Database mounted.
- Database opened.
- SQL> @?/rdbms/admin/utlirp.sql;
- SQL> spool /tmp/upgrade.log
- SQL> @?/rdbms/admin/utlrp.sql;
- SQL> startup force
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28673746/viewspace-757949/ ,如需转载,请注明出处,否则将追究法律责任。