这两天学习《OCP/OCA认证考试指南》,要创建新的数据库,因为此前我的电脑上已经被折腾了好久的Mysql 和oracle10g ,所以可能导致很多环境都变了,创建数据库的过程中出现了一些小问题,也是搞了好久才搞定,下面记录一下遇到的两个大问题吧。
1. 监听端口
oracle默认的监听端口是本机的1521,这个我们用默认就好了。但是我不太清楚是不是因为我之前就已经在用了这个端口,所以在创建新的数据库的时候遇到这样的提示错误
于是我再次运行Net Configuration Assistant时这个1521的监听端口明明是好好的,当时还不知道是需要手动启用并且在net Manager中进行配置。后来索性就重新删除了这个监听端口。想要重新建立监听端口的时候提示我1521端口已经被占用了,我就抓狂了,于是去网上搜查看监听端口的命令。
1. 在运行中输入 cmd 打开命令行工具
2. 输入 netstat -ano
这个命令之后,你能看到本机上所有端口以及占用当前端口的进程的PID号:
3. 找到PID后,接着输入tasklist|findstr 3476
就可以得到这个PID对应的进程的名字了,如果没有什么很复杂的改动端口的操作的话,这个1521的端口基本是被TNSLSNR.exe占用的,然后我就索性把这个进程给强制关掉了,然后重新在net configuration Assistant 中重新配置,这下1521端口监听起来了,没有问题了。其实我就是强迫症想要重头再弄一边,感觉应该是没有必要的,关键步骤不在这里。
2. DB control requires database to be registered with atleast one listener
然后我就回到创建数据库的过程中,继续执行enterprise manager的安装时,仍旧弹出错误提示,不过这下提示换了:
这个图是盗的,不过弹出的对话框是一样,从提示中可以看到,提示我们当前的database没有被注册到至少一个listener上,既然我们的linstener已经是ok的了,那就不是Net CA的问题了,于是继续google,找到了下面的解决办法,我也是误打误撞的,因为书里面根本没有写这些步骤。
1. 在cmd中运行下面的命令:lsnrctl 成功之后接着运行 status 可以查看listener的状态,我的运行出来以后是下面的界面:
可以看到这里并没有我们的数据库是实例,所以接下来需要把之前创建半成功(为什么叫半成功,因为enterprise manager总是失败啊,我们现在就在解决这个问题)的db关联到listener上。
2. 打开Net Manager
注意最顶上有个不是特别容易发现的下拉框,然后选中数据库服务,如果你和我一样没有配置,这里面应该是空的,选择下面的添加数据库,把相应的名称,SID和主目录添加进去,这里如果你和我一样按照OCP/COA那本书中介绍的话,名称应该也是ocp11g,那个目录因人而异了,不太清楚的重新读一下那本数中讲解的创建数据库的步骤,应该就ok了。
3. 好了,这个步骤完成之后,回到cmd窗口中,运行reload命令,再重新查看stauts,就会得到下面的界面:
看到了吧,在最下面,服务ocp11g中包含了1个实例了,这样证明我们的db已经添加到1521上面的listener中去了。
到这里就大功告成了,返回你的DBCA中继续进行db的创建吧,这里应该就不会再弹出什么幺蛾子了。。。一直到创建成功的界面弹出,大喊一声 FINALLY!
恩,是的,这个图还是盗的,因为我的已经建立成功了,当时没有截图,反正就是这个界面,会告诉我们一个database control URL,据说这个URL很重要,要记号。。。