ORACLE 本地冷迁移

需求:把oracle数据库的数据文件,redo文件,控制文件迁移到本地的其它目录。

1.测试环境:

操作系统redhat 6.3,数据库oracle 11.2.0.1.0

[[email protected] ~]# uname -a
Linux dbtest1 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

源数据文件位置:/home/data/oracle/dbtest/

目标数据文件位置:/oracle_data/

2.关闭数据库监听,禁止外部访问数据库

-bash-4.1$ lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-DEC-2014 13:22:05

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=dbtest)))
The command completed successfully

3.关闭oracle数据库

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

4.备份pfile,spfile,控制文件(至少备份一个)

-bash-4.1$ cd /$ORACLE_HOME/dbs
-bash-4.1$ cp initdbtest.ora initdbtest.ora.141218
-bash-4.1$ cp spfiledbtest.ora  spfiledbtest.ora.141218
-bash-4.1$ cd /home/data/oracle/dbtest/
-bash-4.1$ cp control01.ctl control01.ctl.141218

5.更新pfile,从spfile创建pfile

SQL> create pfile=‘$ORACLE_HOME/dbs/initdbtest.ora‘ from spfile=‘$ORACLE_HOME/dbs/spfiledbtest.ora‘;

注:默认位置的话,可以直接使用create pfile from spfile来创建的,创建后检查一下时间戳来确认。

6.修改pfile中的控制文件的位置

把/home/data/oracle/dbtest/control01.ctl修改为/oracle_data/control01.ctl

-bash-4.1$ cd /$ORACLE_HOME/dbs/
-bash-4.1$ ls
hc_dbtest.dat  initdbtest.ora  initdbtest.ora.141218  init.ora  lkDBTEST  orapwdbtest  spfiledbtest.ora  spfiledbtest.ora.141218
-bash-4.1$ cat initdbtest.ora |grep control
*.control_files=‘/home/data/oracle/dbtest/control01.ctl‘,‘/home/app/ora11g/flash_recovery_area/dbtest/control02.ctl‘
使用vi编辑该文件
-bash-4.1$ cat initdbtest.ora |grep control
*.control_files=‘/oracle_data/control01.ctl‘,‘/home/app/ora11g/flash_recovery_area/dbtest/control02.ctl‘

注:如果有多个要修改的话,方法是一样的。

7.复制源数据目录下的文件,包括控制文件,数据文件和redo文件

-bash-4.1$ cp /home/data/oracle/dbtest/*  /oracle_data/ 

8.使用pfile来启动数据库到mount状态

SQL> startup pfile=‘$ORACLE_HOME/dbs/initdbtest.ora‘ mount
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size            1241516144 bytes
Database Buffers          352321536 bytes
Redo Buffers                7360512 bytes
Database mounted.

9.重命名数据文件,redo文件的位置

SQL> ALTER DATABASE RENAME FILE ‘/home/data/oracle/dbtest/redo01.log‘ to ‘/oracle_data/redo01.log‘;

Database altered.

SQL>ALTER DATABASE RENAME FILE ‘/home/data/oracle/dbtest/system01.dbf‘ to ‘/oracle_data/system01.dbf‘;

Database altered.

......

10. 打开数据库

SQL> alter database open;

Database altered.

11.检查数据文件,redo等文件位置是否正确

SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
/oracle_data/users01.dbf
/oracle_data/undotbs01.dbf
/oracle_data/sysaux01.dbf
/oracle_data/system01.dbf
/oracle_data/laputa_dat.dbf
/oracle_data/laputa_idx_01.dbf

6 rows selected.

SQL> select file_name from dba_temp_files;

FILE_NAME
--------------------------------------------------------------------------------
/oracle_data/temp01.dbf

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/oracle_data/control01.ctl
/home/app/ora11g/flash_recovery_area/dbtest/control02.ctl

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
/oracle_data/redo03.log
/oracle_data/redo02.log
/oracle_data/redo01.log

12.同步spfile到新的文件(简化写法)

SQL> create spfile from pfile;

File created.

13.重启一次数据库确认一切正常

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size            1241516144 bytes
Database Buffers          352321536 bytes
Redo Buffers                7360512 bytes
Database mounted.
Database opened.
SQL> 

14.开启数据库监听

-bash-4.1$ lsnrctl start

注意问题:

1.在rename文件的时候,如果涉及到的文件比较多,建议把语句放在一个sql文件中,然后再在sqlplus中执行,否则可能会导致语句在中间断裂(一条语句被命令行看成2行,会报错)。如果发生了语句的断裂,重新把语句放在sql文件中执行即可,这些rename语句重复执行会报错,但是不影响最终的结果。

2.迁移redo文件可以在线执行,用添加redo group,删除redo group的办法。

3.非系统表空间可以在不关闭数据库的方法迁移,对表空间进行offline,移动对应数据文件,rename数据文件,online表空间。

时间: 2024-10-28 16:32:40

ORACLE 本地冷迁移的相关文章

KVM虚拟机共享存储动态迁移与冷迁移

运行环境一. 配置nfs共享服务器二. 配置KVM虚拟化三. 创建桥接网卡四. 配置kvm服务器并实现动态迁移五. 配置冷迁移运行环境KVM虚拟机两台(linux 7.4)IP地址:192.168.80.100(KVM01)IP地址:192.168.80.200(KVM02)共享服务器一台(linux 7.4)IP地址:192.168.80.102(share) 所有主机都执行:service firewalld stopsetenforce 0 一.配置nfs共享服务器yum install

轻松上云系列之一:本地数据迁移上云

背景信息在云计算服务高速发展的今天,如何方便快捷地将已有的服务器系统迁移上云,有着非常重要的意义.阿里云服务器迁移服务方案,即迁移服务,正是在这个需求背景下应运而生.它极大地简化了服务器系统迁移工具的使用条件.降低了使用成本,使用户的系统一键迁移到阿里云成为可能. 使用迁移服务来进行系统迁移比较便捷,您可以先参考迁云工具帮助文档了解使用条件及基本操作. 迁移流程1.熟悉迁移工具使用方法,提前做好测试演练. 2.评估迁移时间/成本,制定迁移计划. 3.正式迁移,可咨询阿里云团队支持. 数据传输服务

oracle学习-数据迁移

如果只是迁移表空间或者数据文件,可以先将表空间或者数据文件offline之后移动位置,并通过 alert database rename 和 alter tablespace rename 将位置变化写入控制文件即可 例 迁移数据文件 ALTER DATABASE DATAFILE '所要迁移的数据文件' OFFLINE; 拷贝到新位置 ALTER DATABASE RENAME FILE '索要迁移的数据文件' TO '新位置的数据文件'; 介质恢复 RECOVE DATAFILE '新位置的

如何将本地数据库迁移至SQL Azure

Windows Azure的SQL Azure和SQL Server 拥有不同的体系结构,可以说是两个不同的产品.SQL Azure不完全支持或者尚不支持SQL Server的某些功能,这使得我们不能像平常一样使用bak文件还原的方式迁移数据库,也不能使用数据导入导出向导.很多SQL Server的特性在SQL Azure中不被支持. 那我们怎样才能将现有数据库迁移到SQL Azure上呢? 一."将数据库部署到SQL Azure"向导 我最先想到的是这个向导,对数据库右键=>任

OpenStack的Resize和冷迁移代码解析及改进

原文:http://www.hengtianyun.com/download-show-id-79.html OpenStack的Resize(升级)功能,我们可以改变虚拟机的CPU核数.内存及磁盘大小,当然虚拟机只能向上升级,不允许向下降级.通过分析源代码,我们发现Resize的过程其实就是冷迁移的过程,Resize多传进去了一个flavor参数.下面将分析OpenStack升级虚拟机和冷迁移的功能. 一.前端入口 (一) Resize /usr/share/openstack-dashboa

oracle 数据库数据迁移解决方案

大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,接下来把心得与大家分享一下 去年年底做了不少系统的数据迁移,大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,有一些心得体会,与大家分享. 首先说说迁移流程,在迁移之前,写好方案,特别是实施的方案步骤一定要写清楚,然后进行完整的测试.我们在迁移时,有的系统测试了四五次,通过测试来完善方案和流程. 针对物理迁移,也即通过RMAN备份来进行还原并应用归档的方式(这里不讨论通过dd方式进行的冷迁移),虽然注意的是

通过Navicat Premium迁移Oracle到EDB迁移实战

1.1 DB migration analysis ??在从Oracle向EDB迁移数据之前,须要做非常多准备工作.比方须要分析源数据库数据量大小.数据是否稳定.异构数据库兼容.编码方式.业务逻辑(存储过程.函数.触发器)等迁移情况,最好在迁移实施之前出一个迁移方案:选择迁移工具实施数据迁移.保存迁移日志:迁移完毕后还须要验证数据的完整性.一致性等,记录条数检查,检查新旧数据库相应的记录条数是否一致.特殊样本数据的检查,检查同一样本在新旧数据库中是否一致. ??迁移数据库源为ORACLE,目标数

bat启动oracle本地服务

oracle本地服务默认开启,占用电脑资源,影响开机速度,每次开启关闭比较繁琐,下面用bat一键实现,右击,以管理员身份运行 @echo off for /f "skip=3 tokens=4" %%i in ('sc query OracleOraDb11g_home1TNSListener') do set "zt=%%i" &goto :next :next if /i "%zt%"=="RUNNING" ( e

oracle   rman冷备shell脚本

oracle rman冷备shell脚本(我这里是全备份,创建了2个通道c1.c2)可以在这基础上更改 文本: #!/bin/bash #Author:wangergui       Email:[email protected]          Date:2016-08-17 #Function:oracle_rman_cold_backup ( Full backup ) [ "${USER}" == "oracle" ] || exit 2 [ ! -d $