写源于跟着某培训班的视频做一个项目,在项目中碰到了各种坑需要自己折腾,所以写几篇博客记录下来,以后再碰到这样的问题就不会一脸懵逼了,最起码曾经我见过
开发环境
操作系统平台: Windows 7
数据库平台: Oracle11G
Java环境: Jdk1.8
Web服务: Tomcat 7
项目构建: Maven3.3
应用软件: Intellij IDEA14.0
(自带外挂。。)
Plsqldev(oracle客户端连接工具)
我没跳过去的坑
开始采坑了,采坑第一步就是安装Oracle数据库,因为以前都没怎么接触过Oracle数据库,一直使用的是Mysql,安装Oracle数据库后颠覆了我对数据库的认知。。。安装界面不是Windows的那种软件界面,典型的Java写出来的页面,真心好看,还好安装数据库的时候一路是比较顺利的,总的来说去年还是安装过一次,也算是有了一点经验了。
Oracle OraDb11g_home1 TNSListener 服务未启动
ORA-12541: TNS: no listener
这个错误
看到**listener**这个单词,看起来是监听的意思,然后我想起安装Oracle后系统服务里面有4,5个Oracle的服务中好像有一个就带有Listener的字眼,于是我打开任务栏管理器,使用快捷键**Ctrl+Alt+Delete** 任务栏管理器,注意操作系统的差异性
我们可以看到这里这个Listener服务是没有被启动的,我们点击进去查看这个**Listener**服务的详情
我们点击启动后是可以看到服务是**running**状态了,这时候再进行连接,这个错误就不会出现了,根据你的操作系统来进行打开这个服务
最基础的Oracle的两个服务就是 OracleServiceORCL 跟OracleOraDb10g_home1TNSListener这两个字眼的服务,这两个服务运行才能保证数据库是运行的
ORA-01017:invalid username/password ; login denied
这个看字面意思就知道是账号密码有问题了,话说我安装完Oracle后我还没有修改过密码,我只知道有个默认的超级管理员账户,跟我安装Oracle时候填的那个密码,可能我写错了,这个时候肯定改下密码好,就不用不想了,修改密码第一步,进入命令行控制界面,看图中的指令,在Windows系统中以管理员账号登陆的话好像是自动验证计算机账号成功就可以直接进入数据库后台界面,这个也有待验证,我也是看Csdn有博主这样回答的,输入这行命令后以sysdba身份进行管理界面
然后我们就开始修改某个账号的密码了
这里在网上找到一种修改密码的方法,仅供参考
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
继续上一步后出现了这个错误,根据网上资料
说要切换登陆用户的身份,这里我一开始选择的是默认的身份
然后我们要进行切换为SYSDBA身份进行登陆
切换为这个身份后,测试是连接成功的
这里关于对这个登陆身份,我在CSDN某博主是这样解释的
normal身份是普通用户身份
sysdba身份拥有最高的系统权限,登陆后是 SYS(通过命令“show user”查看一下即可知道)
sysoper身份主要用来启动、关闭数据库,sysoper 登陆后用户是PUBLIC
就这样我使用Navicat for Oracle
是成功登陆的,然后接下来就是使用PL/SQL
进行登陆,官方介绍说是目前为止比较专业的Oracle数据库开发软件
PL/SQL Initialization error 初始化失败
这个原因是因为PL/SQL只能使用32位的Client进行连接Oracle数据库,而我现在安装的是64位的Client,所以肯定会连接失败,所以我们去下载一个32位的Oracle Client,注意名字
解压后是这样的
ORA-12154:: TNS:could not resolve the connect identifier specified
点击安装后32位的Oracle Client后,出现了这个报错我们点击取消登陆,进入PL/SQL的系统设置界面,点击工具>首选项,很容易找到的,然后修改连接的方式,两个下拉框里面都是选择32位Oracle Client的那个
修改完退出,重新登陆,这个时候就是可以登陆进去了
element listener-class is not allowed here
这个是我在配置Spring的监听器的时候,IDEA莫名其妙地给我报的错,我第一怀疑是顺序放错了,仔细看了下,我的监听器是放在Servlet前面,无奈只能上谷歌上去搜索下了,找到的答案居然是 xml schema约束的问题
看起来是没错的,但是在StackOverFlow找到一篇答案
http://stackoverflow.com/questions/17563756/element-listener-class-not-allowed-in-my-web-xml
答案居然是要把约束里面的版本改成3.0,那我就改了,改完后不报错了
web.xml 文件的 listener 标签必须在 servlet 标签 之前
package com.sun.image.codec.jpeg does not exist
包这个错的原因是因为Maven项目里面引用了一个工具类,涉及到com.sun.image.codec.jpeg
包里面的引用,然后Maven项目没有导入这些包,所以会报错,我们在POM.xml中加入引用就好了
解决了这个问题,花两个小时总结出今天遇到的问题,其实弄了四五天了,太菜了没办法,努力!