win系统mysql迁移数据库_记一次windows下物理迁移数据库的过程

本文记录了一次在Windows系统下进行MySQL数据库物理迁移的过程,包括拷贝数据文件、创建实例、修改配置、启动数据库等关键步骤,最终成功迁移并验证了数据库的可用性。
摘要由CSDN通过智能技术生成

背景:

最近因为一次设备故障,导致一台运行windows环境下的机器无法启动,里面有一个正在使用的财务数据库,该数据库也只是每月使用一次,需要把物理数据迁移出来,于是拔出了故障机器的硬盘,通过一个专门的硬盘接口器读取了数据的数据库数据来做物理迁移。

把物理数据库拷入新机器,以下所有操作都在新机器上进行。

1.拷入spfile和数据文件到对应的目录

把spfile拷入$ORACLE_HOME/dbs下

把数据库物理文件拷入$ORACLE_BASE/oradata下

在$ORACLE_BASE/admin/下创建adump bdump cdump udump文件下

2.登录sqlpus 报ora-12560错误

C:\Windows\system32>set ORACLE_SID=ZDJS

C:\Windows\system32>echo %ORACLE_SID%ZDJS

C:\Windows\system32>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 4月 23 16:37:07 2015Copyright (c)1982, 2005, Oracle. All rights reserved.

SQL> conn /assysdba

ERROR:

ORA-12560: TNS: 协议适配器错误

这一点和liunx下是不同的,windows下不会自动地创建实例,我们需要手动创建实例。

3.使用oradim工具创建对应数据库实例

C:\Windows\system32>oradim -new -sid ZDJS -startmode auto -spfile

实例已创建。

C:\Windows\system32>set ORACLE_SID=ZDJS

C:\Windows\system32>echo %ORACLE_SID%ZDJS

C:\Windows\system32>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 4月 23 16:40:05 2015Copyright (c)1982, 2005, Oracle. All rights reserved.

SQL> conn /assysdba

已连接到空闲例程。

SQL>

注意:使用oradim工具创建创建新实力后,可以在系统服务里自动生成对应的服务OracleServiceZDJS   OracleJobSchedulerZDJS

windows上删除服务:

C:\Windows\system32>sc delete OracleServiceZDJS

[SC] DeleteService 成功

C:\Windows\system32>sc delete OracleJobSchedulerZDJS

[SC] DeleteService 成功

C:\Windows\system32>sc delete OracleDBConsolezdjs

[SC] DeleteService 成功

创建实例后我们就可以连接到一个空闲例程里。

4.利用spfile生产pfile

SQL> create pfile='C:\oracle\product\10.2.0\db_1\dbs\INITZDJS.ORA' from spfile='C:\oracle\product\10.2.0\db_1\dbs\SPFILEZDJS.ORA';

文件已创建。

5.手动修改pfile中的路径dump文件及控制文件路径

*.audit_file_dest='D:\oracle\product\10.2.0/admin/ZDJS/adump'

*.background_dump_dest='D:\oracle\product\10.2.0/admin/ZDJS/bdump'

*.control_files='D:\oracle\product\10.2.0/oradata/ZDJS/\control01.ctl','D:\oracle\product\10.2.0/oradata/ZDJS/\control02.ctl','D:\oracle\product\10.2.0/oradata/ZDJS/\control03.ctl'

*.core_dump_dest='D:\oracle\product\10.2.0/admin/ZDJS/cdump'

*.user_dump_dest='D:\oracle\product\10.2.0/admin/ZDJS/udump'

修改为:

*.audit_file_dest='C:\oracle\product\10.2.0\admin\ZDJS\adump'

*.background_dump_dest='C:\oracle\product\10.2.0\admin\ZDJS\bdump'

*.control_files='C:\oracle\product\10.2.0\oradata\ZDJS\control01.ctl','C:\oracle\product\10.2.0\oradata\ZDJS\control02.ctl','C:\oracle\product\10.2.0\oradata\ZDJS\control03.ctl'

*.core_dump_dest='C:\oracle\product\10.2.0\admin\ZDJS\cdump'

*.user_dump_dest='C:\oracle\product\10.2.0\admin\ZDJS\udump'

6.利用pfile生成spfile,把原spfile删除

SQL> create spfile='C:\oracle\product\10.2.0\db_1\dbs\SPFILEZDJS.ORA' from pfile='C:\oracle\product\10.2.0\db_1\dbs\INITZDJS.ORA';

文件已创建。

7.使用spfile把数据库启动到mount状态

SQL>startup mount

ORA-01078: failure inprocessing system parameters

LRM-00109: ???????????????? 'C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INITZDJS.ORA'

注意到提示的路径下查看文件C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INITZDJS.ORA

查看该路径下文件是否存在,如果不存在创建该文件,如果存在则修改为:

SPFILE='C:\oracle\product\10.2.0\db_1\dbs\SPFILEZDJS.ORA'

注意后面没有';'

重新启动数据库到mount状态:

SQL>startup mount

ORACLE 例程已经启动。

Total System Global Area1199570944bytes

Fixed Size1332300bytes

Variable Size537537460bytes

Database Buffers654311424bytes

Redo Buffers6389760bytes

数据库装载完毕。

7.修改文件对应的路径

--数据文件

SQL> select name fromv$datafile;

NAME--------------------------------------------------------------------------------D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\SYSTEM01.DBF

D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\UNDOTBS01.DBF

D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\SYSAUX01.DBF

D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\USERS01.DBF

D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\TEST01.DBF

D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\TEST02.DBF

已选择6行。

SQL> alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\SYSTEM01.DBF' to 'C:\oracle\product\10.2.0\oradata\ZDJS\SYSTEM01.DBF';

数据库已更改。

SQL> alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\UNDOTBS01.DBF' to 'C:\oracle\product\10.2.0\oradata\ZDJS\UNDOTBS01.DBF';

数据库已更改。

SQL> alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\SYSAUX01.DBF' to 'C:\oracle\product\10.2.0\oradata\ZDJS\SYSAUX01.DBF';

数据库已更改。

SQL> alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\USERS01.DBF' to 'C:\oracle\product\10.2.0\oradata\ZDJS\USERS01.DBF';

数据库已更改。

SQL> alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\TEST01.DBF' to 'C:\oracle\product\10.2.0\oradata\ZDJS\TEST01.DBF';

数据库已更改。

SQL> alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\TEST02.DBF' to 'C:\oracle\product\10.2.0\oradata\ZDJS\TEST02.DBF';

数据库已更改。

SQL> select name fromv$datafile;

NAME--------------------------------------------------------------------------------C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\SYSTEM01.DBF

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\UNDOTBS01.DBF

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\SYSAUX01.DBF

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\USERS01.DBF

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\TEST01.DBF

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\TEST02.DBF

已选择6行。

--日志文件

SQL> select group#,member fromv$logfile;

GROUP# MEMBER---------- --------------------------------------------------

3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\REDO03.LOG2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\REDO02.LOG1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\REDO01.LOG

SQL> alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\REDO01.LOG' to 'C:\oracle\product\10.2.0\oradata\ZDJS\REDO01.LOG';

数据库已更改。

SQL> alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\REDO02.LOG' to 'C:\oracle\product\10.2.0\oradata\ZDJS\REDO02.LOG';

数据库已更改。

SQL> alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\REDO03.LOG' to 'C:\oracle\product\10.2.0\oradata\ZDJS\REDO03.LOG';

数据库已更改。

SQL> select group#,member fromv$logfile;

GROUP# MEMBER---------- --------------------------------------------------

3 C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\REDO03.LOG2 C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\REDO02.LOG1 C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\REDO01.LOG

--临时文件

SQL> select name fromv$tempfile;

NAME--------------------------------------------------------------------------------D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\TEMP01.DBF

SQL> alter database rename file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\TEMP01.DBF' to 'C:\oracle\product\10.2.0\oradata\ZDJS\TEMP01.DBF';

数据库已更改。

SQL> select name fromv$tempfile;

NAME--------------------------------------------------------------------------------C:\ORACLE\PRODUCT\10.2.0\ORADATA\ZDJS\TEMP01.DBF

8.打开数据库

SQL>alter database open;

数据库已更改。

SQL> select open_mode fromv$database;

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

SQL> select status fromv$instance;

STATUS------------------------OPEN

至此数据库在新机器中打开,迁移完成。

9.验证数据库是否自动注册到监听里

C:\Windows\system32>lsnrctl status

LSNRCTLfor 32-bit Windows: Version 10.2.0.1.0 - Production on 24-4月 -2015 10:13:00Copyright (c)1991, 2005, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=RLSC-SERVER)(PORT=1521)))

LISTENER 的 STATUS------------------------别名 LISTENER

版本 TNSLSNRfor 32-bit Windows: Version 10.2.0.1.0 -Production

启动日期21-4月 -2015 11:30:42正常运行时间2 天 22 小时 42 分 19秒

跟踪级别 off

安全性 ON: Local OS Authentication

SNMP OFF

监听程序参数文件 C:\oracle\product\10.2.0\db_1\network\admin\listener.ora

监听程序日志文件 C:\oracle\product\10.2.0\db_1\network\log\listener.log

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=RLSC-SERVER)(PORT=1521)))

服务摘要..

服务"PLSExtProc" 包含 1个例程。

例程"PLSExtProc", 状态 UNKNOWN, 包含此服务的 1个处理程序...

服务"PSDB0XDB" 包含 1个例程。

例程"psdb0", 状态 READY, 包含此服务的 1个处理程序...

服务"PSDB0_XPT" 包含 1个例程。

例程"psdb0", 状态 READY, 包含此服务的 1个处理程序...

服务"ZDJSXDB" 包含 1个例程。

例程"zdjs", 状态 READY, 包含此服务的 1个处理程序...

服务"ZDJS_XPT" 包含 1个例程。

例程"zdjs", 状态 READY, 包含此服务的 1个处理程序...

服务"psdb0" 包含 1个例程。

例程"psdb0", 状态 READY, 包含此服务的 1个处理程序...

服务"zdjs" 包含 1个例程。

例程"zdjs", 状态 READY, 包含此服务的 1个处理程序...

命令执行成功

10.最后可以验证一下数据库在windows环境下是否能够自动开机启动

经验证数据库在新机器是能够正常开机启动的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值