ORACLE重装之后恢复数据库,相当于sqlserver的附加数据库
2014-09-04 13:46
253 查看
在开发机器上经常会遇到重装系统的问题,重装之前如果ORACLE没有及时备份的话重装之后就纠结了,数据还原很头疼。
各种娘中只能找到一些ORACLE安装与重装系统前目录相同的解决办法,目录不同就没招了。
我用的是oracle11G。老版的应该相似。
经过我的尝试,找到了几个关键点,现在分享出来。
另外一个是在flash_recovery_area\SDMS_DEMO,名称为CONTROL01.CTL
控件文件也可能是CONTROL02.CTL 或CONTROL03.CTL
一:重新创建oracle数据库后手动关闭oracle所有服务
二:将oradata中新创建的数据库目录改名,d:\app\user\oradata\oradb,改为d:\app\user\oradata\oradb_new
三:将原来的数据库目录复制到该目录下,复制后的结果是oradata中有d:\app\user\oradata\oradb_new和d:\app\user\oradata\oradb两个目录
d:\app\user\oradata\oradb是重装之前数据库的数据文件夹。
四:启动各项oracle服务
五:用sqlplus /nolog命令进入oracle命令符
六:用connect sys/change_on_install as sysdba;命令获得系统管理权限并登录。
七:用select instance_name from v$instance;确认当前的数据库实例是否正确,如果不是oradb需要使用 set oracle_sid来修改默认的oracle实例(没记错的话应该是这个命令可以问度娘查一下)。
八:将d:\app\user\oradata\oradb\CONTROL02.CTL控制文件复制到d:\app\user\flash_recovery_area\oradb中,替换目录中原有的控制文件,注意:名称不一样的话改一下名字。
九:使用startup nomount用无装载模式启动数据库。
十: 设置数据库为装载模式:alter database mount;
十一:查看数据文件清单:select name from v$datafile;
查看临时文件清单:select name from v$tempfile;
查看日志文件清单:select * from v$logfile;
会看到如下结果:
E:\APP\USER\ORADATA\ORADB\SYSTEM01.DBF
E:\APP\USER\ORADATA\ORADB\SYSAUX01.DBF
E:\APP\USER\ORADATA\ORADB\UNDOTBS01.DBF
E:\APP\USER\ORADATA\ORADB\USERS01.DBF
E:\APP\USER\ORADATA\ORADB\SDMS_DATA01.DBF
十二:修改数据文件路径,依次执行如下命令:
SQL> alter database rename file 'E:\APP\USER\ORADATA\ORADB\SYSTEM01.DBF' to 'D:\APP\USER\ORADATA\ORADB\SYSTEM01.DBF'
注意日志文件修改的时候有点纠结 文件名是redo01,因为oracle默认为大写,我看成了red001,一直修改不成,另外一个,如果用select * from v$logfile;看到的只有一条日志文件,建议把原数据库中的几个都修改一下。
SQL> alter database rename file 'E:\APP\USER\ORADATA\ORADB\REDO03.LOG' to'D:\APP\USER\ORADATA\ORADB\REDO03.LOG';
十三:启动数据库:alter database open;
好了,现在可以用客户端连接这个数据库了。
各种娘中只能找到一些ORACLE安装与重装系统前目录相同的解决办法,目录不同就没招了。
我用的是oracle11G。老版的应该相似。
经过我的尝试,找到了几个关键点,现在分享出来。
1、控制文件CONTROL01.CTL
oracle数据库的控件文件有两个,一个是在oradata\oradb中,名称为CONTROL01.CTL另外一个是在flash_recovery_area\SDMS_DEMO,名称为CONTROL01.CTL
控件文件也可能是CONTROL02.CTL 或CONTROL03.CTL
2、控制文件中的datafile,tempfile,logfile
原数据库中的文件路径如果和重装后的路径不一致,需要将这些路径全部修改之后就可以了,具体步骤如下:一:重新创建oracle数据库后手动关闭oracle所有服务
二:将oradata中新创建的数据库目录改名,d:\app\user\oradata\oradb,改为d:\app\user\oradata\oradb_new
三:将原来的数据库目录复制到该目录下,复制后的结果是oradata中有d:\app\user\oradata\oradb_new和d:\app\user\oradata\oradb两个目录
d:\app\user\oradata\oradb是重装之前数据库的数据文件夹。
四:启动各项oracle服务
五:用sqlplus /nolog命令进入oracle命令符
六:用connect sys/change_on_install as sysdba;命令获得系统管理权限并登录。
七:用select instance_name from v$instance;确认当前的数据库实例是否正确,如果不是oradb需要使用 set oracle_sid来修改默认的oracle实例(没记错的话应该是这个命令可以问度娘查一下)。
八:将d:\app\user\oradata\oradb\CONTROL02.CTL控制文件复制到d:\app\user\flash_recovery_area\oradb中,替换目录中原有的控制文件,注意:名称不一样的话改一下名字。
九:使用startup nomount用无装载模式启动数据库。
十: 设置数据库为装载模式:alter database mount;
十一:查看数据文件清单:select name from v$datafile;
查看临时文件清单:select name from v$tempfile;
查看日志文件清单:select * from v$logfile;
会看到如下结果:
E:\APP\USER\ORADATA\ORADB\SYSTEM01.DBF
E:\APP\USER\ORADATA\ORADB\SYSAUX01.DBF
E:\APP\USER\ORADATA\ORADB\UNDOTBS01.DBF
E:\APP\USER\ORADATA\ORADB\USERS01.DBF
E:\APP\USER\ORADATA\ORADB\SDMS_DATA01.DBF
十二:修改数据文件路径,依次执行如下命令:
SQL> alter database rename file 'E:\APP\USER\ORADATA\ORADB\SYSTEM01.DBF' to 'D:\APP\USER\ORADATA\ORADB\SYSTEM01.DBF'
注意日志文件修改的时候有点纠结 文件名是redo01,因为oracle默认为大写,我看成了red001,一直修改不成,另外一个,如果用select * from v$logfile;看到的只有一条日志文件,建议把原数据库中的几个都修改一下。
SQL> alter database rename file 'E:\APP\USER\ORADATA\ORADB\REDO03.LOG' to'D:\APP\USER\ORADATA\ORADB\REDO03.LOG';
十三:启动数据库:alter database open;
好了,现在可以用客户端连接这个数据库了。
相关文章推荐
- ORACLE重装之后恢复数据库,相当于sqlserver的附加数据库
- 重装系统之后 Oracle 数据库的恢复的方法
- Oracle系列:重装系统之后 Oracle 数据库的恢复的方法
- [转]重装系统之后 Oracle 数据库的恢复的方法
- 重装系统之后 Oracle 数据库的恢复的方法
- 重装系统之后 Oracle 数据库的恢复的方法
- 数据库密码忘记之后 - Oracle, DB2, SqlServer, MySql
- oracle 数据恢复,只有oradata文件夹里的文件,没有备份文件的数据库恢复,重装系统后,oracle 10g数据库恢复
- Oracle 数据库更新或者删除之后,怎样恢复之前的数据
- 当重装数系统/数据库之后,如何恢复数据库的账号 登录名/用户名 孤立用户 缩小ldf日志文件 修改sqlserver2000端口
- 【SQLServer】【恢复挂起的解决方案】附加文件时候的提示“无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。 ”【数据库恢复】
- oracle数据库转换到Sqlserver的几点经验
- 重装windows之后ubuntu的恢复
- mysql,sqlserver,oracle三种数据库的大对象存取
- Oracle 数据库的备份与恢复
- 从数据库中取出所有表(oracle,sqlserver),从表中取出所有的列名及类型.
- 系统损坏,移植Oracle(9.2.0.1)数据库(无备份数据文件进行恢复)
- 如何强制删除或恢复SQLServer正在使用的数据库
- [导入]各种数据库系统(Oracle,SQLServer,DB2等)的JDBC驱动下载网址
- 正好整理了一下,自己做了个连接数据库的组件,支持SQLSERVER,ACCESS,ORACLE,FoxPro,MySql,IBM DB2,DBF等数据库,并且支持事务处理