Oracle学习笔记:管理数据文件 ----摘自《Oracle10g 宝典》

■创建数据文件的SQL语句及说明

  CREATE TABLESPACE  创建一个表空间和组成它的数据文件
  CREATE TEMPORARY TABLESPACE 创建一个临时表空间和组成它的临时数据文件(临时数据文件
                                是一种特殊类型的数据文件)
  ALTER TABLESPACE ... ADD DATAFILE 创建并添加一个数据文件到表空间
  ALTER TABLESPACE ... ADD TEMPFILE  创建并添加一个临时数据文件到临时表空间
  CREATE DATABASE  创建一个数据库和关联的数据文件

■创建表空间
  SQL> create tablespace myts04
  2  datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts04_1.dbf' size 2m
  3  autoextend on
  4  next 1m
  5  maxsize 5m

■向空间里添加数据文件并指定自动增长方式
  SQL> alter tablespace myts02          
  2  add datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_2.dbf' size 4m  
  3  AUTOEXTEND ON 
  4  NEXT 4K    
  5  MAXSIZE 5M;

■更改原有数据文件为自动增长方式
  SQL> ALTER DATABASE          
  2  DATAFILE '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_3.dbf'                 
  3  AUTOEXTEND ON                       
  4  NEXT 2K           
  5  MAXSIZE 5M;

■取消自动增长方式
  SQL> alter database                                
  2  datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_3.dbf'  
  3  autoextend off;

■改变原数据文件大小
  SQL> alter database                             
  2  DATAFILE '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_2.dbf' resize 5m;
  也可以利用RESIZE子句来缩小数据文件,不过必须保证缩小后的数据文件足够容纳其中已有的数据

■在ARCHIVELOG模式下使数据文件脱胎机
  SQL> alter database             
  2  datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_2.dbf' offline;

■在NOARCHIVELOG模式中使数据文件脱机
  要注意,这会使数据文件脱机并立即删除它,所以,很可能导致丢失数据文件,这种方法一般只用于临时表空间
  的临时数据文件.

  SQL> alter database            
  2  datafile '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_2.dbf' offline drop;
  
  在这之后,如果要使数据文件联机,必须进行介质恢复,否则会有错误提示. 
  
■修改表空间中所有数据文件的可用性
  ALTER TABLESPACE ... DATAFILE { ONLINE | OFFLINE }
  ALTER TABLESPACE ... TEMPFILE { ONLINE | OFFLINE }
 
  表空间本身的联机或脱机状态不改变()
 
■修改整个表空间的可用性
  ALTER TABLESPACE ...  { ONLINE | OFFLINE }

■同一个表空间的数据文件的重命名
  当改变数据文件的位置和名称时,Oracle只是在控制文件和数据字典中改变了数据文件的指针,并没有物理
  地创建新的数据文件,也没有重定位和重命名任何操作系统文件.DBA必须自己在操作系统层复制文件,并重
  定位或重命名数据文件.
   
  SETUP1 SQL> alter tablespace myts04 offline normal;
         将表空间设置为脱机状态是为了关闭该表空间中所有的数据文件,以便在停止数据库服务时不会造成
         数据出现问题

  SETUP2 SQL> shutdown immediate
         如果不停止数据库服务就重命名数据文件,会出现错误提示.   

  SETUP3 将数据文件myts04_1.dbf重新命名为myts04_01.dbf、myts04_2.dbf重新命名为myts04_02.dbf   

  SETUP4 SQL> startup

  SETUP5 SQL> alter tablespace myts02
              rename datafile
              '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts04_1.dbf',
              '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts04_2.dbf'
              to
              '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts04_01.dbf',
              '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts04_02.dbf';
  SETUP6 SQL> alter tablespace myts04 online;

■多个表空间的数据文件的重定位和重命名
  SETUP1 SQL> alter tablespace myts01 offline normal;
         SQL> alter tablespace myts02 offline normal;

  SETUP2 SQL> shutdown immediate

  SETUP3 将myts01表空间的数据文件myts01_1.dbf重新命名为myts01_01.dbf、
         将myts02表空间的数据文件myts02_1.dbf重新命名为myts02_01.dbf、

  SETUP4 SQL> startup

  SETUP5 SQL> alter database
              rename file
              '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_1.dbf',
              '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_1.dbf'
              to
              '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts01_01.dbf',
              '/export/home/opt/product/10.1.0.3.0/oradata/ldfsys/myts02_01.dbf';

  SETUP6 SQL> alter tablespace myts01 online;  
              alter tablespace myts02 online;  

■查询数据文件信息
  DBA_DATA_FILES
  DBA_TEMP_FILES
  DBA_EXTENTS
  USER_EXTENTS
  DBA_FREE_SPACE
  USER_FREE_SPACE
  V$DATAFILE
  V$DATAFILE_HEADER

■查看数据文件与表空间
SELECT f.tablespace_name "表空间", 
Decode(d.EXTENT_MANAGEMENT,'DICTIONARY','字典','本地')  "表空间类型",
TRUNC(SUM(f.bytes/1024000),2 ) || 'MB' "自由空间",
MIN(f.bytes) "最小字节", MAX(f.bytes) "最大字节",
AVG(f.bytes) "平均字节",COUNT(f.tablespace_name) "分布在"
FROM dba_free_space f, dba_tablespaces d 
Where f.tablespace_name = d.tablespace_name 
GROUP BY f.tablespace_name ,d.EXTENT_MANAGEMENT
 

你可能感兴趣的:(oracle10g)