设为首页 收藏本站
查看: 571|回复: 0

[经验分享] Oracle在不同windows系统中的迁移

[复制链接]

尚未签到

发表于 2016-5-20 11:43:45 | 显示全部楼层 |阅读模式
  在Windows操作系统环境下运行的Oracle系统。很不幸的是,格式化C盘Windows系统重装了,Oracle不能用了。这时你会怎么做。最笨最保险的方法,重装oracle系统。因为我们都知道如果是在linux下很容易实现了,拷贝拷贝oracle系统文件,配置配置环境变量即可,但在windows下就不那么简单了。Oracle数据库系统,不仅仅是一些oracle系统文件,还有一些和注册表及windows服务密切相互的配置信息。更有甚者,如果Windows系统不是重装,而是升级了,例如从Windows2003升级到Windows2008,我们又该怎么办?
  
  (miki西游 @mikixiyou 原文链接: http://mikixiyou.iyunv.com/blog/1766889
)


虽然Windows升级了,只要Oracle系统还能在新系统上正常运行,我们就能在不重装ORACLE的前提下将Oracle运行起来。

刚好有这样一个案例,运行在Windows2003上的oracle 10.2.0.4,需要迁移到一个新采购服务器上。新服务器,你知道的,一般都说只能安装最新的系统,这里就选择安装了Windows2008。

如果是你,你会怎么处理这个需求?我开始想到的是在windows2008上安装oracle 10.2.0.1,再升级到10.2.0.4。因为对windows真的不熟悉,也没能力去学好它,所以采用这种最笨但是最保险的方法。但是,oracle 10.2.0.1不能在windows2008上安装,执行setup.exe直接给我中止,报什么未知错误。oracle以前倒是提供了一个10.2.0.3 for vista的版本,据说可以在windows2008上安装。但是在oracle网站上现在也下载不到了。这个windows 2008又是R2版的,右键点setup.exe 选属性,选兼容模式,也没有windows2003可兼容。

没有其他办法了,手工来配置吧。注意,我从oracle文档中证实了Windows2008上是能运行oracle 10.2.0.4的,所以才想手工配置方法。如果不能跑oracle 10.2.0.4,那么只好老老实实升级oracle到11g了。


我一开始就想,参照着linux下迁移方法,就配置配置环境变量,拷贝拷贝oracle系统文件,看看Oracle系统文件中的数据库实例能不能启动起来。

set PATH=D:\oracle\product\10.2.0\db_1\bin;%PATH%
set ORACLE_HOME=D:\oracle\product\10.2.0\db_1
set ORACLE_SID=mikidb

  

在cmd中设置了这三个环境变量值,使用sqlplus / as sysdba连接,

D:\oracle\product\10.2.0\db_1\database>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Jan 9 11:18:23 2013
Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
ERROR:
ORA-12560: TNS:protocol adapter error
  

结果是直接给我报了"ORA-12560: TNS:protocol adapter error"错误。


这个错误可能会是操作系统用户不属于ora_dba组,监听没启动,windows服务没配置或没启动,参数配置不正确等等因素导致的。


在这台windows2008上,系统用户因为安装过11g,所以它已经属于ora_dba组了。监听和windows服务那是没有的,还没有配置呢。


我又测试了dbca建库操作,在建库进度条2%处,出错,报ORA-12560。搜了metalink,说这是一个bug。在windows 2008上oracle 10.2.0.4会发生,只好下载补丁包去apply。这里又因为没有oinventory,我又opatch apply了半天。

Symptoms
Install Oracle 10.2.0.3 (Vista/2008 version) on Windows 2008 Active Directory Controller.
When trying to create the database, around 2% completion, the error ORA-12560 will occur.

This Problem can occur on both 32bit and 64bit.
This Problem does NOT reproduce on a Member server. Only the Active Directory Controller.

Cause
BUG 7263061.
Solution
For Oracle 10.2.0.4:
This issue has been resolved in the Oracle 10.2.0.4 Patch 14 patch.
Patch number 7677780 (MS Windows 32bit), or Patch number 7677781 (MS Windows 64bit (x64)).
NOTE: You will need to be at the 10.2.0.4 version, before applying this patch.
  


在opatch apply这个补丁包时,我又伪造了oinventory的信息。将windows2003的c盘的program file的oracle目录也拷贝了一份过来。使opatch apply操作成功。



我再回到windows服务上来,手工新建windows服务。但如何新建呢,没经验啦,google一下。


oradim -new -sid mikidb -startmode auto -pfile d:\oracle\product\10.2.0\db_1\database\INITmikidb.ORA


服务导致一下子就创建成功,但在windows服务中死活也起不来,说系统找不到文件,要找啥文件呢?


想想还有注册表中的oracle信息可以添加。参照windows 2003上关于oracle软件的注册表信息,照猫画虎,将记录都添加上。完事后,我导出了一份。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE]
@=""
"inst_loc"="C:\\Program Files\\Oracle\\Inventory"
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1]
"ORACLE_BASE"="d:\\oracle\\product\\10.2.0"
"ORACLE_BUNDLE_NAME"="Enterprise"
"ORACLE_GROUP_NAME"="Oracle - OraDb10g_home1"
"ORACLE_HOME"="d:\\oracle\\product\\10.2.0\\db_1"
"ORACLE_HOME_KEY"="SOFTWARE\\ORACLE\\KEY_OraDb10g_home1"
"ORACLE_HOME_NAME"="OraDb10g_home1"
"ORACLE_SID"="mikidb"
"ORA_mikidb_AUTOSTART"=hex(2):54,00,52,00,55,00,45,00,00,00
"ORA_mikidb_SHUTDOWN"=hex(2):54,00,52,00,55,00,45,00,00,00
"ORA_mikidb_SHUTDOWNTYPE"=hex(2):69,00,6d,00,6d,00,65,00,64,00,69,00,61,00,\
74,00,65,00,00,00
"ORA_mikidb_SHUTDOWN_TIMEOUT"=hex(2):39,00,30,00,00,00
"NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
  

然后再使用oradim将服务删除掉重建。

D:\oracle\product\10.2.0\db_1\database>sc delete OracleServicemikidb
[SC] DeleteService 成功
D:\oracle\product\10.2.0\db_1\database>oradim -new -sid mikidb -startmode auto
-pfile d:\oracle\product\10.2.0\db_1\database\INITmikidb.ORA
Instance created.
  

最终给了我一个instance created的反馈。到windows服务中,能手工重启这个服务。在cmd中,配置好环境变量后,使用sqlplus / as sysdba也能连接到这个实例。


到此,oracle 10.2.0.4的实例已经能跑在windows 2008上,任务完成。


回想一下,如果不打那个补丁,行不行呢。我又将d盘的oracle目录恢复成没打补丁之前,发现也行,没出现ORA-12560错误,实例也正常。再使用dbca新建一个库,也成功了。应该是这个ORA-12560问题和这个bug没有关系,根本原因还是我在开始配置不正确。


总结一下,在windows操作系统迁移中,主要配置有三项。1、操作系统用户所属组是否有ora_dba;2、注册表是否配置了oracle项;3、windows服务是否新建了数据库实例服务。这三项都正确了,一般都能成功的。其他如监听器的配置,可用netca自己配。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-219556-1-1.html 上篇帖子: 深入解析Windows系统两大进程 下篇帖子: Windows下SVN服务器的搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表