以下步骤可以解决回滚表空间太大及回滚表空间文件被误删除的问题:
1. 停止数据库,不启动数据库实例
sql>shutdown abort
sql>startup mount
2.让原回滚表空间 offline
alter database datafile 7 offline drop;(7为fileid);
查询file_id 查询
select f.file_name,f.file_id ,f.tablespace_name from dba_data_files f;
3.创建新的表空间
create tablespace undotbs2 datafile '/opt/oracle/oradata/undotbs2.dbf' size 5000m AUTOEXTEND ON NEXT 32M MAXSIZE 2048M;
4. 新建spfile
create spfile from pfile;
5.指定新的表空间为回滚表空间
sql> alter system set undo_tablespace=undotbs2 scope=both;
6.重新启动数据库
sql>shutdown abort
sql>startup
并查看spfileSID.ora是否已经将undotbs2设置为回滚表空间
cat /opt/oracle/product/11.1/dbs/spfileiread84.ora
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1610612736
*.undo_tablespace='UNDOTBS2'
7.删除原回滚表空间
sql> drop tablespace undotb1 including contents and datafiles;
到/opt/oracle/oradata/ 目录下查看回滚文件是否已经被删除,若是未删除可以直接删除
sql>rm undotbs1.dbf
8.重新启动数据库
sql>shutdown abort
sql>startup
一切顺利的话,以上步骤就可以实现减小回滚表空间大小的目的。但是可能在第7步出现:
ORA-01548: 已找到活动回退段'_SYSSMU1$',终止删除表空间 问题。
请详见下篇
1. 停止数据库,不启动数据库实例
sql>shutdown abort
sql>startup mount
2.让原回滚表空间 offline
alter database datafile 7 offline drop;(7为fileid);
查询file_id 查询
select f.file_name,f.file_id ,f.tablespace_name from dba_data_files f;
3.创建新的表空间
create tablespace undotbs2 datafile '/opt/oracle/oradata/undotbs2.dbf' size 5000m AUTOEXTEND ON NEXT 32M MAXSIZE 2048M;
4. 新建spfile
create spfile from pfile;
5.指定新的表空间为回滚表空间
sql> alter system set undo_tablespace=undotbs2 scope=both;
6.重新启动数据库
sql>shutdown abort
sql>startup
并查看spfileSID.ora是否已经将undotbs2设置为回滚表空间
cat /opt/oracle/product/11.1/dbs/spfileiread84.ora
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1610612736
*.undo_tablespace='UNDOTBS2'
7.删除原回滚表空间
sql> drop tablespace undotb1 including contents and datafiles;
到/opt/oracle/oradata/ 目录下查看回滚文件是否已经被删除,若是未删除可以直接删除
sql>rm undotbs1.dbf
8.重新启动数据库
sql>shutdown abort
sql>startup
一切顺利的话,以上步骤就可以实现减小回滚表空间大小的目的。但是可能在第7步出现:
ORA-01548: 已找到活动回退段'_SYSSMU1$',终止删除表空间 问题。
请详见下篇