资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
Oracle删除数据文件在我们详细介绍之前,我们必须说清楚一点:Oracle不提供如删除表、视图一样删除数据文件的方法,数据文件是表空间的一部分,所以不能“移走”表空间。 一、使用offline数据文件的方法非归档模式使用:alter database datafile . offline drop;归档模式使用: alter database datafile . offline;说明:1) 以上命令只是将该数据文件OFFLINE,而不是在数据库中删除数据文件。该数据文件的信息在控制文件种仍存在。查询v$datafile,仍显示该文件。2) 归档模式下offline和offline drop效果是一样的3) offline后,存在此datafile上的对象将不能访问4) noarchivelog模式下,只要online redo日志没有被重写,可以对这个文件recover后进行online操作 实际使用案例:直接删除数据文件后无法进入系统的解决方案 正常情况下,删除表空间的正确方法为:DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES; 如果没有通过以上命令删除而直接删除了数据文件,将导致数据库无法打开。 如果直接删除了数据文件普通用户登录时,则报错:ORA-01033: ORACLE initialization or shutdown in progresssys用户可以正常登录但进行操作时(SELECT count(1) FROM user_tables),则会报错:ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询如果执行命令alter database open以打开数据库时,又报如下错:ORA-01157: 无法标识/锁定数据文件 12 - 请参阅 DBWR 跟踪文件ORA-01110: 数据文件 12: E:ORACLEPRODUCT10.2.0ORADATAORCLTSTEST001.DBF 说明数据库没找到这个数据文件因为数据文件在没有被offline的情况下物理删除了,导致oracle的数据不一致,因此启动失败.通过以下方法即可解决 解决方法:sqlplus sys/orclorcl as sysdba;SQL alter database datafile E:ORACLEPRODUCT10.2.0ORADATAORCLTSTEST001.DBF offline drop;SQL alter database open;SQL drop tablespace CTBASEDATA; 二、Oracle 10G R2开始,可以采用:Alter tablespace tablespace_name drop datafile file_name;来删除一个空数据文件,并且相应的数据字典信息也会清除: sysORCLselect file_id,file_name,tablespace_name from dba_data_files 2 where tablespace_name=USERS;FILE_ID FILE_NAME TABLESPACE_NAME- - -4 /u01/app/oracle/oradata/orcl/users01.dbf USERS sysORCLalter tablespace users add datafile 2 /u01/app/oracle/oradata/orcl/users02.dbf size 5M autoextend off;Tablespace altered.sysORCLselect file_id,file_name,tablespace_name from dba_data_files 2 where tablespace_name=USERS;FILE_ID FILE_NAME TABLESPACE_NAME- - -4 /u01/app/oracle/oradata/orcl/users01.dbf USERS9 /u01/app/oracle/oradata/orcl/users02.dbf USERS sysORCLdrop table test;Table dropped.sysORCLcreate table test tablespace users 2 as 3 select * from dba_objects;Table created.sysORCLselect SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents 2 where file_id=9;SEGMENT_NAME FILE_ID BLOCKS- - -TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 128TEST 9 128 17 rows selected.sysORCLalter table test move tablespace PERFSTAT; -把表移动到其它表空间Table altered.sysORCLselect SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents 2 where file_id=9;no rows selectedsysORCLalter tablespace users drop datafile 2 /u01/app/oracle/oradata/orcl/users02.dbf;Tablespace altered.sysORCLselect file_id,file_name,tablespace_name from dba_data_files 2 where tablespace_name=USERS;FILE_ID FILE_NAME TABLESPACE_NAME- - -4 /u01/app/oracle/oradata/orcl/users01.dbf USERS 三、oracle 10g可以删除临时表空间的文件alter database tempfile /home/oracle/temp01.dbf drop including datafiles; ALTER DATABASE 与 ALTER TABLESPACE OFFLINE的区别一DataFile脱机或联机的两种方法: ALTER DATABASE 语句修改单独的DataFile ALTER TABLESPACE 语句修改所有的DataFile1、在ARCHIVRLOG模式下的更改DataFile状态ALTER DATABASE DATAFILE /u02/oracle/rbdb1/stuff01.dbf ONLINE;ALTER DATABASE DATAFILE /u02/oracle/rbdb1/stuff01.dbf OFFLINE;或者用文件号来表示 :ALTER DATABASE DATAFILE 5 ONLINE;ALTER DATABASE DATAFILE 5 OFFLINE;注:只有在ARCHIVELOG模式下才可使用ALTER DATABASE来更改DataFile 2、在NOARCHIVELOG模式下使DataFile脱机由于在NOARCHIVELOG模式下,数据文件脱机后会造成数据的遗失,所以只能使用ALTER DATABASE语句下带有DATAFILE和OFFLINE DROP子句的选项将该DataFile直接取消,例如该DataFile只包含临时段数据,并没有备份时 ALTER DATABASE DATAFILE /u02/oracle/rbdb1/users3.dbf OFFLINE DROP;3、修改TableSpace中所有DataFile或TempFile的可用性ALTER TABLESPACE . DATAFILE ONLINE|OFFLINEALTER TABLESPACE .
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号