首页 / 数据库 / MySQL / Oracle不可恢复的nologging数据库对象
不可恢复的NOLOGGING 数据库对象1) 备份users表空间[Oracle@ocmu ~]$ rman target /Recovery Manager: Release 11.2.0.1.0 - Production on Sat Mar 16 10:41:05 2013Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.connected to target database: ORA11GR2 (DBID=116453860)RMAN> backup as backupset tablespace users; Starting backup at 16-MAR-13using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=41 device type=DISKchannel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00004 name=/u01/app/oracle/oradata/ORA11GR2/users01.dbfchannel ORA_DISK_1: starting piece 1 at 16-MAR-13channel ORA_DISK_1: finished piece 1 at 16-MAR-13piece handle=/u01/app/FRA/ORA11GR2/backupset/2013_03_16/o1_mf_nnndf_TAG20130316T104134_8n7pyymv_.bkp tag=TAG20130316T104134 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:05Finished backup at 16-MAR-13 Starting Control File and SPFILE Autobackup at 16-MAR-13piece handle=/u01/app/FRA/ORA11GR2/autobackup/2013_03_16/o1_mf_s_810211299_8n7pz48h_.bkp comment=NONEFinished Control File and SPFILE Autobackup at 16-MAR-13 RMAN>2) 采用nologging属性创建表,并且以直接路径加载的方式插入数据SCOTT@ORA11GR2>create table t_objects nologging tablespace users as select * from all_objects where 1=2; Table created. SCOTT@ORA11GR2>insert /*+ append */ into t_objects select * from all_objects; 55641 rows created. SCOTT@ORA11GR2>commit; Commit complete. SCOTT@ORA11GR2>3) RMAN中列出包含不可恢复数据的数据文件RMAN> report unrecoverable database; Report of files that need backup due to unrecoverable operationsFile Type of Backup Required Name---- ----------------------- --------------------------------------------4 full or incremental /u01/app/oracle/oradata/ORA11GR2/users01.dbf RMAN>4) 删除users表空间,测试nologging的不可恢复性SYS@ORA11GR2>select file_name from dba_data_files where tablespace_name="USERS"; FILE_NAME--------------------------------------------------------------------------/u01/app/oracle/oradata/ORA11GR2/users01.dbf SYS@ORA11GR2>!ls /u01/app/oracle/oradata/ORA11GR2/users01.dbf/u01/app/oracle/oradata/ORA11GR2/users01.dbf SYS@ORA11GR2>!rm /u01/app/oracle/oradata/ORA11GR2/users01.dbf SYS@ORA11GR2>!ls /u01/app/oracle/oradata/ORA11GR2/users01.dbfls: /u01/app/oracle/oradata/ORA11GR2/users01.dbf: No such file or directory SYS@ORA11GR2>5) RMAN执行恢复users表空间操作RMAN> shutdown immediate; database closeddatabase dismountedOracle instance shut down RMAN> startup mount; connected to target database (not started)Oracle instance starteddatabase mounted Total System Global Area 841162752 bytes Fixed Size 1339768 bytesVariable Size 578817672 bytesDatabase Buffers 255852544 bytesRedo Buffers 5152768 bytes RMAN> restore tablespace users; Starting restore at 16-MAR-13allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=18 device type=DISK channel ORA_DISK_1: starting datafile backup set restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setchannel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/ORA11GR2/users01.dbfchannel ORA_DISK_1: reading from backup piece /u01/app/FRA/ORA11GR2/backupset/2013_03_16/o1_mf_nnndf_TAG20130316T104134_8n7pyymv_.bkpchannel ORA_DISK_1: piece handle=/u01/app/FRA/ORA11GR2/backupset/2013_03_16/o1_mf_nnndf_TAG20130316T104134_8n7pyymv_.bkp tag=TAG20130316T104134channel ORA_DISK_1: restored backup piece 1channel ORA_DISK_1: restore complete, elapsed time: 00:00:08Finished restore at 16-MAR-13 RMAN> recover tablespace users; Starting recover at 16-MAR-13using channel ORA_DISK_1 starting media recoverymedia recovery complete, elapsed time: 00:00:01 Finished recover at 16-MAR-13 RMAN> alter database open; database opened RMAN>6) 验证NOLOGGING的不可恢复性SCOTT@ORA11GR2>select count(*) from t_objects;select count(*) from t_objects *ERROR at line 1:ORA-01578: ORACLE data block corrupted (file # 4, block # 675)ORA-01110: data file 4: "/u01/app/oracle/oradata/ORA11GR2/users01.dbf"ORA-26040: Data block was loaded using the NOLOGGING option SCOTT@ORA11GR2>7) 小结NOLONGGING能让你“一时之快”,但是风险是极大的,所以要尽快备份或在空闲时间重建表。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址