用户管理手册.docx
《用户管理手册.docx》由会员分享,可在线阅读,更多相关《用户管理手册.docx(21页珍藏版)》请在冰豆网上搜索。
用户管理手册
一,Oracle数据库用户简介
在Oracle数据库中任何对象都属于一个特定用户,或者说一个用户与同名的模式相关联。
要连接到Oracle数据库需要一个用户帐户,根据需要授予的操作权限。
1,默认数据库用户模式:
Sys:
数据库字典(存储被管理对象所有信息)和视图存储在该模式中。
系统级用户。
System:
默认系统管理员(DBA权限)用户。
系统级用户。
Scott:
数据库示范用户,默认口令tiger。
不同版本不同。
2,什么是权限?
管理用户对数据库定义(DDL)和访问数据库(DML)的操作。
①系统权限:
管理数据库操作DDL,进行系统级活动的能力。
②对象权限:
管理对象进行操作DML。
3,什么是角色?
①管理用户对数据库进行不同级别的访问。
②角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。
只要第一次将角色赋给这一组用户,接下来就只要针对角色进行管理就可以了。
二,用户与表空间的关系
1,每个用户都有一个默认表空间(默认为System)和一个临时表空间(默认为Temp);
2,表空间作用;
①.决定数据库实体的空间分配;
②.设置数据库用户的空间份额;
③.控制数据库部分数据的可用性;
④.分布数据于不同的设备之间以改善性能;
3,创建表空间(TableSpace)
语法格式:
CREATETABLESPACE表空间名
DATAFILE文件标识符[,文件标识符]
[SIZE整数[K\M]]
[AUTOEXTEND][ON|OFF]
;
其中:
文件标识符=’文件名’
例子:
CreateTableSpacets5_11
DataFile‘E:
\OracleTableSpace\05_11\ts1.DBF’,‘E:
\OracleTableSpace\05_11\ts2.DBF'
Size10M;
4,修改表空间配置
语法格式:
ALTERTABLESPCE表空间名
(ADDDATAFILE文件标识符[,文件标识符]
|RENAMEDATAFILE’文件名’[,’文件名’]
TO’文件名’[,’文件名’]
);
三,用户的创建和管理
1,创建数据库用户(User)
语法格式:
Createuser用户名
IDENTIFIEDBY"口令"
Defaulttablespace表空间名
TEMPORARYtablespace临时表空间名
Profileprofile文件名
Quota限制空间大小on表空间名;
例子:
Createuserqfs5_11
Identifiedby"123"
Defaulttablespacets5_11;
grantresourcetoqfs5_11;
grantconnecttoqfs5_11;
2,修改用户
语法格式:
Alteruser用户名
IDENTIFIEDBY“口令”
Defaulttablespace表空间名
TEMPORARYtablespace临时表空间名
Profileprofile文件名
Quota限制空间大小on表空间名;
例子:
Alteruserqfs5_11
Identifiedby"456";
3,删除用户
语法格式:
①用户下没有实体时:
Dropuser用户名;
②用户已创建实体如表和数据时:
Dropuser用户名CASCADE;
注意:
当前正连接的用户不得删除。
使用CASCADE选项时,用户及实体马上被删除,应再进入数据文件进行物理删除。
例子:
/*connscott/toger;
grantselectonemptoqfs5_11;
connqfs5_11/456;
CreateTableempaasselect*fromscott.emp;
*/
Dropuserqfs5_11;
/*ERRORatline1:
ORA-01922:
CASCADEmustbespecifiedtodrop'QFS5_11''*/
Dropuserqfs5_11CASCADE;
/*Userdropped.*/
三,权限和角色的管理
1,权限和角色的关系
①对管理权限而言,角色是一个工具,权限能够被授予给一个角色,角色也能被授予给另一个角色或用户。
用户可以通过角色继承权限,除了管理权限外角色服务没有其它目的。
权限可以被授予,也可以用同样的方式撤销。
角色存在的目的就是为了使权限的管理变得轻松。
2,创建和使用权限
①系统的权限不依赖任何东西,所以级联授权后不级联收回;
对象的权限互相依赖,级联授权的后级联的收回;
system的权限比sysdba的权限要低,他不能关闭数据库和启动数据库等权限
语法格式:
创建:
Grant系统权限列表TO用户名WITHADMINOPTION;
Grant对象权限列表ON对象名TO用户名WITHGRANTOPTION;
移除:
Revoke系统权限列表From用户名;
Revoke对象权限列表ON对象名From用户名;
例子:
创建并使用系统权限CreateTableSpace
connsystem/welcome;
GrantCreateTableSpaceToscottWITHADMINOPTION;
connscott/tiger;
Select*FromUSER_SYS_PRIVS;
CreateTableSpacets5_11_2
DataFile'E:
\OracleTableSpace\ts5_11_2.DBF'
Size2M;
/*Tablespacecreated.*/
connsystem/welcome;
Select*FromV$TableSpace;
TS#NAMEINCBIGFLA
-------------------------------------------------
0SYSTEMYESNOYES
1UNDOTBS1YESNOYES
2SYSAUXYESNOYES
4USERSYESNOYES
3TEMPYESNOYES
6EXAMPLEYESNOYES
7TS5_11YESNOYES
8TS5_11_2YESNOYES
例子:
移除系统权限CreateTableSpace
connsystem/welcome;
Dorptablespacets5_11_2;
/*error:
unknowncommandbeginning"dorptable..."-restoflineignored.*/
RevokeCreateTableSpaceFromscott;
/*Revokesucceeded.*/
Select*FromUSER_SYS_PRIVS;
connsystem/welcome;
DropTableSpacets5_11_2;
/*Tablespacedropped.*/
Select*FromV$TableSpace;
TS#NAMEINCBIGFLA
-------------------------------------------------
0SYSTEMYESNOYES
1UNDOTBS1YESNOYES
2SYSAUXYESNOYES
4USERSYESNOYES
3TEMPYESNOYES
6EXAMPLEYESNOYES
7TS5_11YESNOYES
例子:
创建并使用对象权限Select
/*Createuserqfs5_11*/
connscott/tiger;
select*fromscott.emp;
/*error:
tableorviewdoesnotexist*/
connsystem/welcome;
GrantSelectOnscott.empToqfs5_11WITHGRANTOPTION;
connqfs5_11/123;
select*fromscott.emp;
select*fromuser_tab_privs;
例子:
移除对象权限Select
connsystem/welcome;
RevokeSelectOnscott.empFromqfs5_11;
select*fromscott.emp;
/*error:
tableorviewdoesnotexist*/
select*fromuser_tab_privs;
/*norowsselected*/
3,创建和使用角色
创建语法格式:
CREATEROLErole名IDENTIFIEDBYpassword
CREATEROLErole名IDENTIFIEDEXTERNALLY
CREATEROLErole名IDENTIFIEDGLOBALLY
激活语法格式:
SETROLErole名IDENTIFIEDBYpassword
缺省情况下建立的角色没有password或者其他的识别。
如果使用IDENTIFIEDBY子句建立,那么角色不会自动响应,必须用SETROLE激活。
EXTERNALLY和GLOBALLY类型的角色由操作系统和ORACLEServiceserver验证。
通常用户需要权限修改应用程序中使用的表单中的数据,但是只有在应用程序运行时而不是在使用adhoc工具时,
这种上下文敏感安全可以通过有PASSWORD的角色来实现。
当用户在应用程序内部连结数据库时,代码将执行SETROLE命令,通过安全验证。
所以用户不需要知道角色的password,也不需要自己输入SETROLE命令。
删除角色语法:
DropRolerole名;
例子:
connsystem/welcoem;
--创建角色roleA
CreateRoleroleA;
--授权给角色
GrantCreateSessionToroleA;
--授予角色给用户
GrantroleAToqfs5_11;
--查看角色所包含的权限
Select*fromrol_sys_privs;
--创建带有口令以角色roleB
CreateRoleroleBIdentifiedBypwd;
--修改角色:
是否需要口令
AlterRoleroleBNotIdentified;
--或
AlterRoleroleBIdentifiedBynewPwd;
--设置当前用户要生效的角色
SetRoleroleA;
--设置带有口令的roleB生效
SetRoleroleBIdentifiedBypwd;
--使用该用户的所有角色生效
SetRoleAll;
--设置该用户所有角色失效
SetRoleNone;
--除roleA外的该用户的所有其它角色生效。
SetRoleAllExceptroleA;
--查看当前用户的生效的角色。
Select*FromSESSION_ROLES;
--修改指定用户,设置其默认角色
AlterUserqfs5_11DefaultRoleroleA;
AlterUserqfs5_11DefaultRoleAllExceptroleB;
--移除用户的角色
RevokeCreateSessionFromroleA;
--删除角色
DropRoleroleA;
--角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应的权限也就没有了。
4,系统预定义角色
预定义角色是在数据库安装后,系统自动创建的一些常用的角色。
下介简单的介绍一下这些预定角色。
角色所包含的权限可以用以下语句查询:
sql>select*fromrole_sys_privswhererole='角色名';
①.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:
AdvancedQuery。
这两个角色用于oracle高级查询功能。
⑤.SNMPAGENT
用于oracleenterprisemanager和IntelligentAgent
⑥.RECOVERY_CATALOG_OWNER
用于创建拥有恢复库的用户。
关于恢复库的信息,参考oracle文档《Oracle9iUser-ManagedBackupandRecoveryGuide》
⑦.HS_ADMIN_ROLE
ADBAusingOracle'sheterogeneousservicesfeatureneedsthisroletoaccessappropriatetablesinthedatadictionary.
5,Oracle数据库的系统和对象权限:
alteranycluster修改任意簇的权限
alteranyindex修改任意索引的权限
alteranyrole修改任意角色的权限
alteranysequence修改任意序列的权限
alteranysnapshot修改任意快照的权限
alteranytable修改任意表的权限
alteranytrigger修改任意触发器的权限
altercluster修改拥有簇的权限
alterdatabase修改数据库的权限
alterprocedure修改拥有的存储过程权限
alterprofile修改资源限制简表的权限
alterresourcecost设置佳话资源开销的权限
alterrollbacksegment修改回滚段的权限
altersequence修改拥有的序列权限
altersession修改数据库会话的权限
altersytem修改数据库服务器设置的权限
altertable修改拥有的表权限
altertablespace修改表空间的权限
alteruser修改用户的权限
analyze使用analyze命令分析数据库中任意的表、索引和簇
auditany为任意的数据库对象设置审计选项
auditsystem允许系统操作审计
backupanytable备份任意表的权限
becomeuser切换用户状态的权限
commitanytable提交表的权限
createanycluster为任意用户创建簇的权限
createanyindex为任意用户创建索引的权限
createanyprocedure为任意用户创建存储过程的权限
createanysequence为任意用户创建序列的权限
createanysnapshot为任意用户创建快照的权限
createanysynonym为任意用户创建同义名的权限
createanytable为任意用户创建表的权限
createanytrigger为任意用户创建触发器的权限
createanyview为任意用户创建视图的权限
createcluster为用户创建簇的权限
createdatabaselink为用户创建的权限
createprocedure为用户创建存储过程的权限
createprofile创建资源限制简表的权限
createpublicdatabaselink创建公共数据库链路的权限
createpublicsynonym创建公共同义名的权限
createrole创建角色的权限
createrollbacksegment创建回滚段的权限
createsession创建会话的权限
createsequence为用户创建序列的权限
createsnapshot为用户创建快照的权限
createsynonym为用户创建同义名的权限
createtable为用户创建表的权限
createtablespace创建表空间的权限
createuser创建用户的权限
createview为用户创建视图的权限
deleteanytable删除任意表行的权限
deleteanyview删除任意视图行的权限
deletesnapshot删除快照中行的权限
deletetable为用户删除表行的权限
deleteview为用户删除视图行的权限
dropanycluster删除任意簇的权限
dropanyindex删除任意索引的权限
dropanyprocedure删除任意存储过程的权限
dropanyrole删除任意角色的权限
dropanysequence删除任意序列的权限
dropanysnapshot删除任意快照的权限
dropanysynonym删除任意同义名的权限
dropanytable删除任意表的权限
dropanytrigger删除任意触发器的权限
dropanyview删除任意视图的权限
dropprofile删除资源限制简表的权限
droppubliccluster删除公共簇的权限
droppublicdatabaselink删除公共数据链路的权限
droppublicsynonym删除公共同义名的权限
droprollbacksegment删除回滚段的权限
droptablespace删除表空间的权限
dropuser删除用户的权限
executeanyprocedure执行任意存储过程的权限
executefunction执行存储函数的权限
executepackage执行存储包的权限
executeprocedure执行用户存储过程的权限
forceanytransaction管理未提交的任意事务的输出权限
forcetransaction管理未提交的用户事务的输出权限
grantanyprivilege授予任意系统特权的权限
grantanyrole授予任意角色的权限
indextable给表加索引的权限
insertanytable向任意表中插入行的权限
insertsnapshot向快照中插入行的权限
inserttable向用户表中插入行的权限
insertview向用户视图中插行的权限
lockanytable给任意表加锁的权限
managertablespace管理(备份可用性)表空间的权限
referencestable参考表的权限
restrictedsession创建有限制的数据库会话的权限
selectanysequence使用任意序列的权限
selectanytable使用任意表的权限
selectsnapshot使用快照的权限
selectsequence使用用户序列的权限
selecttable使用用户表的权限
selectview使用视图的权限
unlimitedtablespace对表空间大小不加限制的权限
updateanytable修改任意表中行的权限
updatesnapshot修改快照中行的权限
updatetable修改用户表中的行的权限
updateview修改视图中行的权限
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:
某个角色被赋予的相关表的权限
综合示例:
/*
Dropuse