Oracle表空间和数据文件管理tablespace
1、一、概述oracle的表空间属于Oracle中的存储结构,是一种用于存储数据对象的逻辑空间,是Ora艘早祓胂cle中信息存储的最大逻辑单元。表空间是在数据库中开辟的一个空间,用于存放数据库的对象,一个数据库由多个表空间组成,每个表空间会产生相应的数据文件。可以通过表空间来实现对oracle的调优。
2、二、表空间分类1.永久表空间存储数据库中需要永久化存储的对象,如表、视图、存储过程、索引等。2.临时表罗嵯脶姥空间存储数据库中的执行过程,如保存order by数据库排序,分组时产生的临时数据。操作完成后存储的内容会被自动释放。临时表空间是通用的,所有的用户都使用temp作为临时表空间。一般只有temp一个临时表空间,如果还需要别的临时表空间,可自己创建。3.undo表空间保存数据修改前的副本。存储事务所修改的旧址,即被修改之前的数据。当我们对一张表中的数据进行修改的同时会对修改之前的信息进行保存,为了对数据执行回滚、恢复、撤销的操作。
3、三、查看用户默认表空间和临时表空间select default_tablespace,temporary_tablespace from dba_users where username='用户名';(用户名需要大写)
4、四、表空间管理1.创建永套芴滞驾久表空间语法create tablespace 表空间名字 datafile '表空间位置' siz髫潋啜缅e 50m;如果在创建表空间的时候没有指定具体位置,那么在创建好后会在系统默认指定的位置。不过最好指定创建的表空间的位置,便于管理与维护。create tablespace 表空间名字 datafile '/data/oracle/oradata/表空间文件名称' size 500M autoextend on next 150m; 在创建表空间的时候都会生成相应的数据文件。
5、2.创建表并指定默认的表空间语法create table 表名(字段1,字段2.....) tablespace 表空间名 ;从下图中可以看到,在创建表的时候只需要在表结构后加上表空间名字即可。在dba_tables 中可以查看到结果。
6、如果在创建表的时候使用的是子查询创建,那么指定默认表空间的时候要在子查询之前进行指定。
7、3.为用户指定默认表空间,在创建用户的时候可以为用户指定默认的表空间。使用创建的用户可以直接登录表空间,只要有足够的权限在表空间内可以进行其它操作。下图中可以看到可以为多个用户指定同一个表空间。
8、虽然两个用户共用一个表空间,但各个用户建立的表如果没有给其它用户权限,其它用户也是无法进行访问的。从下图中可以看到 建立的每个表的所有者是不相同的。
9、4.更改表空间状态(4.1)默认情况下表空间为online状态,在online状态下可以对表空间内的表进行curd操作,但如果把表空间的状态更改为read only后 就只能对表空间内的表进行查询。
10、(4.2)如果想要把表空间状态修改为online状态可以通过下面的方式进行修改。alter tablespace ceshi read write;
11、(4.3)表空间还有另外一个状态 offline,修改为offline状态后对表空间不能进行任何操作,包括读操作,但可以通过drop进行删除。
12、5.控制表空间大小(5.1)查看表空间的名称及大小SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_sizeFROM dba_tablespaces t, dba_data_files dWHERE t.tablespace_name = d.tablespace_nameGROUP BY t.tablespace_name;
13、(5.2)修改表空间大小如果发现某个表空间存储空间不足时,可以为表空间添加新的数据文件,扩展表空间大小,增加大小后再查看表空间大小发现已经更改。
14、除了增加文件以增加表空间大小之外 还可以直接更改原数据文件大小来更改表空间大小。
15、(5.3)删除表空间 语法 drop tablespace 表空间名称;如果你希望在删除表空间的同时将表空间中的数据文件一同删除时,需要加上[INCLUDING CONTENTS]