记录一下win10安装Oracle出现的灵异现象以及解决方案:
一 、起因:
在 Windows 10 系统中安装 Oracle 11g 数据库,一切很顺利,不到十五分钟安装成功,通过PL/SQL测试可以连通,并且还创建了用户,在该用户下简单的操作了DDL、DML语句。
感觉生活美滋滋,开开心心的关电脑碎觉去咯~
The next day,本着为中华之崛起而读书的精神,开电脑继续学习,结果PL/SQL死活连不上数据库。经过反复验证确实监听无误,Oracle实例也启动正常。但就是提示 TNS-12514 监听程序无法描述连接符等等。
二 、经过:
熟练的打开百度开始寻觅,发现大都是在说常见的情况,即:监听是否启动,监听文件是否正常.....
于是增加了检索条件:输入了发现问题的运行环境等,例如:win10 oracle11g TNS 12514 。这一点很重要!!
通过看各位大佬的介绍,以及实际情况的分析:问题的起因是由于 listener.ora 文件中缺失一段代码,导致监听程序初始化不完整,很可能是电脑重启后,系统自动启动监听时有一些额外操作,导致相关配置文件有变动(仅本人猜测)。下面开始介绍具体解决方案:
1、给 listener.ora 补充缺失代码,补充后完整代码如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\SoftWare\oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GOLBAL_DBNAME= aikes)
(ORACLE_HOME = D:\SoftWare\oracle\product\11.2.0\dbhome_1)
(SID_NAME=aikes)
)
)
ADR_BASE_LISTENER = D:\SoftWare\oracle
若上述格式与大家本地的 listener.ora相差很多,可以copy上述代码进行替换,三个位置需要换成你们本地参数:ORACLE_HOME、GOLBAL_DBNAME(全局数据库名,即:安装时设定的)、SID_NAME(当前数据库实例名)
2、重启监听程序,无论是从services.msc还是命令窗 lstnctl stop / lstnctl start 均可以
3、使用PLSQL尝试登陆,若登录成功为我点个赞就可以关闭浏览器了,若又提示新错误请接着往下看~~
4、此时不出意外会提示:ORA-01034:ORACLE不可用 ORA-27101:共享内存域不存在
至此监听的问题已经解决,现在的问题是Oracle自身存储的监听配置有差异,我们需要手动同步。
而这种差异多数是因为我们的强迫症,偷偷删掉了tnsnames.ora中的 LISTENER_ORCL 相关信息,导致oracle异常。
5、打开目录,找到这么一个类似时间戳结尾的文件,打开文件找到 local_listener = LISTENER_ORCL 节点
6、再找到Oracle监听文件 tnsnames.ora 查看里面的监听名称,将上述文件中节点值替换
7、打开cmd ,输入sqlplus /nolog ,紧接着输入connect /as sysdba 通过空闲实例连接
8、执行指令:create spfile from pfile = 'D:\SoftWare\Oracle\admin\aikes\pfile\init.ora.8272019221411'
此处需要介绍下pfile作用,它用于备份oracle最近一次正常启动的配置,而spfile是oracle将要加载的启动配置。所以我们用pfile来替换spfile,让Oracle正常启动。(虽然pfile记录上次的正常启动配置,可是我们之前调整了一些配置导致上次正常的配置这次一定不正常了,所以要通过4、5、6步修改文件)
9、紧接着执行 startup 启动数据库实例
此时如果还报错提示:ORA-00119 + ORA-00132 查看其报错明细,再次按照5、6步进行调整即可,多数是因为书写问题导致。
10、使用PLSQL连接,终于登陆成功,一把辛酸泪快擦擦。
三、结果:
生活就是在解决这样那样的问题,调整心态,整理方式,积累方法,慢慢的在遇到这些就会游刃有余,不知不觉中就发现,所有的问题都是些臭弟弟,小崽崽er !