1、创建,修改,删除Oracle表空间
Oracle的表空间分了几种类型,临时表空间,用户表空间,还原表空间,大文件表空间等,我选择临时表空间和用户表空间为例来演示怎么在Oracle中创建表空间,创建表空间,一般都是DBA干的事情,所以我选择sys的用户登录创建表空间。
1.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 management local(本地管理); extent management dictionary(数据字典管理)默认的是local本地管理表空间(10g及以后)、有自动分配(AUTOALLOCATE)和统一大小分配(UNIFORM)两种空间分配方式,自动分配方式(AUTOALLOCATE)是由系统来自动决定extents大小,而统一大小分配(UNIFORM)则是由用户指定extents大小。这两种分配方式都提高了空间管理效率。uniform:默认为1M大小,在temp表空间里为默认的,但是不能被应用在undo表空间.
--创建
CREATE TEMPORARY TABLESPACE temptest
TEMPFILE
'D:\app\Administrator\oradata\test\TempTest01.dbf' SIZE 64M AUTOEXTEND ON NEXT 32M MAXSIZE 1024M,
'D:\app\Administrator\oradata\test\TempTest02.dbf' SIZE 64M AUTOEXTEND ON NEXT 32M MAXSIZE 1024M EXTENT MANAGEMENT LOCAL;
--增加
ALTER TABLESPACE temptest
ADD TEMPFILE
'D:\app\Administrator\oradata\test\TempTest03.DBF' SIZE 64M AUTOEXTEND ON NEXT 32M maxsize unlimited;
--删除
DROP TABLESPACE TempTest INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
1.2 创建用户表空间,参数与临时表空间基本一致
--创建
CREATE TABLESPACE test
datafile
'D:\app\Administrator\oradata\test\Test01.dbf' size 64M AUTOEXTEND ON NEXT 32M maxsize unlimited ,
'D:\app\Administrator\oradata\test\Test02.dbf' size 64M AUTOEXTEND ON NEXT 32M maxsize unlimited extent management local;
--增加
ALTER TABLESPACE test
ADD DATAFILE
'D:\app\Administrator\oradata\test\Test03.DBF' SIZE 64M AUTOEXTEND ON NEXT 32M maxsize unlimited;
--删除
DROP TABLESPACE User1 INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
2、 Oracle用户
2.1 创建用户:
创建用户时,需要注意如下几个参数。
IDENTIFIED BY *** ,用户的密码。
DEFAULT TABLESPACE *** 默认用户表空间。
TEMPORARY TABLESPACE *** 默认临时空间。
CREATE USER xcj01 IDENTIFIED BY user1
DEFAULT TABLESPACE test
TEMPORARY TABLESPACE tsTempTest;
2.2 修改密码:
alter user user1
identified by user1;
2.3 删除用户以及跟用户关联的对象:
drop user user1 CASCADE;
3、Oracle用户授权
3.1 Oralce的特殊权限
系统权限unlimited tablespace是隐含在dba, resource角色中的一个系统权限. 当用户得到dba或resource的角色时, unlimited tablespace系统权限也隐式受权给用户.
系统权限unlimited tablespace不能被授予role, 可以被授予用户.
系统权限unlimited tablespace不会随着resource, dba被授予role而授予给用户.
3.2 特殊角色
DBA角色,是授权数据库管理员的权限
CONNECT角色, 是授予最终用户的典型权利,最基本的 一个(CREATE SESSION)
RESOURCE角色,是授予开发人员的 默认有八个权限(CREATE SEQUENCE,CREATE TRIGGER,CREATE CLUSTER,CREATE PROCEDURE,CREATE TYPE,CREATE OPERATOR,CREATE TABLE,CREATE INDEXTYPE)
exp_full_database角色,拥有导出数据库的权限
imp_full_database角色,拥有导入数据库的权限
3.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 ANY TABLE,
SELECT ANY DICTIONARY,
INSERT ANY TABLE,
UPDATE ANY TABLE,
DELETE ANY TABLE,
DEBUG ANY PROCEDURE,
DEBUG CONNECT SESSION,
exp_full_database,
imp_full_database
TO user1;
4、查询用户的权限
以下的查询中,基本都要以DBA的角色进行查询,如果权限不够,有可能查询不出来数据。
4.1 查看用户拥有那些角色
select * from dba_role_privs a where a.grantee='user1';
--或
select * from dba_sys_privs a where a.grantee='user1';
4.2 查看角色拥有那些权限
select ROLE, PRIVILEGE from role_sys_privs where role='RESOURCE'; --RESOURCE,CONNECT,DBA
--或
select grantee,privilege from dba_sys_privs where grantee='RESOURCE';
4.3 为用户取消角色
revoke resource from user1;
4.4 为用户取消权限
revoke unlimited tablespace from user1;
4.5最后附加一个非常有用的技巧:查看Oracle的版本号信息。
select * from v$version where rownum <=1;
5、总结
这些是Oracle的入门级知识,不是什么高深的理论,但是需要经过项目的实践提炼,不管DBA还是开发人员都能用到,写出来与大家共勉。
参考:http://www.cnblogs.com/xcj26/p/3759167.html