Oracle OCP(49):表空间管理

旧城冷巷雨未停 提交于 2019-11-28 21:54:44

一、扩容表空间

扩大数据库的第三种方法是手工增大数据文件(datafile)的容量或使表空间(tablespace)内的数据文件容量可以随需动态地增长。用户可以为已有或新建的数据文件设置动态扩展属性(dynamic extension properties)。

  1. 通过动态增大数据文件而为数据库扩容
    ALTER TABLESPACE
    DATAFILE '<表空间存放的路径>'
    AUTOEXTEND ON NEXT <大小>          --当表空间的大小不够时每次增长多少
    MAXSIZE <大小>/MAXSIZE UNLIMITED  --表空间最大的大小/无上限
    
  2. 增加数据文件尺寸
    ALTER DATABASE DATAFILE '<表空间存放的路径>' RESIZE <大小>;
    
  3. 为表空间添加数据文件
    ALTER TABLESPACE ADD DATAFILE '<表空间存放的路径>' RESIZE <大小>;
    
  4. 为表空间删除数据文件
    ALTER TABLESPACE <表空间名> DROP DATAFILE '<路径/文件名>';
    

二、offline/online tablespace

当某些错误发生时,Oracle会自动地将相关的联机表空间(online tablespace)切换到脱机(offline)状态。此时尝试访问脱机表空间内数据表的用户将会得到错误信息。用户必须在处理故障后恢复(recover)受影响的表空间。

可以手动脱机表空间:

ALTER TABLESPACE <表空间名> OFFLINE;
  • Temporary(临时):
    如果表空间中的一个或多个文件存在错误状态,也可以使表空间暂时脱机。当Oracle 数据库使(尚未脱机的)数据文件脱机时,会对这些数据文件设置检查点。如果没有任何文件脱机,但是您使用了临时子句,则使表空间重新联机时便不需要执行介质恢复。但是,如果因写错误而导致表空间的一个或多个文件脱机,而此时您让表空间临时脱机,那么表空间需要执行恢复后才能重新联机。
  • Immediate(立即):
    表空间可以立即脱机,Oracle 数据库不需要对任何数据文件设置检查点。如果指定了“Immediate(立即)”,则必须先对表空间执行介质恢复,才能使表空间联机。如果数据库在NOARCHIVELOG 模式下运行,则无法立即使表空间脱机。

表空间脱机时,应注意以下几点:

  1. Oracle不允许任何SQL语句继续引用此表空间内的对象(schema object)。
  2. Oracle使用 SYSTEM 表空间内的延迟回滚段(deferred rollback segment)为正在运行的事务中已完成的 SQL 语句保存回滚信息(rollback data)。
  3. SYSTEM 表空间内的数据字典(data dictionary)会进行记录。
  4. SYSTEM表空间、临时表空间、回滚表空间不允许脱机。

表空间联机:

ALTER TABLESPACE <表空间名> ONLINE;

三、read only tablespace

  • 表空间只读
    ALTER TABLESPACE <表空间名> READ ONLY;        --表空间只读
    
  • 表空间可读写
    ALTER TABLESPACE <表空间名> READ WRITE;      --表空间可读写
    

四、drop tablespace

DROP TABLESPACE <表空间名称>
[including contents/contents and datafiles] --指删除表空间中的segments|指删除segments和datafiles;
cascade constraints                        --删除所有与该空间相关的完整性约束条件。]

(注:删除回退表空间:需要先切换,等待事务结束后,才能删除)

五、rename datafile

ALTER TABLESPACE USERS RENAME DATAFILE '==' TO '***';
ALTER DATABASE RENAME FILE '==='  TO '***';
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!