1.此处创建了一个大小为20M且接128自动扩展的表空间
SQL> create tablespace test datafile 'D:\app\yichunmei\oradata\orcl\test_data01.dbf' size 20M
2 extent management local uniform. size 128k;
2.此处创建了一个大小为20M且按默认自动扩展的表空间,默认扩展size为1M
SQL> create tablespace test datafile 'D:\app\yichunmei\oradata\orcl\test_data01.dbf' size 20M
2 extent management local autoallocate;
第二种情况blocks为8表示这个扩展由8组成,当表空间以autoallocate方式创建时时,当创建表在这个表空间时,默认空表所占大小为64K=8K*8=8块。
当这64K空间用完时,再insert入数据,这时需增加段的扩展,此时就会显示每块为128blocks=128*8K=1024K=1M
二、大文件表空间
SQL> CREATE bigfile TABLESPACE test3 DATAFILE 'D:\app\yichunmei\oradata\orcl\test_data03.dbf' SIZE 50M
2 EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
SQL> alter tablespace test3 resize 40M;
表空间已更改。
SQL> alter tablespace test resize 40M;
alter tablespace test resize 40M
*
第 1 行出现错误:
ORA-32773: 不支持对小文件表空间 TEST 的操作
--这是大文件表空间操作命令,普通表空间不能用
SQL> alter tablespace test3 autoextend on next 20M;
表空间已更改。
SQL> alter tablespace test autoextend on next 20M;
alter tablespace test autoextend on next 20M
*
第 1 行出现错误:
ORA-32773: 不支持对小文件表空间 TEST 的操作
三、创建表空间组
-- group1
SQL> create temporary tablespace lmtemp1 tempfile 'D:\app\yichunmei\oradata\orcl\testtemp_data.dbf'
2 size 25M
3 tablespace group group1;
表空间已创建。
SQL> create temporary tablespace lmtemp2 tempfile 'D:\app\yichunmei\oradata\orcl\testtemp_data02.dbf'
2 size 25M
3 tablespace group group2;
表空间已创建。
-- 修改把group1中的lmtemp1放入group2
SQL> alter tablespace lmtemp1 tablespace group group2;
表空间已更改。
--将 lmtemp1 移出组,这时 lmtemp1 不属于任何组
SQL> alter tablespace lmtemp1 tablespace group '';
表空间已更改。
NOTE:当组中表空间被移走后组中没有了表空间时,此组相当于被删除。
--修改默认表空间为组group2
SQL> alter database default temporary tablespace group2;
数据库已更改。
四、表空间状态修改
QL> alter tablespace test offline normal;
表空间已更改。
--还有TEMPORARY,IMMEDIATE其它两种方式,默认是normal
TEMPORARY:当表空间有数据文件出现错误时可以用,它会写checkpoint。
IMMEDIATE:这种方式offline对正在进行的操作不会checkpoint,重新online时需要进行介质恢复。
SQL> select tablespace_name,status from dba_tablespaces where tablespace_name='TEST';
TABLESPACE_NAME STATUS
------------------------------ ---------
TEST OFFLINE
SQL> alter tablespace test online;
表空间已更改。
SQL> select tablespace_name,status from dba_tablespaces where tablespace_name='TEST';
TABLESPACE_NAME STATUS
------------------------------ ---------
TEST ONLINE
以下是修改表空间数据文件操作
--修除表空间数据文件
SQL> alter database tempfile 'D:\app\yichunmei\oradata\orcl\testtemp_data.dbf' drop including datafiles;
数据库已更改。
--表空间数据文件下线
SQL> alter database tempfile 'D:\app\yichunmei\oradata\orcl\testtemp_data1.dbf' offline;
数据库已更改。
SQL> alter database tempfile 'D:\app\yichunmei\oradata\orcl\testtemp_data1.dbf' online;
数据库已更改。
--压缩临时表空间
SQL> alter tablespace temp shrink space keep 20M;
表空间已更改。
--压缩临时表空间数据文件
SQL> alter tablespace lmtemp shrink tempfile 'D:\app\yichunmei\oradata\orcl\temp01.dbf';
五、将表空间置为只读(Read Only)
只读的表空间不能进行修改,创建等操作,但可以进行drop操作
SQL> alter tablespace test read only;
表空间已更改。
SQL> SELECT table_name FROM ALL_TABLES WHERE tablespace_name = 'TEST';
TABLE_NAME
------------------------------
T
SQL> update wumei.t set id=117380 where id=11738;
update wumei.t set id=117380 where id=11738
*
第 1 行出现错误:
ORA-00372: 此时无法修改文件 7
ORA-01110: 数据文件 7: 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA01.DBF'
SQL> create table wumei.tt(id number);
create table wumei.tt(id number)
*
第 1 行出现错误:
ORA-01647: 表空间 'TEST' 是只读, 无法在其中分配空间
修改表空间成读写方式
SQL> alter tablespace test read write;
表空间已更改。
SQL> create table tt(id number);
表已创建。
--修改表空间增加数据文件
SQL> alter tablespace test
2 add datafile 'D:\app\yichunmei\oradata\orcl\test_data02.dbf' size 1M;
表空间已更改。
以下两个命令是针对大文件的
--修改表空间更改size
SQL> alter tablespace test3 resize 40M;
表空间已更改。
--修改表空间指定下一个扩展大小
SQL> alter tablespace test3 autoextend on next 20M;
表空间已更改。
六、重命名表空间
SQL> alter tablespace test rename to test1;
表空间已更改。
--处于脱机状态的表空间不能重命名
SQL> alter tablespace test2 offline normal;
表空间已更改。
SQL> alter tablespace test2 rename to test02;
alter tablespace test2 rename to test02
*
第 1 行出现错误:
ORA-01135: DML/query 访问的文件 10 处于脱机状态
ORA-01110: 数据文件 10: 'D:\APP\YICHUNMEI\ORADATA\ORCL\TEST_DATA02.DBF'
SQL> alter tablespace temp rename to temp2;
表空间已更改。
--系统表空间不能重命名
SQL> alter tablespace system rename to system2;
alter tablespace system rename to system2
*
第 1 行出现错误:
ORA-00712: 不能重命名系统表空间
七、删除表空间
--当数据文件内容不为空时将不能删除操作系统上的此文件
SQL> drop tablespace test2 including contents and datafiles;
表空间已删除。
SQL> alter database tempfile 'D:\APP\YICHUNMEI\PRODUCT\11.1.0\DB_1\ADMIN\SAMPLE\ORCL\DATAFILE\O1_MF_TEMP_79ZROL2R_.TMP'
2 drop including datafiles;
数据库已更改。
SQL> alter database tempfile 'D:\APP\YICHUNMEI\ORADATA\ORCL\TESTTEMP_DATA1.DBF'
2 drop including datafiles;
数据库已更改。