一、创建两个用户
每个用户只能访问自己的表空间。
-- 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账号。
授权SYSTEM。
grant sysdba to system
使用SYSTEM账号登录,角色修改为SYSDBA。
3.2 验证是否成功
没授权前,数据泵需要SYSDBA角色
授权后,可以使用数据泵。