Oracle 導入全庫之后使用plsql登陸時報錯
版本12C版本2
再oracle主機本地可以使用sqlplus 登陸,但是使用plsql無法登陸,報錯如上。
首先考慮是防火牆問題,查看防火牆和selinux均為關閉狀態
然后查看監聽狀態
查看 監聽狀態的命令為首先使用oracle 用戶登陸操作系統,命令lsnrctl
進入監聽程序,關鍵status 查看監聽狀態
里面詳細列出了監聽的狀態以及服務端的監聽文件位置,
查看監聽文件
查看客戶端的監聽配置
無發現明顯問題,下面嘗試重啟監聽
重啟和啟動監聽的命令為
lsnrctl stop、lsnrctl start
使用oracle用戶執行該命令
執行過上述的重啟監聽之后,依然報錯
為了排除防火牆因素在同網段使用ssh測試了連接1521端口,結果測試結果為訪問被拒絕
初步還是懷疑監聽服務的問題,再次查看監聽文件
將HOST =localhost 修改為本地IP地址HOST = 172.16.103.9,注意修改監聽之前需要先關閉監聽,關閉監聽之后再修改監聽文件,最后再啟動監聽
修改后的監聽文件
啟動監聽
查看監聽狀態
1分30秒過去了,未監聽到實例。
此時嘗試使用plsql連接
此時依舊報錯12514,再次查看監聽狀態,依舊是未監聽到實例
再次嘗試修改監聽文件,將監聽IP修改未監聽主機名。因為hosts文件中有解析將本機解析為oracle,故將監聽文件中的主機名修改為oracle
修改后的監聽文件
對應的hosts文件
再次啟動監聽,查看監聽狀態
已經監聽到實例,再次使用plsql連接,plsql已經可以正常連接。
總結:本庫版本是oracle 12c 版本2 操作系統為oracle linux 7.3 這個庫我執行過從12C版本1 RAC集群到這個庫的整庫還原,使用的expdp和impdp備份還原,備份還原之后出現此故障,不知道是oracle自身的bug還是因為我之前的庫和現有的庫版本不一致導致的問題。總之,監聽文件中HOST對應的主機需要寫主機名,寫IP不生效,百度上說將HOST對應的值寫成0.0.0.0的也可以監聽到實例,再解決問題的過程中,沒有嘗試該方法。因為不清楚HOST=0.0.0.0是泛指該主機能連接到的所有主機還是該主機自身。還是HOST僅僅只能使用主機名來解析呢,還有,在我執行全庫還原操作之前是沒有這個問題的,監聽文件的默認配置為localhost。根據本機hosts文件,localhost可解析為127.0.0.1和::1,這兩條已經足夠代表本機自身了,為什么還需要使用安裝oracle過程中單獨添加的解析條目 172.16.103.9 oracle 呢?