[独孤九剑]Oracle知识点梳理(一)表空间、用户
本系列链接导航:
[独孤九剑]Oracle知识点梳理(一)表空间、用户
[独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL
[独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table、View
[独孤九剑]Oracle知识点梳理(六)数据库常用对象之Procedure、function、Sequence
[独孤九剑]Oracle知识点梳理(七)数据库常用对象之Cursor
[独孤九剑]Oracle知识点梳理(八)常见Exception
[独孤九剑]Oracle知识点梳理(九)数据库常用对象之package
[独孤九剑]Oracle知识点梳理(十)%type与%rowtype及常用函数
1、表空间
Oracle 的结构是 区/段、表空间、用户、表...(区段是Oracle存储方面的概念,编码人员不需要了解过多)。当我们安装完Oracle后,默认就会拥有一个数据库,之后的所有操作,都是在这个默认的数据库中进行的。
注: 这里要与SqlServer的数据库(database)概念区别开,SqlServer中的数据库是我们最常操作的,给我们的印象是每个数据库是相互隔离的,不同用户(user)登录后可看到所有数据库并进行操作;而Oracle中我们的操作都是在同一个数据库(database或叫数据库实例)中进行的,起到隔离作用的是用户(user),不同用户(user)登录后,只能看到自己所拥有的对象(如表、视图、过程、函数等);当然,以上的前提是权限最小的情况下。
用户(user)拥有多个表(Table)、视图(View)、存储过程(Procedure)、函数(Function)、包(packgae)等;用户及其包含的对象要存储到某一个表空间中;一个表空间可以存储多个用户信息。
1.1、操作表空间
Oracle的表空间分为:
- 永久表空间(也叫数据表空间,存放永久性数据,如表、索引等)
- 临时表空间(不能存放永久性对象,用于保存数据库排序,分组时产生的临时数据)
- UNDO表空间(保存数据修改前的镜像)
1.1.1、操作永久表空间
a) 创建(表空间文件为1个)
1 create tablespace tablespaceName 2 logger -- 可将表空间的创建信息记录到Oracle的日志中 3 datafile 'tablespaceName.dbf' --保存文件的路径,习惯上将表空间的名称用于文件的名称
--(可设置绝对路径,相对路径的话会保存到默认目录下) 4 size 64m --最初的数据文件大小 5 autoextend on --开启自增长 6 next 64m maxsize 1024m --每次增长64m,最大1024m 7 extent management local; --extent management 有两种方式 local(本地管理,默认);
--dictionary(数据字典管理)
b) 创建(表空间文件为多个)
1 create tablespace tablespaceName 2 logger 3 datafile 4 'tablespaceName01.dbf' size 64m autoextend on next 64m maxsize unlimited, --设置自增长且无上限 5 'tablespaceName02.dbf' size 64m autoextend on next 64m maxsize unlimited, 6 'tablespaceName03.dbf' size 64m autoextend on next 64m maxsize unlimited 7 extent management local;
c) 表空间增加文件
1 alter tablespace tablespaceName 2add datafile 'tablespaceName04.dbf' 3 size 64m autoextend on 4next 64m maxsize unlimited;
d) 删除表空间
1 drop tablespace tablespaceName including contents and datafiles cascade constraints;
1.1.2、创建临时表空间
a) 创建(表空间文件为1个)
1 create tablespace tablespaceName 2 logger -- 可将表空间的创建信息记录到Oracle的日志中 3 tempfile 'tablespaceName.dbf' --保存文件的路径,习惯上将表空间的名称用于文件的名称
--(可设置绝对路径,相对路径的话会保存到默认目录下) 4 size 64m --最初的数据文件大小 5 autoextend on --开启自增长 6 next 64m maxsize 1024m --每次增长64m,最大1024m 7 extent management local; --有两种方式 local(本地管理,默认)、dictionary(数据字典管理)
b) 创建(表空间文件为多个)
1 create tablespace tablespaceName 2 logger 3 tempfile 4 'tablespaceName01.dbf' size 64m autoextend on next 64m maxsize unlimited, --设置自增长且不设置上线 5 'tablespaceName02.dbf' size 64m autoextend on next 64m maxsize unlimited, 6 'tablespaceName03.dbf' size 64m autoextend on next 64m maxsize unlimited 7 extent management local;
c) 给表空间增加文件
1 alter tablespace tablespaceName 2 add tempfile 'tablespaceName04.dbf' size 64m autoextend on next 64m maxsize unlimited;
d) 删除表空间
1 drop tablespace tablespaceName including contents and datafiles cascade constraints;
1.1.3、创建UNDO表空间
a) 创建
1 create undo tablespace tablespaceName datafile 'tablespaceName.dbf' size 64m;
b) 修改系统默认UNDO表空间(有UNDOTBS修改为自己创建的)
1 alter system set undo_tablespace=tablespaceName;
c) 删除UNDO表空间
1 drop tablespace "tablespaceName" including contents and datafiles;
1.2、创建用户
用户(user)的创建过程需要:a)设置用户名、密码;b)设置数据表空间;c)设置临时表空间;d)设置权限,几个步骤。
- 创建用户,设置用户名、密码、表空间
1 create user userName identified by password 2 defalut tablespace dataTablespaceName 3 temporary tablespace tempTablespaceName; -- a、b、c
- 设置权限
1 grant connect,resource,exp_full_database,imp_full_database to userName; --d
-
用户的修改及删除
1 --修改密码 2 alter user userName identified by password2; 3 4 --删除用户及其拥有对象 5 drop user userName cascade;
1.2.1、权限和角色
在创建用户的过程中,有设置权限的操作。Oracle的内置了多个角色,角色拥有不同权限。
a) Oralce的特殊权限
- 系统权限unlimited tablespace是隐含在dba, resource角色中的一个系统权限. 当用户得到dba或resource的角色时, unlimited tablespace系统权限也隐式受权给用户.
- 系统权限unlimited tablespace不能被授予role, 可以被授予用户.
- 系统权限unlimited tablespace不会随着resource, dba被授予role而授予给用户.
b) 特殊角色
- 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角色,拥有导入数据库的权限
c) 用户授权常用参数:
1 connect、resource、dba、unlimited tablespace、 2 create session --创建会话 3 create any sequence --创建序列 4 create any table --创建表 5 create any view --创建视图 6 create any index --创建索引 7 create any procedure --创建存储过程 8 create any directory --创建目录 9 10 alter session --修改会话 11 alter any sequence --修改序列 12 alter any table --修改表 13 alter any view --修改视图 14 alter any index --修改索引 15 alter any procedure --修改存储过程 16 alter any directory --修改目录 17 18 drop session --删除会话 19 drop any sequence --删除序列 20 drop any table --删除表 21 drop any view --删除视图 22 drop any index --删除索引 23 drop any procedure --删除存储过程 24 drop any directory --删除目录 25 26 select any table --查询表 27 select any dictionary --查询目录 28 insert any table 29 update any table 30 delete any table 31 debug any procedure --debug存储过程 32 debug connect session 33 exp_full_database --导出 34 imp_full_database --导入
1.3、用户权限查询(需要拥有dba角色)
1.3.1、查看用户拥有那些角色
1 select * from dba_role_privs a where a.grantee='userName'; 2 --或 3 select * from dba_sys_privs a where a.grantee='userName';
1.3.2、查看角色拥有那些权限
1 select ROLE, PRIVILEGE from role_sys_privs where role='RESOURCE'; --RESOURCE,CONNECT,DBA 2 --或 3 select grantee,privilege from dba_sys_privs where grantee='RESOURCE';
1.3.3,为用户取消角色
revoke resource from userName;
1.3.4,为用户取消权限
revoke unlimited tablespace from userName;
1.3.5,最后附加一个非常有用的技巧:查看Oracle的版本号
select * from v$version where rownum <=1;
当不同版本数据库的导入导出操作是,需要标记版本号