Oracle数据库从A服务器到B服务器的转移

有时候我们会遇到这样的情况,现有的数据库要从一个机器转移到另外一个机器上,一般我们会使用导出,导入。但是如果数据库的数据

有时候我们会遇到这样的情况,现有的数据库要从一个机器转移到另外一个机器上,一般我们会使用导出,导入。但是如果数据库的数据非常多,数据文件尺寸很大,那么在导出导入的过程就很可能会出现问题,并且漫长的过程也是我们无法容忍的。 在这种情况下,我们可以简单地使用操作系统的copy命令,直接进行数据库的转移。以下示例均在RedHat Fedora Core 1上的Oracle9.2.0.1中操作,其它操作系统和Oracle版本同样适用。假设我们的数据库在服务器A上,$ORACLE_BASE是/oracle,$ORACLE_HOME是 /oracle/product/9.2.0。现在我们要将此数据库转移到服务器B上,并且新的$ORACLE_BASE是/u01/oracle,$ ORACLE_HOME是/u01/oracle/product/9.2.0。SID是oralinux。

操作步骤如下:

一. 在服务器B上安装Oracle,安装过程中不要创建数据库。
用户的profile直接从服务器A上copy过来即可,注意需要修改原先的$ORACLE_HOME到现在的位置。

二. 如果服务器A上的Oracle使用的是spfile,那么根据此spfile创建pfile:
create pfile from spfile;

三. 关闭服务器A上的数据库,shutdown immediate。如果数据库不允许关闭,
那么可以使用联机备份,这种情况数据库必须处于archivelog模式,
转移的原理和允许关闭的情况一样,此处不作讨论。

四. 备份服务器A上的所有数据文件,包括以下:
a) 所有的datafile(临时文件可以不copy,比如temp01.dbf)
b) 所有的online redo log
c) 所有的archive redo log
d) 所有的control file
e) $ORACLE_HOME/dbs/init.ora(此文件是在上面第二步中创建的)
f) $ORACLE_HOME/dbs/orapw(这是password file)
g) $ORACLE_HOME/network/listener.ora(这步可以省略,以后重新生成也可以)
h) $ORACLE_BASE/admin//下的所有目录,一般是udump, cdump,
bdump(这步可以省略,以后手工创建目录也可以)

五.通过FTP或者别的工具将上述的备份文件,全部上传到服务器B的相应目录中。比如说原来在服务器A上$ORACLE_BASE/oradata//system01.dbf,现在就上传到服务器B上$ORACLE_BASE/oradata/ /system01.dbf,保证目录的逻辑结构一样,实际上物理结构已经发生了变化(A上$ORACLE_BASE是/oracle,而B上是 /u01/oracle)。其它的文件均作相同处理,如果服务器B上还没有相应的目录,那么就手工创建。

六. 编辑上传到服务器B上的init.ora文件,将其中涉及的目录结构全部改为B中目前的目录结构,比如本例中就是将/oracle改为/u01/oracle。

七. 在服务器B上,sqlplus “/ as sysdba”,提示进入空闲进程。

八. 根据修改过的pfile创建spfile,create spfile from pfile;

九. 启动数据库到mount状态,startup mount;

十. 修改control file中所有数据文件的位置,可以通过spool生成所有的SQL:
SQL> alter database rename file ‘/oracle/oradata/oralinux/system01.dbf’
2 to ‘/u01/oracle/oradata/oralinux/system01.dbf’;
按照以上语法修改所有的数据文件位置。

十一. 此时数据库已经可以使用了,alter database open;

十二. 将临时文件添加到TEMP表空间中:
alter tablespace TEMP add tempfile
‘’/u01/oracle/oradata/oralinux/temp01.dbf’ size 20M;

十三.还有一些后续工作,包括更新数据库B上的监听配置文件(其实可以不用管,因为9i的实例已经可以自动注册到监听程序上了,,如果是先起监听再起数据库,那么立刻就会注册,如果是先起数据库再起监听,那么会稍微有些延时才注册),修改/etc/oratab文件,以能够使用dbstart和dbshut脚本。 这样数据库就算完全转移了。 

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1968471.html

(0)
上一篇 2025年2月23日 07:23:59
下一篇 2025年2月23日 07:24:15

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • ORACLE 用户权限管理

    今天带大家一起来了解一下ORACLE 的用户权限管理。创建新的用户只能是oracle的DBA管理者的事。 语句:Create user TestUser identified by testPass; 其中TestUser是用户名,test…

    2025年2月23日
    100
  • 小白学Oracle第二关之第一个oracle数据库表的创建

    现如今在实际工作中,在数据库中创建表是经常会用到的。本文中小编主要给大家来分享一下在数据库如何通过sql语句去创建表。首先,先使用plsql连接到oracle数据库,先保证下面的服务是开启的。   我们本次创建表的需求是:创建一张班级表,和…

    2025年2月23日 数据库
    100
  • oracle删除重复数据保留第一条记录

    oracle删除重复数据保留第一条记录 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group byId having cou…

    2025年2月23日
    100
  • oracle如何修改字段长度

    oracle如何修改字段长度 使用modify关键字来实现对数据类型的修改:alter table 表名 modify 字段名 数据类型; 1、表中已存有数据 ALTER table tableName MODIFY (字段名 字段类型(长…

    2025年2月23日
    100
  • oracle如何删除表数据

    oracle如何删除表数据 删除表内容的两种方法 1、truncate table 表名; 2、delete from 表名 where 条件; 两种方法的区别: truncate,意思为截断表,能够不占用资源的全部删除表,优点是速度快,缺…

    2025年2月23日
    100
  • oracle如何修改表名

    oracle如何修改表名 方式一 alter table old_table_name rename to new_table_name; 登录后复制 这是最简单的(个人认为) 方式二: 推荐:《SQL教程》 select tname fr…

    2025年2月23日
    100
  • Oracle建表语句是什么

    oracle建表语句是什么 oracle数据库的建表语句,具体语法如下: CREATE TABLE tablename(    column_name datatype [null,not null],    column_name dat…

    2025年2月23日
    100
  • oracle中exists的用法

    oracle中exists的用法 1、exists后面接的是一个子查询  2、以下图两个表为示例,来演示 a表中的id   与b表中的aid相关联 推荐学习:SQL教程 3、exists的作用是检查子查询的结果是否为真,如果子查询为true…

    2025年2月23日 数据库
    100
  • oracle截取字符串前几位的方法

    oracle截取字符串前几位的方法 Oracle提前某数据的前几位用substr函数。 如test表中数据如下: 现要提取dept字段中的前两位,可用如下语句: select id,name,substr(dept,1,2) from te…

    2025年2月23日
    100
  • oracle中exists有什么用法

    exists后面接的是一个子查询 以下图两个表为示例,来演示 a表中的id与b表中的aid相关联 exists的作用是检查子查询的结果是否为真,如果子查询为true则执行外面的SQL语句。 exists不返回数据只返回true 或false…

    2025年2月23日 数据库
    100

发表回复

登录后才能评论