Linux下的Oracle数据库不能连接问题
在Oracle安装机上,Oracle账户登入:
使用 conn / as sysdba方式可以连接成功。
使用 conn user/password@TNS方式,返回错误
ORA-12514 : TNS:listener does not currently know of service requested in connect descriptor
1.数据库实例启动的,并且只安装了一个。
2.连接默认数据库实例是成功的。
2.连接时指定ServiceName就会报上面的错误。
什么原因?怎么解决?
谢谢
以上
------解决方案-------------------- TNS 你有没有这个服务名哦?
------解决方案-------------------- 探讨 在Oracle安装机上,Oracle账户登入: 使用 conn / as sysdba方式可以连接成功。 使用 conn user/password@TNS方式,返回错误ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 1.数据库实例启动的,并且只安装了一个……
------解决方案-------------------- netca配一个listener嘛
pmon本身有个默认的listener,不通过TNSNAMES解析就能访问。
所以你可以通过/as sysdba访问
但是无法解析你的TNSNAMES.
------解决方案-------------------- 查找tnsnames.ora文件,查看里面的连接字符串,如
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ubuntu)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
用红色部分的当作连接字符串
------解决方案-------------------- oracle登录机制分为二种:一种是使用数据字典,另一种是使用口令文件登录.原因是:普通用户依据数据字典进行身份验证,但是数据字典在数据库打开前无法被读取,从而出现普通用户注定无法启动(或创建)数据库的情况.为了打开数据库,必须通过外部口令文件验证用户的方式.
SQL>conn /as sysdba --这个是利用操作系统身份验证的方式
SQL>conn user/passwd@db
--标准的数据字典身份验证.因为加了@db,oracle要去解析连接字符串db,它会到tnsnames.ora文件里面查找具有某种约定方式的结构(包括host,port,service_name三部分).此外,使用这种方式的话,必须要求侦听打开,通过侦听与数据库交互(tcp的方式).
个人的理解,请大家多多指教.
------解决方案-------------------- @TNS
tns名字没有在tnsnames.ora中注册正确导致。
------解决方案-------------------- 探讨 netca配一个listener嘛 pmon本身有个默认的listener,不通过TNSNAMES解析就能访问。 所以你可以通过/as sysdba访问 但是无法解析你的TNSNAMES.
------解决方案-------------------- 一句话,没有配置监听,自己配置一下就可以,命令是netca
------解决方案-------------------- 高手好多啊!
------解决方案-------------------- conn user/password@xe
把host=ip地址看看
------解决方案-------------------- 两种情况,第一,监听配置不正确;
第二,如果是自动注册,则可能没有注册,使用alter system register; 命令注册.