Oracle用户管理

来源:百度文库 编辑:神马文学网 时间:2024/04/27 06:31:30
一,Oracle数据库用户简介
在Oracle数据库中任何对象都属于一个特定用户,或者说一个用户与同名的模式相关联。
要连接到Oracle数据库需要一个用户帐户,根据需要授予的操作权限。
1,默认数据库用户模式:
Sys:数据库字典(存储被管理对象所有信息)和视图存储在该模式中。系统级用户。
System:默认系统管理员(DBA权限)用户。系统级用户。
Scott:数据库示范用户,默认口令tiger。不同版本不同。
2,什么是权限?
管理用户对数据库定义(DDL)和访问数据库(DML)的操作。
①系统权限:管理数据库操作DDL,进行系统级活动的能力。
②对象权限:管理对象进行操作DML。
3,什么是角色?
①管理用户对数据库进行不同级别的访问。
②角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。
只要第一次将角色赋给这一组用户,接下来就只要针对角色进行管理就可以了。二,用户与表空间的关系
1,每个用户都有一个默认表空间(默认为System)和一个临时表空间(默认为Temp);
2,表空间作用;
①.决定数据库实体的空间分配;
②.设置数据库用户的空间份额;
③.控制数据库部分数据的可用性;
④.分布数据于不同的设备之间以改善性能;
3,创建表空间(TableSpace)
语法格式:
CREATE  TABLESPACE  表空间名
DATAFILE 文件标识符 [,文件标识符]
[SIZE整数  [K\M]  ]
[AUTOEXTEND] [ON | OFF]
;
其中:文件标识符=’文件名’
例子:
Create TableSpace ts5_11
DataFile ‘E:\OracleTableSpace\05_11\ts1.DBF’, ‘E:\OracleTableSpace\05_11\ts2.DBF'
Size 10M;
4,修改表空间配置
语法格式:
ALTER TABLESPCE 表空间名
(ADD DATAFILE 文件标识符[,文件标识符]
| RENAME DATAFILE ’文件名’[,’文件名’]
TO ’文件名’[,’文件名’]
);
三,用户的创建和管理
1,创建数据库用户(User)
语法格式:
Create  user  用户名
IDENTIFIED  BY  "口令"
Default  tablespace  表空间名
TEMPORARY  tablespace  临时表空间名
Profile  profile文件名
Quota  限制空间大小  on  表空间名;
例子:
Create user qfs5_11
Identified by "123"
Default tablespace ts5_11;
grant resource to qfs5_11;
grant connect to qfs5_11;
2,修改用户
语法格式:
Alter  user  用户名
IDENTIFIED  BY  “口令”
Default  tablespace  表空间名
TEMPORARY  tablespace  临时表空间名
Profile  profile文件名
Quota  限制空间大小  on  表空间名;
例子:
Alter user qfs5_11
Identified by "456";
3,删除用户
语法格式:
①用户下没有实体时:
Drop  user  用户名;
②用户已创建实体如表和数据时:
Drop  user  用户名  CASCADE; 注意:当前正连接的用户不得删除。
使用CASCADE选项时,用户及实体马上被删除,应再进入数据文件进行物理删除。
例子:
/*conn scott/toger;
grant select on emp to qfs5_11;
conn qfs5_11/456;
CreateTable empa as select * from scott.emp;
*/
Drop  user  qfs5_11;
/*ERROR at line 1:ORA-01922: CASCADE must be specified to drop 'QFS5_11''*/
Drop  user  qfs5_11 CASCADE;
/*User dropped.*/
三,权限和角色的管理
1,权限和角色的关系
①对管理权限而言,角色是一个工具,权限能够被授予给一个角色,角色也能被授予给另一个角色或用户。
用户可以通过角色继承权限,除了管理权限外角色服务没有其它目的。权限可以被授予,也可以用同样的方式撤销。
角色存在的目的就是为了使权限的管理变得轻松。
2,创建和使用权限
①系统的权限不依赖任何东西,所以级联授权后不级联收回;
对象的权限互相依赖,级联授权的后级联的收回;
system的权限比sysdba的权限要低,他不能关闭数据库和启动数据库等权限
语法格式:
创建:
Grant  系统权限列表 TO 用户名 WITH ADMIN OPTION;
Grant  对象权限列表  ON  对象名  TO  用户名 WITH GRANT OPTION;
移除:
Revoke 系统权限列表  From  用户名;
Revoke 对象权限列表 ON  对象名 From   用户名;
例子: 创建并使用系统权限Create TableSpace
conn system/welcome;
Grant Create TableSpace To  scott  WITH ADMIN OPTION;
conn scott/tiger;
Select  *  From USER_SYS_PRIVS;
Create TableSpace ts5_11_2 DataFile 'E:\OracleTableSpace\ts5_11_2.DBF'
Size 2M;
/*Tablespace created.*/
conn system/welcome;
Select  *  From V$TableSpace;
TS# NAME                           INC BIG FLA
---------- ------------------------------ --- --- ---
0 SYSTEM                         YES NO  YES
1 UNDOTBS1                       YES NO  YES
2 SYSAUX                         YES NO  YES
4 USERS                          YES NO  YES
3 TEMP                           YES NO  YES
6 EXAMPLE                        YES NO  YES
7 TS5_11                         YES NO  YES
8 TS5_11_2                       YES NO  YES
例子:移除系统权限Create TableSpace
conn system/welcome;
Dorp tablespace ts5_11_2;
/*error: unknown command beginning "dorp table..." - rest of line ignored.*/
Revoke Create TableSpace From scott;
/*Revoke succeeded.*/
Select  *  From USER_SYS_PRIVS;
conn system/welcome;
Drop TableSpace ts5_11_2;
/*Tablespace dropped.*/
Select  *  From V$TableSpace;
TS# NAME                           INC BIG FLA
---------- ------------------------------ --- --- ---
0 SYSTEM                         YES NO  YES
1 UNDOTBS1                       YES NO  YES
2 SYSAUX                         YES NO  YES
4 USERS                          YES NO  YES
3 TEMP                           YES NO  YES
6 EXAMPLE                        YES NO  YES
7 TS5_11                         YES NO  YES
例子: 创建并使用对象权限Select
/*Create user  qfs5_11 */
conn scott/tiger;
select * from scott.emp;
/*error: table or view does not exist*/
conn system/welcome;
Grant Select On  scott.emp To  qfs5_11  WITH GRANT OPTION;
conn qfs5_11/123;
select * from scott.emp;
select * from user_tab_privs;
例子:移除对象权限Select
conn system/welcome;
Revoke  Select   On scott.emp  From   qfs5_11;
select * from scott.emp;
/*error: table or view does not exist*/
select * from user_tab_privs;
/*no rows selected*/
3,创建和使用角色
创建语法格式:
CREATE   ROLE   role名   IDENTIFIED   BY password
CREATE   ROLE   role名   IDENTIFIED   EXTERNALLY
CREATE   ROLE   role名   IDENTIFIED   GLOBALLY
激活语法格式:
SET ROLE role名 IDENTIFIED BY password
缺省情况下建立的角色没有password或者其他的识别。
如果使用IDENTIFIED BY 子句建立,那么角色不会自动响应,必须用SET ROLE激活。
EXTERNALLY和GLOBALLY类型的角色由操作系统和ORACLE Service server验证。
通常用户需要权限修改应用程序中使用的表单中的数据,但是只有在应用程序运行时而不是在使用ad hoc工具时,
这种上下文敏感安全可以通过有PASSWORD的角色来实现。
当用户在应用程序内部连结数据库时,代码将执行SET ROLE命令,通过安全验证。
所以用户不需要知道角色的password,也不需要自己输入SET ROLE命令。
删除角色语法:
Drop Role role名;
例子:
conn system/welcoem;
--创建角色roleA
Create   Role   roleA  ;
--授权给角色Grant Create  Session  To  roleA;
--授予角色给用户
Grant  roleA  To qfs5_11;
--查看角色所包含的权限
Select * from rol_sys_privs;
--创建带有口令以角色roleB
Create   Role   roleB  Identified   By  pwd;
--修改角色:是否需要口令
Alter  Role  roleB  Not   Identified;
--或
Alter  Role  roleB  Identified  By newPwd;
--设置当前用户要生效的角色
Set Role roleA;
--设置带有口令的roleB生效
Set   Role   roleB   Identified   By  pwd;
--使用该用户的所有角色生效
Set Role All;
--设置该用户所有角色失效
Set Role None;
--除roleA外的该用户的所有其它角色生效。
Set Role All Except roleA;
--查看当前用户的生效的角色。
Select  *  From  SESSION_ROLES;
--修改指定用户,设置其默认角色
Alter User qfs5_11 Default Role roleA;
Alter User qfs5_11 Default Role All Except roleB;
--移除用户的角色
Revoke Create  Session  From  roleA;
--删除角色
Drop Role roleA;
--角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应的权限也就没有了。
4,系统预定义角色
预定义角色是在数据库安装后,系统自动创建的一些常用的角色。
下介简单的介绍一下这些预定角色。角色所包含的权限可以用以下语句查询:
sql>select * from role_sys_privs where role='角色名';
①.CONNECT, RESOURCE,  DBA
这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。
oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。
将来的版本中这些角色可能不会作为预定义角色。
②.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE
这些角色主要用于访问数据字典视图和包。
③.EXP_FULL_DATABASE, IMP_FULL_DATABASE
这两个角色用于数据导入导出工具的使用。
④.AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE
AQ:Advanced Query。这两个角色用于oracle高级查询功能。
⑤.SNMPAGENT
用于oracle enterprise manager和Intelligent Agent
⑥.RECOVERY_CATALOG_OWNER
用于创建拥有恢复库的用户。关于恢复库的信息,参考oracle文档《Oracle9i User-Managed Backup and Recovery Guide》
⑦.HS_ADMIN_ROLE
A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.
5,Oracle数据库的系统和对象权限:
alter any cluster 修改任意簇的权限
alter any index 修改任意索引的权限
alter any role 修改任意角色的权限
alter any sequence 修改任意序列的权限
alter any snapshot 修改任意快照的权限
alter any table 修改任意表的权限
alter any trigger 修改任意触发器的权限
alter cluster 修改拥有簇的权限
alter database 修改数据库的权限
alter procedure 修改拥有的存储过程权限
alter profile 修改资源限制简表的权限
alter resource cost 设置佳话资源开销的权限
alter rollback segment 修改回滚段的权限
alter sequence 修改拥有的序列权限
alter session 修改数据库会话的权限
alter sytem 修改数据库服务器设置的权限
alter table 修改拥有的表权限
alter tablespace 修改表空间的权限
alter user 修改用户的权限
analyze 使用analyze命令分析数据库中任意的表、索引和簇
audit any 为任意的数据库对象设置审计选项
audit system 允许系统操作审计
backup any table 备份任意表的权限
become user 切换用户状态的权限
commit any table 提交表的权限
create any cluster 为任意用户创建簇的权限
create any index 为任意用户创建索引的权限
create any procedure 为任意用户创建存储过程的权限
create any sequence 为任意用户创建序列的权限
create any snapshot 为任意用户创建快照的权限
create any synonym 为任意用户创建同义名的权限
create any table 为任意用户创建表的权限
create any trigger 为任意用户创建触发器的权限
create any view 为任意用户创建视图的权限
create cluster 为用户创建簇的权限
create database link 为用户创建的权限
create procedure 为用户创建存储过程的权限
create profile 创建资源限制简表的权限
create public database link 创建公共数据库链路的权限
create public synonym 创建公共同义名的权限
create role 创建角色的权限
create rollback segment 创建回滚段的权限
create session 创建会话的权限
create sequence 为用户创建序列的权限
create snapshot 为用户创建快照的权限
create synonym 为用户创建同义名的权限
create table 为用户创建表的权限
create tablespace 创建表空间的权限
create user 创建用户的权限
create view 为用户创建视图的权限
delete any table 删除任意表行的权限
delete any view 删除任意视图行的权限
delete snapshot 删除快照中行的权限
delete table 为用户删除表行的权限
delete view 为用户删除视图行的权限
drop any cluster 删除任意簇的权限
drop any index 删除任意索引的权限
drop any procedure 删除任意存储过程的权限
drop any role 删除任意角色的权限
drop any sequence 删除任意序列的权限
drop any snapshot 删除任意快照的权限
drop any synonym 删除任意同义名的权限
drop any table 删除任意表的权限
drop any trigger 删除任意触发器的权限
drop any view 删除任意视图的权限
drop profile 删除资源限制简表的权限
drop public cluster 删除公共簇的权限
drop public database link 删除公共数据链路的权限
drop public synonym 删除公共同义名的权限
drop rollback segment 删除回滚段的权限
drop tablespace 删除表空间的权限
drop user 删除用户的权限
execute any procedure 执行任意存储过程的权限
execute function 执行存储函数的权限
execute package 执行存储包的权限
execute procedure 执行用户存储过程的权限
force any transaction 管理未提交的任意事务的输出权限
force transaction 管理未提交的用户事务的输出权限
grant any privilege 授予任意系统特权的权限
grant any role 授予任意角色的权限
index table 给表加索引的权限
insert any table 向任意表中插入行的权限
insert snapshot 向快照中插入行的权限
insert table 向用户表中插入行的权限
insert view 向用户视图中插行的权限
lock any table 给任意表加锁的权限
manager tablespace 管理(备份可用性)表空间的权限
references table 参考表的权限
restricted session 创建有限制的数据库会话的权限
select any sequence 使用任意序列的权限
select any table 使用任意表的权限
select snapshot 使用快照的权限
select sequence 使用用户序列的权限
select table 使用用户表的权限
select view 使用视图的权限
unlimited tablespace 对表空间大小不加限制的权限
update any table 修改任意表中行的权限
update snapshot 修改快照中行的权限
update table 修改用户表中的行的权限
update view 修改视图中行的权限
6,与权限,角色相关的视图:
SYSTEM_PRIVILEGE_MAP获得完整的系统权限。
DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限
USER_SYS_PRIVS:   当前用户所拥有的系统权限
SESSION_PRIVS:     当前用户所拥有的全部权限
ROLE_SYS_PRIVS:     某个角色所拥有的系统权限
user_tab_privs:读取其他用户对象权限:
注意: 要以SYS用户登陆查询这个视图,否则返回空.
ROLE_ROLE_PRIVS:     当前角色被赋予的角色
SESSION_ROLES:       当前用户被激活的角色
USER_ROLE_PRIVS:    当前用户被授予的角色
另外还有针对表的访问权限的视图:
TABLE_PRIVILEGES
ALL_TAB_PRIVS
ROLE_TAB_PRIVS:      某个角色被赋予的相关表的权限
综合示例:
/*
Drop user ts5_11;
Drop tablespace ts5_11;
Drop Role roleA, roleB;
*/
--连接管理员用户
conn system/welcome;
--创建表空间ts5_11
Create TableSpace ts5_11
DataFile 'E:\OracleTableSpace\ts5_11.dbf'
Size 2M;
--创建用户qfs5_11_1和qfs5_11_2
Create User qfs5_11_1
Identified by  "511"
Default TableSpace ts5_11;
Create User qfs5_11_2
Identified by  "511"
Default TableSpace ts5_11;
--连接用户qfs5_11_1
conn qfs5_11_1/511;
/*ERROR: user QFS5_11_1 lacks CREATE SESSION privilege; logon denied*/
--创建角色
Create Role  roleA ;
--授权给角色Create  Session
Grant Create  Session  To  roleA;
--授予角色给用户qfs5_11_1
Grant  roleA  To qfs5_11_1;
--连接用户qfs5_11_1和qfs5_11_2
conn qfs5_11_1/511;
/*Connected.*/
conn qfs5_11_2/511;
/*ERROR: user QFS5_11_1 lacks CREATE SESSION privilege; logon denied*/
--授予角色给用户qfs5_11_2
conn system/welcome;
Grant roleA TO qfs5_11_2;
--连接用户qfs5_11_2
conn qfs5_11_2/511;
/*Connected.*/
--创建角色roleB
conn system/welcome;
Create Role roleB;
--授予角色权限scott.emp 表对象的select权限
Grant   Select  On scott.emp  To  roleB;
--授予roleB角色给用户qfs5_11_1
Grant  roleB To  qfs5_11_1;
--连接用户qfs5_11_1查询scott.emp表数据
conn qfs5_11_1/511;
select * from scott.emp;
--连接用户qfs5_11_2查询scott.emp表数据
conn qfs5_11_2/511;
select * from scott.emp;
/* EROOR: table or view does not exist*/
--授予roleB角色给用户qfs5_11_2
conn system/welcome;
Grant  roleB To  qfs5_11_2;
--连接用户qfs5_11_2查询scott.emp表数据
conn qfs5_11_2/511;
select * from scott.emp;
--删除角色roleB
Drop Role roleB;
--查询scott.emp表数据
conn qfs5_11_1/511;
select * from scott.emp;
/*EROOR: table or view does not exist*/
conn qfs5_11_2/511;
select * from scott.emp;
/* EROOR: table or view does not exist*/
--删除角色roleA
Drop Role roleA;
--连接用户qfs5_11_1和qfs5_11_2
conn qfs5_11_1/511;
/*ERROR: user QFS5_11_1 lacks CREATE SESSION privilege; logon denied*/
conn qfs5_11_2/511;
/*ERROR: user QFS5_11_1 lacks CREATE SESSION privilege; logon denied*/
--删除用户conn qfs5_11_1和conn qfs5_11_2
Drop User  qfs5_11_1;
Drop User  qfs5_11_2;
--删除表空间ts5_11;
Drop  tableSpace ts5_11;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qfs_v/archive/2008/05/12/2435168.aspx