冷备后oracle数据库未装载,oracle重装之后恢复数据库(冷备份,恢复)

在开发机器上经常会遇到重装系统的问题,重装之前如果ORACLE没有及时备份的话重装之后就纠结了,数据还原很头疼。

各种娘中只能找到一些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是重装之前数据库的数据文件夹。

Sand:将之前的CONTROL02.CTL替换到新的安装目录中,我刚开始按照教程,没做这一步,无法登录。

9d4e6192715dd0434535f37d285b1722.png

四:启动各项oracle服务,到这里,platadmin已经可以登录了,但是发现system、sys等账号无法登录,报错

在sqlplus里执行startup mount;命令也是报这个错

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

原因应该就是listener.ora中没有添加SID_NAME等东西(详情见下方)

http://blog.csdn.net/haiross/article/details/18559659

a587137d312ce951b173656b8dd5423b.png

五:用sqlplus /nolog命令进入oracle命令符

六:用connect sys/change_on_install as sysdba;命令获得系统管理权限并登录。

在cmd中执行以下命令,gis32是32位的TNS名

sqlplus sys/hch408@gis32 as sysdba

0c4dad0b27879d4a899683f7e82450f9.png

七:用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中,替换目录中原有的控制文件,注意:名称不一样的话改一下名字。

(二) 方法二:SQL修改数据文件位置

主要步骤:

1、关闭数据库;

2、复制数据文件到新的位置;

3、启动数据库到mount状态;

4、通过SQL修改数据文件位置;

5、打开数据库;

1、关闭数据库

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

2、复制数据文件到新的位置;

同方法一

3、启动数据库到mount状态;

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;

十一:查看数据文件清单: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:然而,我却报这个错

efcf75d3b08de71f03c8c953610a79d7.png

8a21e9b54702268a0009054924aaad05.png

但是不行。

08d40bb489fee0abb534d9aca7bf369e.png

于是,我只好把所有的都改回来,就能启动了。但是,我这时,去登录system账号,也能登录了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值