Oracle系统默认临时表空间以及redo日志文件问题处(3)

ALTER DATABASE DROP LOGFILE MEMBER '/software/oradata/JLPROJCT/redo05A.log'; 
当我知道是因为临时文件造成这个问题后,我想着把临时文件删掉,然后从新添加一个临时文件:主要思想是,oracle必须存在一个默认的临时表空间,缺省临时表空间的数据文件不能删除,先建立一个临时表空间temp1,并将其默认,然后删除掉temp临时表空间,再建立temp临时表空间,指定temp为默认临时表空间,最后将temp1临时表空间删除掉。    ##改变系统默认临时表空间后,原来的某个用户默认的临时表空间也会随之改变。


具体过程:

1.CREATE TEMPORARY TABLESPACE temp1 TEMPFILE  '/opt/oracle/oradata/orcl/temp.dbf' SIZE 1024 m

AUTOEXTEND ON NEXT 10m MAXSIZE UNLIMITED;

2.将新建立的临时表空间temp1设置成系统默认临时表空间。

SQL> alter database default tablespace test1;       

3.查看oracle的默认临时表空间

SQL> select * from database_properties; 

SQL> select PROPERTY_NAME , PROPERTY_VALUE from database_properties;


PROPERTY_NAME                                    PROPERTY_VALUE

------------------------------------------------------------------------------------------------------------- 

DICT.BASE                                                    2

DEFAULT_TEMP_TABLESPACE                  TEMP1 

DEFAULT_PERMANENT_TABLESPACE      USERS
4,删除原来的temp临时表空间。 删除临时表空间的一个数据文件:
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ drop;
删除临时表空间(彻底删除):
SQL> drop tablespace temp  including contents and datafiles cascade constraints;
总结:临时表空间的损坏对数据库业务的影响最小, 在数据库没有进行order by、子查询、group by、distinct等需要消耗临时表空间的语句(而且要比较大才行,小的话就直接用pga的SORT_AREA区了) 时,丢失临时表空间,几乎对业务没有影响,并且,重启数据库后,临时表空间会自动重建


如果只是想不让默认临时表空间的一个文件占用空间位置,你可以直接再物理从面删除对应文件,即可,前提你这个临时表空间还有另一个临时文件。

alter tablespace  temp drop tempfile '/software/oradata/JLPROJCT/temp02.dbf'  会导致该文件offlione 但是 

select * from dba_users where  temporary_tablespace = 'TEMP';  还能查到
对于redo.log 文件,每个组只要保证有一个成员正常,那数据库没有问题,可以正常提过服务。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9930185c6e816d4541fbdd02971dcfea.html