1.用户管理
用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作。
模式(schema):是某个用户拥有所有对象的集合,具有创建对象权限并创建了对象的用户称为拥有某个模式。
注意:创建数据库对象(视图、表等)的任一用户都拥有一个以该用户名称开头的模式,且被视为模式用户
oracle sys system 用户的区别:
sys用户,缺省始终创建,且末被锁定,拥有数据相关联的所有对象
system用户,缺省始终创建,且未被锁定,可以访问数据库内的所有对象
sys是oracle数据库中权限最高的账号,具有create database的权限
而system用户没有这个权限,sys的角色是sysdba,system 角色是sysoper
oracle sys system 用户的共同点:
startup/shutdown/dab两个用户都是可以管理的。
平时用system来管理数据库就可以了,这个用户权限对于普通的数据库管理来说已经足够。
1.1. 建立用户
create user itpux01 identified by itpux01
default tablespace users
temporary tablespace temp;
--quota 5m on users;限制配额
--account lock /unlock 锁定/解锁
--profile profilename
select * from dba_users where username='ITPUX01' ;
--查找时用户名,表名需要大写
grant dba to itpux01 --授itpux01用户DBA权限
select * from database_properties;
--conn /as sysdba;
--conn system/oracle
--修改密码
alter user itpux01 identified by itpux001;
alter user itpux01 account lock; --锁定用户
alter user itpux01 account unlock; --解锁用户
生产环境,不要改用户名
可以做用户数据迁移。
1.3.更改用户表空间限额
--不限制任何表空间
--全局的
grant unlimited tablespace to itpux01;
--针某个表空间
alter user itpux01 quota unlimited on users; --只使用users表空间
alter user itpux01 quota 10M on users; --itpux01只能使用user表空间10M
--回收
revoke unlimited tablespace from itpux01; --回收所有表空间
alter user itpux01 quota 0M on users;
--查看表空间配额
select * from dba_ts_quotas; --DBA用户使用
select * from user_ts_quotas; --需要使用普通用户
drop user 用户名 cascade;
--cascade 选项:连同用户所有对象和数据。
--查看表空间配额
select * from dba_ts_quotas; --DBA用户使用
select * from user_ts_quotas; --需要使用普通用户
--查看用户信息
select * from dba_users;
select * from dba_objects;
2.系统权限与对象权限
oracle:权限分为
系统权限:允许用户执行特定的数据库动作,如创建表,索引,连接实例等。
对象权限:允许用户操纵一些特定的对象,如读取视图,可更新某些列,执行存储过程等
2.1系统权限
超过一百多种有效的权限(select * from system_privilege_map 查询)
数据管理员具有高级权限以完成管理任务,例如:
--创建用户
--删除表
--备份表
常用的系统权限:
create session 创建会话
create sequence 创建序列
create synonym 创建同名对象
create table 在用户模式中创建表
create any table 在任何模式中创建表
drop any table 在任何模式中删除表
create procedure 创建存储过程
execute any procedure 执行任模式的存储过程
create user 创建用户
create view 创建视图
2.1.1 授予系统权限
grant privilege [privilege..] to user [role,public..] [with admin option ];
--public: 所有用户
--with admin option 使用用户同样具有分配权限的权利,可以将此权限授予别人
2.1.2 使用系统权限
--使用itpux 具有创建会话,创建表
2.1.3 显示系统权限
dba_sys_privs --针对所有用户授予的系统权限
user_sys_privs --针对当前登陆用户被授予的系统权限
--查看所有系统权限
select * from system_privilege_map;
--查看用户所具有的系统权限
select * from dba_sys_privs;
select * from user_sys_privs;
select * from dba_sys_privs where grantee='ITPUX'
select * from dba_sys_privs where grantee in ('ITPUX','SYSTEM') order by grantee;
2.1.4 回收系统权限
revoke 权限名 from 用户名;
注意:对于使用with admin option 为某个用户授予系统权限,那么对于被这个用户授予相同权限的所用用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限。
2.2 对象权限
不同的对象具有不同的对象权限
对象的拥有者拥有所有权限
对象的拥有者可以向外分配权限
oracle一共有多种对象权限
对象权限 表 视图 序列 过程
修改(alter) √ √
删除(delete) √ √
执行(execute) √
索引(index) √
插入(insert) √ √
关联(references) √ √
选择(select) √ √ √
更新(update) √ √
2.2.1 对象授权
对象授权语法
grant object_priv | all [(columns)]
on object
to {user|role|public}
[with grant option]
--all:所有对象权限
--public:授给所有的用户
--with grant option:允许用户再次给其它用户授权
例如 :
conn /as sysdba;
grant select on scott.emp to itpux; --把selcet权限给用户
grant update(sal,mgr) on scott.emp to itpux with grant option; --把这个表的列的更新权限给用户,用户能将权限授权给其它用户。
conn itpux/itpux;
select * from scott.emp;
update scott.emp set sal=sal+100;
2.2.2 授予每户权限与授予对象权限的语法差异:
授予对象权限时需要指定关键字on,从而能够确定权限所应用的对象,对于表和视图可以指定特定的列来授权。
2.2.3 查询权限分配的情况
数据字典视图 描述
role_sys_privs 角色拥有的系统权限
role_tab_privs 角色拥有的对象权限
user_tab_privs_made 查询授出去的对象权限(通常是属主自己查)
user_tab_privs_recd 用户拥有的对象权限
user_col_privs_made 用户分配出去的列的对象权限
user_col_privs_recd 用户拥有的关于列的对象权限
user_sys_privs 用户拥有的系统权限
user_tab_privs 用户拥有的对象权限
user_role_privs 用户拥有的角色
例如:
--查询已授予的对象权限(即某个用户对那些表对那些用户开放了对象权限)
select * from user_tab_privs_made;
--查询列上开放的对象权限
select * from user_col_privs_made;
select * from user_tab_privs_recd
select * from user_col_privs_recd;
2.2.4 收加对象权限
使用revoke语句收回权限
使用with grant option子句所分配的权限同样被收回
语法:
revoke {privilege,[,privilege...] | all }
on object
from {user [,user ....] | role | public}
[cascade constraints];
--cascade constraints 为处理完整性时需要
例如:
conn /as sysdba;
revoke select on scott.emp from itpux;
revoke update on scott.emp from itpux;
2.2.5 其它
--检查dba权限的用户
select * from dba_role_privs where granted_role='dba';
--查看用户具有的系统权限
select * from session_privs;
3.oracle用户与权限总结
3.1使用create user 语句创建用户,alter user 语句修改用户,其语法大致相同
drop user username[cascade] 会删除用户拥有的所有对象及数据。
3.2 系统权限允许用户在数据库中执行待定的操作,如执行ddl语句。
with admin option 使得该用户具有将自己获得的权限授予其它用户的功能。
但收回系统权限时,不会从其它帐户级联取消曾被授予的相同权限。
3.3 对象权限允许用户对数据库对象执行特定的操作,如执行dml语句。
with grant option 使得该用户具有将自身获得的对象权限授予其它用户的功能,
但收回对象权限时,会从其它账户级联取消曾被授予的相同权限。
3.4 系统权限与对象权限授予的语法差异为对象使用了 on object_namme 子句。
3.5 public为所有的用户
3.6 all:对象权限中的所有对象权限。
4.角色的介绍
角色是一组相关权限的命名集合,使用角色最主要的目的是简化权限管理。
权限的集合,可以分配给一个用户或者其它角色,但角色不能授予自己,也不能循环授予角色的。
可以先创建角色,向该角色赋予一系列权限,然后再将该角色授予多个用户或者角色
增加或删除角色中的某一权限,被授予该角色的所有用户或者角色自动的获得新增权限或删除旧的权限。
可以为角色设置密码。
4.1预定义角色
connect自动建立,包含以下权限:
alter session
create cluster
create databaselink
create sequence
create session
create synonym
create table
create view
resource自动建立,包含以下权限:
create cluster
create procedure
create sequence
create table
create triggr
dba role 拥有所有的系统权限....包括无限制的空间限额和给其它用户授予各种权限能力。system由dba用户拥有。
role_sys_privs
role_tab_privs
role_role_privs
session_roles
user_role_privs
dba_roles
5. 角色的创建与管理
除了前面讲到的三种系统角色---connect、resource和dba,用户还可以在oracle创建自己的role,
用户创建的role可以由表或系统权限或两者的组合构成,为了创建oracle,用户必须用 create role系统权限。
5.1. 创建role
create role role_name
[not identified(默认) | identified by password | externally | globally]
注:同一个数据库中角色名称必须唯一,且不能使用已存在的用户名称。
不支持 with grant option 为角色授予对象权限。
支持with admin option 为角色授予系统权限或者另一个角色
使用enterpirse manager 创建某个用户时,该用户被自动授予了connect角色。
即同时具有该角色的所有权限
identified by externally
意味着启用一个角色,用户必须是某个操作系统组的一个成员,该操作系统组的名称应该与角色相对应。
当希望通过操作系统对角色进行身份认证,则需要设置os_role参数为true
sql> show parameter os_roles
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
os_roles boolean FALSE
remote_os_roles boolean FALSE
且当设定了使用identified by extenrnally 身份验证,必须在数据库驻留的服务器上按以下格式 创建组
ora_<sid>_<role>[_[d][a]]
d:指示<role>部分指定的角色为用于用户的蛇默认角色。
a:指示可以使用with admin option 为用户授予<role>部分所指定的角色
create role iptpux;
这条命令报建了一个名为itpux的role
5.2 对role的授权
一但创建了一个role,用户就可以给他授权,给role授权的 grant 命令的语法与对用户的语法相同。在给role授权时,在grant命令的to
子句中要使用role的名称,如下所示:
grant select on table1 to itpux;
现在拥有itpux角色的所有用户都具有对test表的select权限。
5.3 删除角色
要删除角色,可以使用drop role 命令,如下所示:
drop role itpux;
常用角色:
角色 被授予的权限
dba 乎所有的系统权限
select_catalog_role 数据的对象权限,末被授予任何系统权限
execute_catalog_role
delete_catalog_role delete on sys.aud$
delete on sys.fga_log$
exp_full_database 从数据库中导出数据时查询任何表现或序列,执行任何过程或类型以及修改数据字典对象的权限
imp_full_database 执行导入时,在数据库内除了sys模式之外的任何模式中创建对象的权限
connect alter session
create cluster
create database link
create sequence
create session
create sysnonym
create table
create view
resource create cluster
create indextype
create operator
create procedure
create sequence
create table
create triggr
create type
unlimited tablespace(when granted )
aq_administrator_role advanced queuing对象上的对象权限
create evaluation context
create rule
create rule set
dequeue any queue
enqueue any queue
manage any queue
aq_user_role execute on sys.dbms_aq
execute on sys.dbms_aqin
execute on sys.dbms_aqjms_internal
execute on sys.dbms_transform
scheduler_admin create any job
create job
execute any class
execute any program
manage schedule
(使用 with admin option 授予上述所有权限)
public 不具有特殊的权限,不过为public角色授予权限时,所有用户都会继承该权限
创建不要口令的角色clerk
sql> create role itpux2;
创建要口令的角色sales
sql> create role itpux2 identified by itpux2;
创建一个需要使用外部标识(如操作系统)的角色manager
sql> create role itpux3 identified externally;
创建后查看角色
sql> select role,password_required from dab_roles;
5.4 角色修改:
alter role rolename
[not identified | identified by password | externally | globally];
但只有角色是使用带有 with admin option 选项的grant授予的或者具有
alter any role 系统权限的用户时,才可以修改这个角色
将角色itpux2 的验证方法改为使用外部(如操作系统)标识
sql> alter role itpux2 identified externally;
sql> alter role itpux2 not identified;
将角色 itpux2 的验证方法改为使用口令标识,口令为itpux2
sql> alter role itpux2 identified by itpux2;
再查询后即可看到变化
select role,password_required from dab_roles
5.5 为角色授予和取消权限
5.5.1 角色授权
为角色赋予权限(grant)
在sys/system用户下:
sql> create role itpux05;
sql> grant create table,create view,create session to itpux05 with admin option; --赋予角色权限
sql> grant select,insert,update on scott.emp to itpux05; --赋予对象权限
检查系统权限
select * from role_sys_privs where role='ITPUX05';
检查对象权限
select * from role_tab_privs where role='ITPUX05';
5.2 角色授权给用户
drop user itpux cascade;
创建用户
create user itpux identified by itpux;
授权角色到用户
grant itpux05 to itpux;
grant itpux05 to itpux with admin option;
再创建一个用户
create user itpux02 identified by itpux02;
时入 itpux05 用户,再把角色授予用户 itpux02
grant itpux05 to itpux02
检查角色授权信息
select * from dba_role_privs where granted_role='ITPUX05';
select * from user_role_privs;
查看用户拥有那些角色
select * from session
5.3 取消角色、删除角色
取消角色
revoke itpu_role from itpux02;
取消角色后,删除角色
drop role itpux_role;
5.4 设置默认角色
可以将多个角色授予一个用户,默认角色是这些角色的一个子集,默认角色在用户登录系统时
可以激活(开启)。在默认情况下,所有赋予用户的角色在用户登录时,不需要口令就被激活。
可以使用 alter user 语句来限制用户的默认角色。
alter user 语句中的default role子句只适用于那些使用grant 语句直接授予用户的角色。
default role 子句在下列情况下是不能使用的:
通过其它角色授予的角色
没有直接授予该用户的角色
通过外部服务(如操作系统)管理的角色
创建用户itpux并授予resource,connect角色
sql> create user itpux identified by itpux;
sql> grant resource connect to itpu;
授予角色排除
alter user itpux default role all except dab;
select * from dab_role_privs where
5.5 激活和禁止角色
select * from user_role_privs;
select * from session_privs;
set role none; 禁用角色
set role
关于connect和resource预定义角色:
connect,resource 是role 包含很多的权限的:
其中resource具有创建表,索引表,视图和其他的oracle对象的能力
同时默认带有 unlimited tablespace权限
一般将connect 授予所有的普通用户
connect 和resource授予开发人员
oracle声称connect和resource角色是为了与它吉哈德的版本兼容面保留的,
劝告用户尽可能不要使用这两个角色,以避免产生安全漏洞。
7.查看角色权限
oracle中数据字典视图分为3大类,用前缀区别,分别为user,all,dba,许多数据字典视图包含相似的信息。
user_*:有关用户所有的对象信息,即用户自己创建的对象信息。
all_*:有关用户可以访问的对象的信息,即用户创建的对象的信息加上其它用户创建对象但该用户有权访问的信息
db_*:有关整个数据库中对象的信息
(这里的 * 可以为 tables,indexes,objects,users等 )
7.1 查看scoot用户创建的时间,用户状态,使用的默认表空间,临时表空间等信息
比如 知道scott用户的密码,需要查看一下scott的信息
sql> conn scott/admin
sql>select * from user_users;
另外:select * from user_users (scott 用户可以访问其它数据库用户对信息的用户名)
别外:select * from all_users; (所有数据库的用户信息,各用户的密码,状态,默认表空间,临时表空间)
7.2 查看用户自己拥有什么角色
select * from user_role_privs;
注:*admin* 表示对这个用户是否可以把该具有的角色赋予给其它用户。
另:没有 all_role_privs这个用户视图。
另:select * from dba_role_privs(所有数据库用户具有那些角色,这个视图只有dba角色的权限才可以查询)
7.3 查看用户自己具有什么权限
select * from session_privs;
7.4 查看用户具有什么系统权限
select * from user_sys_privs;
7.5 查看用户中,都哪些用户把对象授予给scott用户(读取其它用户的权限)
select * from user_tab_privs;
另:select * from all_table_privs; select * from dba_tab_privs;
7.6 查看用户中拥有的resource 角色都具有什么权限
select * from role_sys_privs where role='resource';
7.7 查看用户自己拥有多少表
select * from user_tables;
另:select * from all_tables; 其它用户拥有的表
另:select * from dba_tablse; 数据库中所有的表
7.8 查看用户已经使用多大的表空间,允许使用的最大的空间是多少
select tablespace_name,bytes,max_bytes from user_ts_quotas;
另:select * from dba_ts_quotas;(所有的数据库用户在每个表空间已使用的空间,最大空间)
7.9 把自己的表赋予给其它用户
grant select on emp to mzl;
查看都把哪些表什么权限赋予了其它用户
select * from user_tab_privs_made;
7.10 把表的某一列操作权限赋予给其它用户
grant update(job) on emp to mzl;
注:查看数据库中所有的角色 select * from dba_roles;
7.11 sys授予scott用户dba角色
conn /as sysdba
grant dba to scott
另:grant dba to scott with admin option;;
7.12 sys回收scott用户的dba角色
revoke dba from scott;
select username,create from dba_users
8. create and manage profiles
配置文件实现中几类安全控制措施:
帐户上锁
资源限制
直接权限
角色权限
1.资源限制
a.在初始化参数文件中将 resource_limit 设置为true
b.使用alter system 命令将resource_limit 设置为true
alter system set resource_limit=true;
profiles:概要文件,包含一些对口令和资源限制的一个命名的集合。通过 create user 或 alter user 命令来指定用户。它可以是enabled或disabled。
可以参数 default profile(默认,资源和口令没有做任何限定)
8.1 创建一个用户
sql> create user test
identified by test; //用户和口令都是test
8.2 口令管理: account locking > password history > password expiration and aging 口令生命周期和过期时间
> password verification 设定口令的复杂性(符号符) > 用户
口令限制是一直保持的,使用create user or lock,unlock,expire accounts 这些命令
sql> alter user test account lock; //账号锁定
sql> alter user test account unlock; //账号解锁
sql> alter user test password expire ; //口令到期
(1)口令账号锁定:Failed_login_attempts 在账号被锁之前登录尝试的失败次数,password_lock_time 在尝试失败登录达到一定的次数后
账号被锁定的时间(单位:是1天),超过这个时间自动解锁
sql> create profile profile1 limit
password_lock_time 1/1440
Failed_login_attempts 3;
//配置文件profile1已创建
sql> alter user itpux profile profile1; //将用户itpux使用配置文件 profile1.
sql> connt itpux/kkk //error
sql> connt itpux/kkk //error
sql> connt itpux/kkk //error
sql> connt itpux/111 //the account is locked 账号已被锁定
sql> alter profile profile1 limit password_lock_time 1/1440; //表示一分钟后锁定自动解锁
sql> conn itpux/kxf;
(2) 口令生存周期和失效后允许改变的时间:password_life_time口令的生存周期(口令经过多少天后会提示到期)/ password_grace_time
失效后锁定,即设定几天后锁定。
sql>alter profile profile1 limit
password_life_time 2 //口令经过2天后会提示到期
password_grace_time 3; //口令到期后三天后被锁定,这3天内可以对口令做改变。
(3)保留口令历史记录:password_reuse_time保留时间(几天) / password_reuse_time 保留最多重用次数
注:passord_reuse_time和 password_reuse_max是复式的,可以指定但只有一个生效。
sql> alter profile prof limit
password_reuse_time 10 //口令保留10天
(4)启用口令复杂性函数: password_verify_function(pl/sql函数在口令被设定前做一个口令复杂性检查)
满足条件:函数必须建立在sys作为owner下,boolean函数返回值是boolean 值,函数中三个参数必须是输入参数(用户id,新口令,旧口令)
并且是varchar2类型和30个字符
function_name(userid_parameter in varchar2(30),password_parameter in varchar2(30),old_password_paramemter in varchar2(30)) return boolean
oracle给了一个默认的口令验证函数:verify_function()
步骤:conn sys 连接 > run一个脚本:utlpwdmg.sql
oracle 会自动产生一个verify_function()函数,同时修改default profile概要文件。
要求如下:
a.口令最小长度是4个字符
b.口令不能和用户名相同
c.口令至少有一个字母,一个数字,一个特殊符号.
d.口令改变时新口令必须和旧口令保证有三个符号以上的差异。
sql> conn sys/admin1 as sysdba
sql> start $oracle_home/rdbms/admin/utlpwdmg.sql //函数已经创建,同时default profile已经更新。
sql> alter user itpux profile default; //用户已更改为默认的口令文件。
sql> alter user itpux identified by itpux_02; //口令已修改,新口令不能和旧口令相同
sql> alter user itpux identified by itpux_001; //重新改回itpux_01.
另一个窗口:
sql> conn itpux/itpux_001
sql> password //修改新的口令:itpux_02
(5)创建profile:口令文件的设定
create profile grace_5 limit
Failed_login_attempts 3
password_lock_time unlimited
password_life_time 30
password_reise_teme 30
password_verify_function verify_function
password_grace_time 5;
sql> alter profile profile1 limit
password_verify_function verify_function; //配置文件已经修改。
drop profile developer_prof;
drop profile developer_prof cascade;
sql> alter user itpux profile profile1;
sql> drop profile profile1; //配置文件profile1指定了用户,不能没有casecade而删除
sql> drop profile profile1 cascade; //profile的删除对当前用户session不起作用,只是在以后的 session 中才会有效
8.3 资源的管理:session级,call级别或者两个都有生效(默认default不生效)
限制可以被定位在profiles中使用 create profile 命令。
要使资源限制生效方法:resource_limit初始化参数(情态改变)、alter system 动态改变命令
alter system set resource_limit=true;
例如:并行会话数 设定为2个用户(默认disabled)
sql>conn itpux/itpux_01 //已连接
在另一个窗口
sql> conn itpux/itpux_01 //已连接
第三个窗口
sql> conn itpux/itpux_01 //已连接
如果想要并行会话数起作用,那么需要用到resource_limit=true;
sql> alter system set resource_limit=true;
sql> conn itpux/itpux_01 //exceeded simultaneous sessions_per_user limit 已超过每个用户并行session限制
注意:如果将并行会话数设置为4,那么继续conn itpux/itpux_01 又可以连接。
(1)设定资源限制在session级别
cpu_per_session cpu /会话--每个session可以指定多少个cpu(单位 :1/100 s)
sessions_per_user 每个用户可以开多少个session
connect_time 连接时间---连接多久退出去(单位:min)
idle_time 空闲时间---用户非活动检测时间,多长时间没有做动作就自动断开(单位是:min)
logical_reads_per_session 每个session 读取多少数据块(物理和逻辑读)
sql> create profile profile1 limit
cpu_per_session 10000; //100秒
connect_time 60; //连接时间60分钟
idle_time 5; //指定空间时间为5分钟
sql> alter user itpux
profile profile1;
另一个窗口:
sql> conn iptpux/itpux_001
sql> select * from authors;
sql> set wrap off
sql> set linesize 1000
sql> run
等待5分钟后继续操作。。。
sql> select * from authors; //超出了最大空闲时间,自动断开连接
(2)设定资源限制 call级别:
cpu_per_call 每一个调用可以占用多少个cpu时间(1/100s)
logical_reads_per_call 每一个调用可以读取多少数据块(bytes)
sql>alter profile profile1 limit
cpu_per_call 1000; //占用10s
logical_reads_per_call 10; //每个调用只能读10块。
创建profile做资源限定:
create profile developer_prof limit
session_per_user 2
cpu_per_session 10000
idle_time 60
connect_time 480;
8.4 管理资源使用 database resource manage 数据库资源管理器
提供oracle服务器更多的控制来资源管理的决策:资源使用者组、资源计划、资源分配方法、资源计划调度等信息。如果不通过
图形界面完成,可以使用 dbms_resource_manager package 来创建和管理这些元素。
要求使用administrater_resource_manager权限。
sql>desc dbms_resource_manager
8.5 获取口令和资源限制的信息:dba_users / dba_profiles
sql> desc dab_users; //查询当前用户的所有信息
sql> select username,account_stauts from dba_users; //发现test用户是expire状态
sql> alter user test account lock; //此时test 用户状态:expired&locked
sql> desc dba_profiles //profile、resource_name、resource_type、limit(继承)
sql> select * from dba_profiles where profile='profile1';
9. oracle用户密码策略 180 过期
1.查看用户密码的有效期设置(一般默认的配置文件是default)
select * from dba_profiles where profile='default' and resource_name='password_life_time'
2.将密码有效期由默认180天改为无限制,修改之后不需要重启数据库,会立即生效
alter profile default limit password_life_time unlimited;
3.帐户再一次密码;
alter user ink identified by <原来密码> ....不用换新密码
4.使用修改后的用户登录,如果报ora_28000用户已被锁,解锁
alter user db_user account unlock;
commit;
10.数据库预定义的管理账户
sys帐户:
被授予dba角色以及几个其它角色
具有带admin option 的所有权限
执行启动、关闭和某些维护命令时需要使用该帐户
拥有数据字典和自动工作量资料档案库(awr)
system 账户被授予 dba 、mgmt_user和aq_administrator_role角色
dbsnmp帐户被授予oem_monitor角色
sysman 账户被授予mgmt_user、resource 和select_catalog_rolg角色
常规操作不使用这两个帐户
sys和system 帐户被授予数据库管理员(dba)角色。另外,sys帐户还
具有带admin具有带admin option的所有权限并拥有数据字典
oracle enterprise manage 的管理代理使用dbsnmp帐户来监视和管理数据库。
sysman帐户用于执行oracle enterprise manage管理任务。dbsnmp 或sysman都没有sysdba
create user dbmonitor identified by dbmonitor;
给账户权限
grant connect to dbmonitor;
grant select any table to dbmonitor;
grant select any dictionary dbmonitor;
回收
revoke connect,resource from dbmonitor;
create user test identified by test ;
grant imp_full_database to test;
grant exp_full_database to test;