一、迁移前数据库基本信息统计

查看数据库版本

  1. SELECT * FROM V$VERSION;
  2. /*
  3. Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
  4. PL/SQL Release 11.2.0.3.0 - Production
  5. "CORE 11.2.0.3.0 Production"
  6. TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
  7. NLSRTL Version 11.2.0.3.0 - Production
  1. SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE;

查看所有数据文件

  1. SELECT NAME FROM V$DATAFILE;
  2.  
  3. D:\APP\ORACLE\ORADATA\SIEBELDB\SYSTEM01.DBF
  4. D:\APP\ORACLE\ORADATA\SIEBELDB\SYSAUX01.DBF
  5. D:\APP\ORACLE\ORADATA\SIEBELDB\UNDOTBS01.DBF
  6. D:\APP\ORACLE\ORADATA\SIEBELDB\USERS01.DBF
  7. D:\APP\ORACLE\ORADATA\SIEBELDB\DATA01.DBF
  8. D:\APP\ORACLE\ORADATA\SIEBELDB\INDEX01.DBF
  9. D:\APP\ORACLE\ORADATA\SIEBELDB\SYSTEM02.DBF
  10. D:\APP\ORACLE\ORADATA\SIEBELDB\SYSAUX02.DBF
  11. D:\APP\ORACLE\ORADATA\SIEBELDB\EIM_IDX01.DBF

查看所有控制文件

  1. SELECT NAME FROM V$CONTROLFILE;
  2.  
  3. D:\APP\ORACLE\ORADATA\SIEBELDB\CONTROL01.CTL
  4. D:\APP\ORACLE\ORADATA\SIEBELDB\CONTROL02.CTL

查看所有日志文件

  1. SELECT GROUP#, MEMBER FROM V$LOGFILE;
  2.  
  3. D:\APP\ORACLE\ORADATA\SIEBELDB\REDO01.LOG
  4. D:\APP\ORACLE\ORADATA\SIEBELDB\REDO02.LOG
  5. D:\APP\ORACLE\ORADATA\SIEBELDB\REDO03.LOG

查看所有临时文件

  1. SELECT NAME FROM V$TEMPFILE;
  2.  
  3. D:\APP\ORACLE\ORADATA\SIEBELDB\TEMP01.DBF

查看当前的操作系统平台

  1. SELECT D.PLATFORM_NAME, ENDIAN_FORMAT
  2. FROM V$TRANSPORTABLE_PLATFORM TP, V$DATABASE D
  3. WHERE TP.PLATFORM_NAME = D.PLATFORM_NAME;
  4.  
  5. PLATFORM_NAME           ENDIAN_FORMAT
    Microsoft Windows x86 64-bit   Little

查看可以迁移的平台

  1. SELECT * FROM V$TRANSPORTABLE_PLATFORM ORDER BY 3;
  2.  
  3. PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
  4. 12 Microsoft Windows x86 64-bit Little
  5. 13 Linux x86 64-bit Little

查看数据库字符集

  1. select * from nls_database_parameters;
  2.  
  3. PARAMETER VALUE
  4. NLS_LANGUAGE AMERICAN
  5. NLS_TERRITORY AMERICA
  6. NLS_CURRENCY $
  7. NLS_ISO_CURRENCY AMERICA
  8. NLS_NUMERIC_CHARACTERS .,
  9. NLS_CHARACTERSET AL32UTF8
  10. NLS_CALENDAR GREGORIAN
  11. NLS_DATE_FORMAT DD-MON-RR
  12. NLS_DATE_LANGUAGE AMERICAN
  13. NLS_SORT BINARY
  14. NLS_TIME_FORMAT HH.MI.SSXFF AM
  15. NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
  16. NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
  17. NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
  18. NLS_DUAL_CURRENCY $
  19. NLS_COMP BINARY
  20. NLS_LENGTH_SEMANTICS BYTE
  21. NLS_NCHAR_CONV_EXCP FALSE
  22. NLS_NCHAR_CHARACTERSET UTF8
  23. NLS_RDBMS_VERSION 11.2.0.3.0

将数据库开启到read only模式后运行校验包

  1. SHUTDOWN IMMEDIATE;
  2. STARTUP MOUNT
  3. ALTER DATABASE OPEN READ ONLY;
  1. --返回TRUE或成功运行(无报错,表示正常)
  2. --If no warnings appear, or if DBMS_TDB.CHECK_DB returns TRUE, then you can transport the database.
  3.  
  4. SET SERVEROUTPUT ON
  5. DECLARE
  6. db_ready BOOLEAN;
  7. BEGIN
  8. db_ready :=DBMS_TDB.CHECK_DB('Microsoft Windows x86 64-bit',DBMS_TDB.SKIP_READONLY);
  9. END

校验是否存在RMAN不能自动转换的文件

  1. --使用DBMS_TDB.CHECK_EXTERNAL函数检查是否存在任何外部表、目录或BFILES数据,使用RMAN的方式不能传输这些文件,需要手动重建或手动拷贝到目标库.
  2. --Execute the DBMS_TDB.CHECK_EXTERNAL function to identify any external tables, directories, or BFILEs. RMAN cannot automate the transport of these
  3. --files, so you must copy the files manually and re-create the database directories
  4.  
  5. DECLARE
  6. external BOOLEAN;
  7. BEGIN
  8. /* value of external is ignored, but with SERVEROUTPUT set to ON
  9. * dbms_tdb.check_external displays report of external objects
  10. * on console */
  11. external := DBMS_TDB.CHECK_EXTERNAL;
  12. END;
  13. /

The following directories exist in the database:
SYS.TRAN_TBS_DIR, SYS.TEST_DIR, SYS.XMLDIR, SYS.ORACLE_OCM_CONFIG_DIR2, SYS.ORACLE_OCM_CONFIG_DIR, SYS.DATA_PUMP_DIR

  1. --查看不能转换的目录
  2. COL OWNER FOR A10
  3. COL DIRECTORY_NAME FOR A40
  4. COL DIRECTORY_PATH FOR A60
  5. SELECT * FROM DBA_DIRECTORIES;

二、使用RMAN生成迁移文件

  1. --启动数据库到Read Only模式
  2. SHUTDOWN IMMEDIATE;
  3. STARTUP MOUNT;
  4. ALTER DATABASE OPEN READ ONLY;
  5.  
  6. --启动RMAN
  7. RMAN target /
  8.  
  9. CONVERT DATABASE
  10. NEW DATABASE 'siebeldb'
  11. transport script 'C:\trans_dir\trans.sql'
  12. TO platform 'Linux x86 64-bit'
  13. db_file_name_convert 'D:\APP\ORACLE\ORADATA\SIEBELDB' 'C:\trans_dir';

三、修改对应转换文件参数

  1. linux上设置ORACLE_BASE,ORACLE_HOME
  2. 在源系统上会生成好转换好的数据库dbf文件和转换文件脚本trans.sql
  3. 需要编辑trans.sql文件将其中数据文件参数文件等信息改为Linux相应的目录
  1. -- The following commands will create a new control file and use it
  2. -- to open the database.
  3. -- Data used by Recovery Manager will be lost.
  4. -- The contents of online logs will be lost and all backups will
  5. -- be invalidated. Use this only if online logs are damaged.
  6.  
  7. -- After mounting the created controlfile, the following SQL
  8. -- statement will place the database in the appropriate
  9. -- protection mode:
  10. -- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
  11.  
  12. STARTUP NOMOUNT PFILE='/data/oracle/app/database/11.2.0.3/dbhome_1/dbs/initsiebeldb.ora'
  13. CREATE CONTROLFILE REUSE SET DATABASE "SIEBELDB" RESETLOGS NOARCHIVELOG
  14. MAXLOGFILES 16
  15. MAXLOGMEMBERS 3
  16. MAXDATAFILES 100
  17. MAXINSTANCES 8
  18. MAXLOGHISTORY 292
  19. LOGFILE
  20. GROUP 1 '/data/oracle/oradata/siebeldb/redolog01.log' SIZE 500M BLOCKSIZE 512,
  21. GROUP 2 '/data/oracle/oradata/siebeldb/redolog02.log' SIZE 500M BLOCKSIZE 512,
  22. GROUP 3 '/data/oracle/oradata/siebeldb/redolog03.log' SIZE 500M BLOCKSIZE 512
  23. DATAFILE
  24. '/data/oracle/oradata/siebeldb/SYSTEM01.DBF',
  25. '/data/oracle/oradata/siebeldb/SYSAUX01.DBF',
  26. '/data/oracle/oradata/siebeldb/UNDOTBS01.DBF',
  27. '/data/oracle/oradata/siebeldb/USERS01.DBF',
  28. '/data/oracle/oradata/siebeldb/DATA01.DBF',
  29. '/data/oracle/oradata/siebeldb/INDEX01.DBF',
  30. '/data/oracle/oradata/siebeldb/SYSTEM02.DBF',
  31. '/data/oracle/oradata/siebeldb/SYSAUX02.DBF',
  32. '/data/oracle/oradata/siebeldb/EIM_IDX01.DBF'
  33. CHARACTER SET AL32UTF8
  34. ;
  35.  
  36. -- Database can now be opened zeroing the online logs.
  37. ALTER DATABASE OPEN RESETLOGS;
  38.  
  39. -- Commands to add tempfiles to temporary tablespaces.
  40. -- Online tempfiles have complete space information.
  41. -- Other tempfiles may require adjustment.
  42. ALTER TABLESPACE TEMP ADD TEMPFILE '/data/oracle/oradata/siebeldb/temp01.dbf'
  43. SIZE 3167M AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
  44. -- End of tempfile additions.
  45. --
  46.  
  47. set echo off
  48. prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  49. prompt * Your database has been created successfully!
  50. prompt * There are many things to think about for the new database. Here
  51. prompt * is a checklist to help you stay on track:
  52. prompt * 1. You may want to redefine the location of the directory objects.
  53. prompt * 2. You may want to change the internal database identifier (DBID)
  54. prompt * or the global database name for this database. Use the
  55. prompt * NEWDBID Utility (nid).
  56. prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  57.  
  58. SHUTDOWN IMMEDIATE
  59. STARTUP UPGRADE PFILE='/data/oracle/app/database/11.2.0.3/dbhome_1/dbs/initsiebeldb.ora'
  60. @@ ?/rdbms/admin/utlirp.sql
  61. SHUTDOWN IMMEDIATE
  62. STARTUP PFILE='/data/oracle/app/database/11.2.0.3/dbhome_1/dbs/initsiebeldb.ora'
  63. -- The following step will recompile all PL/SQL modules.
  64. -- It may take serveral hours to complete.
  65. @@ ?/rdbms/admin/utlrp.sql
  66. set feedback 6;

四、修改生成的INIT参数文件

  1. RMAN转换完后也会生成init的参数文件,在windows database目录下
  2. 将转换用的init文件重命名为initSID.ora,并修改其中的参数路径对应到linux的路径下
  1. # Please change the values of the following parameters:
  2. control_files = '/data/oracle/oradata/siebeldb/control01.ctl'
  3. audit_file_dest = '/data/oracle/admin/siebeldb/adump'
  4. db_name = 'SIEBELDB'
  5.  
  6. # Please review the values of the following parameters:
  7. # __oracle_base = "D:\app\oracle"
  8. __shared_pool_size = 788529152
  9. __large_pool_size = 16777216
  10. __java_pool_size = 16777216
  11. __streams_pool_size = 16777216
  12. __sga_target = 2634022912
  13. __db_cache_size = 1761607680
  14. __shared_io_pool_size = 0
  15. remote_login_passwordfile= "EXCLUSIVE"
  16. db_domain = ""
  17. dispatchers = "(PROTOCOL=TCP) (SERVICE=siebeldbXDB)"
  18. __pga_aggregate_target = 536870912
  19.  
  20. # The values of the following parameters are from source database:
  21. processes = 1500
  22. sessions = 2272
  23. sga_target = 2634022912
  24. db_block_size = 8192
  25. compatible = "11.2.0.0.0"
  26. undo_tablespace = "UNDOTBS1"
  27. audit_trail = "OS"
  28. open_cursors = 300
  29. optimizer_index_cost_adj = 1
  30. pga_aggregate_target = 524288000
  31. # diagnostic_dest = "D:\APP\ORACLE"

五、在目标系统使用DBCA建库

  1. 1、建议使用DBCA建库,避免手动建库出现部分目录没创建的问题
  2.  
  3. 2、建库完毕后关闭数据库,并把所有的数据文件、日志文件、控制文件都删除(也就是/.../oradata/目录下都删除)

六、复制源系统的RMAN迁移文件到目标系统指定目录

  1. 1、将WindowsRMAN生成的转换完成的数据文件等使用FTP工具传输到Linux上的$ORACLE_BASE/oradata/$SID目录下
    2、将生成的init参数文件复制到Linux$ORACLE_HOME/dbs目录下

七、执行迁移脚本

  1. sqlplus / as sysdba
  2. @/data/oracle/oradata/siebeldb/trans.sql
  3.  
  4. --脚本会跑一段时间,只需要等待完成即可

八、注意事项

  1. 1Oracle的版本在Windows上与Linux上要一样,不然会存在问题.
  2. 2、建议用DBCA建库,防止人为错误.
  3. 3、修改inittrans.sql转换文件时,对应的文件夹及路径不要写错.
  4. 4、用RMANconvert功能比较强大,不用担心其它问题,也是oracle的建议事项.

九、参考文档

http://docs.oracle.com/cd/E11882_01/backup.112/e10642/rcmxplat.htm#BRADV89977

迁移 Windows 上 Oracle 11.2.0.3.0 到 Linux 上 Oracle 11.2.0.3.0的更多相关文章

  1. Oracle Database 11g Release 2(11.2.0.3.0) RAC On Redhat Linux 5.8 Using Vmware Workstation 9.0

    一,简介 二,配置虚拟机 1,创建虚拟机 (1)添加三块儿网卡:   主节点 二节点 eth0:    公网  192.168.1.20/24   NAT eth0:    公网  192.168.1 ...

  2. windows 上搭建 sftp 服务器 -freesshd全过程( 在linux上部署逐浪CMS的必读教程)

    文章标题: windows 上搭建 sftp 服务器 - freesshd全过程 关键字 : freesshd 文章分类: 教程 创建时间: 2020年3月23日 缘由 动手 第一步:添加用户 第二步 ...

  3. Docker在Linux上运行NetCore系列(三)在Linux上使用Docker运行Asp.NetCore

    转发请注明此文章作者与路径,请尊重原著,违者必究. 系列文章:https://www.cnblogs.com/alunchen/p/10121379.html 开始说明 上几篇文章都是通过Linux运 ...

  4. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  5. 【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)

    RAC在LINUX上使用NFS安装前准备(六) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇 ...

  6. 转载:【Oracle 集群】RAC知识图文详细教程(六)--RAC在LINUX上使用NFS安装前准备

    文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...

  7. 【转】【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)

    原文地址:http://www.cnblogs.com/baiboy/p/orc6.html 阅读目录 目录 介绍 下载软件 操作系统安装 Oracle安装先决条件 创建共享磁盘 参考文献 相关文章 ...

  8. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 3.安装Clus ...

  9. 在Linux上安装Oracle RAC 12 c(12.1) 虚拟机,一步一步向导

    Oracle RAC 12 c(12.1)在Linux上安装虚拟机,一步一步向导 今天我们将看到如何安装 12 c版本1 RAC(真正的应用程序集群)数据库2 Linux 64位的虚拟机 使用VMWa ...

  10. Linux上mount 挂载windows共享文件权限问题

    在服务器部署的时候需要把文件夹设置在windows的共享文件上.在使用mount命令挂载到linux上后.文件路径和文件都是可以访问,但是不能写入,导致系统在上传文件的时候提示“权限不够,没有写权限” ...

随机推荐

  1. 如何选择单片机和Android-LInux-ARM开发板?

    源: 如何选择单片机和Android-LInux-ARM开发板?

  2. 官方online ddl

    一.5.6版本online DDL 操作 In Place Rebuilds Table Concurrent DML Only Modifies Metadata 说明 add/create sec ...

  3. zabbix3.0安装(本文引用51cto博主烂泥行天下的文章,我也是参考他写的文章安装的zabbix)

    但是由于他文章写的时间有点久了,上面的关于安装zabbix之前需要安装的zabbix3.0yum源的链接失效了,所有我找了2个能用的zabbix 3.0yum源,其他的就不再写了 安装zabbix3. ...

  4. 并查集 试水 hdu1232

    #include <stdio.h> #include <stdlib.h> int n,m; ],rank[]; int count; int find(int x) { i ...

  5. Vue-深入-1

    1.关于vue get setVue 不能检测到对象属性的添加或删除 把一个普通 Javascript 对象传给 Vue 实例的 data 选项,Vue 将遍历此对象所有的属性,并使用 Object. ...

  6. Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】

    转自:https://blog.csdn.net/linxingliang/article/details/52263763 spring boot 自学笔记(三) Redis集成—RedisTemp ...

  7. Divide two numbers,两数相除求商,不能用乘法,除法,取模运算

    问题描述:求商,不能用乘法,除法,取模运算. 算法思路:不能用除法,那只能用减法,但是用减法,超时.可以用位移运算,每次除数左移,相当于2倍. public class DividTwoInteger ...

  8. 用JS判断IE版本的代码

    方法一: 复制代码代码如下: <script language="javascript"> function getIE() { if(navigator.appNam ...

  9. Sql server锁机制

    如何查看锁 了解SQL Server在某一时间点上的加锁情况无疑是学习锁和诊断数据库死锁和性能的有效手段.我们最常用的查看数据库锁的手段不外乎两种: 使用sys.dm_tran_locks这个DMV ...

  10. 如何将Django部署到Apache服务器上

    操作环境: Ubuntu 16.04 Apache 2.4 Django 1.9 Python 2.7 mod_wsgi  前言:本教程纯自己查阅资料后整理,望对大家有帮助! 1. 安装 mod_ws ...