在开发机器上常常会遇到重装系统的问题,重装以前若是ORACLE没有及时备份的话重装以后就纠结了,数据还原很头疼。
各类娘中只能找到一些ORACLE安装与重装系统前目录相同的解决办法,目录不一样就没招了。
我用的是oracle11G。老版的应该类似。
通过个人尝试,找到了几个关键点,如今分享出来。sql
一、控制文件CONTROL01.CTL
oracle数据库的控件文件有两个,一个是在oradata\oradb中,名称为CONTROL01.CTL
另一个是在flash_recovery_area\SDMS_DEMO,名称为CONTROL01.CTL
控件文件也多是CONTROL02.CTL 或CONTROL03.CTL数据库
二、控制文件中的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
Sand:将以前的CONTROL02.CTL替换到新的安装目录中,我刚开始按照教程,没作这一步,没法登陆。
四:启动各项oracle服务,到这里,platadmin已经能够登陆了,可是发现system、sys等帐号没法登陆,报错
在sqlplus里执行startup mount;命令也是报这个错
ORA-12514: TNS: 监听程序当前没法识别链接描述符中请求的服务
缘由应该就是listener.ora中没有添加SID_NAME等东西(详情见下方)
http://blog.csdn.net/haiross/article/details/18559659
五:用sqlplus /nolog命令进入oracle命令符
六:用connect sys/change_on_install as sysdba;命令得到系统管理权限并登陆。
在cmd中执行如下命令,gis32是32位的TNS名
sqlplus sys/hch408@gis32 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中,替换目录中原有的控制文件,注意:名称不同的话改一下名字。app
(二) 方法二:SQL修改数据文件位置ide
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。.net
同方法一3d
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 96470372 bytes
Database Buffers 67108864 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。日志
九:使用startup nomount用无装载模式启动数据库。
十: 设置数据库为装载模式:alter database mount;blog
十一:查看数据文件清单: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;
好了,如今能够用客户端链接这个数据库了。
Sand:然而,我却报这个错
可是不行。
因而,我只好把全部的都改回来,就能启动了。可是,我这时,去登陆system帐号,也能登陆了。教程