Oracle重建表空间操作实例

时间:2023-12-31 09:24:26

由于环境维护或者性能测试需要,经常需要对表空间进行重建操作。重建表空间操作主要分3中情况介绍,分别是业务表空间、临时表空间和回滚段表空间的重建。

重建业务表空间

由于业务规划要求,重建后的业务表空间名需要与原有的一致。操作上和重建临时表空间和重建回滚段表空间有不同。

1、备份当前需要使用的数据库,可以使用Oracle自带的expdp或者exp命令。

2、删除业务数据库。

3、停掉ORACLE监听,重启ORACLE实例,确保断开已有的连接和新连接的建立。

4、删除业务表空间

5、新建业务表空间

6、使用impdp/imp命令导入备份的数据库,还原业务数据库。

重建undo表空间

1、查看当前使用undo表空间和对应数据文件路径

SQL> show parameter undo
SQL> select file_name,tablespace_name from dba_data_files where tablespace_name='UNDOTBS1';

2、创建新的undo表空间

SQL> create undo tablespace undotbs2  datafile '/home/oracle/oradata/undotbs2.dbf' size 1024M;

3、修改使用新建的回滚表空间

SQL> alter system set undo_tablespace='undotbs2' scope=both;

4、查看所有在UNDOTBS1的undo segment都已offline。

SQL> select SEGMENT_NAME ,STATUS ,TABLESPACE_NAME from dba_rollback_segs where TABLESPACE_NAME='UNDOTBS1' and STATUS='OFFLINE'; 

5、步骤4中的状态全部offline后,将旧的回滚表空间udotbs1状态修改为offline。

SQL> alter tablespace undotbs1 offline;

6、删除旧的undo表空间

SQL> drop tablespace undotbs1 including contents and datafiles;

7、操作完成。

重建temp表空间

1、查看当前使用的temp表空间相关信息

SQL> select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
SQL> select name,bytes/1024/1024 file_size,status,enabled from v$tempfile;

2、查看用户使用的默认临时表空间

SQL> select username,temporary_tablespace from dba_users;

3、创建新的temp表空间

CREATE TEMPOARY TABLESPACE  TEMP1 TEMPFILE  '/home/oracle/oradata/TEMP1.dbf' SIZE 1024M;

4、修改默认表空间为新创建的临时表空间temp2

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP1;

5、offline旧的临时表空间temp

ALTER DATABASE TEMPFILE '/home/oracle/oradata/TEMP.dbf' OFFLINE;

6、删除旧的临时表空间temp

DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;

7、操作完成