安装Oracle后,创建本地数据库的过程中遇到的一些问题汇总
1、TNS-03505: 无法解析名称
解决办法:修改tnsnames.ora文件,将添加的orcl实例的数据写进去
ORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))
解决后图片展示
2、ORA-12505, TNS:listener does not currently know of SID given in connect desc
给程序配置新数据库时,发生了该报错ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID
说明给到的sid有误,很有可能就是服务名和sid混淆使用。
首先了解数据库url的写法有两种
//监听sid服务,表示sid为orcl
database.url=jdbc:oracle:thin:@171.xxx.96.xx:xxxx:orcl
//监听服务名,表示服务名为orcl
database.url=jdbc:oracle:thin:@171.xxx.96.xx:xxxx/orcl
第一种是监听sid服务,第二种则是监听服务名
所以发现是自己的sid写错导致出现这个错误,把服务名当做了sid
把orcl的 “ : ” 改为 “ / ” 访问正常
原文链接:https://blog.csdn.net/wenchangwenliu/article/details/124007939
3、ORA-12154: TNS: 无法解析指定的连接标识符
解决方案:
问题发生在listener.org和tnsnames.org配置文件上,重新研究分析后,按照如下配置,并重启oracle server和listener服务,问题解决,配置内容如下,大家可参考修改
在oracle安装目录下F:\app\wangy\product\11.1.0\NETWORK\ADMIN配置listener.org和tnsnames.org文件
listener.org文件
# listener.ora Network Configuration File: F:\app\wangy\product\11.1.0\NETWORK\ADMIN\listener.ora# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))(ADDRESS = (PROTOCOL = TCP)(HOST = locaohost)(PORT = 1521))))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = DGHM)(ORACLE_HOME = F:\app\wangy\product\11.1.0\NETWORK\ADMIN)(SID_NAME = ORCL)))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = DGHM)(ORACLE_HOME = F:\app\wangy\product\11.1.0\NETWORK\ADMIN)(SID_NAME = WANGYI)))
tnsnames.org文件
# tnsnames.ora Network Configuration File: D:\oracle\app\Administrator\product\11.1.0\db_1\network\admin\tnsnames.ora# Generated by Oracle configuration tools.STD62 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = std62)))ORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))
也可以通过Oracle – OraDb11g_home1–>配置和移植工具–>Net Manager进行配置监听程序和服务命名
监听程序
服务命名
原文链接:https://blog.csdn.net/weixin_47160526/article/details/110194108
4、ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
将listener.ora文件中的SID_NAME的值改为服务器中OracleService的值,重启OracleService
原文链接:https://blog.csdn.net/weixin_47160526/article/details/110194108
5、ORA-01031: insufficient privileges
权限不足问题解决办法
在操作系统本地在oracle用户下使用sqlplus / as sysdba连接sqlplus的时候提示ORA-01031: 权限不足
检查监听和tnsping均正常,查阅资料后发现sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES
1)在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS才能使用OS认证;
不设置或者设置为其他任何值都不能使用OS认证。
# This file is actually generated by netca. But if customers choose to # install "Software Only", this file wont exist and without the native # authentication, they will not be able to connect to the database on NT.SQLNET.AUTHENTICATION_SERVICES = (NTS)NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
原文链接:https://www.yisu.com/zixun/30240.html
或参考链接:http://www.itpub.net/thread-2082923-1-1.html
6、TNS-12541: TNS: 无监听程序
在用PL/SQL Developer连接Oracle 11g时报错“ORA-12541: TNS: 无监听程序”,如下图所示。可以按照如下的步骤进行解决。
解决办法:监听程序配置
1)从开始菜单中打开“Oracle Net Configuration Assistance”,选择“监听程序配置”,如下图所示,点击下一步。
2)选择“重新配置”,如下图所示,点击下一步。
3)选择监听程序,如下图所示,选择协议,一般默认就好,点击下一步。
4)选择端口号,如下图所示,点击下一步。
5)选择“否”,如下图所示,点击下一步。
6)监听程序配置完成,如下图所示,点击下一步。
本地网络服务名配置
1)选择“本地网络服务名配置”,如下图所示,点击下一步。
2)选择“重新配置”,如下图所示,点击下一步。
3)“网络服务名”选择你自己数据库的名字,如下图所示,点击下一步。
4)填写“服务名”,其实就是你创建数据库时的全数据库名,如下图所示,点击下一步。
5)选择协议,默认选择“TCP”,如下图所示,点击下一步。
6)填写“主机名”,可以是你的IP地址,也可以是你的主机名;选择端口号,如下图所示,点击下一步。
7)选择“是,进行测试”,如下图所示,点击下一步。
8)选择“更改登陆”,填写“用户名”和“口令”,点击“确定”会显示“正在连接…测试成功。”,点击下一步。
9) 填写“网络服务名”,就是你自己的数据库名,小编的是“zboracle”,点击下一步。“是否配置另一个服务名?”选择“否”,点击下一步,完成。
启动PL/SQL Developer,输入用户名、口令,即可登录成功。
原文链接:https://www.cnblogs.com/yx007/p/6732012.html
7、ORA-12638: 身份证明检索失败
当登录PLSQL的时候,输入了账号密码之类的信息后登录提示了“ORA-12638: 身份证明检索失败”,对于这种情况的解决办法,可以通过修改“sqlnet.ora”文件的SQLNET.AUTHENTICATION_SERVICES = (NTS)中的“NTS”为“NONE”即可
修改后,重新登录即可成功登录;如果依旧提示该报错的话,可以重启下服务或者软件,再重新登录。
sqlnet.ora文件位置参考路径:
F:\app\wangy\product\11.1.0\NETWORK\ADMIN\sqlnet.ora
原文链接:https://blog.csdn.net/weiwu13/article/details/127227028
8、mybatis+oracle,出现ORA-01461:仅能绑定要插入LONG列的LONG值
这个异常是指,用户向数据库执行插入数据操作的时候,某条数据的某个字段值过长,如果是varchar2类型的,当长度超过2000,–4000(最大值)直接的时候,oracle会自动将该字段值转为long型的,然后插入操作失败。
改完数据类型后还是报这个错,原因是:
当从dual中取数据时,会将clob对象的字段转为long型,所以mybatis里不能用select XXXX from dual unionall的方式。而且mybatis里要这样写:jdbcType=CLOB
另外提一下,之前不想在代码的getter里写一堆截取字符长度的代码,就想利用Oracle数据库的substrb函数。
substrb是在插入的时候进行截取,但这个时候按照1的说法已经把超长字段的类型改为long类型,所以还是会报错。