迁移中修改oracle数据库名及实例名

        因工作需要,需要将部署在两台虚拟机且数据库名相同的oracle数据库迁移到一台物理机上。一个数据库500G,一个100G,若不考虑数据库名相同的情况下,最简便的办法是停数据库,然后将数据文件、联机日志文件、控制文件、口令文件、spfile、tnsname等文件一并拷贝到新服务器上即可直接使用,但是数据库名、实例名相同则无法这样实现。

本计划通过冷备份的方式将500G的数据库拷贝到新服务器上,然后再通过expdp或exp方式将100G的数据库导入到新服务器上实现迁移的目的,但是在使用exp的过程中出现特殊字符类型无法导出,该方式便无法实现,便有了本次数据库名及实例名修改的试验。

      从网上大致看了下修改方法,结合我的环境情况做些修改,更简单即可实现:

      一、在新服务器上新建一个数据库实例powersi,原库的实例名为orcl。

      1、创建完成后,关闭数据库,并删除新建实例的数据文件、联机日志文件、控制文件。

      2、将orcl库使用nohup scp方式远程拷贝到新库中对应的datafile、online file、controlfile文件位置;

(另外说明后台scp方法:nohup scp *.dbf oracle@192.168.168.220:/oradata/ 回车后按照提示输入密码,再按CTRL+Z将任务挂住,之后再输入命令bg放在后台继续执行。)

      二、手工创建控制文件,修改数据库名

      在新库上以nomount 方式启动数据库,手工创建控制文件,命令如下:

CREATE CONTROLFILE SET DATABASE  "powersi"  RESETLOGS NOARCHIVELOG
    MAXLOGFILES 5
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 226
LOGFILE
  GROUP 1 '/oradata/POWERSI/datafile/redo01.log' SIZE 50M, 
  GROUP 2 '/oradata/POWERSI/datafile/redo02.log' SIZE 50M,
  GROUP 3 '/oradata/POWERSI/datafile/redo03.log' SIZE 50M
DATAFILE
'/oradata/POWERSI/datafile/system01.dbf',
'/oradata/POWERSI/datafile/sysaux01.dbf',
'/oradata/POWERSI/datafile/undotbs01.dbf',
'/oradata/POWERSI/datafile/users01.dbf',
'/oradata/POWERSI/datafile/hygeia01.dbf',
'/oradata/POWERSI/datafile/hygeia02.dbf',
'/oradata/POWERSI/datafile/hygeia03.dbf',
'/oradata/POWERSI/datafile/hygeia04.dbf',
'/oradata/POWERSI/datafile/hygeia05.dbf',
'/oradata/POWERSI/datafile/hygeia06.dbf',
'/oradata/POWERSI/datafile/hygeia07.dbf',
'/oradata/POWERSI/datafile/hygeia08.dbf',
'/oradata/POWERSI/datafile/hygeia09.dbf',
'/oradata/POWERSI/datafile/hygeia10.dbf'
CHARACTER SET ZHS16GBK;

提示“Control file created.”即完成创建,创建的文件为spfile文件中controlfile中指定的位置。

ALTER DATABASE OPEN RESETLOGS;     --resetlogs方式打开数据库;
ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/POWERSI/datafile/temp01.dbf' size 10g  AUTOEXTEND ON NEXT 512m;      --添加临时文件;


     三、重启数据库实例,验证是否有问题

SQL> show parameter name;


NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert     string
db_name     string powersi
db_unique_name     string powersi
global_names     boolean FALSE
instance_name     string powersi
lock_name_space     string
log_file_name_convert     string
processor_group_name     string
service_names     string powersi


SQL> select open_mode from v$database;


OPEN_MODE
--------------------
READ WRITE

SQL> select instance_name from v$instance;


INSTANCE_NAME
----------------
powersi



       采用该种方式通过新建数据库实例从而修改了数据库instance name,通过重建控制文件修改了database name。重建控制文件将导致丢失rman的备份记录,所以建议迁移后立即进行rman备份。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值