刚装好的oracle,pl/sql之前都好好的突然一天,pl/sql登录连接oracle失败了。提示ora-01034:ORACLE NOT AVAI LABLE
ora-27101:shared memory realm does not exist
然后试着在cmd中 启动
sqlplus /nolog
conn /as sysdba
startup
出现如下错误:
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132:syntax error or unresolved network name "LISTENER_ORCL"
在网上查了一大堆的解决办法最后所有的途径都指向一个问题,要修复spfile.ora这个文件。但是在我的安装目录下根本找不到这个文件也找不到修复这个文件所需的另一个文件pfile.ora。在解决问题的过程中发现我的E盘和F盘下面都有oracle的安装文件夹,这让我非常费解。后经过查资料得知,因该是在安装orcle时同时安装了服务端和客户端导致的,因此这两个盘当中的文件夹应该一个是客户端一个是服务端。由于plsql设置的是连接E盘的文件夹。因此灵机一动将F盘下的NETWORK/ADMIN文件夹下的listener.ora;sqlnet.ora;tnsnames.ora复制到E盘的同名文件夹下覆盖同名文件。再次启动plsql.还是失败提示无监听程序。但是打开cmd.用startup启动oracle成功了。这说明,之前的问题是三个ora中的某几个文件的配置出了问题。
接着,在程序菜单中打开oracle目录——配置和移植工具——打开net manager。在服务命名中新建服务。服务名为orcl(orcl是安装oracle时的实例名,如果忘记了这个实例名可以查看系统服务。在系统服务中找到所有oracle相关的服务,其中有一个是OracleServiceORCL,service后面就是你的实例名也是全局数据库名)协议是TCP/IP 主机名是本机名称(127.0.0.1是否可以我没有做测试)端口号1521。完成。
而后在监听程序中创建监听程序:一般参数页选项默认,监听位置地址1是 TCP/IP 主机名本几名 端口1521 地址2IPC 键自动生成
*****重点***** 数据库服务——添加数据库 全局数据名(我安装的是11g版本默认的全局数据库名是oracle8)这个地方要改成orcl。SID默认是ORCL不用改动。如果全局数据库名不改启动plsql就会始终出现无鉴定程序的错误。
*****重点*****(这一项我不知道跟解决上述问题是否有关系)其他服务(如果用Net manager上面那个选项 Net Configuration Assistant 建立监听程序的话,建立完成后再Net Manager下的服务命名中就会自动的出现一个服务叫oraclr_connection_data,查看这个服务会发现它的SID为CLRExtProc)其他服务页中程序名填写ExtProc。SID填写CLRExtProc。oracle主目录是自动生成的我这里默认指向F盘的oracle文件夹。完成。
再次登录plsql连接oracle成功。问题全部解决。
plsql连接的应该是oracle的服务端。我的plsql的preference下的oracle_Home指向的是E盘,所以E盘下的文件夹应该是服务端。F盘下就是客户端,但是我不明白为什么将客户端的三个.ora文件覆盖掉服务端的.ora就能正常启动oracle了呢。