如何配置Hibernate连接oracle12c 的PDB和CDB数据库

如何配置Hibernate连接oracle12c 的PDB和CDB数据库,第1张

1 连接到CDB

和普通实例一样的连接。 指定ORACLE_SID 以后可以使用OS认证,也可以使用密码进行连接。

[oracle@Ora12c /]$ echo $ORACLE_SID

cndba

[oracle@Ora12c /]$ sqlplus / as sysdba

SQLPlus: Release 121010 Production onMon Apr 28 11:33:43 2014

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

Connected to:

Oracle Database 12c Enterprise EditionRelease 121010 - 64bit Production

With the Partitioning, OLAP, AdvancedAnalytics and Real Application Testing options

SQL> conn system/oracle

Connected

SQL>

--查看CDB中可用的service:

SQL> COLUMN name FORMAT A30

SQL> SELECT name,pdb

2 FROM v$services

3 ORDER BY name;

NAME PDB

------------------------------------------------------------

SYS$BACKGROUND CDB$ROOT

SYS$USERS CDB$ROOT

cndba CDB$ROOT

cndbaXDB CDB$ROOT

pcndba2 PCNDBA2

pdbcndba PDBCNDBA

6 rows selected

--通过lsnrctl 也可以判断:

[oracle@Ora12c /]$ lsnrctl service

LSNRCTL for Linux: Version 121010 -Production on 28-APR-2014 11:35:31

Copyright (c) 1991, 2013, Oracle All rights reserved

Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

Services Summary

Service "cndba" has 1instance(s)

Instance "cndba", status READY, has 1 handler(s) for thisservice

Handler(s):

"DEDICATED" established:0 refused:0 state:ready

LOCAL SERVER

Service "cndbaXDB" has 1instance(s)

Instance "cndba", status READY, has 1 handler(s) for thisservice

Handler(s):

"D000" established:0 refused:0 current:0 max:1022 state:ready

DISPATCHER <machine: Ora12c, pid: 10085>

(ADDRESS=(PROTOCOL=tcp)(HOST=Ora12c)(PORT=14696))

Service "pcndba2" has 1instance(s)

Instance "cndba", status READY, has 1 handler(s) for thisservice

Handler(s):

"DEDICATED" established:0 refused:0 state:ready

LOCAL SERVER

Service "pdbcndba" has 1instance(s)

Instance "cndba", status READY, has 1 handler(s) for thisservice

Handler(s):

"DEDICATED" established:0 refused:0 state:ready

LOCAL SERVER

The command completed successfully

[oracle@Ora12c /]$

通过这些service,就可以远程连接CDB。

--EZCONNECT

C:\Users\Dave>sqlplussystem/oracle@192168110:1521/cndba

SQLPlus: Release 112010 Production on 星期三 4月 30 11:36:48 2014

Copyright (c) 1982, 2010, Oracle All rights reserved

连接到:

Oracle Database 12c Enterprise EditionRelease 121010 - 64bit Production

With the Partitioning, OLAP, AdvancedAnalytics and Real Application Testing options

SQL>

--通过TNSNAMESORA连接:

在tnsnamesora 中配置如下:

cndba =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = cndba)

)

)

--连接:

C:\Users\Dave>sqlplussystem/oracle@cndba

SQLPlus: Release 112010 Production on 星期三 4月 30 11:40:01 2014

Copyright (c) 1982, 2010, Oracle All rights reserved

连接到:

Oracle Database 12c Enterprise EditionRelease 121010 - 64bit Production

With the Partitioning, OLAP, AdvancedAnalytics and Real Application Testing options

SQL>

2 在不同Container database中切换

在12c的架构中,因为有CDB和 PDB的存在,所以会有很多不同的container,所以在连接到不同的container时,就需要进行切换。

--查看当前的container:

SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> SELECT SYS_CONTEXT('USERENV','CON_NAME') FROM dual;

SYS_CONTEXT('USERENV','CON_NAME')

--------------------------------------------------------------------------------

CDB$ROOT

SQL> set lin 140

SQL> select con_id, dbid,guid, name , open_mode from v$pdbs;

CON_ID DBID GUID NAME OPEN_MODE

---------- ------------------------------------------ ---------- ----------

2 4088301206 F7C1E3C96BBF0585E0430A01A8C05459 PDB$SEED READ ONLY

3 426143573F7C209EB1DFC0854E0430A01A8C0B787 PDBCNDBA READ WRITE

4 1231796139 F812DE1B6A8F363AE0430A01A8C0C759 PCNDBA2 READ WRITE

--切换container:

SQL> alter session setcontainer=pcndba2;

Session altered

SQL> show con_name

CON_NAME

------------------------------

PCNDBA2

3 连接到PDB

--EZCONNECT:

C:\Users\Dave>sqlplussystem/oracle@192168110:1521/pcndba2

SQLPlus: Release 112010 Production on 星期三 4月 30 11:54:30 2014

Copyright (c) 1982, 2010, Oracle All rights reserved

连接到:

Oracle Database 12c Enterprise EditionRelease 121010 - 64bit Production

With the Partitioning, OLAP, AdvancedAnalytics and Real Application Testing options

SQL>

--TNSNAMESora

在tnsnamesora 中添加如下内容:

pcndba =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = pcndba2)

)

)

C:\Users\Dave>sqlplussystem/oracle@pcndba

SQLPlus: Release 112010 Production on 星期三 4月 30 11:55:50 2014

Copyright (c) 1982, 2010, Oracle All rights reserved

连接到:

Oracle Database 12c Enterprise EditionRelease 121010 - 64bit Production

With the Partitioning, OLAP, AdvancedAnalytics and Real Application Testing options

SQL>

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

设置>

以上就是关于如何配置Hibernate连接oracle12c 的PDB和CDB数据库全部的内容,包括:如何配置Hibernate连接oracle12c 的PDB和CDB数据库、oracle12c怎么安装、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10152563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存