今天使用PLSQL Developer工具连接数据库时,出现”ora-12514监听程序当前无法识别连接描述符中请求的服务“,
在解决该问题的过程中,出现了一系列的数据库错误,经过本人努力奋战4个小时,终于搞定了它了,记录一下,以备后用。
数据库的基础知识介绍:
在安装ORACLE的时候,需要设置
Oracle根目录(oracle base directory),简写为ORACLE_BASE
Oracle主目录(oracle home directory), 简写为ORACLE_HOME
Oracle清单目录(oracle invertory directory), 简写为ORACLE_INVERT
上述3个目录对应于我电脑上的如下3个目录:
%ORACLE_BASE% -- E:\Oracle\product\10.2.0
%ORACLE_HOME% -- %ORACLE_BASE%\Db_1
备注:如果在同一台主机的同一个根目录下安装多个产品或安装了第2次,则ORACLE_HOME主目录会以db_n的形式出现,即Db_2、Db_3等。
%ORACLE_INVERT% -- E:\Oracle_SoftwareEntry\inventory //Oracle_SoftwareEntry该目录是Oracle软件安装后生成的目录。
Oracle常用命令行:
sqlplus / as sysdba #表示连接到空闲例程
startup #表示启动数据库
lsnrctl start #表示启动监听服务
FAQ1 --
问题描述:
ORA-12514监听程序当前无法识别连接描述符中请求的服务
原因分析:
数据库安装目录下的listener.ora文件中没有配置监听数据库实例从而导致出现该问题,
listener.ora文件的全路径是:E:\Oracle_SoftwareEntry\network\admin\listener.ora
解决方案:
文件内容:
# listener.ora Network Configuration File: E:\Oracle_SoftwareEntry\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = E:\Oracle_SoftwareEntry) #此处是实际的oracle软件安装后的根目录
#(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = orcl))
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-20150531CTFZ)(PORT = 1521)) #oracle服务器使用的地址--电脑的名称
)
)
FAQ2 --
问题描述:
ORA-12518: TNS: 监听程序无法分发客户机连接
原因分析:
经查看是由于OracleServiceORCL服务没启动导致的
解决方案:
打开服务-->启动OracleServiceORCL
FAQ3 --
问题描述:
ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
现象如下所述:
C:\Users\Administrator>sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on 星期日 10月 11 16:41:59 2015
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
已连接到空闲例程。
SQL> startup
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) ??????????????????????
原因分析:
查看ORA-01261,发现是db_recovery_file_dest这个配置错误,而E:\Oracle_SoftwareEntry\database目录下的SPFILEORCL.ORA这个文件中
有db_recovery_file_dest的配置,需将文件中的*.db_recovery_file_dest='E:\Oracle\product\10.2.0\flash_recovery_area'这项配置到正确的
目录,即 flash_recovery_area 的目录刚好是E:\Oracle\product\10.2.0\flash_recovery_area
解决方案:
修改文件SPFILEORCL.ORA中的*.db_recovery_file_dest配置为: *.db_recovery_file_dest='E:\Oracle\product\10.2.0\flash_recovery_area' orcl.__db_cache_size=402653184
orcl.__java_pool_size=16777216
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=180355072
orcl.__streams_pool_size=0
*.audit_file_dest='E:\admin\orcl\adump'
*.background_dump_dest='E:\admin\orcl\bdump'
*.compatible='10.2.0.3.0'
*.control_files='E:\oradata\orcl\control01.ctl','E:\oradata\orcl\control02.ctl','E:\oradata\orcl\control03.ctl'
*.core_dump_dest='E:\admin\orcl\cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='E:\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=203423744
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=612368384
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='E:\admin\orcl\udump'
FAQ4 --
问题描述:
ORA-01078: failure in processing system parameters
现象如下所述:
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.3.0 - Production on 星期日 10月 11 17:33:05 2015
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
已连接。
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file 'E:\ORACLE_SOFTWAREENTRY\DATABASE\INITO
RCL.ORA'
原因分析:
目录E:\Oracle_SoftwareEntry\database下缺少initorcl.ora文件
解决办法:
将Oracle_Home下的E:\Oracle\product\10.2.0\admin\orcl\pfile\init.ora.2262014214939文件拷贝到E:\Oracle_SoftwareEntry\database下的initorcl.ora文件
并修改initorcl.ora中的db_recovery_file_dest=E:\Oracle\product\10.2.0\flash_recovery_area这个配置到正确的flash_recovery_area目录路径
附加问题:
当前数据库,我拷贝的是这个目录下的文件--E:\admin\orcl\pfile\init.ora.972015182328,而拷贝E:\Oracle\product\10.2.0\admin\orcl\pfile\init.ora.2262014214939
这个文件会有问题,会出现
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 532676608 bytes
Fixed Size 1291576 bytes
Variable Size 155192008 bytes
Database Buffers 369098752 bytes
Redo Buffers 7094272 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 1: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF' --路径不对
FAQ5 --
问题描述:
ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
原因分析:
没有装载数据库
解决方案:
1.先链接 输入SQL> conn 用户名/密码 as sysdba 参考SQL> conn sys/orcl as sysdba
2.查看你的数据库信息SQL> select * from v$log;
3.关闭 例程,并卸载了数据库(放心,不是那个卸载意思,没事儿!) SQL> shutdown immediate;
4.从启数据库,并装载数据库 SQL> startup #打开数据库
5.修改数据库打开方式SQL> alter database open;
6.SQL> alter database open resetlogs;