背景:
      最近因为一次设备故障,导致一台运行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. - Production on 星期四 4月 :: Copyright (c) , , Oracle. All rights reserved. SQL> conn /as sysdba
ERROR:
ORA-: 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. - Production on 星期四 4月 :: Copyright (c) , , Oracle. All rights reserved. SQL> conn /as sysdba
已连接到空闲例程。
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-: failure in processing system parameters
LRM-: ???????????????? '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 Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
数据库装载完毕。

7.修改文件对应的路径

--数据文件

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\SYSTEM01.DBF
D:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\UNDOTBS01.DBF
D:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\SYSAUX01.DBF
D:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\USERS01.DBF
D:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\TEST01.DBF
D:\ORACLE\PRODUCT\10.2.\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 from v$datafile; NAME
--------------------------------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\SYSTEM01.DBF
C:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\UNDOTBS01.DBF
C:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\SYSAUX01.DBF
C:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\USERS01.DBF
C:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\TEST01.DBF
C:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\TEST02.DBF 已选择6行。

--日志文件

SQL> select group#,member from v$logfile;

    GROUP# MEMBER
---------- --------------------------------------------------
D:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\REDO03.LOG
D:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\REDO02.LOG
D:\ORACLE\PRODUCT\10.2.\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 from v$logfile; GROUP# MEMBER
---------- --------------------------------------------------
C:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\REDO03.LOG
C:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\REDO02.LOG
C:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\REDO01.LOG

--临时文件

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.\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 from v$tempfile; NAME
--------------------------------------------------------------------------------
C:\ORACLE\PRODUCT\10.2.\ORADATA\ZDJS\TEMP01.DBF

8.打开数据库

SQL> alter database open;

数据库已更改。

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ WRITE SQL> select status from v$instance; STATUS
------------------------
OPEN

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

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

C:\Windows\system32>lsnrctl status

LSNRCTL for -bit Windows: Version 10.2.0.1. - Production on -4月 - ::

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

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=RLSC-SERVER)(PORT=)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for -bit Windows: Version 10.2.0.1. - Production
启动日期 -4月 - ::
正常运行时间 天 小时 分 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 C:\oracle\product\10.2.\db_1\network\admin\listener.ora
监听程序日志文件 C:\oracle\product\10.2.\db_1\network\log\listener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=RLSC-SERVER)(PORT=)))
服务摘要..
服务 "PLSExtProc" 包含 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 个处理程序...
服务 "PSDB0XDB" 包含 个例程。
例程 "psdb0", 状态 READY, 包含此服务的 个处理程序...
服务 "PSDB0_XPT" 包含 个例程。
例程 "psdb0", 状态 READY, 包含此服务的 个处理程序...
服务 "ZDJSXDB" 包含 个例程。
例程 "zdjs", 状态 READY, 包含此服务的 个处理程序...
服务 "ZDJS_XPT" 包含 个例程。
例程 "zdjs", 状态 READY, 包含此服务的 个处理程序...
服务 "psdb0" 包含 个例程。
例程 "psdb0", 状态 READY, 包含此服务的 个处理程序...
服务 "zdjs" 包含 个例程。
例程 "zdjs", 状态 READY, 包含此服务的 个处理程序...
命令执行成功

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

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

记一次windows下物理迁移数据库的过程的更多相关文章

  1. 在linux和windows下自动备份数据库

    摘要: 详细介绍在windows和linux下自动备份数据库的过程,希望可以让新手立即上手吧! 本文档内容共分为2大部分:linux和windows Linux和windows都分为:准备工作和操作阶 ...

  2. Windows下更改MySQL数据库的存储位置

    在MySQL安装完成后,要修改数据库存储的位置,比如从安装目录下的C:\Program Files\MySQL\MySQL Server 5.0\Data文件夹转移到D:\mySQLData文件夹. ...

  3. < python音频库:Windows下pydub安装配置、过程出现的问题及常用API >

    < python音频库:Windows下pydub安装配置.过程出现的问题及常用API > 背景 刚从B站上看过倒放挑战之后也想体验下,心血来潮一个晚上完成了基本的实现.其中倒放与播放部分 ...

  4. Windows下安装Redis数据库并实现C#访问

    1.Redis在Windows下的安装 目前Redis官方并不支持Redis的Windows版本,需要去GitHub下载. GitHub上的Redis分两种,一种是以命令行形式安装的,一种是以Wind ...

  5. windows下安装DB2数据库以及使用Aqua Data Studio链接数据库

    本文只是作为自己的心得体会,不具有一般性! 1.其实安装DB2数据库还是比较简单的,一般都是直接下一步下一步就可以了,只是有些地方需要注意.我安装的DB2数据库版本如下图所示: 2.拿到数据库的版本之 ...

  6. windows 下创建 sqlite 数据库

    说明:windows 下执行创建 sqlite 数据库命令后数据库文件不会马上生成,需要创建表以后才会生成. 1.将 sqlite3.exe 文件放在任何位置(如放在 d:\tools )2.在 CM ...

  7. python在windows下连接mysql数据库

    一,安装MySQL-python python 连接mysql数据库需要 Python interface to Mysql包,包名为 MySQL-python ,PyPI上现在到了1.2.5版本.M ...

  8. Windows下安装Python数据库模块--MySQLdb

    ## 1.下载MySQLdb [去官网](http://pypi.python.org/pypi/MySQL-python/) 下载对应的编译好的版本(现在官网最新版本为1.2.5): MySQL-p ...

  9. windows下oracle 11g r2 安装过程与卸载详细图解

    Oracle 11g安装 1.解压下载的包,然后进入包内,点击setup.exe开始安装 . 2.出现如下:一般把那个小对勾取消,点击下一步进行, 弹出下图这个后点‘是' 3.下图后,选择创建和配置数 ...

随机推荐

  1. 解决VirtualBox只能安装32位系统的问题

    发现自己的笔记本(Thinkpad E440)里的 VirtualBox 只能安装 32位 的系统,如下图所示: 经过一番查资料,发现这玩意需要到BIOS里设置一下,方可安装 64位 系统,操作如下: ...

  2. 修复 ThinkPHP3.2.3 抛出异常模块的一个BUG,关闭字段缓存功能

    使用 ThinkPHP3.2.3 遇到一个奇怪的问题,正式环境上报错,提示 “页面错误!请稍后再试~” 为了查看到底出啥错误,哪里出错,于是在入口文件中加了一段代码,开启调试: defined('AP ...

  3. JAVA的i++, i+=1, i=i+1有区别吗?

    看一些JAVA基础题的时候,经常看到这个问题,很多人的解释是:i++最快,i+=1其次,i=i+1最慢.下面通过Sun JDK编译出来的字节码验证一下这个问题. 为了让编译出来的字节码便于阅读,将这三 ...

  4. PL/SQL Developer 连接 64位Oracle 服务端 解决方案

    PL/SQL是32位程序,只能通过32位的Oracle驱动连接Oracle服务器.如果Oracle服务器是64位的,那么只能通过需要通过一个32位的Oracle客户端,来搭建连接. 到官网下载一个客户 ...

  5. Android 如何在 ListView 中更新 ProgressBar 进度

    =======================ListView原理============================== Android 的 ListView 的原理打个简单的比喻就是: 演员演 ...

  6. 动态执行python脚本

    前言 存在许多独立的python脚本,这些脚本可能会增加,也可能会减少,现在需要按照某种顺序调度这些程序.在python的standard library中,有一个模块imp可以实现动态的调用ptho ...

  7. js 连续赋值。。理解不了,先占坑

    http://www.cnblogs.com/xxcanghai/p/4998076.html

  8. ffmpeg-20160831-bin.7z

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 5 屏幕横向放大 20 像素 6 屏幕横向缩小 20 像素 S 下一帧 [ -2秒 ] +2 ...

  9. Xcode 中的相对路径与绝对路径的相关设置

    近日闲来无事,与博客园中闲荡,忽至一烟霞照耀祥瑞蒸熏松竹翠秀奇花遍开的神奇之地.如此美景,令人心生向往,故而徜徉于其中不可自拔,独乐乐不如众乐乐: iOS开发之 相对路径与绝对路径 https://d ...

  10. 网络编程之getaddrinfo

    IPv4中使用gethostbyname()函数完成主机名到地址解析,但是该API不允许调用者指定所需地址类型的任何信息,返回的结构只包含 了用于存储IPv4地址的空间.为了解决该问题,IPv6中引入 ...