Oracle19c多租戶下的監聽配置
1.一些基本知識
1.1 如何查詢sid和GLOBAL_NAME
-
查看sid
可以通過數據庫的性能視圖來查詢亦或者linux下面使用查看進程命令的方式.具體命令如下:
SQL> select name from v$database; NAME --------------------------- ORADB SQL> select instance_name from V$instance; INSTANCE_NAME ------------------------------------------------ oradb [oracle@localhost admin]$ ps -ef |grep ora_ oracle 14326 1 0 10:47 ? 00:00:01 ora_pmon_oradb oracle 14328 1 0 10:47 ? 00:00:00 ora_clmn_oradb oracle 14330 1 0 10:47 ? 00:00:03 ora_psp0_oradb oracle 14333 1 2 10:47 ? 00:04:51 ora_vktm_oradb oracle 14337 1 0 10:47 ? 00:00:01 ora_gen0_oradb
-
查詢GLOBAL_NAME.
由於是多租戶模式,所以使用sqlplus "/as sysdba"一般進入的是cdb$ROOT容器.可以查詢對應的global_name,如下:
[oracle@localhost admin]$ sqlplus "/as sysdba" Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 SQL> select * from global_name; GLOBAL_NAME ----------------- ORADB SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 HRPDB READ WRITE NO
這裏我們可以切換到HRPDB數據庫,查看global_name.如下:
SQL> alter session set container=HRPDB; Session altered. SQL> select * from global_name; GLOBAL_NAME -------------------------------------------------------------------------------- HRPDB
2.監聽配置
Oracle 19c的監聽配置和Oracle11gR2唯一的區別,就是多了CDB和PDB的概念,本質沒有變化.
配置文件如下listener.ora
:
/u01/app/oracle/product/19.3/dbhome_1/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.xx.202)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER=
## Pluggable database listener 插件式數據監聽
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=HRPDB)
(SID_NAME=oradb)
(ORACLE_HOME=/u01/app/oracle/product/19.3/dbhome_1)
)
## container database listener 容器數據庫監聽
(SID_DESC=
(GLOBAL_DBNAME=ORADB)
(SID_NAME=oradb)
(ORACLE_HOME=/u01/app/oracle/product/19.3/dbhome_1)
)
)
client端需要配置(tnsnames.ora),如下:
HRPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.xx.202)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = HRPDB)
)
)
ORADB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.xx.202)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORADB)
)
)
3.測試
可以使用tnsping和sqlplus的方式來建議,如下:
-
tnsping
[oracle@localhost admin]$ tnsping ORADB TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 29-JAN-2021 15:00:13 Copyright (c) 1997, 2019, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.xx.202)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORADB))) OK (10 msec)
-
sqlplus
[oracle@localhost admin]$ sqlplus system/hrpdb@HRPDB SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jan 29 15:01:56 2021 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Last Successful login time: Fri Jan 29 2021 14:45:10 +08:00 Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 SQL> select * From global_name; GLOBAL_NAME -------------------------------------------------------------------------------- HRPDB
後面可以通過寫java或者python程序,來連接Oracle19c數據庫。大的變化沒有。