Oracle LiveLabs实验:Configure network environment for Oracle Database 21c

Posted dingdingfish

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle LiveLabs实验:Configure network environment for Oracle Database 21c相关的知识,希望对你有一定的参考价值。

概述

此实验申请地址在这里

实验帮助在这里

此实验预估完成时间65分钟。

这个实验其实并不需要特别的实验环境,任意找一个安装好的数据库都行。

简介

本研讨会重点介绍 Oracle Database 21c 的网络环境,其中包括监听器配置、监听器操作以及容器数据库 (CDB) 和可插拔数据库 (PDB) 的 HTTPS 端口。

什么是监听器?
Oracle Net Listener(或 Listener)是在 Oracle 数据库服务器上运行的网络服务。

监听器的主要作用是:

  • 管理 Oracle 数据库和客户端之间的连接请求
  • 管理网络流量
  • Oracle 监听器的默认名称是 LISTENER。


目标
本研讨会帮助您了解如何启动和停止侦听器以及查看侦听器配置。 您还可以为 CDB 和 PDB 设置 https 端口。

附录一:关于监听器配置

安装 Oracle 数据库后,您将拥有一个具有客户端/服务器网络环境的功能齐全的数据库。 Oracle Net 是位于客户端和 Oracle 数据库服务器上的软件层。 它通过网络建立和维护客户端应用程序和数据库之间的连接,并使用行业标准协议在它们之间交换消息。

客户端
客户端是连接到 Oracle 数据库以发送和接收数据的应用程序。 Oracle 数据库客户端应用程序驻留在安装了 Oracle 数据库客户端软件的主机上。

服务(Service)
客户端应用程序使用服务名称来识别 Oracle 数据库实例并连接到它。 服务名是 Oracle 数据库的逻辑表示。 一个数据库可以有一个或多个与之关联的服务。

例如,监听器状态返回代表 Oracle 数据库实例的服务名称 CDB1。

...
Service "CDB1" has 1 instance(s).
  Instance "CDB1", status READY, has 1 handler(s) for this service...

单个实例 Oracle 数据库可以作为多个服务与客户端交互。

默认监听器配置文件
监听器配置存储在文件 listener.ora 中,该文件位于 ORACLE_HOME 主目录下的 network/admin 子目录下。(但21c的文件位置有所不同

准确的说,listener.ora, tnsnames.ora位于环境变量TNS_ADMIN下。下面这个脚本说明了如何得到TNS_ADMIN:

  export OH=$ORACLE_HOME
  if [ -f $OH/bin/orabasehome ]; then
    export ORACLE_BASE_HOME=$(orabasehome)
    export TNS_ADMIN=$ORACLE_BASE_HOME/network/admin
  else
    export TNS_ADMIN=$OH/network/admin
  fi

这里的概念可参考文档:

In a read/write ORACLE_HOME, the ORACLE_BASE_HOME path is the same as the ORACLE_HOME directory. However, in a read-only ORACLE_HOME, the ORACLE_BASE_HOME directory is not co-located with ORACLE_HOME but is located at ORACLE_BASE/homes/HOME_NAME.

Where, HOME_NAME is the internal name for ORACLE_HOME.

相关的orabase系列命令:

$ orabase
/opt/oracle

$ orabasehome
/opt/oracle/homes/OraDB21Home1

$ orabaseconfig
/opt/oracle

listener.ora 文件包含确定侦听器行为的配置参数。 参数包括:

  • 监听名称
  • 监听器可以接受连接请求的协议地址
  • 监听器允许向 Oracle 数据库注册的有效节点
  • Oracle 数据库服务
  • 控制参数

以下示例简要介绍了 listener.ora 文件。 此处,侦听器采用默认名称 LISTENER。 这些值可能因您使用的系统而异。

...

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = sale-server.us.oracle.com)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
...

您可以在一个 listener.ora 文件中配置多个监听器,每个监听器具有唯一的名称。 但是,Oracle 建议您只为客户环境中的每个节点运行一个监听器。

监听器注册 (LREG) 是一个实例后台进程,它使用监听器执行服务和数据库的动态注册

客户端连接
客户端连接到 Oracle 数据库所涉及的元素是:

  • 连接描述符
    客户端使用连接描述符来指定它想要连接的 Oracle 数据库。 连接描述符包含协议和 Oracle 数据库服务名称。
  • 连接请求
    用户使用连接字符串向 Oracle 数据库发起连接请求。 连接字符串包括用户名和密码,以及连接标识符。 连接标识符可以是连接描述符或代表连接描述符的名称。
  • 命名方法
    在连接到 Oracle 数据库服务时,客户端应用程序使用一种解析方法,称为命名方法。 此方法将连接标识符解析为连接描述符。

以下示例显示了一个连接描述符,它使客户端能够使用服务名称 CDB1 连接到 Oracle 数据库。 这些值可能因您使用的系统而异。

...

DESCRIPTION=
   (ADDRESS=(PROTOCOL=tcp)(HOST=my-server)(PORT=1521))
   (CONNECT_DATA=
      (SERVICE_NAME=CDB1))
...

网络配置工具
Oracle Net Services 提供用户界面工具和命令行实用程序来配置、管理和监视网络。

  • Oracle 网络配置助手 (NETCA)
  • Oracle Net Manager

在数据库安装后立即使用网络配置助手 (NETCA)进行初始网络配置。 此后,您可以使用 Oracle Net Manager 来配置和管理您的网络。

Oracle Enterprise Manager Cloud Control (Oracle EMCC) 将跨多个文件系统的配置功能与侦听器管理控制相结合,为配置和管理 Oracle 网络服务提供集成环境。

关于 Oracle 网络配置助手 (NETCA)
Oracle Net Configuration Assistant (NETCA) 是一个独立工具,可帮助您配置侦听器和命名方法。 在 Oracle 数据库的典型安装过程中,Net Configuration Assistant 自动为一个侦听器配置一个 TCP/IP 侦听协议地址用于数据库。 然而,在 Oracle 数据库的高级安装中,Net Configuration Assistant 会提示您指定侦听器名称和您选择的端口号。

关于 Oracle 网络管理器
Oracle Net Manager 为本地客户端或服务器主机上的 Oracle 主目录提供配置功能。 它提供内置向导和实用程序来测试连接性、将数据从一种命名方法迁移到另一种命名方法以及创建其他网络组件。

本实验的作者为Manish Garodia,其它贡献者为Suresh Rajan, Prakash Jashnani, Malai Stalin, Subhash Chandra, Dharma Sirnapalli, Subrahmanyam Kodavaluru, Manisha Mati。

实验 3:CDB 和 PDB 的 HTTPS 端口

简介

本实验将引导您完成查看和设置容器数据库 (CDB) 和可插拔数据库 (PDB) 的 HTTPS 端口号的步骤。

创建 CDB 时,Oracle 数据库配置助手 (Oracle DBCA) 会自动为其分配一个唯一的端口号。 监听器使用此端口连接到 CDB。 您可以使用默认端口或使用动态协议注册方法为 CDB 和 PDB 设置您选择的新端口号。

注意:在连接到 Oracle 数据库时,在以下情况下您不需要密码。

  • Oracle 数据库驻留在本地主机上。
  • 当前用户(对于本实验,它是 oracle 用户)是 OSDBA 组的成员。

目标
查看调度程序配置,检查 CDB 和 PDB 的默认 HTTPS 端口号,并修改端口号。

任务 1:设置环境

您已为活动终端会话设置环境变量。 您现在可以连接到 Oracle 数据库并运行命令。

ORAENV_ASK=NO
ORACLE_SID=ORCLCDB
. oraenv

此命令将$ORACLE_BASE设置为/opt/oracle,以及将ORACLE_HOME设置为 /opt/oracle/product/21c/dbhome_1。

注意:每次打开新的终端窗口时,都必须设置环境变量以从该终端连接到 Oracle 数据库。 来自一个终端的环境变量不会自动应用于其他终端。
或者,您可以从主位置运行脚本文件 .set-env-db.sh 并输入 ORACLE_SID 的编号(注意,其大小写敏感)。 它自动设置环境变量。
.set-env-db.sh脚本如下:


任务 2:查看调度程序(Dispatcher)配置

SQL> show parameter dispatchers

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dispatchers                          string      (PROTOCOL=TCP) (SERVICE=ORCLCD
                                                 BXDB)
max_dispatchers                      integer

验证它是否包含 PROTOCOL=TCP 属性。

任务 3:为 CDB 设置 HTTPS 端口

CDB 的默认端口是 5500。对于本实验,请将端口更改为 5506。

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> select dbms_xdb_config.gethttpsport() from dual;

DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
                          5500

SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5506);

PL/SQL procedure successfully completed.

SQL> select dbms_xdb_config.gethttpsport() from dual;

DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
                          5506

任务 4:为 PDB 设置 HTTPS 端口

PDB 的默认端口是 0。对于本实验,将端口更改为 5507。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB1                       READ WRITE NO

SQL> alter session set container=orclpdb1;

Session altered.

SQL> show con_name

CON_NAME
------------------------------
ORCLPDB1

SQL> select dbms_xdb_config.gethttpsport() from dual;

DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
                             0
                             
SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5507);

PL/SQL procedure successfully completed.

SQL> select dbms_xdb_config.gethttpsport() from dual;

DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
                          5507

实验 4:监听器操作

简介

本实验展示如何使用监听器控制实用程序执行监听器操作,例如启动和停止监听器、检查监听器状态等。

任务 1:设置环境

. oraenv

任务 2:查看侦听器配置

运行 lsnrctl status 命令查看监听是否启动并查看监听配置。

$ lsnrctl status

LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 14-NOV-2022 22:57:09

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 21.0.0.0.0 - Production
Start Date                14-NOV-2022 22:40:44
Uptime                    0 days 0 hr. 16 min. 25 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/oracle-21c-vagrant/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oracle-21c-vagrant)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/admin/ORCLCDB/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "ORCLCDB" has 1 instance(s).
  Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
Service "ORCLCDBXDB" has 1 instance(s).
  Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
Service "ed2ad72a8075d4cbe0530101007f069d" has 1 instance(s).
  Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
Service "orclpdb1" has 1 instance(s).
  Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
The command completed successfully

监听器控制实用程序显示监听器配置设置、监听协议地址和向监听器注册的服务的摘要。如果 Oracle 数据库已配置 PDB,您将看到在 Oracle 数据库实例上运行的每个 PDB 的服务。

任务 3:停止和启动监听器

停止监听:

$ lsnrctl stop

LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 14-NOV-2022 23:00:55

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
The command completed successfully

此时,用服务连接数据库会显示无监听:

$ sqlplus system@orclpdb1

SQL*Plus: Release 21.0.0.0.0 - Production on Mon Nov 14 23:01:34 2022
Version 21.3.0.0.0

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

Enter password:
ERROR:
ORA-12541: TNS:no listener


Enter user-name:

但以下命令会成功,因为其没有通过服务来连接,因此也无需通过监听:

$ sqlplus / as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on Mon Nov 14 23:02:51 2022
Version 21.3.0.0.0

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


Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SQL>

注意:如果侦听器未在主机上运行,Oracle Enterprise Manager Cloud Control (Oracle EMCC) 将返回一个 I/O 错误,指示无法与您的 Oracle 数据库建立连接。

启动监听:

$ lsnrctl start

LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 14-NOV-2022 23:03:52

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

Starting /opt/oracle/product/21c/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 21.0.0.0.0 - Production
System parameter file is /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/oracle-21c-vagrant/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 21.0.0.0.0 - Production
Start Date                14-NOV-2022 23:03:52
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/oracle-21c-vagrant/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
The listener supports no services
The command completed successfully

查看监听状态:

$ lsnrctl status

LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 14-NOV-2022 23:04:19

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 21.0.0.0.0 - Production
Start Date                14-NOV-2022 23:03:52
Uptime                    0 days 0 hr. 0 min. 27 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/oracle-21c-vagrant/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oracle-21c-vagrant)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/admin/ORCLCDB/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "ORCLCDB" has 1 instance(s).
  Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
Service "ORCLCDBXDB" has 1 instance(s).
  Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
Service "ed2ad72a8075d4cbe0530101007f069d" has 1 instance(s).
  Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
Service "orclpdb1" has 1 instance(s).
  Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
The command completed successfully

此时仅显示用户名或口令不正确,但不会显示无监听的错误:

$ sqlplus system@orclpdb1

SQL*Plus: Release 21.0.0.0.0 - Production on Mon Nov 14 23:04:53 2022
Version 21.3.0.0.0

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

Enter password:
ERROR:
ORA-01017: invalid username/password; logon denied


Enter user-name:

以上是关于Oracle LiveLabs实验:Configure network environment for Oracle Database 21c的主要内容,如果未能解决你的问题,请参考以下文章

Oracle LiveLabs实验:Oracle RAC Fundamentals

Oracle LiveLabs实验:Install Oracle Database 21c

Oracle LiveLabs实验:DB Security - Oracle Label Security (OLS)

Oracle LiveLabs实验:Oracle Label Security (OLS)

Oracle LiveLabs实验:Introduction to Oracle Spatial

Oracle LiveLabs实验:Introduction to Oracle Spatial