问题:
去年安装的ORACLE当时运行的没出问题,也就没有写总结。后来到公司,自己电脑的连不上公司的ORACLE数据库了,自己一顿操作猛如虎,然后自己的数据库也连不上了。这篇文章就是用来记录这次数据库从正常到被我作坏,然后由恢复正常的过程中遇到的问题以及解决办法。
ORACLE的安装
去年的安装情况因为电脑坏过好久已经记不清了。步骤可以查看这位博主的文章,写的很详细,当时按照这个步骤安装成功的。
https://blog.youkuaiyun.com/u010863093/article/details/25660247
在此再次感谢这位博主。
问题1:no listener错误(错误编号当时没记录下来)
这个是因为我当时把电脑的环境变量“ORACLE_HOME”重新改成了ORACLE客户端的安装目录,(后来弄明白这个是没有必要的,如果连接的局域网内的其他机器的数据库,这个环境变量不是必须的)导致服务OracleOraDb11g_home1TNSListener关闭了。这个我们只需要把ORACLE_HOME这个环境变量配置正确,然后把这个服务启动起来就可以了。
具体方法:右键我的电脑 ====> 管理 ====>服务和应用程序 =====>服务,然后找到下边这服务,右键启动就好了.
如果万一真有跟我一样的情况,误删之后忘记ORACLE_HOME原来的配置。一般情况下Path环境变量的第一个路径就是安装ORACLE之后自动配置的环境变量。可以根据这个来恢复一下。
问题2:
ORA-12514:listener does not currently know of service requested in connect descriptor
这个错误就比较神奇,因为以前没有详细了解过oracle客户端的配置,所以我去年只配置了tnsnames.ora这个配置文件。当时竟然也正常连接了。但是在我今年的努力下,连接不上了。显示这个错误。于是,我又去研究了一下这个问题。发现listener.ora文件同样也需要配置.以下是我的配置.需要的可以参考一下.
listener.ora文件:
# listener.ora Network Configuration File: D:\instantclient_12_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\solution\product\12.1.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\solution\product\12.1.0\dbhome_1\bin\oraclr12.dll")
)//这个是本来就有的.我也不知道是啥
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = D:\app\hasee\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
) //这里是新加的ORCL实例.
(SID_DESC =
(GLOBAL_DBNAME = STDT_MGR_DEV)
(ORACLE_HOME = D:\app\hasee\product\11.2.0\dbhome_1)
(SID_NAME = STDTMGRDEV)
)//这里是新加的STDT_MGR_DEV实例.
)
LISTENER =
(DESCRIP.TION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
ADR_BASE_LISTENER = D:\app\solution
tnsnames.ora文件:
# tnsnames.ora Network Configuration File: D:\instantclient_12_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
STDT_MGR_DEV =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = STDT_MGR_DEV)
)
)
Tips:
SID_NAME,SERVICE_NAME这些数据库实例的参数在安装完后都有显示,要好好保存.
还有如果在命名实例时有下划线之类的,配置时一定要注意下划线的写法.详情参见上图中STDT_MGR_DEV的配置方法。
还有一个用toad连接数据库的错误:
Can’t initialize OCI. Error -1:
原因一是toad使用oci文件,需要使用管理员权限打开,因为oracle那个文件夹需要管理员权限才能访问。简单点可以右键exe文件,属性 ===> 兼容性,勾选”以管理员身份运行”,这样在每次双击打开,确认一下就好了.
二是需要把ORACLW_HOME/bin目录写到环境变量Path最前边,但是一般情况下这个再安装oracle时就自动做了这个事。