1. 程式人生 > >ORA-12528問題解決 與 靜態註冊

ORA-12528問題解決 與 靜態註冊


startup nomount 之後

用sqlplus sys/[email protected] as sysdba 連線的時候報 ORA-12528 的錯誤

但是用 sqlplus "/as sysdba", conn sys/orcl as sysdba 就可以連線上。

搜了下 ORA-12528 這個錯誤。

將listener.ora的動態引數設定為靜態引數之後,在 nomount 時,也可以用 sqlplus sys/[email protected] as sysdba登入了。


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/[email protected]]sys/[email protected][/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遠端連線。

--------------------------------------------------------
--------------------------------------------------------

listner.ora 修改之後:


SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/app/oracle/product/10.2.0.1/db_1)
      (PROGRAM = extproc)
    )
   (SID_DESC =
        (GLOBAL_DBNAME = orcl)
        (ORACLE_HOME = /oracle/app/oracle/product/10.2.0.1/db_1)
        (SID_NAME = orcl)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
     (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
     )
     (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
     )
    )
  )

修改之前:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/app/oracle/product/10.2.0.1/db_1)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    )
  )
注意: 一個
LISTENER
(
......
)
對應一個
SID_LIST_LISTENER
(
....
)

如果修改有誤,報錯:
Oracle Error :: TNS-01155 Incorrectly specified SID_LIST_string parameter in LISTENER.ORA

相關推薦

ORA-12528問題解決 靜態註冊

startup nomount 之後 用sqlplus sys/[email protected] as sysdba 連線的時候報 ORA-12528 的錯誤 但是用 sqlplus "/as sysdba", conn sys/orcl as sysdba 就

Oracle Listener 動態註冊 靜態註冊

一.什麼是註冊註冊就是將資料庫作為一個服務註冊到監聽程式。客戶端不需要知道資料庫名和例項名,只需要知道該資料庫對外提供的服務名就可以申請連線到資料庫。這個服務名可能與例項名一樣,也有可能不一樣。  在資料庫伺服器啟動過程中,資料庫伺服器會向監聽程式註冊相應的服務(無論何時

ORACLE 監聽動態註冊靜態註冊

註冊就是將資料庫作為一個服務註冊到監聽程式中。客戶端不需要知道資料庫名和例項名,只需要知道該資料庫對外提供的服務名就可以申請連結到資料庫。這個服務名可以與資料庫名一樣,也有可能不一樣。在資料庫服務啟動的過程中,資料庫伺服器向監聽程式中註冊相應的服務。無論何時啟動資料庫,預設的

SpringBoot2.x攔截器會攔截static目錄下的靜態資源解決不攔截指定目錄

一、不攔截static目錄下的檔案  目錄如下 瀏覽器訪問直接訪問js檔案會被攔截,這時在攔截器添的excludePathPatterns方法增加“/js/**”,這樣子就不會被攔截了。程式碼如下 @Override public void addInterce

解決Android8廣播的靜態註冊接收不到問題

最近在學習Android,因為學校的書本是13年的(無力吐槽),那時Android才4.3太老了,現在都Android9了,有些技術已經改變了,不再適用於現在的Android版本,在寫書上的示例程式碼時遇到了這個問題,通過網上的搜尋和在官網看到的介紹解決了這個問題。具體是因為

解決ora-01861文字格式字串不匹配

http://hi.baidu.com/voeuhtmvhzfknte/item/94dc7f16d706b7a4feded5bf 一般是資料庫 時間格式 不匹配   看 sql語句與傳進去的值是否匹配  本人的sql語句為   insert into SMS_MO(aa

Android廣播的靜態動態註冊

  靜態廣播:不用程式啟動就可以接收,可用作開機自啟動(裝置開機時會發送廣播,下面列出幾項廣播的ACTION),當然也能自己設定action的值。   Intent.ACTION_BOOT_COMPL

Android開發靜態註冊廣播接收不到的問題的解決辦法

    首先原因是這個:https://zhuanlan.zhihu.com/p/20933603    我採用的解決辦法是將apk放到system/app目錄下詳細過程是這樣的https://blog.csdn.net/xx326664162/article/details

ORA-12528 TNS: 監聽程式: 所有適用例程都無法建立新連線 解決辦法

最近一段時間不知道怎麼的伺服器的oracle老是各種問題,什麼無法建立連線啊監聽器錯誤啊等等。今天又是一個沒見過的問題:ORA-12528 TNS: 監聽程式: 所有適用例程都無法建立新連線。其實關於這個問題的解決辦法

iOS 動態庫和靜態庫的的區別 動態庫的隔離靜態庫的吸附問題以及解決方法

起因 理論功底 動態庫和靜態庫 介紹 靜態庫和動態庫的區別 舉個例子, iOS 專案中使用 Embeded Framework 靜態庫和動態庫如何構建和載入 靜態庫和動態庫依賴關係

oracel 數據庫問題 ORA-12547 ORA-12571 解決記錄

錯誤解決 11.2 log 解決辦法 數據 nis ati tor 服務 Oracel 業務數據庫近期頻繁出現:ORA-12547:TNS:lost contact 和 ORA-12571:TNS:packet writer failure 錯誤 排除了端口及監聽程序的問

重寫listview/gridview 的onMeasure方法,解決ScrollView的沖突問題

wid 沖突 integer max resp ide @override 固定 width 自定義類繼承listview/gridview 註意item中控件的高要設為固定值 @Overridepublic void onMeasure(int widthMeasure

Atitit.angular.js 使用最佳實踐 原理常見問題解決列表顯示案例 attilax總結

依賴 實現 http dsi 概念 模板 style ctr net Atitit.angular.js 使用最佳實踐 原理與常見問題解決與列表顯示案例 attilax總結 1. 本文範圍 1 2. Angular的長處 1 2.1. 雙向數據綁定 1 2.2. d

nodejs 構建本地web測試服務器 以及 解決訪問靜態資源的問題!

目錄 pub final blank image folder nbsp 後綴 amp 直接打開html文件,是以file:///方式打開的,這種方式很多時候會遇到跨域的問題,因此我們一般會搭建一個簡易的本地服務器,來運行測試頁面。 一、構建靜態服務器 1、使用expres

代碼塊靜態代碼塊靜態方法的加載順序

setname getname tag urn pri 靜態方法 sta 進入 load public abstract class ClassLoadingTest { public static void main(String[] args) {

[javase學習筆記]-8.2 成員變量靜態變量的差別

key [] cte 執行 div 學習 article alt art 這一節我們看一看成員變量與靜態變量的差別所在。 什麽是靜態變量呢?我們上節用statickeyword時就提到了靜態變量。也就是說用statickeyword修飾的變量就是靜態變量。

localhost或本機ip無法連接數據庫問題解決原因

navicat ref 連接 默認 http blank local mysql ria   解決辦法:將localhost替換為127.0.0.1   原因@參考文章:navicat在電腦沒有聯網的情況下,並不會把localhost解析成127.0.0.1,而mysql默

Head first java chapter 10 數字靜態

靜態 分享 ict 實現 9.png chap image .cn per 註意,先輸出靜態定義,然後運行main,輸出“in main",然後statictests繼承自staticsuper,所

字典樹的動態靜態模板

als 字典樹 ins node highlight stream tno log bool 動態鏈表: #include <iostream> #include <cstdio> #include <cstring> #include

動態靜態Include

jsp htm 時間 文本 區別 兩種 適合 檢查 relative 動態 INCLUDE 用 jsp:include 動作實現 <jsp:include page="included.jsp" flush="true" /> 它總是會檢查所含文件中的變化 ,