我的oracle 10g数据库有半年没用了,最近需要使用,用PL/SQL Developer登录时,出现了“ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务”,以前没碰见过这样的问题,然后就到网上去搜,解决该问题的方法如下:
在目录F:\oracle\product\10.2.0\db_1\NETWORK\ADMIN(我电脑上是这样的,如果你有多个数据实例,那就选db_n,n是数字)下找到listener.ora文件,添加如下红色字体内容:
文件内容变为:
# listener.ora Network Configuration File: F:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = F:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = F:\oracle\product\10.2.0\db_1)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
其中的GLOBAL_DBNAME = orcl和SID_NAME = orcl中的orcl是你的数据库实例的名称,ORACLE_HOME是你的数据库实例的主目录。
保存后,重启TNSListener服务。这样这个问题就解决了。
但是,解决这个错误后,还是不能连接到Oracle数据库,又出现如下问题:
ora-01034:oracle not available
ora-27101:shared mermory realm does not exist
我又到网上去找,网上说的如下:
1 先看oracle的监听和oracle的服务是否都启动了。启动oracle监听:
cmd的命令行窗口下,输入lsnrctl start,回车即启动监听。
2 查看oracle的sid叫什么,比如创建数据库的时候,实例名叫“orcl”,那么先手工设置一下oralce的sid,cmd命令窗口中,set ORACLE_SID=orcl
3 再输入sqlplus /nolog,回车
再输入 conn / as sysdba;回车
会显示“已连接到空数据库实例”
4、输入startup,回车,本来是可以启动oracle服务的,但是又出现了ORA-01261错误,
ORA-01261: Parameter db_recovery_file_dest destination string cannot be translat
ed
下面还有些错误显示???????????????????????,于是我又到网上去搜ORA-01261的错误,最后发现了问题,是因为缺少flash_recovery_area目录的问题,那么这个flash_recovery_area目录要创建在哪儿呢?可以查看F:\oracle\product\10.2.0\admin\orcl\pfile目录下的init.ora.2302012203440文件(每个人的后面的数字可能不一样,只要是init.ora就行),用记事本打开该文件,在靠近中间上边一点的地方可以找到:
control_files=("F:\oracle\product\10.2.0\oradata\orcl\control01.ctl", "F:\oracle\product\10.2.0\oradata\orcl\control02.ctl", "F:\oracle\product\10.2.0\oradata\orcl\control03.ctl")
db_recovery_file_dest=F:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size=2147483648
上面那行标红色的目录就是flash_recovery_area目录所在的地方,所以只要在F:\oracle\product\10.2.0目录下创建一个flash_recovery_area目录就可以了,
再次输入startup,等一会儿,就告诉你Oracle实例启动了,用PL/SQL Developer就能连接到Oracle数据库了!
还有一个值得注意的地方:
如果你的机子上装了一些安全卫士之类的优化软件,可能在你用这些优化软件进行垃圾清理的时候会把flash_recovery_area目录给清理掉(我的就是这样),清理掉之后,当你关闭Oracle数据库之后再次启动就又会出现上面的问题,你又得再创建flash_recovery_area目录,很麻烦,怎么办呢?很简单:直接在flash_recovery_area目录下创建一个任意的空文件(我就创建了一个空的txt文本文件)。这样,优化软件就不会清理flash_recovery_area目录了,你也就不用每次都创建flash_recovery_area目录了。