連線資料庫時報錯ORA-12520和ORA-12516錯誤

yangtingkun發表於2008-09-14

在本地恢復了一個RAC資料庫,透過設定連線資料庫報錯ORA-12520

 

 

其中本地tnsnames.ora已經進行了設定:

RACTEST2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser2-vip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ractest.us.oracle.com)
      (INSTANCE_NAME = ractest2)
    )
  )

RACTEST1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser1-vip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ractest.us.oracle.com)
      (INSTANCE_NAME = ractest1)
    )
  )

LISTENERS_RACTEST =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser1-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser2-vip)(PORT = 1521))
  )

RACTEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser1-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser2-vip)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ractest.us.oracle.com)
    )
  )

RAC11G2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser1-vip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac11g.us.oracle.com)
      (INSTANCE_NAME = rac11g2)
    )
  )

RAC11G1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser1-vip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac11g.us.oracle.com)
      (INSTANCE_NAME = rac11g1)
    )
  )

LISTENERS_RAC11G =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser1-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser2-vip)(PORT = 1521))
  )

RAC11G =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser1-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = ser2-vip)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac11g.us.oracle.com)
    )
  )

listener也監聽了對應的例項:

$ lsnrctl status

LSNRCTL for Solaris: Version 11.1.0.6.0 - Production on 05-9 -2008 11:05:52

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

正在連線到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER
STATUS
------------------------
別名                      LISTENER_SER2
版本                      TNSLSNR for Solaris: Version 11.1.0.6.0 - Production
啟動日期                  02-9 -2008 15:46:25
正常執行時間              2 19 小時 19 28
跟蹤級別                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
監聽程式引數檔案          /data/oracle/product/11.1/database/network/admin/listener.ora
監聽程式日誌檔案          /data/oracle/diag/tnslsnr/ser2/listener_ser2/alert/log.xml
監聽端點概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.0.2.69)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.0.2.63)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ser2)(PORT=8800))(Presentation=HTTP)(Session=RAW))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ser2)(PORT=7788))(Presentation=FTP)(Session=RAW))
服務摘要..
服務 "+ASM" 包含 1 個例程。
 
例程 "+ASM2", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "+ASM_XPT" 包含 1 個例程。
 
例程 "+ASM2", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "rac11g.us.oracle.com" 包含 2 個例程。
 
例程 "rac11g1", 狀態 READY, 包含此服務的 1 個處理程式...
 
例程 "rac11g2", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "rac11gXDB.us.oracle.com" 包含 2 個例程。
 
例程 "rac11g1", 狀態 READY, 包含此服務的 1 個處理程式...
 
例程 "rac11g2", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "rac11g_XPT.us.oracle.com" 包含 2 個例程。
 
例程 "rac11g1", 狀態 READY, 包含此服務的 1 個處理程式...
 
例程 "rac11g2", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "ractest.us.oracle.com" 包含 2 個例程。
 
例程 "ractest1", 狀態 READY, 包含此服務的 1 個處理程式...
 
例程 "ractest2", 狀態 READY, 包含此服務的 2 個處理程式...
服務 "ractestXDB.us.oracle.com" 包含 2 個例程。
 
例程 "ractest1", 狀態 READY, 包含此服務的 1 個處理程式...
 
例程 "ractest2", 狀態 READY, 包含此服務的 1 個處理程式...
服務 "ractest_XPT.us.oracle.com" 包含 2 個例程。
 
例程 "ractest1", 狀態 READY, 包含此服務的 1 個處理程式...
 
例程 "ractest2", 狀態 READY, 包含此服務的 2 個處理程式...
命令執行成功

而透過RAC11G1RAC11G2RAC11G都無法連線資料庫:

SQL> conn system/test@rac11g1
ERROR:
ORA-12520: TNS:
監聽程式無法為請求的伺服器型別找到可用的處理程式


SQL> conn system/test@rac11g2
ERROR:
ORA-12520: TNS:
監聽程式無法為請求的伺服器型別找到可用的處理程式


SQL> conn system/test@rac11g
ERROR:
ORA-12520: TNS:
監聽程式無法為請求的伺服器型別找到可用的處理程式


SQL> conn system/test@ractest1
已連線。
SQL> conn system/test@ractest2
已連線。
SQL> conn system/test@ractest
已連線。

本地原有的RAC環境可以訪問,新恢復的RAC存在問題,嘗試透過10g的簡便方式連線資料庫報錯如下:

SQL> conn system/test@172.0.2.63/rac11g.us.oracle.com
ERROR:
ORA-12516: TNS:
監聽程式找不到符合協議堆疊要求的可用處理程式


警告: 您不再連線到 ORACLE

最後透過lsnrctl service命令發現了問題:

$ lsnrctl services

LSNRCTL for Solaris: Version 11.1.0.6.0 - Production on 05-9 -2008 11:11:27

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

正在連線到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
服務摘要..
服務 "+ASM" 包含 1 個例程。
 
例程 "+ASM2", 狀態 READY, 包含此服務的 1 個處理程式...
   
處理程式:
      "DEDICATED"
已建立:10 已拒絕:0 狀態:ready
         LOCAL SERVER
服務 "+ASM_XPT" 包含 1 個例程。
 
例程 "+ASM2", 狀態 READY, 包含此服務的 1 個處理程式...
   
處理程式:
      "DEDICATED"
已建立:10 已拒絕:0 狀態:ready
         LOCAL SERVER
服務 "rac11g.us.oracle.com" 包含 2 個例程。
 
例程 "rac11g1", 狀態 READY, 包含此服務的 1 個處理程式...
   
處理程式:
      "DEDICATED"
已建立:0 已拒絕:0 狀態:blocked
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=172.0.2.58)(PORT=1521))
 
例程 "rac11g2", 狀態 READY, 包含此服務的 1 個處理程式...
   
處理程式:
      "DEDICATED"
已建立:0 已拒絕:0 狀態:blocked
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=172.0.2.59)(PORT=1521))
服務 "rac11gXDB.us.oracle.com" 包含 2 個例程。
 
例程 "rac11g1", 狀態 READY, 包含此服務的 1 個處理程式...
   
處理程式:
      "D000"
已建立:0 已被拒絕:0 當前: 0 最大: 1022 狀態: ready
         DISPATCHER
         (ADDRESS=(PROTOCOL=tcp)(HOST=ser1)(PORT=39999))
 
例程 "rac11g2", 狀態 READY, 包含此服務的 1 個處理程式...
   
處理程式:
      "D000"
已建立:0 已被拒絕:0 當前: 0 最大: 1022 狀態: ready
         DISPATCHER
         (ADDRESS=(PROTOCOL=tcp)(HOST=ser2)(PORT=37818))
服務 "rac11g_XPT.us.oracle.com" 包含 2 個例程。
 
例程 "rac11g1", 狀態 READY, 包含此服務的 1 個處理程式...
   
處理程式:
      "DEDICATED"
已建立:0 已拒絕:0 狀態:blocked
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=172.0.2.58)(PORT=1521))
 
例程 "rac11g2", 狀態 READY, 包含此服務的 1 個處理程式...
   
處理程式:
      "DEDICATED"
已建立:0 已拒絕:0 狀態:blocked
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=172.0.2.59)(PORT=1521))
服務 "ractest.us.oracle.com" 包含 2 個例程。
 
例程 "ractest1", 狀態 READY, 包含此服務的 1 個處理程式...
   
處理程式:
      "DEDICATED"
已建立:1 已拒絕:0 狀態:ready
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=ser1)(PORT=1521))
 
例程 "ractest2", 狀態 READY, 包含此服務的 2 個處理程式...
   
處理程式:
      "DEDICATED"
已建立:1 已拒絕:0 狀態:ready
         LOCAL SERVER
      "DEDICATED"
已建立:0 已拒絕:0 狀態:ready
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=ser2)(PORT=1521))
服務 "ractestXDB.us.oracle.com" 包含 2 個例程。
 
例程 "ractest1", 狀態 READY, 包含此服務的 1 個處理程式...
   
處理程式:
      "D000"
已建立:0 已被拒絕:0 當前: 0 最大: 1022 狀態: ready
         DISPATCHER
         (ADDRESS=(PROTOCOL=tcp)(HOST=ser1)(PORT=42266))
 
例程 "ractest2", 狀態 READY, 包含此服務的 1 個處理程式...
   
處理程式:
      "D000"
已建立:0 已被拒絕:0 當前: 0 最大: 1022 狀態: ready
         DISPATCHER
         (ADDRESS=(PROTOCOL=tcp)(HOST=ser2)(PORT=39883))
服務 "ractest_XPT.us.oracle.com" 包含 2 個例程。
 
例程 "ractest1", 狀態 READY, 包含此服務的 1 個處理程式...
   
處理程式:
      "DEDICATED"
已建立:1 已拒絕:0 狀態:ready
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=ser1)(PORT=1521))
 
例程 "ractest2", 狀態 READY, 包含此服務的 2 個處理程式...
   
處理程式:
      "DEDICATED"
已建立:1 已拒絕:0 狀態:ready
         LOCAL SERVER
      "DEDICATED"
已建立:0 已拒絕:0 狀態:ready
         REMOTE SERVER
         (ADDRESS=(PROTOCOL=TCP)(HOST=ser2)(PORT=1521))
命令執行成功

服務RAC11G指向了源資料庫地址,而不是當前的主機地址。

檢查資料庫中初始化引數設定:

SQL> show parameter local_listener

NAME                   TYPE        VALUE
---------------------- ----------- -------------------
local_listener         string      (ADDRESS=(PROTOCOL=TCP)(HOST=172.0.2.58)(PORT=1521))

這裡的設定果然有問題,在恢復的過程中,沒有設定為本機的IP地址。

修改資料庫引數並重啟:

SQL> alter system set local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=172.0.2.62)(PORT=1521))'
  2  scope = spfile sid = 'rac11g1';

系統已更改。

SQL> alter system set local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=172.0.2.63)(PORT=1521))'
  2  scope = spfile sid = 'rac11g2';

系統已更改。

SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE
例程已經關閉。
SQL> startup
ORACLE
例程已經啟動。

Total System Global Area 1.7108E+10 bytes
Fixed Size                  2101632 bytes
Variable Size            3814182528 bytes
Database Buffers         1.3288E+10 bytes
Redo Buffers                4431872 bytes
資料庫裝載完畢。
資料庫已經開啟。

另外的節點也重啟資料庫伺服器。

SQL> conn system/test@rac11g
已連線。
SQL> conn system/test@rac11g1
已連線。
SQL> conn system/test@rac11g2
已連線。

問題解決。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-448368/,如需轉載,請註明出處,否則將追究法律責任。

相關文章