本文将在多个方面为您介绍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 无法单独创建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
支持指标监控和日志监控。