解决 ora 12170/12514/01031 等错误

以下都是虚拟机 centos6 x64 和宿主机 win10 x64 之间发生的错误:
oracle 数据库安装在 centos 里。

ora 12170 是连接超时错误,意味着肯定是在 ip 连接的时候出了问题。只要你 ip 和端口号在 tnsnames.ora中填写正确了,那就肯定不是 tnsnames.ora 的锅。我的 tnsnames.ora 文件如下:

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.163.129)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

如果能互相 ping 通,那说明 ip 地址是绝对没有问题。但是能 ping 通不能说明 1521 端口的开放的。

房间能到达,但房门打不开也是白搭。这个有两个解决方法,选择其一即可:
1、关闭防火墙
参考这个:https://blog.csdn.net/qq_19244267/article/details/52456552
2、开放端口
参考这个:https://blog.csdn.net/carechere/article/details/52288058

ora 12514 是监听程序无法识别请求问题,换句话说就是连接上去了,ip 和端口号都没错。你找到房间了,也有人开门让你进去了,但是你要找谁呀?你找的这个人好像没在这个房间里头。这时你是不是应该想想,要么是自己把别人名字记错,要么是别人没在这个房间里或者说他没登记在这个房间里头。

上面的 tnsnames.ora 文件里头的 SERVICE_NAME = orcl 就指明了你要找谁,而且你也确认没写错,那么就是这个人还没在房间里注册过。
解决这个问题可以这么来:
locate listener.ora 或者 whereis listener.ora 会出现一些目录路径
cd 到该文件的目录下,修改 listener.ora 和 tnsnames.ora 文件中的 HOST=xxx ,
xxx 应该修改成 ip 地址,例如我的 centos ip 是 192.168.163.129。

依次试一下这两个命令:
lsnrctl stop
lsnrctl start
若是出现 The listener supports no services 警告
请参考:http://blog.itpub.net/24492954/viewspace-765551/

ora 01031 是权限问题。这个一般比较简单解决,给你要登录的用户赋予权限即可,一般赋予最高权限 sysdba。

[root@oracledb ~]# su – oracle
[oracle@oracledb ~]# sqlplus / as sysdba
SQL> startup #启动数据库实例
SQL> select * from v$pwfile_users; #查看具有 sysdba 权限的用户

SQL> grant sysdba to 你要登录的用户名;
SQL> select * from v$pwfile_users; #查看验证一下
SQL> quit

以上就是我遇到的问题并成功解决了问题

猜你喜欢

转载自blog.csdn.net/yld10/article/details/79840424
今日推荐