一、创建两个用户

每个用户只能访问自己的表空间。

-- TEST 123456 不带管理员权限的
CREATE TABLESPACE "TEST"
 DATAFILE  '/u01/app/oracle/oradata/xe/test.dbf' SIZE 10 M AUTOEXTEND ON NEXT 10 M MAXSIZE 100 M;
CREATE USER "TEST" IDENTIFIED BY "123456" DEFAULT TABLESPACE "TEST" TEMPORARY TABLESPACE "TEMP";
GRANT "CONNECT", "RESOURCE" TO "TEST";
ALTER USER "TEST" DEFAULT ROLE "CONNECT", "RESOURCE";
GRANT CREATE SEQUENCE, CREATE VIEW TO "TEST" WITH ADMIN OPTION;
ALTER USER TEST QUOTA UNLIMITED ON TEST;

-- TEST1 123456 不带管理员权限的
CREATE TABLESPACE "TEST1"
 DATAFILE  '/u01/app/oracle/oradata/xe/test1.dbf' SIZE 10 M AUTOEXTEND ON NEXT 10 M MAXSIZE 100 M;
CREATE USER "TEST1" IDENTIFIED BY "123456" DEFAULT TABLESPACE "TEST1" TEMPORARY TABLESPACE "TEMP";
GRANT "CONNECT", "RESOURCE" TO "TEST1";
ALTER USER "TEST1" DEFAULT ROLE "CONNECT", "RESOURCE";
GRANT CREATE SEQUENCE, CREATE VIEW TO "TEST1" WITH ADMIN OPTION;
ALTER USER TEST1 QUOTA UNLIMITED ON TEST1;

-- TEST2 123456 带有管理员权限的
CREATE TABLESPACE "TEST2"
 DATAFILE  '/u01/app/oracle/oradata/xe/test2.dbf' SIZE 10 M AUTOEXTEND ON NEXT 10 M MAXSIZE 100 M;
CREATE USER "TEST2" IDENTIFIED BY "123456" DEFAULT TABLESPACE "TEST2" TEMPORARY TABLESPACE "TEMP";
GRANT "CONNECT", "DBA", "RESOURCE" TO "TEST2";
ALTER USER "TEST2" DEFAULT ROLE "CONNECT", "DBA", "RESOURCE";
GRANT CREATE SEQUENCE, CREATE VIEW TO "TEST2" WITH ADMIN OPTION;
ALTER USER TEST2 QUOTA UNLIMITED ON TEST2;

二、常用的权限设置

2.1 授权表空间及用户

-- ORA-01950:对表空间XXX无权限的解决方法
ALTER USER 用户名 QUOTA UNLIMITED ON 表空间名;
-- 授权管理员权限,被授予的用户连接状态下需要断开重连和重启连接工具才生效
GRANT DBA TO 用户名;
ALTER USER "用户名" DEFAULT ROLE "DBA";
-- 撤销管理员权限,被授予的用户连接状态下需要断开重连和重启连接工具才生效
REVOKE "DBA" FROM "用户名";
ALTER USER "用户名" DEFAULT ROLE NONE;
ALTER USER "用户名" DEFAULT ROLE "CONNECT", "RESOURCE"
-- 查看所有表空间
select * from dba_tablespaces;
-- 查看所有用户
select * from all_users;
-- 删除一个用户
drop user 用户名 cascade;
-- 删除一个表空间
DROP TABLESPACE 表空间名 INCLUDING CONTENTS AND DATAFILES;
-- 查看当前用户是否为DBA,如果不是则出现 ORA-00942: table or view does not exist 表或视图不存在
select * from dba_role_privs where granted_role='DBA';

2.2 授权

GRANT privileges ON object TO user;
  • privileges - 要分配的权限。 它可以是以下值:
权限描述
SELECT能够在表上执行SELECT语句。
INSERT能够在表上执行INSERT语句。
UPDATE能够在表上执行UPDATE语句。
DELETE能够在表上执行DELETE语句。
REFERENCES能够创建引用表的约束。
ALTER能够执行ALTER TABLE语句来更改表定义。
INDEX能够使用create index语句在表上创建索引。
ALL表上的所有权限。
  • object - 正在授予其权限的数据库对象的名称。 在授予表的权限的情况下,它将是表名。
  • user - 将被授予这些权限的用户的名称。

2.3 撤销授权

REVOKE privileges ON object FROM user;
  • privileges - 撤销权限。 它可以是以下值:
权限描述
SELECT能够在表上执行SELECT语句。
INSERT能够在表上执行INSERT语句。
UPDATE能够在表上执行UPDATE语句。
DELETE能够在表上执行DELETE语句。
REFERENCES能够创建引用表的约束。
ALTER能够执行ALTER TABLE语句来更改表定义。
INDEX能够使用create index语句在表上创建索引。
ALL表上的所有权限。
  • object - 正在撤销权限的数据库对象的名称。 在撤销表的特权的情况下,它将是表名。
  • user - 将撤销这些权限的用户的名称。

三、给SYSTEM授权SYSDBA角色

3.1 授权步骤

在SYSTEM账号下修改SYS密码。

alter user sys identified by 123456;

登录SYS账号。

image-20201130112544975

授权SYSTEM。

grant sysdba to system

image-20201130112632259

使用SYSTEM账号登录,角色修改为SYSDBA。

image-20201130112859177

image-20201130112925894

3.2 验证是否成功

没授权前,数据泵需要SYSDBA角色

image-20201130135117330

授权后,可以使用数据泵。

image-20201130135414619