只读表空间和临时表空间的恢复

        如果一个表空间是只读表空间,那么在该表空间上只能进行读操作而不能做DML操作,也就是说在这个表空间上的数据是不会变化的,因此就可以将该表空间的备份从日常的例行备份中取消,而只是在该表空间改为只读表空间之后做一次备份就够了。这不但减少了数据库系统的维护工作量还使系统的负荷减轻。还有操作只读表空间上的数据时不会产生重做操作也不用加锁,这也就提高了系统的效率。
      在这里需要指出的是在将一个表空间改为只读表空间之前和之后,最好将数据库的控制文件做备份,因为表空间的状态的变化会写到控制文件中,表空间改为只读表空间之前和之后的控制文件中记录的这个表空间的状态信息是不一样的。

        与非当前的还原表空间相似,临时表空间也可以不做备份。如果属于某个临时表空间的文件损坏或丢失,该临时表空间将不能使用。此时,如果有SQL语句使用这一临时表空间(如大规模排序),Oracle数据库系统就会报错。丢失临时文件并不影响Oracle数据库的启动,Oracle数据库可以在丢失临时文件的情况下正常打开。在这种情况下,Oracle数据库系统会自动地创建丢失的临时文件,同时Oracle会将相关的信息写入报警文件(alert log)。
下面还是通过例子来演示这种恢复的方法。首先必须应SYS用户登录Oracle数据库系统,因为在后面的操作中要关闭数据库。SQL> conn system/yang as sysdba
已连接。
SQL> select file#,ts#,name
  2  from v$tempfile;

     FILE#        TS#     NAME                                                      
---------- ----------     ------------------------------------------
         1          3     F:\APP\YANG\ORADATA\ORACL\TEMP01.DBF                                                                            
                                                                              
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

     接下来,利用操作系统工具,在操作系统上删除临时表空间TEMP所对应的临时文件(操作系统文件)F:\APP\YANG\ORADATA\ORACL\TEMP01.DBF   。随后,立即启动Oracle数据库系统。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  535662592 bytes                                      
Fixed Size                  1334380 bytes                                      
Variable Size             146801556 bytes                                      
Database Buffers          381681664 bytes                                      
Redo Buffers                5844992 bytes                                      
数据库装载完毕。
数据库已经打开。

SQL> select file#,ts#,name
  2  from v$tempfile;

     FILE#        TS#     NAME                                                      
---------- ----------     ------------------------------------------
         1          3         F:\APP\YANG\ORADATA\ORACL\TEMP01.DBF      

显示输出的结果可以看出:临时表空间TEM和与之所对应的临时文件F:\APP\YANG\ORADATA\ORACL\TEMP01.DBF    现在都健在。列出所有表空间以及与之对应的状态信息                                                                                                                  

SQL> select tablespace_name,status,contents
  2  from dba_tablespaces;

TABLESPACE_NAME                STATUS    CONTENTS                              
------------------------------ --------- ---------                             
SYSTEM                         ONLINE    PERMANENT                             
SYSAUX                         ONLINE    PERMANENT                             
UNDOTBS1                       ONLINE    UNDO                                  
TEMP                           ONLINE    TEMPORARY                             
USERS                          ONLINE    PERMANENT                             
EXAMPLE                        ONLINE    PERMANENT                             

已选择6行。

到此为止,可以确信我们已经成功的恢复了临时表空间TEMP。

时间: 2024-09-20 08:14:29

只读表空间和临时表空间的恢复的相关文章

ORACLE临时表空间总结

临时表空间概念   临 时表空间用来管理数据库排序操作以及用于存储临时表.中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当PGA中 sort_area_size大小不够时,将会把数据放入临时表空间里进行排序.像数据库中一些操作: CREATE INDEX. ANALYZE.SELECT DISTINCT.ORDER BY.GROUP BY. UNION ALL. INTERSECT.MINUS.SORT-MERGE JOINS.HASH JOIN等都可能会用到临时表空间.当

临时表空间组的使用

一个临时表空间组至少包含一个临时表空间. 临时表空间组无法显式创建,当第一个临时表空间分配给该组时自动创建,当组内所有临时表空间被移除时自动删除. 临时表空间组支持的操作: 可以将临时表空间从一个组移动到另外一个组(如果组不存在,则自动创建). 可以将组中的临时表空间从组中移除. 可以将目前不属于任何组的临时表空间加入一个组. 使用临时表空间组的好处: 防止一个临时表空间出现空间不足的问题. 同一个用户同时连接多个session时可以使用不同的临时表空间. 在并行操作中可以并行使用多个临时表空间

临时表空间过大的解决方法

Temporary tablespace是oracle里临时表空间,临时表空间主要用途是在数据库进行排序运算.管理索引.访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理.当oracle里需要用到sort的时候,PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序,同时如果有异常情况的话,也会被放入临时表空间,正常来说,在完成Select语句.create index等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段的.但有些有侯我

oracle 临时表空间组的概念

整理自:http://blog.sina.com.cn/s/blog_40c09b550100ifi6.html 在oracle10g以前,每个用户只能使用一个临时表空间,就是其默认临时表空间.oracle10g及其以后版本提供了新的临时表空间组的功能,允许将多个临时表空间打包成一个组,然后指定用户的默认临时表空间为该临时表空间组,从而达到一个用户可以使用多个临时表空间的目的.   一个临时表空间组至少包含一个临时表空间.临时表空间组无法显式创建,当第一个临时表空间分配给该组时自动创建,当组内所

Oracle中如何设置EXCLUDE后STANDBY数据库只读表空间的恢复

在STANDBY数据库利用RMAN恢复主库上EXCLUDE的只读表空间,碰到了问题. 数据库恢复完成,但是恢复被主库EXCLUDE的只读表空间时,发现无法进行恢复: RMAN> restore tablespace clubstat2_bak; Starting restore at 14-FEB-11 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=1094 devtype=DISK file 22 is excluded from

备份和恢复Oracle只读表空间的方法

--====================== -- 只读表空间的备份与恢复 --====================== 一.只读表空间的特性 使用只读表空间避免对静态数据的频繁备份 当使用alter tablespace tbs read only时,数据文件会执行检查点进程(将所有脏缓冲区的内容写至磁盘), 当前的SCN号会被标注,同时存储了SCN的数据文件头部被冻结.控制文件内也会记录该数据文件的冻结信息. 可以清除只读表空间的对象 二.只读表空间的备份 一般情况下,只读表空间只需

[20150408]只读表空间以及数据库恢复2.txt

[20150408]只读表空间以及数据库恢复2.txt --昨天检查时发现1个小问题,就是有1个表空间设置只读,也许某个时间打开变成读写,又设置会只读,而备份仅仅在第1次设置只读时做过1次, --按照道理如果使用原来的备份恢复会存在问题的,自己测试1下,顺便看看有什么变通的方法解决这个问题. 1.建立测试环境: SCOTT@test> @ &r/ver1 PORT_STRING                    VERSION        BANNER ----------------

[20150408]只读表空间以及数据库恢复4.txt

[20150408]只读表空间以及数据库恢复4.txt 参考链接: http://blog.itpub.net/267265/viewspace-1544583/ http://blog.itpub.net/267265/viewspace-1548059/ http://blog.itpub.net/267265/viewspace-1548967/ --上午做了测试,通过新建控制文件的方式来恢复,实际上更常用的方式使用bbed,修改数据文件块1,保持与控制文件的记录一致. --通过对比来看看

[20150408]只读表空间以及数据库恢复3.txt

[20150408]只读表空间以及数据库恢复3.txt --昨天检查时发现1个小问题,就是有1个表空间设置只读,也许某个时间打开变成读写,又设置会只读,而备份仅仅在第1次设置只读时做过1次, --按照道理如果使用原来的备份恢复会存在问题的,自己测试1下,我上午已经测试了可以使用以前的做了来恢复,但是这里存在一些小问题, --我在第2次打开读写时,没有任何ddl,dml操作对这个表空间,如果存在这些操作会出现什么情况呢? --继续上午的测试. 1.建立测试环境: SCOTT@test> @ &