|
|
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已! |
|
恭喜您是本站第 1729942
位訪客!
登入 | 註冊
|
|
|
|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2017/3/28 1:37 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15773
|
- [轉貼]ORA-12528 問題解決
- ORA-12528問題解決
在 solaris 中運行了 lsnrctl stop 將 listener 停止,然後運行 lsnrctl start 將 listener 重新開機,出現問題及解決辦法如下:
lsnrctl status
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=lypch)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROCipc)))
Services Summary...
Service "LSExtProc" has 1 instance(s).
Instance "LSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "ammicly" has 1 instance(s).
Instance "ammicly", status BLOCKED, has 1 handler(s) for this service...
The command completed successfully
這個問題說明資料庫沒有Mount 連接資料庫,發現:
ORA-12528: TNS:listener: all appropriate instances are blocking new connections
用
sqlplus /nolog
sql>connect [email=sys/ammic@amicly]sys/ammic@amicly[/email] as sysdba
ORA-12528: TNS:listener: all appropriate instances are blocking new connections
連接的問題可以通過修改 listener.ora 的參數,把動態的參數設置為靜態的參數,紅色標注部分,然後從新啟動監聽,就 OK
SID_LIST_LISTENER =(
SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\product\10.1.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ammicly)
(ORACLE_HOME = c:\oracle\product\10.1.0\db_1)
(SID_NAME = ammicly)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = lypch )(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
通過修改 tnsnames.ora 的參數,紅色表注部分
# tnsnames.ora Network Configuration File: C:\oracle\product\10.1.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
AMMICLY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = lypch )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ammicly)
(UR=A)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
然後
sqlplus /nolog
SQL>alter database mount;
SQL>alter database open;
這樣就可以啟動資料庫了;
或者用
Oradim -shutdown -sid ammicly -shuttype srvc,inst -shutmode immediate -syspwd ammic;
關閉資料庫 在用
oradim -startup -sid ammicly -starttype srvc,inst -syspwd ammic;
啟動資料庫解決; 也可以在截面上從啟動資料庫服務來解決;
總結 ORA-12528 問題是因為監聽中的服務使用了動態服務,系統啟動後,資料庫沒有正常的 MOUNT ,因此在動態模式下,就會出現這個問題,用靜態的就不會有這個問題,因此上面的方法就是把監聽設置為靜態,或者在 tnsnames.ora 中追加(UR=A)或者從啟動服務,三種方法解決問題;
------------------------- 用靜態註冊的風險是,如果在 instance 運行中,lisener 重新開機,就找不到 instance 了。換言之,靜態註冊需要先啟動 lisener,再啟動 instance。而且靜態模式下,lisener status 顯示的是 unknown 而且,用動態的話,instance nomount 狀態下,一般是 dba 需要進行操作(比如恢復),這個時候一般直接登陸到 host 進行,不使用 tns 遠端連線。
原文出處:ORA-12528問題解決 @ 資訊園 :: 痞客邦 PIXNET ::
|
|
討論串
|