背景:
      最近因为一次设备故障,导致一台运行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. [Network] HTML、XML和JSON学习汇总

    写在前面:楼主也是刚刚接触这方面的知识,之前完全是零基础,后来经朋友推荐了几个不错的博文,看完以后豁然开朗.但是此博文更加偏重于基础知识介绍(其实更深的楼主也还不了解,这方面的大神请绕道),只是分享个 ...

  2. 如何设置phpMyAdmin自动登录和取消自动登录

    如何设置phpMyAdmin自动登录? 首先在根目录找到config.sample.inc.php复制一份文件名改为config.inc.php(如果已经存在 config.inc.php 文件,则直 ...

  3. BZOJ 3261: 最大异或和

    Description 一个序列,支持两个操作. 1.在序列尾加入一个数. 2.询问 [l,r] 中与 x 异或值最大的数. \(n\leqslant 3*10^5\) Sol 可持久化 Trie 树 ...

  4. poj 2503(字符串)

    http://poj.org/problem?id=2503 题意:就是翻译,给你一个字典,然后再查找单词,找得到的就输出单词,找不到的输出eh,用Map水题一个,但这个题有点意思的就是输入的问题 # ...

  5. java17

    1:登录注册案例(理解) 2:Set集合(理解) (1)Set集合的特点 无序,唯一 (2)HashSet集合(掌握) A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法: ...

  6. C++库(Google Breakpad)

    Google Breakpad是什么? 一个开源的多平台崩溃报告系统. Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,它支持Windows,Linux和Mac和Solari ...

  7. .NET LINQ Set 运算

    Set 运算      LINQ 中的 Set 操作是指根据相同或不同集合(或集)中是否存在等效元素来生成结果集的查询操作. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表 ...

  8. node05-fs

    目录:node01-创建服务器 node02-util node03-events node04-buffer node05-fs node06-path node07-http node08-exp ...

  9. AutoMapper搬运工之自定义映射

    回顾 上节说到了AutoMapper的简单使用,对于复杂的Mapping需要强大的自定义,这节我们来看下AutoMapper的自定义Mapping(Projection) 搬运自Git:https:/ ...

  10. 大部分人都会做错的经典JS闭包面试题

    由工作中演变而来的面试题 这是一个我工作当中的遇到的一个问题,似乎很有趣,就当做了一道题去面试,发现几乎没人能全部答对并说出原因,遂拿出来聊一聊吧. 先看题目代码: function fun(n,o) ...