ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 表空间管理(一)_oracle文档学习

表空间管理(一)_oracle文档学习

原创 Linux操作系统 作者:ziling2011 时间:2011-10-25 17:23:02 0 删除 编辑
一、创建自动扩展和按指定size扩展的表空间
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;
表空间已创建。
SQL> create table wumei.t(id number);
表已创建。
SQL> insert into wumei.t select 1 from dual;
已创建 1 行。

SQL>    select segment_name,tablespace_name,bytes,blocks from dba_Extents where WNER = 'WUMEI'
  2     AND SEGMENT_TYPE LIKE '%TABLE%'
  3      and segment_name='T' order by file_id,extent_id,block_id;
SEGMENT_NAME         TABLESPACE_NAME                     BYTES     BLOCKS
-------------------- ------------------------------ ---------- ----------
T                    TEST                                131072         16
已选择1行。
2.此处创建了一个大小为20M且按默认自动扩展的表空间,默认扩展size为1M
SQL> create tablespace test datafile 'D:\app\yichunmei\oradata\orcl\test_data01.dbf' size 20M
  2  extent management local autoallocate;
表空间已创建。

SQL>    select segment_name,tablespace_name,bytes,blocks from dba_Extents where WNER = 'WUMEI'
  2     AND SEGMENT_TYPE LIKE '%TABLE%'
  3      and segment_name='T' order by file_id,extent_id,block_id;
SEGMENT_NAME         TABLESPACE_NAME                     BYTES     BLOCKS
-------------------- ------------------------------ ---------- ----------
T                    TEST                                65536          8
 
 
第一种情况blocks为16表示这个扩展由16组成,这是因为自动增加的扩展(extends)大小是128K=8K(一块)*16;
第二种情况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;
表空间已创建。
-- group2
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;
数据库已更改。
 
 
 
 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25989950/viewspace-709653/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-07-18

  • 博文量
    52
  • 访问量
    130195