這兩天學習《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很重要,要記號。。。