第六章 管理表空间1

表空间是逻辑上的概念。


临时表空间:只用来存储用户会话期间的对象,应使用临时文件而不是数据文件创建临时表空间。

undo表空间:一种永久表空间,它存储撤销对数据的更改所使用的撤销数据。

每个ORACLE表空间都必须有强制的system和sysaux表空间。system表空间是永久的表空间,包含重要的帮助数据库运行的数据字典信息。

6.1
表空间区尺寸和空间管理。
自动与手都段管理。

使用alter tale命令移动表到其他的表空间。

SQL> create table test (a1 int);

表已创建。

SQL> commit;

提交完成。

SQL> select owner,segment_name,tablespace_name from dba_segments where segment_n
ame='TEST';

OWNER                SEGMENT_NAME         TABLESPACE_NAME
-------------------- -------------------- --------------------
SYS                  TEST                 SYSTEM
创建的test表默认存在于system表空间中,

用alter table 命令将test移动到users表空间。
SQL> alter table test move tablespace users;

表已更改。


SQL> select owner,segment_name,tablespace_name from dba_segments where segment_n
ame='TEST';

OWNER                SEGMENT_NAME         TABLESPACE_NAME
-------------------- -------------------- --------------------
SYS                  TEST                 USERS
如果移动索引,可使用alter index rebulind命令


SQL> alter index index1 rebuild tablespace system;

索引已更改。




6.2创建表空间

  1  create tablespace test
  2  datafile 'D:\oradata\orcl\test01.dbf'
  3  size 50M
  4  autoextend on
  5  next 10m
  6* maxsize 100m
SQL> /

表空间已创建。

删除表空间

(1)SQL> drop tablesoace test;
在发布drop tablespace命令时,如果test 表空间中包括表或者索引存在,将会报错。可以先将对象转移到其他的表空间中,或者可以将存在的对象一起删除。

SQL> drop tablespace test;
drop tablespace test
*
第 1 行出现错误:
ORA-01549: 表空间非空, 请使用 INCLUDING CONTENTS 选项

SELECT owner,segment_name,segment_type,tablespace_name  FROM  DBA_SEGMENTS where tablespace_name='TEST'

    OWNER SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME
1 SYS         TEST                                             TABLE  TEST
2 SYS   INDEX1                                            INDEX TEST

查询dba_segments 视图可以查询到test表空间中的对象,此时可以把表test,索引index1移动到其他表空间。

强制将对象删除可加参数 including contents

(2)drop tablespace including contents;

使用上述删除表空间的命令时,表空间中的对象将绕过回收站并立即被删除,同时,回收站中的属于该表空间的任何对象也将被清空。


drop tablespace including contents命令不会把操作系统上的数据文件释放掉,必须手动删除数据文件,可用以下命令实现删除表空间的同时删除掉数据文件。

(3) drop tablespace test including contents and datafiles;(此语句表空间连同数据文件一同被删除)。


(4) drop tablespace test cascade constraints;
如果其他表中存在指向要删除的表空间中的表的引用完整性约束,则必须用上述命令。


6.2.10管理重做数据的生成
管理表空间的可用性

表空间的脱机(offline)
offline有三种情况normal、temporary、immediate
*使用offline normal字句可以使一个表空间干净的脱机,这表示使它联机之前不需要再表空间进行介质恢复。如果不能对表空间执行带OFFLINE NORMAL字句的脱机,则需要制动OFFLINE TEMPORARY 字句;如果仍然无法offline 可使用immediate字句。


SQL> alter tablespace test offline normal;

表空间已更改。

SQL> alter tablespace test online;

表空间已更改。


6.2.11重命名表空间
alter tablespace xxx rename to xxx;


SQL> alter tablespace test rename to test01;

表空间已更改。
 (可以重新命名永久表空间和临时表空间,但是不能重命名system、sysaux表空间;被重命名的表空间必须使其所有数据文件联机;若表空间只读,则重命名无法改变数据文件的文件头);



重新命名表空间下的数据文件
步骤:a、表空间offline b、移动数据文件 c、重命名

实例:原test表空间数据文件为 D:\ORADATA\ORCL\TEST01.DBF

select   file_name ,file_id,tablespace_name  from dba_data_files;
    FILE_NAME FILE_ID TABLESPACE_NAME
1 D:\ORADATA\ORCL\SYSTEM01.DBF 1 SYSTEM
2 D:\ORADATA\ORCL\UNDOTBS01.DBF 2 UNDOTBS1
3 D:\ORADATA\ORCL\SYSAUX01.DBF 3 SYSAUX
4 D:\ORADATA\ORCL\USERS01.DBF 4 USERS
5 D:\ORADATA\ORCL\ABC.DBF 5 XIAOCHEN
6 D:\ORADATA\ORCL\TEST01.DBF 6 TEST
现将test表空间数据移动至C盘根目录下。
步骤1
SQL> alter tablespace test  offline normal;
表空间已更改。
步骤2
D:\oradata\orcl>copy TEST01.DBF c:\
已复制         1 个文件。
步骤3:
SQL>   alter tablespace test
  2  rename datafile 'D:\oradata\orcl\test01.dbf'
  3  to
  4* 'c:\test01.dbf'
SQL> /

表空间已更改。
步骤4:

SQL> alter tablespace test online;

表空间已更改。



6.2.12 只读表空间

SQL> alter tablespace test read only;

表空间已更改。

SQL> alter tablespace test read write;

表空间已更改。


6.3临时表空间

6.3.1创建临时表空间
SQL> create temporary tablespace temp01 tempfile 'C:\temp01.dbf'
  2  size 10m
  3  autoextend on
  4  next 1m
  5  maxsize 100m;

表空间已创建。
6.3.2更改临时表空间

增加临时表空间的临时文件
SQL> alter tablespace temp add tempfile 'c:\1.dbf' size 10M;
表空间已更改。

摘除一个临时文件,同时删除操作系统上的文件
SQL> alter database tempfile 'c:\1.dbf' drop including datafiles;
数据库已更改。

6.3.4默认临时表空间
database_properties 视图中可查询到


SQL> select  property_name,property_value  from database_properties 
where property_name like '%DEFAULT%';

PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ ------------------------------
DEFAULT_TEMP_TABLESPACE        TEMPGRP1
DEFAULT_PERMANENT_TABLESPACE   USERS
DEFAULT_TBS_TYPE               SMALLFILE


6.3.5临时表空间组

select * from dba_tablespace_groups(空间组视图)

可将多个临时表空间放在一个临时表空间组中,然后将database_properties视图中的默认临时表空间设置为临时表空间组。

优点:由于sql查询可以同时使用几个临时表空间进行排序,因此sql查询很少会用尽排序空间;   可以再数据库级指定多个默认临时表空间; 并行操作的并行执行服务器将高效地利用临时表空间;单用户可在不同会话中同时使用多个临时表空间。


6.3.6默认的永久表空间
SQL> select username,default_tablespace from dba_users;

USERNAME                       DEFAULT_TABLESPACE                               
------------------------------ ------------------------------                   
XIAOCHEN                       USERS                                            
MDDATA                         USERS                                            
DIP                            USERS                                            
TSMSYS                         USERS                                            
DBSNMP                         SYSAUX                                           
SYSMAN                         SYSAUX                                           
MDSYS                          SYSAUX                                           
ORDSYS                         SYSAUX                                           
CTXSYS                         SYSAUX                                           
ANONYMOUS                      SYSAUX                                           
EXFSYS                         SYSAUX                                           

USERNAME                       DEFAULT_TABLESPACE                               
------------------------------ ------------------------------                   
DMSYS                          SYSAUX                                           
WMSYS                          SYSAUX                                           
XDB                            SYSAUX                                           
ORDPLUGINS                     SYSAUX                                           
SI_INFORMTN_SCHEMA             SYSAUX                                           
OLAPSYS                        SYSAUX                                           
MGMT_VIEW                      SYSTEM                                           
SYS                            SYSTEM                                           
SYSTEM                         SYSTEM                                           
OUTLN                          SYSTEM                                           

查询dba_users视图可以查看各个用户默认的永久表空间。

SQL> select  property_name,property_value  from database_properties where proper
ty_name='DEFAULT_PERMANENT_TABLESPACE';

PROPERTY_NAME                  PROPERTY_VALUE
------------------------------ ------------------------------
DEFAULT_PERMANENT_TABLESPACE   USERS

而查询 系统默认表空间,为users, 也就是说在你创建一个用户时 如果没有给他指定默认表空间, 系统就会指定这个表空间为他的默认表空间。



管理表空间的几个重要的视图
DBA_TABLESPACES;
DBA_SEGMENTS;
DBA_FREE_SPACE;
DBA_DATA_FILES;
DBA_TEMP_FILES;
DBA_TABLESPACE_GROUPS;
database_properties;
v$datafile;
v$filestat;

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

转载于:http://blog.itpub.net/26667101/viewspace-750834/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值