Oracle表空间
纪立力
*****************
1.什么是Oracle表空间
表空间最早由Oracle提出,ORACLE数据库被划分成称作为表空间的逻辑区域,形
成ORACLE数据库的逻辑结构。一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是ORACLE数据库恢复的最小单位,容纳
着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。
每个ORACLE数据库有一个SYSTEM表空间和USERS表空间,这是数据库创建时自
动创建的。SYSTEM表空间必须总要保持联机,因为其包含着数据库运行所要求的基本信息(关于整个数据库的数据字典、联机求助机制、所有回退段、临时段和自举段、其它ORACLE软件产品要求的表)。USERS表空间为系统默认的用户表空间用来存放用户创建的数据对象。
2.表空间的作用
•控制数据库用户所占的空间
为了控制某一个或者一组用户所可以使用的空间大小,可以为用户建立单独的表空间并限定大小。
•设置数据库空间份额
在运行多个数据库和其他服务的环境,为了防止无限制的使用磁盘空间影响其他用户数据库或其它服务正常运行,对数据库可以使用的空间进行限制。避免因为磁盘满而导致所有服务都不能正常使用。
•提高数据库的性能
将数据拆分到多个表空间提高IO效率(主要是针对普通磁盘系统,将访问分配到不
同的磁盘IO上;对于盘阵和ASM上单文件和多文件差异不大,主要是为了比较好管理),降低资源消耗,加快速度提高效率。配合分区技术可以按照范围等方式对数据进行分散存储,如:不同地域、时间段的记录存储在一个单独的空间。
•备份和恢复数据
将数据分散到多个表空间,当数据需要备份和恢复时,不影响整个数据表或者数据库。
•用于数据归档和切割
有些数据当超过一定的时间段后就需要切割到离线,以降低资源的占用。将不同时段的数据分配到单独的表空间切割时可以保证容易操作和不影响系统正常运行。
•分离日志文件和数据文件保证数据库的安全
规划数据库时将日志文件和数据文件放到不同的磁盘及文件,特别是重做日志,当数据库损坏时可以通过重做日志文件进行恢复。
3.表空间相关的参数
3.1.db_create_file_dest
用于指定默认的数据文件存放位置,这个值默认不被设置,这时创建表空间时需要指定物理文件名称。
显示当前设置oracle数据库怎么查询表
SQL> show parameter db_create_file_dest;
修改当前设置
SQL> alter system set db_create_file_dest="/opt/usr/oracle/app/oradata/";
设置后在创建表空间时就不需要输入路径,只需要表空间名称即可,物理文件会被存放在指定路径的<$ORACLE_SID/datafile/>下,文件名是随机产生。
4.表空间基本操作
4.1.创建表空间
SQL> create tablespace ts_iotiap_loc_2012_3 datafile size 50M autoextend on;
创建完成后文件存放在 “db_create_file_dest设定目录/$ORACLE_SID/datafile”中
SQL> create tablespace ts_iotiap_loc_2012_4 datafile 'ts_iotiap_loc2012_4.dbf' size 50M autoextend on;
创建完成后文件存放在$ORACLE_HOME/dbs/ts_iotiap_loc2012_5.dbf
创建临时表空间
CREATE
TEMPORARY TABLESPACE ts_temp_default TEMPFILE
'/data/oradata/pub/ts_temp_default.dbf' SIZE 50M AUTOEXTEND ON;
4.2.查询表空间
SQL> select * from v$tablespace;
SQL> select name from v$datafile where ts# = 4;
SQL> select * from dba_data_files where tablespace_name like 'TS_IOTIAP%';
SQL> select file_name,tablespace_name,bytes/1024/1024 mb from dba_data_files;
4.3.删除表空间
SQL> drop tablespace ts_iotiap_loc_2012_4;
SQL> drop tablespace ts_iotiap_loc_2012_4 including contents and datafiles;
如果不指定and datafiles在删除指定数据文件方式创建的tablespace时不会删除数据文件。
4.4.更改表空间
使用system用户登录,然后执行以下语句
alter table 模式名.表名move tablespace users;
修改完成后要重新建立索引
ALTER INDEX 索引名称REBUILD;
4.5.默认表空间
查询数据库默认表空间
SQL> select * from database_properties where property_name like 'DEFAULT%';
修改数据库默认表空间(注意:此操作将影响所有已经创建的用户)
SQL> alter database default tablespace ts_db_default;
创建用户时指定默认表空间
SQL> create user sddpt identified by 111111 default tablespace ts_db_default;
查询用户默认表空间
SQL> select username, default_tablespace defspace from dba_users where username='SDDPT';
更改数据库默认临时表空间(注意:此操作将影响所有已经创建的用户)
SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TS_TEMP_DEFAULT;
查看用户默认临时表空间
SQL> select username,temporary_tablespace from dba_users;
修改用户默认临时表空间
SQL> alter user iotiap temporary tablespace ts_temp_default;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论