应用开发数据库之ORACLE 12C初探
简介
oracle 12c较oracle之前的版本最大的改变就是引入了CDB(Container Database)与PDB(Pluggable Database)的新特性,其引入的多租用户环境,允许一个数据库容器(CDB)承载多个可拔插的PDB。在12从之前,数据库是实例与数据库是一对一或多对一关系(RAC)。当12C之后,数据库与实例可以是多对一的关系。ORACLE 12C在JDBC方面也有所改动!传统的链接方法:jdbc:oracle:thin:@localhost:1521:orcl,新的的链接jdbc:oracle:thin:@127.0.0.1:1521/pdborcl!
PDB介绍
SQL>select sys_context ('USERENV', 'CON_NAME') from dual;
----------------------------------------------------------------------------------------------------
CDB$ROOT02. 可以通过如下命名查看当前实例下有多少租户(多少数据库):如下代码:
SQL>select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
-------------------------------------------------------------------------------
CON_ID DBID NAME OPER_MODE
2 3074450648 PDB$SEED READONLY
3 1604605593 ORCLPDB MOUNTED (备注:mounted状态,此时数据库不可用)
alter pluggable database pdborcl open;此时con_ID=3的OPER_MODE状态变为“read,write”状态了,表名此时,数据库可以用了(任何数据库客户端都可以正常连接该数据库)。
alter session set container=ORCLPDB;05.可以在该命令下,执行像单实例单数据库的操作(包括创建用户等等一系列的操作)。
ORACLE 12C JDBC操作
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:ORCLPDB将会抛出如下的错误信息
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocolNIO.negotiateConnection(NSProtocolNIO.java:271)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:317)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1438)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:518) 正确的写法如下:
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521/ORCLPDB