【资本共享】Oracle的表空间、用户和用户授权
一:Oracle表空间
1,Oracle表空间与SQL Server文件组比照
SQL Server的文件组(文件组包含若干MDF,NDF数据文件)对我们来说并不生疏,前段时间我在博客“如何玩转千万级别的数据” 提到了过表分区的概念,本来表分区提到本质上即是按一定条件把不一样数据放在不一样的数据文件里,这些数据文件在物理上是相对独立的,在逻辑上又是一个全体。特别强调一下,在SQL Server中,建表时是默许把一切的表都保存在PRIMARY默许文件组,当数据库中表许多,而且数据量很大时,会致使数据库功能严重降低,关于一些大数据的处理,有必要将一些大表数据放到不一样的文件组中,以提高数据库的性 能。这也是优化SQL Server 数据库的一个主要手法。
从SQL Server转到Oracle或许会感到不适,由于Oracle里没有文件组和数据文件的概念。可是有表空间的概念,表空间是Oracle的逻辑结构,一个Oracle数据库可以有一个或许多个表空间,一个表空间又对应着多个物理的数据库文件。本来SQL Server的文件组转到Oracle即是表空间,Oracle的表空间转到SQL Server即是文件组。这篇博文重点来评论Oracle的表空间。
2,创立,修正,删去Oracle表空间
Oracle的表空间分了几种类型,暂时表空间,用户表空间,复原表空间,大文件表空间等,我挑选暂时表空间和用户表空间为例来演示怎样在Oracle中创立表空间,创立表空间,通常都是DBA干的事情,所以我挑选sys的用户登录创立表空间。
2.1,创立暂时表空间,用TEMPFILE 关键词,下边几个参数要重点留意一下。
SIZE *[K,M]表空间的初始巨细,单位可所以[K,M]
MAXSIZE *[K,M]表空间的最大存储值,maxsize unlimited 是指表空间的巨细不受约束。
AUTOEXTEND ON NEXT *[K,M] 设置表空间主动拓展
EXTENT MANAGEMENT LOCAL本地办理表空间。
extent是“区间”的意思,在oracle数据库中:extent management 有两种方法 extent managementlocal(本地办理); extent management dictionary(数据字典管
理)默许的是local本地办理表空间有主动分配(AUTOALLOCATE)和一致巨细分配(UNIFORM)两种空间分配方法,主动分配方法(AUTOALLOCATE)是由体系来主动决议extents
巨细,而一致巨细分配(UNIFORM)则是由用户指定extents巨细。这两种分配方法都提高了空间办理功率。uniform:默许为1M巨细,在temp表空间里为默许的,可是不能被使用
在undo表空间.
--创立
CREATE TEMPORARY TABLESPACE tsTempTest
TEMPFILE
'E:DataBasetsTempTest01.dbf' SIZE 64MAUTOEXTEND ON NEXT 32M MAXSIZE 1024M,
'E:DataBasetsTempTest02.dbf' SIZE 64MAUTOEXTEND ON NEXT 32M MAXSIZE 1024M,
'E:DataBasetsTempTest03.dbf' SIZE 64MAUTOEXTEND ON NEXT 32M MAXSIZE 1024M EXTENT MANAGEMENT LOCAL;
& e1 M9 A6 n! S* u
--添加
ALTER TABLESPACE tsTempTest
ADD TEMPFILE
'E:DataBasetsTempTest04.DBF' SIZE 64MAUTOEXTEND ON NEXT 32M maxsize unlimited;
" ?/ R3 r) j7 x. z
--删去
DROP TABLESPACE tsTempTest INCLUDINGCONTENTS AND DATAFILES CASCADE CONSTRAINTS;
2.2,创立用户表空间,参数与暂时表空间根本一致
--创立
CREATE TABLESPACE tsUserTest
datafile
'E:DataBasetsUserTest01.dbf' size 64MAUTOEXTEND ON NEXT 32M maxsize unlimited ,
'E:DataBasetsUserTest02.dbf' size 64MAUTOEXTEND ON NEXT 32M maxsize unlimited ,
'E:DataBasetsUserTest03.dbf' size 64M AUTOEXTEND ON NEXT 32M maxsize unlimitedextent management local ;
; f5 y- _; j0 }
--添加
ALTER TABLESPACE tsUserTest
ADD DATAFILE
'E:DataBasetsUserTest04.DBF' SIZE 64MAUTOEXTEND ON NEXT 32M maxsize unlimited;
/ H4 n$ f9 y- l
--删去
DROP TABLESPACE tsUserTest INCLUDINGCONTENTS AND DATAFILES CASCADE CONSTRAINTS;
二:Oracle用户
1,创立用户:
创立用户时,需求留意如下几个参数。
IDENTIFIED BY *** ,用户的暗码。
DEFAULT TABLESPACE *** 默许用户表空间。
TEMPORARY TABLESPACE *** 默许暂时空间。
CREATE USER xcj01 IDENTIFIED BY xcj01
DEFAULT TABLESPACE tsUserTest
TEMPORARY TABLESPACE tsTempTest;
2,修正暗码:
alter user xcj01
identified by xcj01;
3,删去用户以及跟用户相关的目标:
drop user xcj01 CASCADE;
三:Oracle用户授权
1,Oralce的特别权限
1.1,体系权限unlimited tablespace是隐含在dba, resource人物中的一个体系权限. 当用户得到dba或resource的人物时, unlimited tablespace体系权限也隐式受权给用户.
1.2,体系权限unlimited tablespace不能被颁发role, 可以被颁发用户.
1.3,体系权限unlimited tablespace不会随着resource, dba被颁发role而颁发给用户.
2,特别人物
2.1,DBA人物,是授权数据库办理员的权限
2.2,CONNECT人物,是颁发最终用户的典型权力,最根本的 一个(CREATESESSION)
2.3,RESOURCE人物,是颁发开发人员的 默许有八个权限(CREATESEQUENCE,CREATE TRIGGER,CREATE CLUSTER,CREATE PROCEDURE,CREATE TYPE,CREATEOPERATOR,CREATE TABLE,CREATE INDEXTYPE)
2.4,exp_full_database人物,具有导出数据库的权限
2.5,imp_full_database人物,具有导入数据库的权限
3,用户授权示
--授权
GRANT
CONNECT,
RESOURCE,
--DBA,
--unlimited tablespace,
CREATE SESSION,
CREATE ANY SEQUENCE,
CREATE ANY TABLE,
CREATE ANY VIEW ,
CREATE ANY INDEX,
CREATE ANY PROCEDURE,
CREATE ANY DIRECTORY,
ALTER SESSION,
ALTER ANY SEQUENCE,
ALTER ANY TABLE,
--ALTER ANY VIEW , --不能修正视图
ALTER ANY INDEX,
ALTER ANY PROCEDURE,
--ALTER ANY DIRECTORY, --不能修正目录
--DROP SESSION, --不能删去Session
DROP ANY SEQUENCE,
DROP ANY TABLE,
DROP ANY VIEW ,
DROP ANY INDEX,
DROP ANY PROCEDURE,
DROP ANY DIRECTORY, select ANYTABLE, select ANY DICTIONARY,
INSERT ANY TABLE, update ANYTABLE, delete ANY TABLE,
DEBUG ANY PROCEDURE,
DEBUG CONNECT SESSION,
exp_full_database,
imp_full_database
TO xcj01;
四:查询用户的权限
以下的查询中,根本都要以DBA的人物进行查询,如果权限不行,有也许查询不出来数据。
1,检查用户具有那些人物
select * from dba_role_privs a wherea.grantee='XCJ01';
--或 select *from dba_sys_privs a where a.grantee='XCJ01';
2,检查人物具有那些权限
select ROLE, PRIVILEGE from role_sys_privswhere role='RESOURCE'; --RESOURCE,CONNECT,DBA
--或 select grantee,privilegefrom dba_sys_privs where grantee='RESOURCE';
3,为用户撤销人物
revoke resource from XCJ01;
4,为用户撤销权限
revoke unlimited tablespace from XCJ01;
5,最终附加一个十分有用的窍门:检查Oracle的版本号。
select * from v$version where rownum 1;
?2 k3 n- [ M& ?