12c 如何為每個pdb對應一個靜態註冊的監聽埠

datapeng發表於2015-06-11
最近有一個新的需求,在12c CDB環境中為每個pdb配置單獨的靜態註冊,每個靜態註冊對應一個獨立的埠號。
比如:
cdb  LISTENER 1521
pdb1 listener1522
pdb2 listener1523
...

首先來回顧一下靜態註冊的引數概念:

1. SID_NAME:資料庫例項名。和資料庫引數INSTANCE_NAME一致。
SYS@cdb >  show parameter instance_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      cdb

2. ORACLE_HOME:例項執行的ORACLE_HOME目錄,如果是叢集環境這裡也填寫ORACLE的ORACLE_HOME目錄。

3. GLOBAL_DBNAME: 資料庫服務名,可以省略,預設和SID_NAME保持一致。在本例中這裡需要填寫PDB的服務名。建立這個服務名可以通過NETMGR來操作。如下圖所示:容器庫的sid為cdb,為可插拔庫pdb2建立同名服務。

實驗環境如下所示,一個名為cdb的多租戶資料庫包含2個可插拔資料庫pdb1,pdb2
[oracle@snow admin]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Sun May 3 01:57:06 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SYS@cdb > show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         4 PDB2                           READ WRITE NO

SYS@cdb > show parameter name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cell_offloadgroup_name               string
db_file_name_convert                 string
db_name                              string      cdb
db_unique_name                       string      cdb
global_names                         boolean     FALSE
instance_name                        string      cdb
lock_name_space                      string
log_file_name_convert                string
pdb_file_name_convert                string
processor_group_name                 string
service_names                        string      cdb

使用netca工具分別建立名為1522和1523的監聽器,過程略。

使用netmgr工具分別為剛剛建立的監聽1522,1523新增服務,也就是我們需要的靜態註冊。


圖形工具建立完成後,檢視配置檔案可以看到配置中的關鍵步驟。
[oracle@snow admin]$ vi listener.ora 
# listener.ora Network Configuration File: /u01/app/oracle/product/12.1.0.1/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

#—netca建立的動態監聽
1523 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = snow.oracle.com)(PORT = 1523))
  )
#—netca建立的動態監聽
1522 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = snow.oracle.com)(PORT = 1522))
  )

ADR_BASE_1523 = /u01/app/oracle


1521 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = snow.oracle.com)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_1522 = /u01/app/oracle

ADR_BASE_1521 = /u01/app/oracle

#—netmgr建立的服務,GLOBAL_NAME為pdb名稱,SID_NAME為cdb名稱
SID_LIST_1523 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = pdb2)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0.1/db_1)
      (SID_NAME = cdb)
    )
  )
#—netmgr建立的服務,GLOBAL_NAME為pdb名稱,SID_NAME為cdb名稱
SID_LIST_1522 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = pdb1)
      (ORACLE_HOME = /u01/app/oracle/product/12.1.0.1/db_1)
      (SID_NAME = cdb)
    )
  )


建立完畢測試效果
[oracle@snow admin]$ sqlplus u1/u1@snow.oracle.com:1522/pdb1

SQL*Plus: Release 12.1.0.1.0 Production on Sun May 3 01:54:12 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Last Successful login time: Sun May 03 2015 01:41:23 -04:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

U1@snow.oracle.com:1522/pdb1 > exit


[oracle@snow admin]$ sqlplus u2/u2@snow.oracle.com:1523/pdb2

SQL*Plus: Release 12.1.0.1.0 Production on Sun May 3 01:54:38 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Last Successful login time: Sun May 03 2015 01:53:07 -04:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

U2@snow.oracle.com:1523/pdb2 > exit

補充內容:
叢集環境下tns是grid使用者下建立的,使用netmgr建立靜態註冊的話在ORACLE_HOME一項填寫的是GRID使用者下的ORACLE_HOME,比如:/u01/12.1.0.1/grid這顯然是不對了。 需要手工將其修改為oracle使用者下的ORACLE_HOME地址,比如:/u01/app/oracle/product/12.1.0.1/db_1

全文完

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

相關文章