1) Prerequisites
    ----------------

- The copy of the datafiles must be done with the database closed or the database must be in ARCHIVELOG  mode.
     To determine the Database is in Archivemode or Noarchivemode use:

       SQL> select name, log_mode from v$database;

2) Init<sid>.ora or Spfile<sid>.ora and Controlfile
     ----------------------------------------------------
   - You need to copy the init.ora or spfile file to the target host
     and locate it in ORACLE_HOME\dbs

- Copy the
        Controlfile(s),
        all the Datafiles  
        all the Archivelogs generated,
     to the target host.

# To copy the Controlfile,
    - either do a clean shutdown the Database, then take a cold copy of the controlfile
    - or if database is open and Online Backup is taken do:

       SQL> alter database backup controlfile to '/path/cf_name.ctl' ;   -- this takes a binary copy of the controlfile

-- Hint:
          Do this to get a creation script for the controlfile, in case needed.
          The following statement writes a tracefile to the 'trace' directory containing 'Create Controlfile' Statements
          .
           SQL> alter database backup controlfile to trace ;

# To backup the Database if database is open then, you need to put all the tablespaces in BACKUP MODE,
      before starting the copy of the database/datafiles :

     SQL> select tablespace_name from dba_tablespaces;

SQL> ALTER TABLESPACE <TABLESPACE_NAME> BEGIN BACKUP;
        .
         > copy all the tablespace 'datafiles'
        .
    SQL> ALTER TABLESPACE <TABLESPACE_NAME> END BACKUP;

# ==> Do this copy for 'ALL THE TABLESPACES/Datafiles'  in the Database !!

# Comment: Starting with Oracle 10g:
               you can use the BEGIN BACKUP on 'database' level, instead of 'tablespace' level :

SQL> alter DATABASE begin backup;
                .
                 > copy all the tablespace 'datafiles'
                .
            SQL> alter DATABASE end backup;

3) Set the oracle environment
   -------------------------

    C:\> set ORACLE_SID=<SID>
    C:\> sqlplus "sys/password as sysdba"

- Check the init<sid>.ora  parameters that reference 'path/dir' location
    
    control_files                   = <duplicate db control file(s)>
    background_dump_dest  = bdump>
    core_dump_dest            = cdump>
    user_dump_dest            = udump>
    log_archive_dest_1        = <duplicate db arch dump location>

4) Set up a password file for the duplicated database

    $ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=<...>

If Windows Platform, create a new NT service for the 'cloned' duplicated database  using oradim.

   C:\> oradim -new -sid -intpwd -maxusers 10 -startmode manual -spfile  ''

# or

C:\> oradim -new -sid -intpwd -maxusers 10 -startmode manual -pfile   ''

 sample:

1) orapwd file=C:\app\oracle\product\12.1.0\dbhome_1\database\orapwtestUAT12C.ora password=oracle123

2)oradim -new -sid testUAT12C -SYSPWD oracle123 -maxusers 10 -startmode manual -pfile  'C:\app\oracle\product\12.1.0\dbhome_1\database\INITtestUAT12C.ORA'

3) copy network from source to destination

6)  Startup the database in mount status

    SQL> startup mount

-- Rename any of the datafiles to the new location, if necessary:

SQL> ALTER DATABASE RENAME FILE
               '/FULL_PATH_OF_OLD_LOCATION/AND_DATAFILE_NAME.DBF'
               TO
               '/FULL_PATH_OF_NEW_LOCATION/AND_DATAFILE_NAME.DBF';

-- Rename the logfiles to the new location if necessary

SQL> alter database rename file '<host A location>' to '<host B location>';

7)  Check that all the datafiles are in the right location and ONLINE:

SQL> SELECT FILE#, STATUS, NAME FROM V$DATAFILE;

8) Perform incomplete recovery:

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;

Forward the database applying archived redo log files until you decide
    to stop recovery by typing 'CANCEL' at the prompt
    (assuming that you have  required archived redo log files in the log_archive_dest directory)
    .
    You may archive the source database redo log files and apply them at
    the target database if required.

SQL> ALTER DATABASE OPEN RESETLOGS;

9) In Windows platforms, if you want that the database will start automatically then edit the registry:

     regedit
       go to
       HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEX
       .
       change the key :  ORA_<SID>_AUTOSTART=TRUE
 
 
sample 2: clone cold backup from prod to uat . 

1.make file and modfiy file:
'C:\app\Administrator\product\11.2.0\dbhome_1\database\initdmprod.ora'

2.
orapwd file=C:\app\Administrator\product\11.2.0\dbhome_1\database\PWDDMSPROD.ora password=oracle123
oradim -new -sid dmsprod -SYSPWD oracle123 -maxusers 10 -startmode manual -pfile 'C:\app\Administrator\product\11.2.0\dbhome_1\database\initdmsprod.ora'

3.
C:\app\Administrator\admin
set ORACLE_SID=dmprod
sqlplus "sys/oralce as sysdba"

startup mount

##change data file location to 'D:\dmsprod'
rman nocatalog target /
catalog start with 'D:\dmsprod';
switch database to copy;

sqlplus "sys/oralce as sysdba"

select 'alter database rename file '||''''||member||''''||' to '||chr(39)||replace(member,'F:\ORA11GDATA\DMSPROD\','D:\dmsprod\')||''';' from v$logfile;

shutdown immediate
startup

ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\DMSPROD\TEMP01.DBF' REUSE;
ALTER TABLESPACE TEMP drop TEMPFILE 'F:\ORA11GDATA\DMSPROD\TEMP01.DBF';

4.
add service_names='DMSUAT,DMSPROD’
select service_id,name from v$services;

windows 迁移数据库的更多相关文章

  1. 如丝般顺滑地从Windows迁移SQLServer数据库到Linux

    老鸟看过菜鸟的上一篇<MSSQL On Linux备份与还原>文章后,很满意,但是还是忍不住发问:"这篇文章讲的是MSSQL在Linux系统上的备份与还原,如果我之前是Windo ...

  2. 正确把mysql数据库从windows迁移到linux系统上的方法

    (一)用mysqldump命令导出数据库文件: 在windows下cd到Mysql的bin目录: c:/data.txt这个目录和导出的文本名可以自己随便取,-B 后面的是表名,我要导出的表明叫use ...

  3. MySQL数据库从windows迁移到linux

    前几天搭建了lamp环境,想把之前写的小东西迁到linux上运行,涉及到把mysql数据库的文件迁移到linux上,直接用fileZilla传过去应该不行,我试了下,反正没成功.下面是我采用的方法: ...

  4. windows clone 迁移数据库

    windows clone 迁移数据库可行.(c 盘底成复制)

  5. 我将系统从Windows迁移至Linux下的点点滴滴

    一.写在最前 由于本人的技术水平有限,难免会出现错误.本文对任何一个人有帮助都是我莫大的荣幸,任何一个大神对我的点拨,我都会感激不尽. 二.技术选型 在2013年8月低的时候,公司中了XXX市场监督局 ...

  6. 跨平台迁移数据库windows-Linux

    将10.10.1.127服务器的数据库ORCL(WINDOWS)迁移到VM 10.10.10.168LINUX平台 操作系统:Windows server 2008r2 64bit CentOS  L ...

  7. 使用数据泵(expdp、impdp)迁移数据库流程

    转载原文地址为:http://blog.itpub.net/26736162/viewspace-2652256/ 使用数据泵迁移数据库流程 How To Move Or Copy A Databas ...

  8. 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)

    在开发涉及到数据库的程序时,常会遇到一开始设计的结构不能满足需求需要再添加新字段或新表的情况,这时就需要进行数据库迁移. 实现数据库迁移有很多种办法,从手动管理各个版本的ddl脚本,到实现自己的mig ...

  9. 使用rman迁移数据库到异机

    迁移数据库的方法有多种,较为常用的则是使用RMAN来迁移.使用RMAN迁移数据库属于数据库的物理备份与恢复范畴,整个过程中数据库的相关信息是完整地镜像.因此,基于此种方式还原恢复的数据库用于测试会使得 ...

随机推荐

  1. VM Workstation的Unity Mode有什么用

    正常情况下,如果我启动了一个VM Workstaion的虚拟机,比如是一个Linux系统,并且没运行任何软件,进入Unity mode之后,我真实系统的左下角会有一个虚拟机的图标 点击这个图标可以打开 ...

  2. 剑指Offer面试题43(Java版):n个骰子的点数

    题目:把n个骰子仍在地上.全部骰子朝上一面的点数之和为s,输入n,打印出s的全部可能的值出现的概率. 解法一:基于递归求骰子的点数,时间效率不够高 如今我们考虑怎样统计每个点数出现的次数. 要向求出n ...

  3. Linux经常使用命令(更新中)

    文件类: 1.创建目录:mkdir 例:sudo mkdir test 2.创建空文件:touch 例:sudo touch test.txt 3.删除文件:rm 删除文件不须要确认:rm -f 例: ...

  4. PHP 按位与或 (^ 、&)

    今天朋友群里朋友问了下 按位与或的问题.. 按位于主要是对二进制数操作. <?php $a = 1; $b = 2; $c = $a^b; ?> 这里不是单纯的相加关系 十进制 1换算成二 ...

  5. java移位运算符实验程序:&lt;&lt;(左移)、&gt;&gt;(带符 号右移)和&gt;&gt;&gt;(无符号右移)

    public class txs { static void leftbit(){ int i;               //整型长度为32位                           ...

  6. DDM的成熟在一个细微之处的体现

    前言 我们都知道DDM是华为云的非常优秀的分布式数据库中间件,在性能.易用性等方面在业界是遥遥领先的.他的成熟不仅仅体现在具有快速水平平滑扩容,支持多种分布式事物类型等等这些高大上的特性上,也体现在D ...

  7. udhcp源码详解(一)之文件组织结构(dhcp server) --转

    udhcp目录下有十几个源文件,一个源文件相对应一个模块,完成一系列相关的功能,例如在static_leases.c主要针对static_lease链表增删查找等操作. dhcpd.c——   整个d ...

  8. Sublime Text 3设置吊炸天PHP开发环境

    @heiyeluren @created: 2016/5/31 @last modify: 2016/7/8 1. 下载安装Sublime Text 3 http://www.sublimetext. ...

  9. C# MVC 枚举转 SelectListItem

    <span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: r ...

  10. Linux学习笔记:系统启动引导过程

    Linux系统启动引导过程 近期发现自己在仅仅是掌握上有几个比較硬的伤: 一.知识体系碎片,比方Linux,这学点那学点,结果没有成体系,串不起来: 二.记忆时间短暂,非常多的内容学了就忘,最后的结果 ...