3、Oracle表空间管理
表空间的管理类型:
- 数据字段管理的表空间(DMT)
- 本地化管理的表空间(LMT)
查询表空间是否是本地化管理方式,可以使用以下语句:
创建表空间,oracle将完成两个工作,一个在数据字典和控制文件,记录新建表空间的信息;另一个是在操作系统中创建指定大小的操作系统文件。
- 创建表空间(永久表空间permanent)
create tablespace temp001 datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\temp001.DBF' size 100M autoextend on next 10M maxsize unlimited;
1、修改表空间
-----(1).为【表空间】增加新的数据文件:
alter tablespace temp001 add datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\temp002.DBF' size 50M;
-----(2).修改【数据文件】大小:
alter database temp001 datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\temp002.DBF' resize 50M;
-----(3).修改【数据文件】的自动扩展属性
alter database datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\users01.DBF' autoextend on maxsize 3G; alter database datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\users01.DBF' autoextend off;
-----(4).修改【表空间】的状态,offline离线、online在线、read only只读、read write读写
alter tablespace zl9BloodData offline; alter tablespace zl9BloodData online;
-----(5).移动【数据文件】操作步骤:
------1.修改表空间为offline状态;
------2.复制数据文件到目标磁盘;
------3.使用alter tablespace rename语句修改数据文件的名称;
------4.将表空间的状态修改为online状态。
************************************************【生成SQL批量处理数据文件移动磁盘--WINDOWS环境下】************************************************
--前提条件开启归档模式
--archive log list;
--① 确定数据文件躲在表空间,【使表空间文件脱机】
select 'alter tablespace '|| TABLESPACE_NAME||' offline;' from dba_data_files;
--②host move命令移动数据文件到目标位置
1 select 'host move ' || FILE_NAME || ' ' || REPLACE(FILE_NAME, 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\', 'E:\ORCL\') || ';' 2 from dba_data_files;
--③重命名表空间位置
1 select 'alter tablespace ' || TABLESPACE_NAME || ' rename datafile ' || chr(39) || FILE_NAME || chr(39) || ' to ' || chr(39) || 2 REPLACE(FILE_NAME, 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\', 'E:\ORCL\') || chr(39) || ';' 3 from dba_data_files;
--④使表空间文件在线
select 'alter tablespace '||TABLESPACE_NAME||' offline;' from dba_data_files;
********************************************************************************************************************************************
2、删除表空间
drop tablespace temp001 including contents and datafiles;
- 创建临时表空间(temporary)
create temporary tablespace ZLTOOLSTMP tempfile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\ZLTOOLSTMP01.DBF' size 100M autoextend on next 10M maxsize 800M extent management local;
-----注:1、主要用来为排序或汇总等操作提供临时的工作空间;
---------2、只能用于存储临时数据,不能存储永久性数据,例如不能创建表对象;
---------3、数据字典V$tempfile;
select * from v$tempfile;
---------4、盘区管理方式都是UNIFORM
----(1).为【临时表空间】添加数据文件
alter tablespace ZLTOOLSTMP add tempfile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\ZLTOOLSTMP02.DBF' size 200M;
----(2).修改【临时文件】的大小
alter database tempfile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\ZLTOOLSTMP02.DBF' resize 100M;
----(3).修改【临时文件】的状态
alter database tempfile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\ZLTOOLSTMP02.DBF' offline; alter database tempfile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\ZLTOOLSTMP02.DBF' online;
- 创建撤销表空间(undo)
create undo tablespace undotbs01 datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\undotbs01.dbf' size 100M autoextend on;
1、修改撤销表空间
-----(1).为【撤销表空间】增加新的数据文件:
alter tablespace undotbs01 add datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\undotbs02.dbf' size 10M autoextend on;
-----(2).修改【撤销数据文件】的大小:
alter database datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\undotbs02.dbf' resize 50M;
----(3).修改【撤销表空间】的状态:
alter tablespace undotbs01 offline;
2、删除撤销表空间
drop tablespace undotbs01 including contents and datafiles;
3、切换撤销表空间
alter system set undo_tablespace = undotbs02;
----【重要参数】撤销表空间
show parameter undo;
Undo_management参数:表示自动管理方式;
Undo_tablespace参数:指定当前使用的撤销表空间;
Undo_retention参数:设置撤销数据的保留时间,即用户事务结束后,在撤销表空间中保留撤销记录的时间。单位是s,默认值是900,即15min。
----修改撤销记录保留的时间
Alter system set undo_retention = 600; Select * from v$undostat;