目录
一,Oracle 表空间
1,什么是表空间?
1)数据库与表空间
2)表空间与数据库文件
2,表空间的分类
3,表空间的操作
1)创建表空间
2)查看表空间
3)设置用户的默认或临时表空间
4)修改表空间状态1-设置联机或脱机状态
5)修改表空间状态2-设置只读或可读写状态
6)修改数据文件
7)删除数据库文件
8)删除表空间
表空间实际上是数据库上的逻辑存储结构,可以吧表空间理解为数据库中开辟的一个空间,用于存放我们的数据库的对象,一个数据库可以由多个表空间构成。
表空间实际上是由一个或多个数据文件构成的,数据文件的位置和大小可以由我们用户自己定义。我们所操作的一些表,一些其他的数据对象都是存放在数据文件里的。那么数据文件的是物理存储结构,真正可以看到的,而表空是逻辑存储的结构。
PERMANENT:永久表空间里存放的是我们创建表后往里面插入的数据,一但写入则永久有效。
UNDO:UNDO 表空间主要用来存放UNDO段,主要用来回滚事务。
TEMPORARY:临时表空间主要用来数据的排序,里面不会存放数据。
临时表空间的典型用途是用于磁盘排序等操作,常见操作有 CREATE INDEX、 ANALYZE、SELECT DISTINCT、ORDER BY、GROUP BY、 UNION ALL、 INTERSECT、MINUS、SORT-MERGE JOINS、HASH JOIN等都可能会用到临时表空间。当操作完成后,系统会自动清理临时表空间中的临时对象,自动释放临时段。这里的释放只是标记为空闲、可以重用,其实实质占用的磁盘空间并没有真正释放。这也是临时表空间有时会不断增大的原因。临时表空间存储大规模排序操作(小规模排序操作会直接在RAM里完成,大规模排序才需要磁盘排序Disk Sort)和散列操作的中间结果.它跟永久表空间不同的地方在于它由临时数据文件(temporary files)组成的,而不是永久数据文件(datafiles)。临时表空间不会存储永久类型的对象,所以它不会也不需要备份。另外,对临时数据文件的操作不产生redo日志,不过会生成undo日志。
语法
CREATE [TEMPORARY]TABLESPACE TABLESPACE_NAME TEMPFILE|DATAFILE ‘XX.dbf’ SIZE XX
--创建表空间
create tablespace test_tablespace datafile 'test_tablepace' size 10m;
--创建临时表空间
create temporary tablespace test_temporary_tablespace tempfile 'test_temporary_tablepace' size 10m;
--找到表空间默认的路径
SELECT FILE_NAME FROM Dba_Data_Files WHERE TABLESPACE_NAME ='TEST_TABLESPACE';
--找到临时表空间默认的路径
SELECT FILE_NAME FROM Dba_TEMP_Files WHERE TABLESPACE_NAME ='TEST_TEMPORARY_TABLESPACE';
SELECT tablespace_name FROM dba_tablespaces; DBA表空间信息
SELECT tablespace_name FROM user_tablespaces; USER表空间信息
--查看用户信息
SELECT default_tablespace,temporary_tablespace FROM dba_users where username ='SYSTEM'
ALTER USER username DEFAULT|TEMPORARY TABLESPACE tablespace_name;
ALTER TABLESPACE tablespace_name ONLINE|OFFLINE;
--查看状态
select status from dba_tablespaces where tablespace_name='test_tablepace'
--如果一个表空间设置成脱机状态,表示该比爱空间暂时不让访问,设置成脱机状态不是删除
当我们需要使用该表空间时还可以讲其设置成练级状态,正常使用。
默认是可读写状态
ALTER TABLESPACE tablespace_name READ ONLY|READ WRITE;
向创建好的表空间内增加数据文件--增加后会有两个数据库文件
ALTER TABLESPACE tablespace_name ADD DATAFILE 'filename.dbf' size xx;
不能删除表空间的第一个创建的数据文件,如果需要删除的话,我们需要把整个的表空间删掉。
ALTER TABLESPACE tablespace_name DROP DATAFILE 'filename.dbf' ;
DROP TABLESPACE tablespace_name [INCLUNDING CONTENTS];
如果删除时只是单纯的像删除表空间而不删除数据文件的话:DROP TABLESPACE tablespace_name ;
如果同时删除的话:DROP TABLESPACE tablespace_name INCLUNDING CONTENTS;