1.1、数据表看做的货品,表空间就是存放货品的仓库。SQLserver 用户可以把表空间看做 SQLserver 中的数据库。
1.2、引用【日记二】的总结来解释表空间。
一个数据库由一个或多个表空间组成,一个表空间只能属于一个数据库
一个表空间由一个或多个多个数据文件组成,一个数据文件只能属于一个表空间
一个数据文件由一个或多个操作系统块组成,每一个操作系统块只能数以一个数据文件
一个表空间可以包含一个或多个段,一个段只能属于一个表空间
一个段由一个或多个区组成,每一个区只能属于一个段
一个区由一个或多个Oracle 块组成,每一个Oracle块只能属于一个区
一个区只能属于一个数据文件,数据文件的空间可以分配到一个或多个区
一个Oracle 块由一个或多个操作系统块组成,一个操作系统块是一个Oracle块的一部分
2.1、表空间有三种:
2.1.1、数据表空间:用于存放数据(表)的主要表空间;
2.1.2、临时表空间:在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理;
2.1.3、UNDO表空间:主要作用是 事务恢复、事务回滚、读一致性 :
2.1.3.1、事务恢复:在进行DML操作时,insert、update、delete操作时,undo段记录事务的反向操作并且redo日志也记录undo段的操作,既redo保护undo段的信息。当实例关闭或意外崩溃后,再次open(打开)时实例需要对没有commit(提交)的事务进行回滚,完成事务的恢复。
2.1.3.2、事务回滚:用户进行DML操作后没有进行commit(提交),需要修改前的数据。只要该操作在undo段保护的时间内,此时执行rollback(回滚)操作可以回滚到最近记录点或上一次commit(提交)操作后的状态,恢复到数据修改前的状态。
2.1.3.3、读一致性:当进行DML操作时,undo段会记录数据变更前的状态(通过构造原数据的一致性数据块)。如果用户还没有进行commit(提交)操作,其他人查询此条数据会看到数据变更前的状态。因为其他用户读到的数据是undo段中原数据块中的数据,保证没有commit(提交)的数据读取的一致性。
3.1、创建临时表空间
-- 创建临时表空间 create temporary tablespace [tempspace_name] tempfile [dbf_path] --指定表空间dbf文件存放位置 size 50m --初始大小50m autoextend on next 50m maxsize 20480m --自动增长50m 最大2g extent management local;
3.2、创建数据表空间
-- 创建数据表空间 create tablespace [tablespace_name] logging datafile [dbf_path] --指定表空间dbf文件存放位置 size 50m --初始大小50m autoextend on next 50m maxsize 20480m --自动增长50m 最大2g extent management local;
3.3、创建用户并指定表空间(也可以直接给已有用户指定表空间)
--创建用户并指定表空间 create user [user_name] identified by [password] --创建用户 default tablespace [tablespace_name] --指定数据表空间 temporary tablespace [tempspace_name]; --指定临时表空间
--已有用户指定表空间 alter user [user_name] default tablespace [tablespace_name];
如果新建用户指定完表空间后需要授权 grant connect,resource,dba to [user_name];
4.1、删除表空间 drop tablespace [tablespace_name] including contents and datafiles; --删除表空间及数据文件
4.2、 表空间文件无法直接手动删除。若强行删除dbf文件,可能引起数据库异常。
<<============================================================================================================================================>>