博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORACLE 本地冷迁移
阅读量:6479 次
发布时间:2019-06-23

本文共 4511 字,大约阅读时间需要 15 分钟。

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

1.测试环境:

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

[root@dbtest1 ~]# uname -aLinux 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 ProductionPL/SQL Release 11.2.0.1.0 - ProductionCORE    11.2.0.1.0      ProductionTNS for Linux: Version 11.2.0.1.0 - ProductionNLSRTL Version 11.2.0.1.0 - Production

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

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

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

-bash-4.1$ lsnrctl stopLSNRCTL for Linux: Version 11.2.0.1.0 - Production on 18-DEC-2014 13:22:05Copyright (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 immediateDatabase 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$ lshc_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' mountORACLE instance started.Total System Global Area 1603411968 bytesFixed Size                  2213776 bytesVariable Size            1241516144 bytesDatabase Buffers          352321536 bytesRedo Buffers                7360512 bytesDatabase 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.dbf6 rows selected.SQL> select file_name from dba_temp_files;FILE_NAME--------------------------------------------------------------------------------/oracle_data/temp01.dbfSQL> select name from v$controlfile;NAME--------------------------------------------------------------------------------/oracle_data/control01.ctl/home/app/ora11g/flash_recovery_area/dbtest/control02.ctlSQL> 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 immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area 1603411968 bytesFixed Size                  2213776 bytesVariable Size            1241516144 bytesDatabase Buffers          352321536 bytesRedo Buffers                7360512 bytesDatabase 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表空间。

 

转载于:https://www.cnblogs.com/opalyao/p/4172137.html

你可能感兴趣的文章
OpenCV 入门
查看>>
css 3D transform变换
查看>>
ele表格合并行之后的selection选中
查看>>
正则表达式分解剖析(一文悟透正则表达式)
查看>>
解决UILable标点符号居中的问题
查看>>
HTML5新特性教程
查看>>
ImageOptim-无损图片压缩Mac版
查看>>
12 Go语言map底层浅析
查看>>
vue-resumer 项目中 element-ui 遇到的 textarea autosize 问题
查看>>
以主干开发作为持续交付的基础
查看>>
PHP扩展库PEAR被攻击,近半年下载者或被影响
查看>>
传统运维团队转型应该注意哪些问题?
查看>>
JavaScript函数(二)
查看>>
Airbnb改进部署管道安全性,规范部署顺序
查看>>
腾讯最大规模裁撤中层干部,让贤年轻人
查看>>
当我们谈性能的时候,我们实际上在谈什么?
查看>>
蔡超:入门 Go 语言必须跨越的五个思维误区
查看>>
使用Akka Actor和Java 8构建反应式应用
查看>>
curl常用命令详解
查看>>
saltstack 添加计划任务
查看>>