Przejdź do głównej zawartości
  • Szybkie i łatwe składanie zamówień
  • Wyświetlanie zamówień i śledzenie stanu wysyłki
  • Tworzenie i dostęp do listy produktów
  • Na firmowej stronie administracji możesz zarządzać witrynami, produktami i danymi kontaktowymi firmy Dell EMC.

如何连接到 Oracle RAC 12cR1 中的可插拔数据库?

Podsumowanie: 我们的目标是提供各种解决方案,通过提供数据库解决方案、自定义开发、动态数据中心、灵活计算,从而简化IT

Ten artykuł mógł zostać automatycznie przetłumaczony. Jeśli masz uwagi na temat jego jakości, przekaż je nam, korzystając z formularza u dołu tej strony.

Treść artykułu


Objawy

应用于:

Oracle 数据库       -     Oracle 12cR1 12.1.0.1.0 Enterprise Edition

操作系统  –     Oracle Linux 6.4,带有内核 2.6.39-400.109.17.1.el6uek.x86-64  和                                          
Red Hat Enterprise Linux,带有内核 2.6.32-431.el6.x86_64

存储平台   -      Dell EqualLogic PS 5000 和 Dell EqualLogic PS 6110

问题:

如何连接到 Oracle RAC 12cR1 中的可插拔数据库?

解决方案:

有四种方法可以建立与可插拔数据库 (PDB) 的连接。
  1. 使用与 pdb 名称同名的默认服务,此服务由数据库软件自动创建。
  2. 使用用户定义的服务,这些服务通过将其与可插拔数据库相关联的 SRVCTL 实用程序创建,并带有 pdb 属性
  3. 使用 alter session 命令并将容器设置为所需的容器
  4. 使用 Enterprise Manager Express
 1. 使用默认服务连接至 PDB

要使用默认服务建立与 pdb 的连接,需要执行以下操作。
  •    需要在定义数据库地址(允许建立与数据库的连接)的 tnsnames.ora 文件中创建一个条目。
  •    pdb 的状态需要从已安装更改为读写模式。
 在 tnsnames.ora 文件中创建一个条目:

对于 Oracle RAC 12c,虽然与可插拔数据库名称同名的默认服务由数据库软件自动创建,但是,无论如何,tnsnames.ora 文件仅通过与全局数据库有关的单个条目生成。例如,对于双节点 Oracle RAC 12c,其中,cpdb 是全局数据库,pdb1 和 pdb2 是创建的两个可插拔数据库,而 cpdb1 和 cpdb2 是两个实例,tnsnames.ora 文件中的默认条目如下所示:

CPDB =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = cpdb.dbase.lab)

   )

)

因此,需要在 tnsnames.ora 文件中为可插拔数据库的默认服务名称创建相关条目,如下所示:

PDB1 =

(DESCRIPTION =                                                             

   (ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = pdb1.dbase.lab)

   )

)

PDB2 =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = pdb2.dbase.lab)

   )

)

更改可插拔数据库的状态:

创建 pdbs 后,默认情况下,open_mode 仅为“已安装”。这可以按以下方式进行验证:

SQL> select name, open_mode from v$pdbs;

NAME                           OPEN_MODE
PDB$SEED                       READ ONLY

PDB1                           MOUNTED

PDB2                           MOUNTED

以下命令以读写模式打开所有可插拔数据库。

SQL>Alter pluggable database all open;

之后,可以使用 sqlplus 建立与数据库的连接,如下所示:

[oracle@node1 bin]$ sqlplus sys/oracle@pdb1 as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Tue Oct 8 11:23:32 2013

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

连接到:

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options

 2.使用用户定义的服务连接到 PDB

上述默认服务应仅用于管理目的,不应用于应用程序。用户定义的服务应始终用于应用程序,因为用户定义的服务可以根据应用程序的要求进行定制。使用用户定义的服务建立连接涉及以下步骤:
  1. 使用 SRVCTL 实用程序创建具有 PDB 属性的数据库服务
  2. 在 tnsnames.ora 文件中为所创建的服务创建条目
  3. 启动服务
  4. 使用在步骤 a 中创建的带有 pdb 属性的服务连接到数据库
a. 使用 SRVCTL 实用程序创建具有 PDB 属性的数据库服务

使用 SRVCTL 实用程序的以下命令创建与可插拔数据库 pdb1 关联的两个数据库服务 hr1 和 sales1:

[[oracle@node1 bin]$ srvctl add service -db cpdb -service hr1 -pdb pdb1 -preferred cpdb1 -available cpdb2

[oracle@node1 bin]$ srvctl add service -db cpdb -service sales1 -pdb pdb1 -preferred cpdb1 -available cpdb2

可以从 data dictionary view all_services 查看 pdb 属性。

SQL>SELECT NAME, PDB FROM all_services;

 NAME                       PDB

pdb1.dbase.lab             PDB1

hr1                        PDB1

sales1                     PDB1

命令 $ srvctl config service –db<databasename> 还列出了可用服务。

b. 在 tnsnames.ora 文件中为所创建的服务创建条目

我们可以创建 hr 应用程序和 sales 应用程序可以分别使用的净服务名称 HR_PDB1 和 SALES_PDB1,以连接到可插拔数据库 pdb1,如下所示:

HR_PDB1 =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = hr1.dbase.lab)

   )

)

SALES_PDB1 =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = sales1.dbase.lab)

   )

)

c. 启动服务

[oracle@nsnode1 bin]$ srvctl status service -db cpdb -service hr1

Service hr1 未运行

 [oracle@nsnode1 bin]$ srvctl start service -db cpdb -service hr1

启动与 pdb 关联的服务会自动以读写模式打开 pdb。

d.连接到数据库服务

用户使用具有 pdb 属性的数据库服务连接到 pdb。

例如,SYS 用户可以使用与 pdb1 关联的数据库服务 HR_PDB1 连接到 pdb1,如下所示:

SQL> connect sys/oracle@HR_PDB1 AS SYSDBA

Connected.

SQL> SHOW CON_ID;

 CON_ID

3

SQL> SHOW CON_NAME;

CON_NAME

PDB1

3.使用 Alter Session 命令连接至 PDB

默认情况下,当您连接到 RAC 实例时,您将连接到 CDB$ROOT。每个 RAC 实例将作为一个整体打开 PDB,系统将提供单个系统图像。当您想要将会话更改为 pdb 时,可以通过更改会话并将容器设置为所需的容器来执行此操作。查询 show con_name 可用于验证当前容器的名称。

[oracle@node1 bin]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Wed Oct 9 13:56:27 2013

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

连接到:

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Advanced Analytics and Real Application Testing options

SQL> show con_name;

CON_NAME

CDB$ROOT

SQL> ALTER SESSION SET CONTAINER = PDB1;

Session altered.

SQL> SHOW CON_NAME;

CON_NAME

PDB1

 SQL> ALTER SESSION SET CONTAINER = PDB2;

Session altered.

SQL> SHOW CON_ID;

CON_ID

4

SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;

Session altered.

SQL> SHOW CON_NAME;

CON_NAME

CDB$ROOT

容器 Id 说明如下:
容器 ID 描述
0 整个 CDB
1 CDB$ROOT
2 PDB$SEED
3 至 254 PDB
表 1:  容器 Id 说明

在这个特定的示例中,是 con_id 3 represents pdb1 和 con_id 4 represents pdb2。

grid@node1 bin]$ echo $ORACLE_HOME

/u01/app/12.1.0/grid

 [grid@node1 bin]$ echo $ORACLE_SID

+ASM1

[grid@node1 bin]$ sqlplus / as sysdba

 SQL*Plus:Release 12.1.0.1.0 Production on Wed Oct 9 13:51:39 2013

Copyright (c) 1982, 2013, Oracle.保留所有权利。

连接到:

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production

With the Real Application Clusters and Automatic Storage Management options

 SQL> show con_id;

CON_ID

0

 SQL> show con_name;

 CON_NAME

Non Consolidated

4.使用 Enterprise Manager(EM) Express 连接至 PDB

当使用 Database Configuration Assistant (DBCA) 创建数据库时,完成时,EM Express 的 URL 由 DBCA 提供。URL 的格式为 http://<hostname>:portnumber/em,5500 是默认端口 ID。

在转到该 URL 以访问 EM Express 之前,您需要发出以下 SQL 语句以确认 EM Express 端口:

SQL> SELECT dbms_xdb_config.gethttpsport from dual;

GETHTTPSPORT

       5500

如果输出如上所示,则可以通过 DBCA 连接到上面显示的 URL。

但如果输出为空,例如

GETHTTPSPORT

必须执行 PL/SQL 程序 DBMS_XDB_CONFIG.SETHTTPSPORT,设置 EM Express 设置 HTTPS 端口。例如:

SQL> exec dbms_xdb_config.sethttpsport(5500);

已成功完成 PL/SQL 流程。

在此之后,您可以尝试使用 URL 访问 EM Express。

HTTP 端口也可按如下所示为 EM Express 配置:

SQL> select dbms_xdb_config.gethttpport from dual;

 SQL> exec dbms_xdb_config.sethttpport(8080);

要设置 pdbs 的 EM Express 端口,需要将容器更改为相应的 pdbs,并执行 PL/SQL 过程来设置该容器的端口。

完成后,可以检查 cpdb、pdb1 和 pdb2 的 HTTP 端口,如下所示:

SQL> select dbms_xdb_config.gethttpport from dual;

GETHTTPPORT

       8080

SQL> alter session set container = pdb1;

Session altered.

SQL> select dbms_xdb_config.gethttpport from dual;

 GETHTTPPORT

       8081

SQL> alter session set container = pdb2;

Session altered.

SQL> select dbms_xdb_config.gethttpport from dual;

GETHTTPPORT

       8082 
SLN310924_en_US__1icon 提醒:如果您仍然无法连接到 EM Express URL,作为网格用户重新加载侦听器控件,然后重试。

Właściwości artykułu


Data ostatniej publikacji

21 lut 2021

Wersja

3

Typ artykułu

Solution