12c 資料庫管理 小結
12c 資料庫管理 總結
新安了個12c的rac 環境,進去建立使用者和表才發現,12c對資料庫管理做了一些變更,再網上搜了一些文章,總結一下,方便以後使用。
Oracle 12C引入了CDB與PDB的新特性,在ORACLE 12C引入的多租使用者環境(Multitenant Environment)中,允許一個資料庫容器(CDB)承載多個可插拔資料庫(PDB)。CDB全稱為Container Database,中文翻譯為資料庫容器,PDB全稱為Pluggable Database,即可插拔資料庫。在ORACLE 12C之前,例項與資料庫是一對一或多對一關係(RAC):即一個例項只能與一個資料庫相關聯,資料庫可以被多個例項所載入。而例項與資料庫不可能是一對多的關係。當進入ORACLE 12C後,例項與資料庫可以是一對多的關係。下面是官方文件關於CDB與PDB的關係圖。
其實大家如果對比較熟悉的話,這種CDB與PDB是不是感覺和SQL SERVER的單例項多資料庫架構是一回事呢。像PDB$SEED可以看成是master、msdb等系統資料庫,PDBS可以看成使用者建立的資料庫。而可插拔的概念與SQL SERVER中的使用者資料庫的分離、附加其實就是那麼一回事。看來ORACLE也“抄襲”了一把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和名稱。
1)連線到CDB資料庫
連線到CDB資料庫容器非常簡單,跟以前連線資料庫是一樣的
[oracle@get-orasvr02 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Sun Oct 20 23:41:36 2013Copyright (c) 1982, 2013, Oracle.
All rights reserved.Connected to an idle instance.
SQL>
[oracle@getorasvr02 ~]$ sqlplus sys/password as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Sun Oct 20 23:43:17 2013Copyright (c) 1982, 2013, Oracle.
All rights reserved.Connected to an idle instance.
SQL>
2)檢視資料庫是否為CDB
SQL> select name, decode(cdb, 'YES', 'Multitenant Option enabled', 'Regular 12c Database: ') "Multitenant Option" , open_mode, con_id from v$database;
NAME Multitenant Option OPEN_MODE CON_ID
--------- ----------------------------- -------------------- ----------
E Multitenant Option enabled READ WRITE 0
YES表示該資料庫是CDB,如果是NO表示是NO-CDB(普通資料庫)
3)檢視當前容器(Container)
3.1
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> select sys_context('userenv', 'con_name') "Container DB" from dual;
Container DB
----------------------------------------------------
CDB$ROOT
SQL>
4)檢視CDB容器中的PDBS資訊
檢視CDB中有多少個pluggable database
SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;
CON_ID DBID GUID NAME OPEN_MODE
---------- ---------- -------------------------------- ------------------------------ ---------
2 4071321146 E89E8DA2866E3157E043DE07A8C09238 PDB$SEED READ ONLY 3 1930201447 E89E9418B882350CE043DE07A8C092B6 PDBEPPS MOUNTED
SQL>
5)啟動PDB資料庫
方式1:
SQL> alter pluggable database PDBEPPS open;
Pluggable database altered.
SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;
CON_ID DBID GUID NAME OPEN_MODE
---------- ---------- -------------------------------- ------------------------------ ----------
2 4071321146 E89E8DA2866E3157E043DE07A8C09238 PDB$SEED READ ONLY 3 1930201447 E89E9418B882350CE043DE07A8C092B6 PDBEPPS READ WRITE
方式2:
SQL> alter session set container=PDBEPPS;
Session altered.
SQL> startupPluggable Database opened.
SQL>
6)關閉PDB資料庫
SQL> alter pluggable database PDBEPPS close;
Pluggable database altered.
SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;
CON_ID DBID GUID NAME OPEN_MODE
---------- ---------- -------------------------------- ------------------------------ ----------
2 4071321146 E89E8DA2866E3157E043DE07A8C09238 PDB$SEED READ ONLY
3 1930201447 E89E9418B882350CE043DE07A8C092B6 PDBEPPS MOUNTED
SQL>
7)在容器間切換
SQL> alter session set container=PDBEPPS;
Session altered.
SQL> show con_name;
CON_NAME
------------------------------
PDBEPPS
SQL>
SQL> alter session set container=CDB$ROOT;
Session altered.
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
###以上總結來自 再次感謝眾網友博主的技術分享###
PDB和CDB概念是清楚了,可問題又來了:
1、我該如何建立新的資料庫?
create pluggable database pdb4
admin user odb4_admin identified by password
roles=(dba)
file_name_convert=('/u01/app/oracle/oradata/cdbtest/pdbseed','/u01/app/oracle/oradata/cdbtest/pdb4') ;
Pluggable database created.
2、既然現在一個例項對應多個資料庫,那麼我該如何連結到自己要管理的資料庫?
首先需要配置一下自己的DNS
[oracle@rac01 admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.1.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
TESTSHF_N =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = scan-oracle)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = TESTSHF_N)
)
)
TESTSHF_BCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = scan-oracle)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = bcl1)
)
)
[oracle@rac01 admin]$ lsnrctl status
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 20-OCT-2014 12:07:17
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date 10-OCT-2014 11:46:30
Uptime 10 days 0 hr. 20 min. 47 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/12.1.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/rac01/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.109.67.52)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.109.67.46)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "TESTSHFXDB" has 1 instance(s).
Instance "TESTSHF1", status READY, has 1 handler(s) for this service...
Service "TESTSHF_N" has 1 instance(s).
Instance "TESTSHF1", status READY, has 1 handler(s) for this service...
Service "bcl1" has 1 instance(s).
Instance "TESTSHF1", status READY, has 1 handler(s) for this service...
Service "bcl2" has 1 instance(s).
Instance "TESTSHF1", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@rac01 admin]$ sqlplus system/lkfi@testshf_n
SQL*Plus: Release 12.1.0.2.0 Production on Mon Oct 20 12:07:45 2014
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Last Successful login time: Mon Oct 20 2014 12:02:00 +08:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
SQL>
3、再使用外部命令,如rman、exp/imp、expdp/impdp時該怎麼指定到我需要連結的資料庫呢?
TNS都配置好了,用TNS直接連結到資料庫不就可以了嘛^^
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-1306778/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於資料庫管理員的驗證小結資料庫
- MySQL常用資料庫小結MySql資料庫
- 小結java與資料庫Java資料庫
- Oracle 資料庫12c新特性總結(一)Oracle資料庫
- Oracle 資料庫12c 16大新特性總結Oracle資料庫
- 資料庫注入技術小結資料庫
- 資料庫期末複習小結資料庫
- 資料庫連結(database link)小結資料庫Database
- Oracle 資料庫12c 16大新特性總結(轉)Oracle資料庫
- 管理資料庫儲存結構資料庫
- 12c 使用資料泵複製資料庫結構的注意事項資料庫
- Oracle 12c資料庫安裝Oracle資料庫
- 【12C】Oracle 12c 可插拔資料庫之資料泵功能體驗Oracle資料庫
- 12c ILM資料生命週期管理
- Oracle資料庫RMAN小結之備份部分Oracle資料庫
- Oracle資料庫RMAN小結之恢復部分Oracle資料庫
- 2 Day DBA-管理Oracle例項-管理資料庫儲存結構-關於資料庫儲存結構Oracle資料庫
- 【資料庫】資料查詢和管理知識點總結資料庫
- 資料庫PostrageSQL-管理資料庫資料庫SQL
- 資料庫管理資料庫
- 資料庫開發個人總結-ADO.NET小結資料庫
- Oracle 12C RAC CDB資料庫部署Oracle資料庫
- curl資料小結
- MySQL資料庫資料管理MySql資料庫
- Oracle 12c - 普通資料庫與容器資料庫不能相互轉化Oracle資料庫
- 資料庫管理員的角色是否已終結?資料庫
- 2 Day DBA-管理Oracle例項-管理資料庫儲存結構-管理還原資料Oracle資料庫
- Oracle Database 12c 資料庫32個新特性與案例總結(轉)OracleDatabase資料庫
- SQL Server 資料庫部分常用語句小結(二)SQLServer資料庫
- SQL Server 資料庫部分常用語句小結(一)SQLServer資料庫
- pg14資料庫引數修改方式小結資料庫
- SQLite資料庫學習小結——Frameworks層實現SQLite資料庫Framework
- 12c Grid Infrastructure 管理資料庫(GIMR) 問答 (文件 ID 2047608.1)ASTStruct資料庫
- 12C SQL方面新特性小結SQL
- 【小結】資料庫連結db link,有興趣的看看。資料庫
- 資料庫管理(ZT)資料庫
- Oracle資料庫管理Oracle資料庫
- 資料庫的管理資料庫