oracle 12c 怎样配置TNS来访问PDB

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 12c 怎样配置TNS来访问PDB相关的知识,希望对你有一定的参考价值。

oracle 12c 配置TNS来访问PDB的方法如下:
1、配置监听
首先要明确,所有的PDB都使用1个监听,配置多个实际上启动时也只有第1个有意义。 LISTENER = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ora12c_A)(PORT = 1521)) )
)
接下来使用SID_LIST_LISTENER来进行静态注册服务。
SID_LIST_LISTENER = (SID_LIST = (SID_DESC =
(GLOBAL_DBNAME = ora12c) #该服务是我配置的cdb信息 (SID_NAME = ora12c) )
)
2、tnsnames.ora配置
在tnsnames中配置pdb跟CDB,即原来11g的配置完全一样。这里SERVICE_NAME = pdborcl使用得是PDB的名字,可以在v$pdbs中查看。
ORA12C = (DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ora12c_A)(PORT = 1521)) )
(CONNECT_DATA =
(SERVICE_NAME = ora12c) )
)

3、为了保险,检查下sqlnet.ora
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) 这一句是为了保证优先使用TNSNAMES解析。
配置完,在PDB启动的情况下,就可以直接连接到PDB了。
参考技术A 通过配置本地数据库的tns配置文件实现:
去oracle安装目录下oracle\product\10.2.0\db_2\NETWORK\ADMIN\ 找到tnsnames.ora,用记事本打开,里边有远程数据库的tns连接配置串如下
ORCL23 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.23)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ORCL)
)
)
添加好ip、端口和目标数据库的实例名(SID),然后确保tns名称(ORCL23)在整个文档中唯一,保存后打开数据库连接工具,输入远程数据库上的用户名密码,选择数据库对象为你配置的连接名就可以了本回答被提问者和网友采纳

oracle12c怎么安装

参考技术A 1、按照正常步骤安装好数据库后,此时存在一个CDB和一个PDB,通过lsnrctl status命令可以看监听是否正常及是否监听到PDB;

2、数据库起来后,缺省PDB为mount状态,通过执行alter PLUGGABLE database pdb1 open;或者执行alter PLUGGABLE database all open;来打开PDB数据库,通过执行alterPLUGGABLE database pdb1 close;或者alter PLUGGABLE database all close;来关闭PDB数据库;

3、登录PDB,首先必须在TNSNAMES文件中加入如下内容:

pdb1 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = THINKED)(PORT = 1521))

(CONNECT_DATA =

(SERVICE_NAME = pdb1)

)

)

在设置了以上内容后,可以执行以下命令登录PDB:

$sqlplus sys/xifenfei@pdb1 as sysdba

或者在以sysdba登录CDB后,执行以下命令:

sql>alter session set container=pdb1;

4、创建用户

创建用户默认的是container=all,在cdb中只能创建全局用户(c##开头),会在cdb和所有的pdb中创建该用户(但是pdb中的全局用户需要另外授权才能够在pdb中访问)。在pdb中创建的用户只能为本地用户。

按照以上内容理解一般我们日常使用的业务用户应该是建立在PDB下的。

5、用户授权

用户授权默认情况下是只会给当前container,在cdb中也可以指定container=all,对所有open的pdb且存在该用户都进行授权。

6、修改参数

在ROOT中修改参数,默认情况和指定container=all/current均是所有open的pdb都生效。

通过测试我们发现在独立修改pdb参数之时,其本质是在pdb_spfile$基表中插入或者修改相关记录。

通过对pdb_spfile$基表的分析,证明pdb中不同于root的参数是记录在root的PDB_SPFILE$基表中。整个CDB的工作原理是如果在PDB_SPFILE$中无相关参数记录,则继承cdb的参数文件中的值,如果PDB_SPFILE$中有记录则使用该值覆盖cdb参数文件值。

进一步的,删除pdb_spfile$基表中相应值来进行验证,pdb的参数值会自动继承cdb中的参数。

在oracle 12c中pdb数据库默认是不起来的,下面介绍一下pdb起关的一些常用命令。

默认状态:

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED

2 PDB$SEED READ ONLY NO

3 PDB1 MOUNTED

4 PDB2 MOUNTED

全部开启pdb:

SQL> alter pluggable database all open;

Pluggable database altered.

全部关闭pdb:

SQL> alter pluggable database all close immediate;

Pluggable database altered.

当然也可以对个别pdb库关闭或开启:

SQL> alter pluggable database PDB1 close immediate;

Pluggable database altered.

SQL> alter pluggable database PDB1 open;

Pluggable database altered.

怎么样让pdb随着instance起来而起来呢?需要写一个TRIGGER来拉动pdb

conn / as sysdba

CREATE TRIGGER open_all_pdb

AFTER STARTUP

ON DATABASE

BEGIN

EXECUTE IMMEDIATE 'alter pluggable database all open';

END open_all_pdb;

/

7、ORACLE 12C的Enterprise Manager Database Express 12c相对于11G和10G的Enterprise Manager,从功能上说确实精简了很多,比如不支持在线查看AWR,不支持在线操作不备份,不支持对SCHEDULER的操作等等,减少了功能的同时也大大的降低了其使用难度,不用向以前以前还需要启动dbconsole,需要配置资料库等等一些繁琐的操作,还经常出现一些莫名其妙的问题不得不重建EM。预测几年之后EM Express的使用人说可能会增加(数据库升级到12C是一个因素,有些人毕竟不会购买GC)。在12C的Express版本中,默认情况下只需要在对应的pdb用户下执行如下操作即可启用EM Express
设置http端口
exec DBMS_XDB_CONFIG.SETHTTPPORT(http_port_number);

设置https端口
exec DBMS_XDB_CONFIG.SETHTTPSPORT(https_port_number);

注意:Each container must use a unique port for EM Express,同时对于有些机器缺省带的IE8,在进行EM登录时会报错,出现不能登录的现象,一般升级到IE9就应该可以正常使用。

以上是关于oracle 12c 怎样配置TNS来访问PDB的主要内容,如果未能解决你的问题,请参考以下文章

oracle 12c 怎样配置TNS来访问PDB

Oracle 12C impdp权限问题

oracle 12c service之cdb和pdb

oracle12c怎么安装

ORACLE 12C采坑之 ORA-12541:TNS:无监听程序

Oracle 12c 多租户家族(12c 18c 19c)如何在 PDB 中添加 HR 模式