Oracle 11g笔记——调整表空间和数据文件的大小、移动数据文件、联机重做日志文件、控制文件

来源:互联网 发布:淘宝买水烟被警察 编辑:程序博客网 时间:2024/05/20 07:49
一、调整表空间和数据文件的大小
   1、调整表空间大小
   alter database datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf' resize 15m;

   2、调整表空间大小为允许自动扩展
    SQL>alter database datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf'
        autoextend on
        next 20M
        maxsize 1g;
    注:autoextend设为on时,允许扩展数据文件,设为OFF时,不允许扩展
    next <size>:分配给数据文件的下一个磁盘空间量的大小,单位:K、M、G、T
    maxsize <size>:设为unlimited时,数据文件的大小是无限的;大文件表空间,最大为128TB;具有32K块的小文件表空间,数据文件最大为128GB。单位:K、M、G、T

   3、增加表空间,将数据文件放至users表空间
    SQL>alter tablespace users add datafile '/u03/oradata/users02.dbf'
        size 50m
        autoextend on
        next 10m
        maxsize 200m;

   4、从表空间中删除数据文件,以前的版本有以下三个方法:
   (1)容忍该数据文件
   (2)缩减该数据文件并关闭AUTOEXTEND
   (3)创建新的表空间,将所有的对象移动至新的表空间,并且删除原来的表空间
    目前版本,可使用EM Database Control的Reorganize

   5、使用alter tablespace调整大文件表空间的大小
    create bigfile tablespace dmarts
datafile '/u05/oradata/dmarts.dbf' size 750m
autoextend on next 100m maxsize unlimited
extent management local
segment space management auto;

   修改大小,注:大文件的表空间只有一个数据文件,不需要指定数据文件名,并可用alter tablespace
   alter tablespace dmarts resize 1g;



二、移动数据文件
    1、使用ALTER DATABASE移动数据文件
        a.作为SYSDBA连接至数据库,并且关闭实例
  b.使用操作系统命令移动数据文件
c.以MOUNT模式打开数据库
d.使用alter database改变对数据库中数据文件的引用
e.以OPEN模式打开数据库
f.对包括控制文件的数据库执行增量备份或完整备份

        例:将表空间XPORT的数据文件从文件系统/u04移动至文件系统/u06:
        sqlplus / as sysdba
        SQL>select d.name,t.name
            from v$datafile d join v$tablespace t using(ts#)
            where t.name='XPORT';
            查询后显示的数据文件名为:/u04/oradata/xport.dbf
        a.关闭实例
 SQL>shutdown immediate;
        b.移动数据文件,以“!”转义字符。
          SQL>! mv /u04/oradata/xport.dbf /u06/oradata
        c.以MOUNT模式启动数据库,从而在不需要打开数据文件的情况下就可以使用控制文件:
          SQL>startup mount
d.改变控制文件中的路径名引用,以将其指向数据文件的新位置:
          SQL>alter database rename file '/u04/oradata/xport.dbf' to 'u06/oradata/xport.dbf';
        e.alter database open;
        f. 建立更新过的控制文件的备份副本:
          SQL>alter database backup controlfile to trace; 
    2、使用ALTER TABLESPACE移动数据文件
        如果希望移动的数据文件是某个表空间的一部分,而该表空间不是SYSTEM、SYSAUX、活动的撤销表空间或临时表空间,则推荐使用ALTER TABLESPACE的方法。
        原因:除了其数据文件将被移动的表空间外,所有用户在整个操作期间都可以使用数据库的剩余部分,比较少的中断时间。
        a.使用alter tablespace权限的账户,对表空间进行脱机处理:
           SQL>alter tablespace xport offline;   
        b.移动数据文件
           SQL>! mv /u04/oradata/xport.dbf /u06/oradata
        c.使用alter tablespace改变对数据库中数据文件的引用
          SQL>alter database rename file '/u04/oradata/xport.dbf' to 'u06/oradata/xport.dbf';
        d.将表空间返回到联机状态
          SQL>alter tablespace xport online;


三、移动联机重做日志文件
    1、查看重做日志文件
SQL>select group#,member from v$logfile order by group#,member;
        显示结果为:
        1 /u01/app/oracle/oradata/redo01.log
        1 /u05/oradata/redo01.log
        2 /u01/app/oracle/oradata/redo02.log
        2 /u05/oradata/redo02.log
        3 /u01/app/oracle/oradata/redo03.log
        3 /u05/oradata/redo03.log

注:有三个日志文件是在/u01/app/oracle/oradata中,此目录为oracle安装目录,需要移至别的目录,以消除写入日志文件与访问Oracle组件之间的争用问题。
        SQL>shutdown immediate;
        SQL>! mv /u01/app/oracle/oradata/redo0[1-3].log /u04/oradata
        SQL>startup mount
        SQL>alter database rename file '/u01/app/oracle/oradata/redo01.log' to '/u04/oradata/redo01.log';
        SQL>alter database rename file '/u01/app/oracle/oradata/redo02.log' to '/u04/oradata/redo02.log';
        SQL>alter database rename file '/u01/app/oracle/oradata/redo03.log' to '/u04/oradata/redo03.log';
        SQL>alter database open;
        SQL>select group#,member from v$logfile order by group#,member;
        显示结果为:
        1 /u04/oradata/redo01.log
        1 /u05/oradata/redo01.log
        2 /u04/oradata/redo02.log
        2 /u05/oradata/redo02.log
        3 /u05/oradata/redo03.log
        3 /u05/oradata/redo03.log
注:重做日志文件不再和Oracle软件竞争I/O,/u04与/u05之间多元复用了重做日志文件。

四、移动控制文件
    1、在使用初始参数文件时,移动控制文件类似于:移动数据文件或重做日志文件。
       过程:关闭实例、使用操作系统命令移动文件、重新启动实例
       在使用服务器参数文件(SPFILE)时,该过程稍有不同。需要改变初始文件参数CONTROL_FILES
        SQL>select name,value from v$spparameter where name='control_files';
            显示结果为:
            control_files /u01/app/oracle/oradata/control01.log
            control_files /u01/app/oracle/oradata/control02.log
            control_files /u01/app/oracle/oradata/control03.log
        SQL>show parameter control_files
        SQL>alter system set control_files='/u02/oradata/control01.log','/u02/oradata/control02.log','/u02/oradata/control03.log' scope=spfile;
        SQL>shutdown immediate
        SQL>! mv /u01/app/oracle/oradata/control01.log /u02/oradata
        SQL>! mv /u01/app/oracle/oradata/control02.log /u03/oradata
        SQL>! mv /u01/app/oracle/oradata/control03.log /u04/oradata
        SQL>startup
        至此已将3个控制文件移动至单独的文件系统,不再位于具有Oracle软件的卷上,如果包含一个控制文件的卷失败,那么其他两个卷包含更新的控制文件。

0 0
原创粉丝点击