oracle數據庫無法登陸的問題


今天開啟oracle服務登陸oracle數據庫輸入用戶名和密碼莫名其妙的報錯:

ORA_01034:ORACLE not available

ORA_27101:shared memory realm does not exist


 如圖所示Sqlplus連接時出現這個錯誤;在網上查了一下出現ORA-01034和ORA-27101的原因是多方面的:主要是oracle當前的服務不可用,shared memory realm does not exist,是因為oracle沒有啟動或沒有正常啟動,共享內存並沒有分配給當前實例.所以,通過設置實例名,再用操作系統身份驗證的方式,啟動數據庫。這樣數據庫就正常啟動了,就不會報ORA-01034和ORA-27101兩個啟動異常了。

還有就是可能是登錄數據庫后,不正常的退出,比如直接關掉窗口,而這時數據庫里有未完成的動作,再次登錄時就會提示“insufficient privileges”的報錯,SQL>shutdown immediate;   SQL>startup;就恢復正常了。

比較一下啟動和沒啟動的內存大小:查看任務管理器下oracle.exe所占內存,正常oracle.exe所占內存如下:

當oracle.exe所占內存為幾十兆說明Oracle數據庫沒有啟動:

解決步驟:

1.先看oracle的監聽和oracle的服務是否都啟動了。啟動oracle監聽:cmd命令行窗口下,輸入lsnrctl start,回車即啟動監聽。

2 查看oracle的sid叫什么,比如創建數據庫的時候,實例名叫“orcl”,那么先手工設置一下oralce的orcl,cmd命令窗口中,set ORACLE_SID=orcl.

3.進入SQL:輸入sqlplus  /nolog 回車或者輸入 conn / as sysdba;回車

提示:SQL> conn sys/123456 as sysdba
        已連接到空閑例程。

4.再輸入startup,回車.這步是啟動oracle服務。如果startup啟動被告知已經啟動了,可以先輸入shutdown immediate;等shutdown結束之后,再輸入startup。

到這里之后又報錯:

SQL> startup

ORA-00119: invalid specification for system parameter LOCAL_LISTENE

ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL'

alert log 中的錯誤如下:
USER (ospid: 17619): terminating the instance due to error 119
Instance terminated by USER, pid = 17619

5.這個報錯是因為檢查$ORACLE_HOME/network/admin/tnsnames.ora中的network name,發現沒有LISTENER_ORC的監聽名。

將本機的tnsnames.ora中的network name修改為LISTENER_ORCL,重啟解決。

LISTENER_ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

 6.成功:

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area 2566914048 bytes
Fixed Size 3048920 bytes
Variable Size 671091240 bytes
Database Buffers 1879048192 bytes
Redo Buffers 13725696 bytes
數據庫裝載完畢。
數據庫已經打開。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM