.
.
.
.
.
昨天刚刚装完系统(Win7 32位旗舰版),重装了一下Oracle 10g 数据库。由于原来数据库中的数据没有备份,所以新建了一个与原来相同SID的数据库。然后停止oracle服务,把新建的数据库删除,再把原来的数据库复制到新建的数据库的路径下,数据库搬家就算完成了,数据库服务启动成功就没有太在意其它的事情。
今天启动服务也没有异常,可是使用 PL/SQL Developer 登录 Oracle 的时候发现报异常:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
于是乎开始请教Google老师,网上说是数据库实例没有启动,于是手动启动数据库实例:
C:\Users\bx>sqlplus /nolog
SQL*Plus: Release 10.2.0.3.0 - Production on 星期日 8月 5 13:57:27 2012
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
SQL> conn /as sysdba
已连接到空闲例程。
SQL> startup
可是紧接着又报错了,继续请教Google老师。找了很多帖子都没有办法解决问题,后来碰到了一篇博文跟我的问题差不多,死马当活马医就照着试了一下,居然真成功了,于是记录下来,分享给大家。参考地址是:http://haojiejie.iteye.com/blog/1466347
ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
ORA-01263: Name given for file destination directory is invalid
OSD-04018: ??????????????????????????
O/S-Error: (OS 2) ??????????????????????
其实是sPfile文件中一个路径db_recovery_file_dest找不到导致的。于是找到这个 sPfile 文件看看它里面是怎么写的。我的文件路径是:D:\Oracle\product\10.2.0\db_1\database\SPFILEORCL.ORA
用记事本打开发现是个二进制文件,不过还好路径还是可以看到的。
orcl.__db_cache_size=411041792
orcl.__java_pool_size=16777216
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=163577856
orcl.__streams_pool_size=0
*.audit_file_dest='D:\oracle\product\10.2.0\admin\orcl\adump'
*.background_dump_dest='D:\oracle\product\10.2.0\admin\orcl\bdump'
*.compatible='10.2.0.3.0'
*.control_files='D:\oracle\product\10.2.0\oradata\orcl\control01.ctl','D:\oracle\product\10.2.0\oradata\orcl\control02.ctl','D:\oracle\product\10.2.0\oradata\orcl\control03.ctl'
*.core_dump_dest='D:\oracle\product\10.2.0\admin\orcl\cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='D:\oracle\product\10.2.0\flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=200278016
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=600834048
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:\oracle\product\10.2.0\admin\orcl\udump'
很显然是找不到D:\oracle\product\10.2.0\flash_recovery_area,于是我打开资源管理器一看,flash_recovery_area 这个目录果然不存在,新建了一个flash_recovery_area文件夹后再启动数据库实例就没问题了。
SQL> startup
ORACLE 例程已经启动。Total System Global Area 603979776 bytes
Fixed Size 1291988 bytes
Variable Size 184551724 bytes
Database Buffers 411041792 bytes
Redo Buffers 7094272 bytes
数据库装载完毕。
数据库已经打开。
OK, 纠结了两个半小时的问题终于搞定了。