Orace新建临时表空间、数据表空间、用户

1、新建临时表空间

1.1.什么是临时表空间

在Oracle数据库中进行排序、分组汇总、索引等到作时,会产生很多的临时数据。如有一张员工信息表,数据库中是安装记录建立的时间来保存的。如果用户查询时,使用Order BY排序语句指定按员工编号来排序,那么排序后产生的所有记录就是临时数据。
对于这些临时数据,Oracle数据库是如何处理的呢?通常情况下,Oracle数据库会先将这些临时数据存放到内存的PGA(程序全局区)内。在这个程序全局区中有一个叫做排序区的地方,专门用来存放这些因为排序操作而产生的临时数据。但是这个分区的容量是有限的。当这个分区的大小不足以容纳排序后所产生的记录时,数据库系统就会将临时数据存放到临时表空间中。这就是临时表空间的来历。看起来好像这个临时表空间是个临时工,对于数据库的影响不会有多大。其实大家这是误解这个临时表空间了。在用户进行数据库操作时,排序、分组汇总、索引这些作业是少不了,其会产生大量的临时数据。为此基本上每个数据库都需要用到临时表空间。

1.2.临时表空间作用

Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长。直到耗尽硬盘空间。网上有人猜测在磁盘空间的分配上,oracle使用的是贪心算法,如果上次磁盘空间消耗达到1GB,那么临时表空间就是1GB。也就是说当前临时表空间文件的大小是历史上使用临时表空间最大的大小。
临时表空间的主要作用:

  • 索引create或rebuild
  • Order by 或 group by
  • Distinct 操作
  • Union 或 intersect 或 minus
  • Sort-merge joins
  • analyze

/*第1步:创建临时表空间  */
create temporary tablespace user_temp  
tempfile 'D:\oracle\oradata\user_temp.dbf' 
size 10m  
autoextend on  
next 5m maxsize 20480m  
extent management local; 

具体详见点击打开链接

2、创建数据表空间

表空间从某种意义上来说就是sqlserver中的数据库。表空间是数据库的逻辑组成部分,

从物理上将:数据库数据存放在数据文件中;

从逻辑上将:数据库则是存放在表空间中;

表空间由一个或是多个数据文件组成。

Oracle中逻辑结构包括表空间、段、区、块。说明:

数据库由表空间构成

而表空间又是由段构成

而段又是由区构成

而区又是由Oracle块构成

/*第2步:创建数据表空间  */
create tablespace user_data  
logging  
datafile 'D:\oracle\oradata\user_data.dbf'
size 20m  
autoextend on  
next 5m maxsize 20480m  
extent management local;

3、新建用户

为该表空间新建用户。

/*第3步:创建用户并指定表空间  */
create user username identified by password  
default tablespace user_data  
temporary tablespace user_temp; 

4、分配权限

/*第4步:给用户授予权限  */
grant connect,resource,dba to username;

你可能感兴趣的:(Oracle)