啓動與關閉CDB、PDB

一、連接工具

sqlplus、pl/sql developer、TOAD等。

Oracle DBA常用的是sqlplus,登錄過程如下:

SQL> sqlplus / as sysdba  --在本機,以超級管理員身份登錄
SQL> startup  --默認是open狀態,數據庫將打開數據文件並進行一系列的檢查工作,這些檢查工具用於數據恢復

創建的實例名爲:oracs133

    

二、PDB與CDB

Oracle 12c中,增加了可插接數據庫的概念,即PDB,允許一個數據庫容器(CDB)承載多個可插拔數據庫(PDB)

CDB全稱爲Container Database,中文翻譯爲數據庫容器,PDB全稱爲Pluggable Database,即可插拔數據庫。

在ORACLE 12C之前,實例與數據庫是一對一或多對一關係(RAC):即一個實例只能與一個數據庫相關聯,數據庫可以被多個實例所加載。而實例與數據庫不可能是一對多的關係。當進入ORACLE 12C後,實例與數據庫可以是一對多的關係。

下面是官方文檔關於CDB與PDB的關係圖。

三、啓動和停止數據庫

(一)啓動數據庫

  • CDB啓動

使用命令:

/*在本機,以超級管理員身份登錄*/
SQL> sqlplus / as sysdba
/*開啓startup,默認是open*/
SQL> startup
/*查看目前CDB的狀態*/
SQL> select status from v$instance;

12c通過“sqlplus / as sysdba”登錄連接的是CDB,現在連接上的是root container

執行過程如下:

[oracle@zhangqian ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Thu Sep 27 16:36:15 2018

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> startup
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1593835520 bytes
Fixed Size                  2924880 bytes
Variable Size            1023413936 bytes
Database Buffers          553648128 bytes
Redo Buffers               13848576 bytes
Database mounted.
Database opened.

SQL> select status from v$instance;

STATUS
------------------------
OPEN

STARTUP的選項如下:

  • NOMOUNT:只啓動數據庫實例,此時讀取參數文件
  • MOUNT:根據參數文件中的控制文件位置找到並打開控制文件,讀取控制文件中的各種參數信息,如數據文件和日誌文件的位置,但此時並不打開數據文件;
  • OPEN:打開數據文件、日誌文件等,並進行一系列檢查工作,這些檢查工作用語數據恢復(默認情況下,如果不加任何參數即是啓動到OPEN狀態)
  •     OPEN也有兩個選項:OPEN READ ONLY(只讀模式打開數據庫),OPEN READ WRITE(默認是這個,讀寫模式打開數據庫
  • FORCE:啓動數據庫,與OPEN選項的區別是,用FORCE選項啓動,如果當前數據庫已經啓動不會報錯,而是自動SHUTOWN ABORT當前數據庫,然後再啓動,可以理解爲RESTART
  • RESTRICT:
  • PFILE:
  • PDB啓動

使用命令:

SQL> select name,open_mode from v$pdbs;  --查看當前pdb的狀態
SQL> alter session set container = PDB1;  
SQL> alter pluggable database open;
SQL> select name,open_mode from v$pdbs;

具體過程如下:

SQL> select name,open_mode from v$pdbs;

NAME
------------------------------------------------------------
OPEN_MODE
--------------------
PDB$SEED
READ ONLY

PDB1
MOUNTED


SQL> alter session set container=PDB1;

Session altered.

SQL> alter pluggable database open;

Pluggable database altered.

SQL>  select name,open_mode from v$pdbs;

NAME
------------------------------------------------------------
OPEN_MODE
--------------------
PDB1
READ WRITE

PDB$SEED是系統創建的,下面的ORACS133PDB1是用戶創建的,默認在CDB 啓動之後,PDB 是自動啓動到mount狀態,而不是OPEN。所以需要手動到open狀態

(二)關閉數據庫

繼續上面的操作,目前在pdb1中,如果要退出Oracle,需要先關閉PDB1,再關閉數據庫。

使用命令:

SQL> alter pluggable database pdb1 close;

執行過程:

SQL> alter pluggable database pdb1 close;

Pluggable database altered.

SQL> select name,open_mode from v$pdbs;

NAME
------------------------------------------------------------
OPEN_MODE
--------------------
PDB1
MOUNTED


SQL> show con_name;

CON_NAME
------------------------------
PDB1

選擇CDB之後,執行數據庫關閉。

使用命令:

SQL> alter session set container=CDB$ROOT;
SQL> show con_name;
SQL> shutdown immediate;

執行過程如下:

SQL> alter session set container=CDB$ROOT;

Session altered.

SQL> show con_name;

CON_NAME
------------------------------
CDB$ROOT
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

也可以分解關閉步驟:

依次關閉數據文件、日誌文件等(close),控制文件(dismount),最後關閉實例(shutdown)。

也可以一步完成數據庫關閉:

我們關閉CDB之前PDB 是沒有關閉的,所以這個操作也會把PDB 關閉掉。

2、SHUTDOWN的幾個參數及含義

exit退出數據庫後,數據本身的連接狀態沒有變化。

SHUTDOWN NORMAL:shutdown的默認方式,a.不允許新的數據庫連接;b.只有當所有連接都斷開後才能關閉,效率較低

SHUTDOWN IMMIDIATE:shutdown的常用方式,a.不允許創建新連接;b.已經創建的連接,如果有未執行完的SQL語句,等待其完成,如果沒有立刻斷開;c.未提交事務全部回滾

SHUTDOWN TRANSACTIONAL:使用率很低

SHUTDOWN ABORT:a.未提交事務不回滾;b.終止所有SQL操作;c.所有連接都斷開。數據庫關閉迅速,但是下一次開啓需要進行實例恢復,啓動慢;而且回滾段數據與數據文件可能不一致。

數據庫開啓和關閉的語句總結(順序執行,有上下文關係):

//開啓數據庫

  • sqlplus / as sysdba;                  //登錄連接CDB,默認是root container;
  • startup open;                         //open 模式,但此時的pdb模式是mounted,需要手工開啓
  • alter session set container=ORACS133PDB1;                   //選定pdb
  • alter pluggable database open;                                  //開啓pdb

//關閉數據庫

  • alter pluggable database all close;
  • alter session set container = CDB$ROOT;
  • shutdown immediate;

(三)創建用戶

1、schema

爲Oracle 12c添加scott用戶的方法:https://www.2cto.com/database/201610/553547.html


 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章