导读:
在Windows上如果系统崩溃了,数据文件、控制文件、日志文件等都还在,怎样来恢复Oracle数据库?
前几天重新安装了系统,正好需要恢复一下数据库。
如果软件也损失了,那么需要重新安装一下数据库软件,以恢复Windows相关环境变量等信息。
很多人抱怨我的新书很少关于Windows的内容,实际上,Windows和Linux/Unix上的操作没有什么不同,Windows本身就是一个仿Unix的系统。
那么好吧,我还是用一个系列的文章介绍一下我所使用的Windows系统,以及我所认为的数据库系统无关性。
大家可以跟随我看一下这样一个过程。
首先开启一个cmd命令行窗口。
开始->运行->cmd
我的Oracle软件安装在D:/oracle :
D:/>dir oracle
驱动器 D 中的卷是 PRIVAT
卷的序列号是 94B0-FD3B
D:/oracle 的目录
2006-08-16 14:14
.
2006-08-16 14:14
..
2006-08-16 14:14
ora10gR2
0 个文件 0 字节
3 个目录 941,744,128 可用字节
我的数据文件位于D:/oradata下:
D:/>dir d:/oradata
驱动器 D 中的卷是 PRIVAT
卷的序列号是 94B0-FD3B
d:/oradata 的目录
2006-08-16 14:25
.
2006-08-16 14:25
..
2005-09-12 16:40
flash_recovery_area
2005-09-12 16:40
EYGLE
0 个文件 0 字节
4 个目录 941,744,128 可用字节
现在让我们用oradim创建一个实例,实际上也就是创建一个Windows服务:
C:/>oradim -new -sid eygle
实例已创建。
我们用net命令可以查看系统启动了哪些服务,我们看到Oracle的服务已经启动:
C:/>net start
已经启动以下 Windows 服务:
...............
O&O Defrag
OracleServiceeygle
Plug and Play
Print Spooler
...............
命令成功完成。
如果你的系统装了一些Unix增强工具,那么可以通过grep过滤一下:
C:/>net start |grep Oracle
OracleServiceeygle
Unix命令工具可以在Sourceforge (http://sourceforge.net/projects/gnuwin32/) 下载.
此时我们就可以通过启动实例,挂接原有数据库,启动Oracle数据库了。当然你可能还有一些其他工作需要完成,比如重建口令文件等。
如果你想删除这个服务,那么也很简单:
C:/>oradim -delete -sid eygle
实例已删除。
当然做好备份仍然是最重要的,我见过有的企业将文件分散在很多逻辑分区上,结果随系统崩溃丢失了部分文件,损失也是相当惨重的。
在Linux/Unix上不需要服务来启动实例,也就不存在这样类似的操作。不过在命令行操作,一切都是类似的。
By eygle on 2006-08-18 10:27 | Comments (16)| Posted to FAQ| Tools| Edit|Pageviews:
网上相关主题:
留言 (16)
呵,你还是擅长使用命令行方式。在Windows下,创建ORACLE的实例需要有什么样的权限?
Posted by: Justinat August 18, 2006 10:58 AM
oradim本身就是命令行工具。
用户属于DBA组就行了,当然是管理员最好。
Posted by: eygleat August 18, 2006 11:01 AM
eygle:
从我生成的DBCA建库脚本中xirour10g.bat中可以看到如下内容:
D:/oracle/ora10g/bin/ oradim.exe-new -sid XIROUR10G -startmode manual -spfile
D:/oracle/ora10g/bin/ oradim.exe-edit -sid XIROUR10G -startmode auto -srvcstart system
为什么oracle执行2次oradim呢,我觉得一次直接自动启动实例就可以呀?
我想知道他这么做的用意,望老大指点一二
Posted by: xirour at August 18, 2006 11:02 AM
因为Oracle要用指定的参数文件启动实例阿,看后面的CreateDB.sql
里面有类似的一行:
startup nomount pfile="C:/oracle/admin/eygle/scripts/init.ora";
Posted by: eygleat August 18, 2006 11:07 AM
windows下的grep 可以在这里下载
http://sourceforge.net/projects/gnuwin32/
Posted by: qsxing at August 18, 2006 11:41 AM
意思是不是这样:
第一句,新建实例以spfile启动,因为目前没有spfile,所以手动启动,这时实际上启动了服务,但实例没有
第二句,修改实例的属性为自动启动实例,当系统重启的时候服务自动启动,实例随之启动
这样建库前以指定的pfile文件启动时其实服务是起来的,然后建好后以pfile生成spfile,然后重启的时候自动以spfile启动?
另外老大,回复页面可能有些问题,我直接回复会报错,说我短时间内老给你发信息,嘿嘿
Posted by: xirour at August 18, 2006 11:55 AM
xirour你最后的表述是正确的:)
Posted by: eygleat August 18, 2006 12:14 PM
谢谢qsxing提供的下载地址:)
Posted by: eygleat August 18, 2006 12:15 PM
首先开启一个cmd命令行窗口。
开始->运行->cmd
step by step :)
Posted by: leetaedong at August 18, 2006 3:24 PM
使用Oradim创建OracleServiceSID服务,然后手工启动instance,这样是没有问题,可是却不能通过直接启动OracleServiceSID服务来启动Oracle instance,怎么才能通过直接启动OracleServiceSID服务来启动Oracle instance呢
Posted by: 路过 at December 7, 2006 5:02 PM
可能需要修改注册表参数,不过Windows上最好不要设置Oracle自启动。
Posted by: eygleat December 8, 2006 9:45 AM
建立实例后要怎么还原啊,可不可以讲明白一点啊?
Posted by: hailang at December 19, 2006 11:22 AM
你恢复数据库文件到原来的目录结构就可以了。
Posted by: eygleat December 19, 2006 11:14 PM
盖大师:
oradim -new -sid happy -initpwd oracle
我在书上看到不少这样的例子,请问其中的-initpwd(不晓得记得对不对)是究竟干什么用的?
Posted by: Peifeiat August 24, 2007 10:14 AM
initpwd 参数用于初始化口令文件中的口令
Posted by: eygleat August 24, 2007 10:42 AM
真的不好意思,能说清楚一下子么。这个口令是不是SYS用户的口令啊(如果不加这个有什么影响?)。而且我在10g下好像没有这个选项,只有一个-SYSPWD,是不是一样的啊?
本文转自
http://203.208.35.101/search?q=cache:ZucgMYXCK2IJ:www.eygle.com/archives/2006/08/oradim_on_windows.html+oradim.exe&hl=zh-CN&ct=clnk&cd=9&gl=cn&st_usg=ALhdy28x7zWAGZEeoKXwnrvILMAOPVI9NQ
在Windows上如果系统崩溃了,数据文件、控制文件、日志文件等都还在,怎样来恢复Oracle数据库?
前几天重新安装了系统,正好需要恢复一下数据库。
如果软件也损失了,那么需要重新安装一下数据库软件,以恢复Windows相关环境变量等信息。
很多人抱怨我的新书很少关于Windows的内容,实际上,Windows和Linux/Unix上的操作没有什么不同,Windows本身就是一个仿Unix的系统。
那么好吧,我还是用一个系列的文章介绍一下我所使用的Windows系统,以及我所认为的数据库系统无关性。
大家可以跟随我看一下这样一个过程。
首先开启一个cmd命令行窗口。
开始->运行->cmd
我的Oracle软件安装在D:/oracle :
D:/>dir oracle
驱动器 D 中的卷是 PRIVAT
卷的序列号是 94B0-FD3B
D:/oracle 的目录
2006-08-16 14:14
2006-08-16 14:14
2006-08-16 14:14
0 个文件 0 字节
3 个目录 941,744,128 可用字节
我的数据文件位于D:/oradata下:
D:/>dir d:/oradata
驱动器 D 中的卷是 PRIVAT
卷的序列号是 94B0-FD3B
d:/oradata 的目录
2006-08-16 14:25
2006-08-16 14:25
2005-09-12 16:40
2005-09-12 16:40
0 个文件 0 字节
4 个目录 941,744,128 可用字节
现在让我们用oradim创建一个实例,实际上也就是创建一个Windows服务:
C:/>oradim -new -sid eygle
实例已创建。
我们用net命令可以查看系统启动了哪些服务,我们看到Oracle的服务已经启动:
C:/>net start
已经启动以下 Windows 服务:
...............
O&O Defrag
OracleServiceeygle
Plug and Play
Print Spooler
...............
命令成功完成。
如果你的系统装了一些Unix增强工具,那么可以通过grep过滤一下:
C:/>net start |grep Oracle
OracleServiceeygle
Unix命令工具可以在Sourceforge (http://sourceforge.net/projects/gnuwin32/) 下载.
此时我们就可以通过启动实例,挂接原有数据库,启动Oracle数据库了。当然你可能还有一些其他工作需要完成,比如重建口令文件等。
如果你想删除这个服务,那么也很简单:
C:/>oradim -delete -sid eygle
实例已删除。
当然做好备份仍然是最重要的,我见过有的企业将文件分散在很多逻辑分区上,结果随系统崩溃丢失了部分文件,损失也是相当惨重的。
在Linux/Unix上不需要服务来启动实例,也就不存在这样类似的操作。不过在命令行操作,一切都是类似的。
By eygle on 2006-08-18 10:27 | Comments (16)| Posted to FAQ| Tools| Edit|Pageviews:
网上相关主题:
留言 (16)
呵,你还是擅长使用命令行方式。在Windows下,创建ORACLE的实例需要有什么样的权限?
Posted by: Justinat August 18, 2006 10:58 AM
oradim本身就是命令行工具。
用户属于DBA组就行了,当然是管理员最好。
Posted by: eygleat August 18, 2006 11:01 AM
eygle:
从我生成的DBCA建库脚本中xirour10g.bat中可以看到如下内容:
D:/oracle/ora10g/bin/ oradim.exe-new -sid XIROUR10G -startmode manual -spfile
D:/oracle/ora10g/bin/ oradim.exe-edit -sid XIROUR10G -startmode auto -srvcstart system
为什么oracle执行2次oradim呢,我觉得一次直接自动启动实例就可以呀?
我想知道他这么做的用意,望老大指点一二
Posted by: xirour at August 18, 2006 11:02 AM
因为Oracle要用指定的参数文件启动实例阿,看后面的CreateDB.sql
里面有类似的一行:
startup nomount pfile="C:/oracle/admin/eygle/scripts/init.ora";
Posted by: eygleat August 18, 2006 11:07 AM
windows下的grep 可以在这里下载
http://sourceforge.net/projects/gnuwin32/
Posted by: qsxing at August 18, 2006 11:41 AM
意思是不是这样:
第一句,新建实例以spfile启动,因为目前没有spfile,所以手动启动,这时实际上启动了服务,但实例没有
第二句,修改实例的属性为自动启动实例,当系统重启的时候服务自动启动,实例随之启动
这样建库前以指定的pfile文件启动时其实服务是起来的,然后建好后以pfile生成spfile,然后重启的时候自动以spfile启动?
另外老大,回复页面可能有些问题,我直接回复会报错,说我短时间内老给你发信息,嘿嘿
Posted by: xirour at August 18, 2006 11:55 AM
xirour你最后的表述是正确的:)
Posted by: eygleat August 18, 2006 12:14 PM
谢谢qsxing提供的下载地址:)
Posted by: eygleat August 18, 2006 12:15 PM
首先开启一个cmd命令行窗口。
开始->运行->cmd
step by step :)
Posted by: leetaedong at August 18, 2006 3:24 PM
使用Oradim创建OracleServiceSID服务,然后手工启动instance,这样是没有问题,可是却不能通过直接启动OracleServiceSID服务来启动Oracle instance,怎么才能通过直接启动OracleServiceSID服务来启动Oracle instance呢
Posted by: 路过 at December 7, 2006 5:02 PM
可能需要修改注册表参数,不过Windows上最好不要设置Oracle自启动。
Posted by: eygleat December 8, 2006 9:45 AM
建立实例后要怎么还原啊,可不可以讲明白一点啊?
Posted by: hailang at December 19, 2006 11:22 AM
你恢复数据库文件到原来的目录结构就可以了。
Posted by: eygleat December 19, 2006 11:14 PM
盖大师:
oradim -new -sid happy -initpwd oracle
我在书上看到不少这样的例子,请问其中的-initpwd(不晓得记得对不对)是究竟干什么用的?
Posted by: Peifeiat August 24, 2007 10:14 AM
initpwd 参数用于初始化口令文件中的口令
Posted by: eygleat August 24, 2007 10:42 AM
真的不好意思,能说清楚一下子么。这个口令是不是SYS用户的口令啊(如果不加这个有什么影响?)。而且我在10g下好像没有这个选项,只有一个-SYSPWD,是不是一样的啊?
本文转自
http://203.208.35.101/search?q=cache:ZucgMYXCK2IJ:www.eygle.com/archives/2006/08/oradim_on_windows.html+oradim.exe&hl=zh-CN&ct=clnk&cd=9&gl=cn&st_usg=ALhdy28x7zWAGZEeoKXwnrvILMAOPVI9NQ