直接进入ORACLE12C插件数据库
CDB和PDB是ORACLE 12C一個很亮的新特性,由于他們的引入導致傳統的ORACLE數據庫管理理念不少發生了改變。
? ? 在ORACLE 12C數據庫引入的多租用戶環境(Multitenant Environment)中,允許一個數據庫容器(CDB)承載多個可插拔數據庫(PDB)。CDB全稱為Container Database,中文翻譯為數據庫容器,PDB全稱為Pluggable Database,即可插拔數據庫。在ORACLE 12C之前,實例與數據庫是一對一或多對一關系(RAC):即一個實例只能與一個數據庫相關聯,數據庫可以被多個實例所加載。而實例與數據庫不可能是一對多的關系。當進入ORACLE 12C后,實例與數據庫可以是一對多的關系。
? ? 其實大家如果對sql server比較熟悉的話,這種CDB與PDB是不是感覺和SQL SERVER的單實例多數據庫架構是一回事呢。像PDB$SEED可以看成是master、msdb等系統數據庫,PDBS可以看成用戶創建的數據庫。而可插拔的概念與SQL SERVER中的用戶數據庫的分離、附加其實就是那么一回事。
CDB組件(Components of a CDB)
一個CDB數據庫容器包含了下面一些組件:
ROOT組件
ROOT又叫CDB$ROOT, 存儲著ORACLE提供的元數據和Common User,元數據的一個例子是ORACLE提供的PL/SQL包的源代碼,Common User 是指在每個容器中都存在的用戶。
SEED組件
? Seed又叫PDB$SEED,這個是你創建PDBS數據庫的模板,你不能在Seed中添加或修改一個對象。一個CDB中有且只能有一個Seed. 這個感念,個人感覺非常類似SQL SERVER中的model數據庫。
PDBS
??? CDB中可以有一個或多個PDBS,PDBS向后兼容,可以像以前在數據庫中那樣操作PDBS,這里指大多數常規操作。
這些組件中的每一個都可以被稱為一個容器。因此,ROOT(根)是一個容器,Seed(種子)是一個容器,每個PDB是一個容器。每個容器在CDB中都有一個獨一無二的的ID和名稱。
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
SQL> select name ,cdb from v$database;
NAME ? ? ?CDB
--------- ---
ORCLRQ ? ?YES
SQL> create user test identifed by test;
ORA-65096: 公用用戶名或角色名無效.
查官方文檔得知“試圖創建一個通用用戶,必需要用C##或者c##開頭”
創建用戶默認的是container=all,在cdb中只能創建全局用戶(c##開頭),會在cdb和所有的pdb中創建該用戶(但是pdb中的全局用戶需要另外授權才能夠在pdb中訪問)。在pdb中只能創建的用戶為本地用戶
SQL> create user c##test identifed by test;
創建成功
SQL> connect ?/ as sysdba
已連接。
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
? ? CON_ID ? ? ? DBID NAME ? ? ? ? ? ? ? ? ? ? ? ? ? OPEN_MODE
---------- ---------- ------------------------------ ----------
? ? ? ? ?2 4097782011 PDB$SEED ? ? ? ? ? ? ? ? ? ? ? READ ONLY
? ? ? ? ?3 2302298700 PDBORCL ? ? ? ? ? ? ? ? ? ? ? ?MOUNTED
SQL> alter PLUGGABLE database PDBORCL open;
插接式數據庫已變更。
SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
? ? CON_ID ? ? ? DBID NAME ? ? ? ? ? ? ? ? ? ? ? ? ? OPEN_MODE
---------- ---------- ------------------------------ ----------
? ? ? ? ?2 4097782011 PDB$SEED ? ? ? ? ? ? ? ? ? ? ? READ ONLY
? ? ? ? ?3 2302298700 PDBORCL ? ? ? ? ? ? ? ? ? ? ? ?READ WRITE
SQL> alter session set container=PDBORCL;
會話已更改。
SQL> show con_name;
CON_NAME
------------------------------
PDBORCL
SQL> CREATE USER liferay IDENTIFIED BY liferay?
DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP";
創建成功
SQL>??alter session set container=CDB$ROOT;
會話已更改。
SQL> SELECT USERNAME,CON_ID,USER_ID FROM CDB_USERS;
J:\Users\lwsoft>lsnrctl status
LSNRCTL for 64-bit Windows: Version 12.1.0.1.0 - Production on 31-8月 -2014 15:59:19
Copyright (c) 1991, 2013, Oracle. ?All rights reserved.
正在連接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1522)))
LISTENER 的 STATUS
------------------------
別名 ? ? ? ? ? ? ? ? ? ? ?LISTENER
版本 ? ? ? ? ? ? ? ? ? ? ?TNSLSNR for 64-bit Windows: Version 12.1.0.1.0 - Production
啟動日期 ? ? ? ? ? ? ? ? ?31-8月 -2014 15:41:53
正常運行時間 ? ? ? ? ? ? ?0 天 0 小時 17 分 26 秒
跟蹤級別 ? ? ? ? ? ? ? ? ?off
安全性 ? ? ? ? ? ? ? ? ? ?ON: Local OS Authentication
SNMP ? ? ? ? ? ? ? ? ? ? ?OFF
監聽程序參數文件 ? ? ? ? ?D:\oracle\product\12.1.0\dbhome_1\network\admin\listener.ora
監聽程序日志文件 ? ? ? ? ?D:\oracle\diag\tnslsnr\lwsoa\listener\alert\log.xml
監聽端點概要...
? (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1522ipc)))
? (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1522)))
? (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=lwsoa)(PORT=5500))(Security=(my_wallet_directory=D:\ORACLE\admin\orclrq\xdb_wallet))(Presentation=HTTP)(Session=RAW))
服務摘要..
服務 "CLRExtProc" 包含 1 個實例。
? 實例 "CLRExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程序...
服務 "orclrq" 包含 1 個實例。
? 實例 "orclrq", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "orclrqXDB" 包含 1 個實例。
? 實例 "orclrq", 狀態 READY, 包含此服務的 1 個處理程序...
服務 "pdborcl" 包含 1 個實例。
? 實例 "orclrq", 狀態 READY, 包含此服務的 1 個處理程序...
命令執行成功
==========此時已可通過JDBC直接訪問插件數據庫PDBORCL=============
? ? ? ? String driver = "oracle.jdbc.driver.OracleDriver";
? ? ? ? String url = "jdbc:oracle:thin:@//127.0.0.1:1522/pdborcl";
? ? ? ? String username = "liferay";// 用戶名
? ? ? ? String password = "cyj";// 密碼
? ? ? ? Connection conn = null; // 創建數據庫連接對象
? ? ? ? try {
? ? ? ? ? ? Class.forName(driver);
? ? ? ? ? ? conn = DriverManager.getConnection(url, username, password);
? ? ? ? ……
=========================================== ? ? ?
J:\Users\lwsoft>tnsping pdborcl
TNS Ping Utility for 64-bit Windows: Version 12.1.0.1.0 - Production on 31-8月 -2014 16:00:38
Copyright (c) 1997, 2013, Oracle. ?All rights reserved.
已使用的參數文件:
D:\oracle\product\12.1.0\dbhome_1\network\admin\sqlnet.ora
TNS-03505: 無法解析名稱
===========================添加本地網絡服務名PDBORCL將可直接連接插件數據庫PDBORCL================================================
ORCLRQ =
? (DESCRIPTION =
? ? (ADDRESS_LIST =
? ? ? (ADDRESS = (PROTOCOL = TCP)(HOST = lwcyj)(PORT = 1522))
? ? )
? ? (CONNECT_DATA =
? ? ? (SERVER = DEDICATED)
? ? ? (SERVICE_NAME = orclrq)
? ? )
? )
PDBORCL =
? (DESCRIPTION =
? ? (ADDRESS_LIST =
? ? ? (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
? ? )
? ? (CONNECT_DATA =
? ? ? (SERVICE_NAME = pdborcl)
? ? )
? )
==========================================================
J:\Users\lwsoft>tnsping pdborcl
TNS Ping Utility for 64-bit Windows: Version 12.1.0.1.0 - Production on 31-8月 -2014 17:14:48
Copyright (c) 1997, 2013, Oracle. ?All rights reserved.
已使用的參數文件:
D:\oracle\product\12.1.0\dbhome_1\network\admin\sqlnet.ora
已使用 TNSNAMES 適配器來解析別名
嘗試連接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))) (CONNECT_DATA = (SERVICE_NAME = pdborcl)))
OK (0 毫秒)
J:\Users\lwsoft>sqlplus
SQL*Plus: Release 12.1.0.1.0 Production on 星期日 8月 31 17:06:24 2014
Copyright (c) 1982, 2013, Oracle. ?All rights reserved.
請輸入用戶名: ?liferay/liferay@pdborcl
上次成功登錄時間: 星期日 8月 ?31 2014 16:52:22 +08:00
連接到:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
?
復制去Google翻譯翻譯結果
?
轉自:http://jingyan.baidu.com/article/9989c746255727f648ecfe84.html
轉載于:https://www.cnblogs.com/wanggs/p/5053722.html
總結
以上是生活随笔為你收集整理的直接进入ORACLE12C插件数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 去花分期有额度借不了
- 下一篇: Http 状态码详解