本文將在多個方面為您介紹PolarDB PostgreSQL版(相容Oracle)與原生Oracle資料庫管理的區別。
資料庫(database)
- Oracle 12c之前的版本,預設一個執行個體只能有一個資料庫。12c之後版本有了多租戶的概念,允許一個容器資料庫(CDB)下同時存在多個可插拔資料庫(PDB)。
- PolarDB叢集對應Oracle執行個體的概念。每個資料庫叢集上可以建立多個資料庫。
使用者(user)
- 相同點:
PolarDB和Oracle都有user的概念,user可以作為資料庫物件的owner,可以用於訪問資料庫。
- 不同點:
Oracle的user被授予CREATE SESSION許可權後,才可以登入資料庫。PolarDB的user預設有LOGIN許可權,可以登入資料庫。
建立使用者文法如下:
- Oracle文法:
CREATE USER user IDENTIFIED { BY password | EXTERNALLY [ AS 'certificate_DN' ] | GLOBALLY [ AS '[ directory_DN ]' ] } [ DEFAULT TABLESPACE tablespace | TEMPORARY TABLESPACE { tablespace | tablespace_group_name } | QUOTA size_clause | UNLIMITED } ON tablespace [ QUOTA size_clause | UNLIMITED } ON tablespace ]... | PROFILE profile | PASSWORD EXPIRE | ACCOUNT { LOCK | UNLOCK } [ DEFAULT TABLESPACE tablespace | TEMPORARY TABLESPACE { tablespace | tablespace_group_name } | QUOTA size_clause | UNLIMITED } ON tablespace [ QUOTA size_clause | UNLIMITED } ON tablespace ]... | PROFILE profile | PASSWORD EXPIRE | ACCOUNT { LOCK | UNLOCK } ]... ] ;
- PolarDB文法:
CREATE USER|ROLE name [[WITH] option […]] [IDENTIFIED BY password] where option can be the following compatible clauses: PROFILE profile_name | ACCOUNT {LOCK|UNLOCK} | PASSWORD EXPIRE [AT 'timestamp'] or option can be the following non-compatible clauses: | LOCK TIME 'timestamp'
同時PolarDB還相容PostgreSQL CREATE USER的文法,詳情請參見SQL Commands。
角色(role)
- 在Oracle中,role是一組許可權,不能作為資料庫物件的Owner,不能被授予其它role,不能用於訪問資料庫。
- 在PolarDB中,role相當於一個user,可以作為資料庫物件的Owner,可以被授予其它role或user的許可權,可以用於訪問資料庫。與user的區別在於,role預設沒有LOGIN許可權,需要被授予LOGIN許可權後才能訪問資料庫,而user預設具有LOGIN許可權。
建立角色文法如下:
- Oracle文法:
CREATE ROLE role [ NOT IDENTIFIED | IDENTIFIED { BY password | USING [ schema. ] package | EXTERNALLY | GLOBALLY } ] ;
- PolarDB文法:
CREATE ROLE 和CREATE USER 文法一致。
模式(schema)
- 相同點:
schema是一個邏輯概念,表示一組資料庫物件的集合,這些資料庫物件也稱為模式對象,包括表、索引、視圖等。
- 不同點:
Oracle PolarDB Oracle PolarDB 無法單獨建立schema。 可以通過CREATE SCHEMA建立schema。 建立資料庫使用者時,系統會自動建立一個和使用者名稱同名的schema。 在每個資料庫中,都有一個名為PUBLIC的預設schema。可以通過 SET SEARCH_PATH TO 'xxx';
來修改當前預設schema。
許可權(privilege)
PolarDB的許可權和Oracle類似,可以分為系統許可權和對象許可權。
- 系統許可權
- Oracle
系統許可權是指允許執行特定動作的許可權,例如CREATE USER、CREATE TABLE、CREATE TABLESPACE等。
系統許可權還包括一些管理員權限:
- SYSDBA和SYSOPER:擁有幾乎所有的資料庫物件的許可權。可以執行一些標準的資料庫操作,例如資料庫的啟動和關閉,建立資料庫參數檔案(SPFILE),更改資料庫歸檔日誌等。
- SYSBACKUP:執行備份和恢複操作。
- SYSDG:執行Data Guard操作。
- SYSKM:管理透明資料加密(TDE)錢包操作。
- SYSRAC:執行Oracle RAC操作。
- PolarDB
PolarDB支援LOGIN、POLAR_SUPERUSER、CREATEDB和CREATEROLE等系統許可權,您可以在CREATE ROLE/USER時指定使用者是否具有對應許可權。
- Oracle
- 對象許可權
對象許可權是指對指定的對象執行操作的許可權,資料庫物件包括表、視圖、序列、大對象、模式、函數、過程語言等。對象許可權包括SELECT、INSERT、UPDATE、DELETE、ALTER、INDEX、REFERENCES、EXECUTE等,具體的對象許可權因物件類型而異。
- Oracle
各使用者自動擁有相應schema下的所有對象的許可權。
- PolarDB
修改或刪除對象的許可權只有對象Owner和超級使用者才有。
超級使用者是指擁有POLAR_SUPERUSER許可權的使用者。
- Oracle
監控營運
- Oracle
詳情請參見Oracle官網文檔。
- PolarDB
支援指標監控和日誌監控。