3.2.6.2. OceanBase-Oracle

3.2.6.2.1. 创建用户

语法

CREATE USER username
    IDENTIFIED BY password
    [DEFAULT TABLESPACE tablespace_name]
    [TEMPORARY TABLESPACE temp_tablespace_name]

警告

  • 用户名称不支持双引号格式

  • 密码格式支持数字字母以及双引号对象其它格式不支持

  • 创建用户的语法TEMPORARY TABLESPACE temp_tablespace_name为语法糖

示例

CREATE TABLESPACE my_tablespace DATAFILE '/home/oracle/tablespace' SIZE 1G;

-- 转换前Oracle SQL:
CREATE USER test_user IDENTIFIED BY test_password
DEFAULT TABLESPACE my_tablespace TEMPORARY TABLESPACE temp;

-- 转换后OceanBase-Oracle SQL:
CREATE USER test_user IDENTIFIED BY test_password
DEFAULT TABLESPACE my_tablespace;

3.2.6.2.2. 删除用户

语法

DROP USER username [CASCADE]

警告

  • 用户名称不支持双引号格式

示例

-- 转换前Oracle SQL:
DROP USER test_user;

-- 转换后OceanBase-Oracle SQL:
DROP USER test_user CASCADE;

3.2.6.2.3. 权限赋值

语法

GRANT system_privilege [, system_privilege]...
TO user [, user]...;

system_privilege:
        CONNECT
        | RESOURCE
        | UNLIMITED TABLESPACE
        | CREATE ANY TABLE
        | SELECT ANY TABLE
        | DROP ANY TABLE
        | CREATE ANY INDEX
        | DELETE ANY TABLE
        | INSERT ANY TABLE
        | UPDATE ANY TABLE
        | CREATE ANY DIRECTORY

警告

  • 用户名称不支持双引号格式,不支持单引号格式,不支持反引号格式

  • 目标库oceanbase-oracle版本>=4.2.1

示例

-- 转换前Oracle SQL:
GRANT UNLIMITED TABLESPACE, CONNECT, RESOURCE TO test_user1, test_user2;

-- 转换后OceanBase-Oracle SQL:
GRANT ALL PRIVILEGES, CONNECT, RESOURCE TO test_user1, test_user2;

-- 转换前,权限赋值

-- 授予创建任何表的权限
GRANT CREATE ANY TABLE TO user_name;

-- 授予查询任何表的权限
GRANT select any table TO user_name;

-- 授予删除任何表(表定义和数据)的权限
grant DROP ANY TABLE TO user_name;

-- 授予创建任何索引的权限
GRANT CREATE any INDEX TO user_name;

-- 授予删除任何表中数据的权限
GRANT DELETE ANY table TO user_name;

-- 授予向任何表插入数据的权限
GRANT INSERT ANY TAble TO user_name;

-- 授予更新任何表中数据的权限
GRANT UPDATE ANY TABLE TO user_name;

-- 授予创建任何目录对象的权限
GRANT CREATE ANY DIRECTORY TO user_name;

-- 授予用户多个权限
GRANT CREATE ANY DIRECTORY,update any table TO user_name;

-- 授予多个用户多个权限
GRANT CREATE ANY DIRECTORY,update ANY TABLE TO user_name1,user_name2;

-- 转换后,权限赋值

GRANT CREATE ANY TABLE TO user_name

GRANT SELECT ANY TABLE TO user_name

GRANT DROP ANY TABLE TO user_name

GRANT CREATE ANY INDEX TO user_name

GRANT DELETE ANY TABLE TO user_name

GRANT INSERT ANY TABLE TO user_name

GRANT UPDATE ANY TABLE TO user_name

GRANT CREATE ANY DIRECTORY TO user_name

GRANT CREATE ANY DIRECTORY, UPDATE ANY TABLE TO user_name

GRANT CREATE ANY DIRECTORY, UPDATE ANY TABLE TO user_name1, user_name2

3.2.6.2.4. 权限移除

语法

REVOKE system_privilege [, system_privilege]...
FROM user [, user]...;

system_privilege:
        CONNECT
        | RESOURCE
        | UNLIMITED TABLESPACE
        | CREATE ANY TABLE
        | SELECT ANY TABLE
        | DROP ANY TABLE
        | CREATE ANY INDEX
        | DELETE ANY TABLE
        | INSERT ANY TABLE
        | UPDATE ANY TABLE
        | CREATE ANY DIRECTORY

警告

  • 用户名称不支持双引号格式,不支持单引号格式,不支持反引号格式

  • 目标库oceanbase-oracle版本>=4.2.1

示例

-- 转换前Oracle SQL:
REVOKE UNLIMITED TABLESPACE, CONNECT, RESOURCE FROM test_user1, test_user2;

-- 转换后OceanBase-Oracle SQL:
REVOKE ALL PRIVILEGES, CONNECT, RESOURCE FROM test_user1, test_user2;

-- 转换前,权限移除
-- 撤销创建任何表的权限
REVOKE CREATE ANY TABLE FROM user_name;

-- 撤销查询任何表的权限
REVOKE SELECT ANY TABLE FROM user_name;

-- 撤销删除任何表(表定义和数据)的权限
REVOKE DROP ANY TABLE FROM user_name;

-- 撤销创建任何索引的权限
REVOKE CREATE ANY INDEX FROM user_name;

-- 撤销删除任何表中数据的权限
REVOKE DELETE ANY TABLE FROM user_name;

-- 撤销向任何表插入数据的权限
REVOKE INSERT ANY TABLE FROM user_name;

-- 撤销更新任何表中数据的权限
REVOKE UPDATE ANY TABLE FROM user_name;

-- 撤销创建任何目录对象的权限
REVOKE CREATE ANY DIRECTORY FROM user_name;

-- 撤销用户多个权限
REVOKE CREATE ANY DIRECTORY, INSERT ANY TABLE FROM user_name;

-- 撤销多个用户多个权限
REVOKE create any directory, INSERT ANY TABLE FROM user_name1,user_name2;

-- 转换后,权限移除
REVOKE CREATE ANY TABLE FROM user_name

REVOKE SELECT ANY TABLE FROM user_name

REVOKE DROP ANY TABLE FROM user_name

REVOKE CREATE ANY INDEX FROM user_name

REVOKE DELETE ANY TABLE FROM user_name

REVOKE INSERT ANY TABLE FROM user_name

REVOKE UPDATE ANY TABLE FROM user_name

REVOKE CREATE ANY DIRECTORY FROM user_name

REVOKE CREATE ANY DIRECTORY, INSERT ANY TABLE FROM user_name

REVOKE CREATE ANY DIRECTORY, INSERT ANY TABLE FROM user_name1, user_name2