ORACLE数据库设计说明Word文件下载.docx
- 文档编号:18220808
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:92
- 大小:175.52KB
ORACLE数据库设计说明Word文件下载.docx
《ORACLE数据库设计说明Word文件下载.docx》由会员分享,可在线阅读,更多相关《ORACLE数据库设计说明Word文件下载.docx(92页珍藏版)》请在冰豆网上搜索。
●用户访问
●创建用户
●修改用户
●授予用户访问权
●撤消用户
●废除用户访问
●创建角色
2.1表空间、用户及方案概述
表空间是数据库的逻辑组成部分。
从物理上说,数据库数据存放在数据文件中;
从逻辑上说,数据库数据存放在表空间(tablespace)中,并且表空间是由一个或多个数据文件组成的。
一个表空间是由一个或多个数据文件组成的。
用户(也称为)是定义在数据库中的一个名称,它是Oracle数据库的基本访问控制机制。
当连接到Oracle数据库时,默认情况下必须要提供用户名和口令。
只有在输入了正确的用户名和口令之后,才能够连接到数据库,并执行各种管理操作和数据访问操作。
方案(Schema)是用户所拥有数据库对象的集合。
在Oracle数据库中对象是以用户来组织的,用户与方案是一一对应的关系,并且二者名称相同。
例SCOTT用户所拥有的所有对象都属于SCOTT方案,而SYSTEM用户所拥有的所有对象都属于SYSTEM方案。
当访问数据库对象时,有一些注意事项:
●在同一个方案中不能存在同名对象,但不同方案可以具有同名对象。
●用户可以直接访问其方案对象,但如果要访问其他方案对象,则必须具有对象权限。
如用户SCOTT可以直接查询其方案表EMP,但如果用户SMITH要检索SCOTT方案的表EMP,则必须在EMP表上具有SELECT对象权限。
●当用户访问其他方案对象时,必须加方案名为前缀。
例,如用户SMITH要访问SCOTT方案的EMP表,则必须使用SCOTT.EMP。
2.2用户访问
在多用户环境里,一个数据库可能有多个用户同时在访问。
当有不同的用户同时访问数据库时,保护数据库安全,防非授权访问非常重要。
因此,必须在数据库里创建用户,并为用户指定用户名和密码,这样可以保证只有经过授权的,即有正确用户名和密码的用户才能访问数据库。
数据库管理员(DBA)是最高级别的用户,他可以创建其他用户。
在创建了用户后,DBA需要按用户的需求为用户分配权限。
权限指用户执行特定语句的许可,这意味并非所有用户都被允许修改重要数据。
例如,某个用户可能只需要有连接数据库和查询某些表的记录的权限。
类似地,另一个用户可能要求有创建和修改表的权限。
DBA有访问数据库的一切权限,并有权为其他用户分配权限。
下表列出了部分DBA权限:
DBA权限
有权执行
CREATEUSER
创建新用户
DROPUSER
撤消用户
DROPANYTABLE
撤消表
BACKUPANYTABLE
为表制作备份
SELECTANYTABLE
查询数据库对象,如表和视图
CREATEANYTABLE
创建表
为了维护存储在数据库中数据的安全,Oracle提供了以下数据库安全措施:
●管理和控制数据库访问
●用Oracle数据字典验证权限
●为指定用户提供对数据库特定对象(表、视图和序列等)的访问
●为数据库对象提供同义词
可被数据库操作采用的数据库的安全策略包括:
●系统安全:
系统安全涉及系统级的访问,如允许用户通过指出用户名和密码连接Oracle,为用户分配磁盘空间,限定用户所能执行的操作。
用户能执行的操作包括:
查询数据库对象的容、创建数据库对象和更改数据库对象。
●数据安全:
数据安全涉及对数据库对象的访问和使用,以及用户在数据库对象上所拥有的权限的程度。
2.3创建用户
CREATEUSER语句用于创建新用户。
在创建新用户时,必须为新用户指定用户名和密码。
为了使新用户能登录服务器和访问数据库,DBA必须显式地为用户分配权限。
只有拥有CREATEUSER权限的用户才能创建新用户。
例如,DBA创建了新用户Susan,但Susan无权创建其他新用户。
只有当Susan有了CREATEUSER这个权限后,她才能创建别的新用户。
创建用户的语法示例:
CREATEUSERuserIDENTIFIEDBYpassword
DEFAULTTABLESPACEdata01
TEMPORARYTABLESPACEtemp
QUOTA3MONdata01
PASSWORDEXPIRE;
其中IDENTIFIEDBY用于指定用户口令;
DEFAULTTABLESPACE用于指定用户的默认表空间,当建立表或者索引时,如果不指定TABLESPACE子句,那么Oracle会自动在默认表空间上为这些对象分配空间;
TEMPORARYTABLESPACE用于指定用户的临时表空间,当用户执行排序操作时,或临时数据超过PGA工作区,则会在该表空间上建立临时段;
QUOTA用于指定表空间配额,即用户对象在表空间上可占用的最大空间;
PASSWORDEXPIRE用于指定终止口令,最终强制用户在登录时改变口令。
当建立了新用户之后,需要注意以下问题:
●初始创建的数据库用户没有任何权限,不能执行任何数据库操作。
●如果在建立用户时不指定DEFAULTTABLESPACE子句,那么Oracle会将数据库默认表空间作为用户的默认表空间。
在OracleDatabase10g之前,如果不指定DEFAULTTABLESPACE子句,那么Oracle会将SYSTEM表空间作为用户的默认表空间。
●如果在建立用户时不指定TEMPORARYTABLESPACE子句,那么Oracle会将数据库默认临时表空间作为用户的临时表空间。
●如果在建立用户时没有为特定表空间指定QUOTA子句,那么用户在特定表空间上的配额为0,这样用户将不能在相应表空间上建立数据对象。
2.4修改用户
修改用户信息是使用ALTERUSER命令完成的。
一般情况下,该命令是由DBA来执行的,如果以其他用户身份修改用户信息,必须要具有ALTERUSER系统权限。
1.修改口令
创建用户时为每个用户指定一个初始密码。
之后可修改密码,修改密码的方法有两种:
●管理员修改:
ALTERUSERuserIDENTIFIEDBYpassword;
(password为用户的新密码)
●用户自己修改:
用户登录后输入命令:
PASSWORD;
修改表空间配额
表空间配额用于限制用户对象在表空间上可占用的最大空间。
如果用户对象己经占满了表空间配额所允许的最大空间,那么该用户将不能在该表空间上分配新的空间。
此时如果执行了涉及到空间分配的SQL操作(如INSERT、UPDATE、CREATETABLE等),则会显示错误,修改表空间语法:
ALTERUSERuserQUOTA10MONdata01;
2.5锁定用户账户
为了禁止特定数据库用户用户访问数据库,DBA可以锁定用户账户,
ALTERUSERuserACCOUNTLOCK;
2.6解锁用户账户
为了使得数据库用户可以访问数据库,DBA可以解锁用户账户。
ALTERUSERuserACCOUNTUNLOCK;
2.7默认角色
当将多个角色授予数据库用户之后,通过使用ALTERUSER命令可以设置用户的默认角色。
(当为用户指定了默认角色后,以该用户身份登录时会自动激活其默认角色,并不激活非默认角色)
ALTERUSERuserDEFAULTROLEselect_role;
[补充:
]
默认角色和非默认角色的区别是什么?
这个理解有多种,第一种:
默认角色可以是我们创建数据库就可以见的connect/dba等,非默认角色需要我们自己创建;
第二种:
一个用户可以有多个角色,默认的角色登录即生效,非默认的需要激活才能使用。
默认角色和权限集是Oracle安装过程中预先定义的。
每个版本的默认角色都有所变化。
CREATEUSERSMISIDENTIFIEDBYSMIS;
grantdba,connecttoSMIS;
createroler_px;
grantr_pxtoSMIS;
select*fromdba_role_privswheregrantee='
SMIS'
;
alteruserSMISdefaultroleallexceptr_px;
2.8授予用户访问权
用户创建后,数据库管理员需要为他分配权限。
权限关系到数据库的安全,它决定了用户在数据库上所能执行的操作。
GRANT语句用于为用户分配权限。
语法如下:
GRANTprivilegeTOuser;
[注释:
授予所有系统权限GRANTALLPRIVILEGEStotest_2;
授予所有对象权限GRANTALL[PRIVILEGES]ONDEMO.DEPTTOTEST_1;
可分配给用户的权限有:
●系统权限:
允许用户访问数据库的权限称为系统权限。
●对象权限:
允许用户在数据库对象上执行查询、更新、删除或添加数据等操作的权限,此称为对象权限。
常用的系统权限有:
系统权限
CREATESESSION
连接数据库
CREATETABLE
CREATEVIEW
创建视图
CREATEPUBLICSYNONYM
建立同义词
CREATESEQUENCE
创建序列
CREATEPROCEDURE
建立过程、函数和包
CREATETRIGGER
建立触发器
CREATECLUSTER
建立簇
CREATETYPE
建立对象类型
CREATEDATABASELINK
建立数据库链
另外,Oracle还提供了一类ANY系统权限,当用户具有该类系统权限时,可以在
任何方案中执行相应操作。
例如,如果用户具有SELECTANYTABLE系统权限,那么用户可以查询任何方案的表(除数据字典基表和数据字典视图DBA_XXX----DBA和特权用户专访)。
如:
GRANTCREATESESSION,CREATESEQUENCE,CREATEVIEWTOjohn;
上述命令执行后,用户john将拥有创建会话、视图和序列的系统权限。
*Oracle提供了100多种系统权限(ALTERTABLE,ALTERVIEW,ALTERPROCEDURE,DROPTABLE,DROPVIEW,DROPPROCEDURE等)。
一般情况下,授予系统权限是由DBA来完成的;
如果要以其他用户身份授予系统权限,则要求该用户必须具有GRANTANYPRIVILEGE系统权限,或者具有相应系统权限及其转授系统权限选项(WITHADMINOPTION),授予系统权限是使用GRANT命令来完成的,其语法如下:
GRANTsystem_priv[,system_priv,…]
TO{user|role|public},[,{user|role|public}]...
[WITHADMINOPTION];
注:
user也可以是用户组PUBLIC;
UNLIMITEDTABLESPACE权限不能被授予角色
下表列出了所有对象权限。
对象权限
适用于
ALTER
表、序列
DELETE
表、视图
EXECUTE
过程
INDEX
表
INSERT
REFERENCES
表(基于表建立从表)
SELECT
表、视图、序列
UPDATE
如果用户在某个同义词上拥有权限,而这个同义词又需要引用其他基表,那么用户
在同义词上拥有的权限会转换为在基表上的权限。
缺省地,用户对他所创建的对象拥有完全的权限。
如用户在用户模式上创建了一个表,那么缺省地,他在用户模式上拥有所创建的这个表的所有权限。
授予对象权限一般情况下是由对象所有者或者DBA用户来完成的;
如果以其他用户身份授予对象权限,则要求用户必须具有该对象权限及转授对象权限选项(WITHGRANTOPTION),语法如下:
GRANT{object_priv[(columns)][,object_priv[(columns)]]…
|ALL[PRIVILEGES]}ON[schema.]object
TO{user|role|PUBLIC}[,{user|role|PUBLIC}]…
[WITHGRANTOPTION];
例:
grantupdateonscott..emptoblake;
Grantupdate(sal)onemptoblake;
(只能在insert、update和references上授予列权限
2.9撤消用户
DROPUSER语句用于删除用户。
语法:
DROPUSERusername;
撤消用户时,用户创建的对象并没有被撤消。
为了撤消创建对象的用户
DROPUSERusernameCASCADE;
(不指定CASCADE不能撤消创建对象的用户)
2.10废除用户访问
一般情况下,收回系统权限是由DBA来完成的;
如果以其他用户身份收回系统权限,则要求该用户必须具有相应系统权限及其转授系统权限选项(WITHADMINOPTION)。
收回系统权限是使用REVOKE命令来完成的。
REVOKEsystem_priv[,system_priv]…
FROM{user|role|PUBLIC}[,{user|role|PUBLIC}]…
用户的权限可使用REVOKE语句废除。
一旦某个用户的权限被撤消,由他创建的所有用户和从他那获得权限的所有用户也都被撤消。
如,Jim把CREATETABLE权限授给John。
当Jim的权限被撤消时,同时自动撤消John的权限。
GRANTCREATETABLETOJohn;
REVOKECREATETABLEFROMJohn;
(不能撤消自己的权限)
一般情况下,收回对象权限是由对象所有者或者DBA用户来完成的;
如果以其他用户身份收回对象权限,则要求用户必须具有该对象权限及转授对象权限选项(WITHGRANTOPTION)。
REVOKE{object_priv[,object_priv]…|ALL[PRIVILEGES]}
ON[schema.]object
FROM{user|role|PUBLIC}[,{user|role|PUBLIC}]…
[CASCADECONSTRAINTS];
CASCADECONSTRAINTS用于删除任何与该对象相关的约束和对象,例如索引、触发器、权限、完整性约束等。
2.11创建角色
角色是相关权限的命名集合,使用角色的主要目的是为了简化权限管理。
角色可以是权限的组合,也可以是角色的组合。
角色包括预定义角色和自定义角色两类。
常用的预定义角色有:
(oracle10g)
●CONNECTRole:
分配给临时用户的角色。
通常,为只需要查询材料而无须创建表的用户分配这个角色。
●RESOURCERole:
这个角色分配给常规用户
●DBARole:
这个角色拥有一切系统权限,包括不加限制的表空间配额以及WITHADMINOPTION选项。
默认的DBA用户为SYS和SYSTEM,他们可以将任何系统权限授予其他用户。
读者需要注意,DBA角色不具备SYSDBA和SYSOPER特权。
创建角色的语法:
CREATEROLErole[NOTIDENTIFIED];
不验证—用于公用角色或用户默认角色
或
CREATEROLErole
IDENTIFIEDBYpassword;
数据库验证
为角色分配密码或修改角色密码:
ALTERROLErole
(password为要设置的新密码)
CREATEROLEAcadre;
ALTERROLEAcadreIDENTIFIEDBYsuccess;
为角色授予权限
GRANTprivilegeTOrole;
只授予CONNECT权限给角色Acadre,这样他们不可能操作数据库。
GRANTconnectTOAcadre;
将角色指派给用户
一个角色可指派给多个用户。
类似的,一个用户也可具有多个角色。
当把角色指派给用户时,赋予该角色的权限也自动分配给用户。
为用户分配角色的语法:
GRANTroleTOuser;
也可以使用ALTERUSER语句授权用户。
ALTERUSERJohnDefaultROLEStudent;
授予用户John以缺省角色student。
2.12新建的用户怎样才能成功创建一个表
当一个用户刚被创建时是不具备任何权限的,因此要在该用户模式下创建表,需授予CREATESESSION、CREATETABLE、以及UNLIMITEDTABLESPACE(或分配配额)权限,因为:
当用户要连接到数据库时必须拥有CREATESESSION权限
当用户要创建表时必须拥有CREATETABLE权限,同时用户还需要在表空间中拥有配额或者被授予UNLIMITEDTABLESPACE。
现在我们来做一个测试:
1)、创建用户TEST,密码为passwd_1:
SQL>
CREATEUSERtest
IDENTIFIEDBYpasswd_I1
用户已创建
2)当用TEST连接数据库时:
conntest/passwd_1
ERROR:
ORA-01045:
userTESTlacksCREATESESSIONprivilege;
logondenied
警告:
您不再连接到ORACLE。
//因为缺少CREATESESSION的权限,登陆失败。
3)利用SYS给TEST授予CREATESESSION权限:
grantcreatesessiontotest;
授权成功。
4)SQL>
已连接。
5)在test的方案中创建表exam1:
createtableexam1
(student_idint,
paper_idint);
createtableexam1
ERROR位于第1行:
ORA-01031:
权限不足
//因为未给TEST用户授予createtable权限,因此不能够创建表exam1.
6)给TEST用户授予CRETETABLE权限
grantcreatetabletotest;
7)SQL>
(student_idint,
ORA-01950:
表空间'
SYSTEM'
中无权限
//因为在创建用户时没有指定表空间,因此默认的表空间是SYSTEM表空间,而TEST用户还需要在表空间SYSTEM中既没有拥有配额又没有被授予UNLIMITEDTABLESPACE权限,因此对于这种情况有两种解决办法:
第一种方法:
alterusertest
quota15monsystem;
用户已更改。
//在SYSTEM表空间中,给用户TEST分配15M的使用空间
表已创建
第二种方法:
grantunlimitedtablespacetotest
createtableexam2
第3章建立和管理表
●表简介
●创建表
●修改表
●截断和删除表
●显示表的信息
3.1简介
表是Oracle数据库最基本的对象,它用于存储用户数据。
●设计表
当设计表时,需要考虑以下因素:
✓当规划表和列时,应该使用有意义的名称。
当定义表名和列名时,只能使用字符(A-Z,a-z)、数字(0-9)、_、$和#,名称必须以字符开始,并且长度不能超过30个字符。
✓当规划表名和列名时,要使用一致的缩写格式、单数或复数格式。
✓为了给用户和其他人员提供有意义的帮助信息
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ORACLE 数据库 设计 说明