oracle10g卸载后恢复,Oracle10g RMAN恢复被删除的表空间

该案例详细演示了如何使用Oracle RMAN进行数据库备份后,当表空间被误删除时,如何执行非完全恢复。首先,通过RMAN列出备份并删除不再需要的备份文件。接着,模拟删除了一个名为'TEST'的表空间,然后关闭数据库并启动到挂起状态。使用RMAN恢复控制文件,恢复数据库到特定时间点,即删除表空间之前,最后打开数据库并验证表空间和数据已恢复。
摘要由CSDN通过智能技术生成

一、案例说明

利用rman备份数据库后,因为人工误删除表空间,现在需要使用非完全恢复来找回被误删除的表空间

二 环境准备

[oracle@RAC2 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jul 6 18:58:03 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> select name from v$tablespace;

NAME

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

SYSTEM

UNDOTBS1

SYSAUX

USERS

TEST

RMAN_TS

TEMP

7 rows selected.

SQL> select open_mode,log_mode from v$database;

OPEN_MODE  LOG_MODE

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

READ WRITE ARCHIVELOG

SQL> select name from v$datafile;

NAME

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

/opt/oracle/oradata/datafile/system.dbf

/opt/oracle/oradata/datafile/undotbs1.dbf

/opt/oracle/oradata/datafile/sysaux.dbf

/opt/oracle/oradata/datafile/users.dbf

/opt/oracle/oradata/datafile/test.dbf

/opt/oracle/oradata/datafile/rman_ts.dbf

6 rows selected.

SQL> conn test/test

Connected.

SQL> slect count(*) from tabs;

SP2-0734: unknown command beginning "slect coun..." - rest of line ignored.

SQL> select count(*) from tabs;

COUNT(*)

----------

2

SQL> select table_name from tabs;

TABLE_NAME

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

TEST1

TEST

SQL> create table test3 as select * from dual;

Table created.

SQL> select table_name from tabs;

TABLE_NAME

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

TEST1

TEST3

TEST

SQL> conn / as sysdba

Connected.

SQL> desc dba_users;

Name                                      Null?    Type

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

USERNAME                                  NOT NULL VARCHAR2(30)

USER_ID                                   NOT NULL NUMBER

PASSWORD                                           VARCHAR2(30)

ACCOUNT_STATUS                            NOT NULL VARCHAR2(32)

LOCK_DATE                                          DATE

EXPIRY_DATE                                        DATE

DEFAULT_TABLESPACE                        NOT NULL VARCHAR2(30)

TEMPORARY_TABLESPACE                      NOT NULL VARCHAR2(30)

CREATED                                   NOT NULL DATE

PROFILE                                   NOT NULL VARCHAR2(30)

INITIAL_RSRC_CONSUMER_GROUP                        VARCHAR2(30)

EXTERNAL_NAME                                      VARCHAR2(4000)

SQL> col default_tablespace for a10

SQL> select username,user_id,default_tablespace from dba_users where user_id=55;

USERNAME                          USER_ID DEFAULT_TA

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

TEST                                   55 TEST

SQL> conn test/test

Connected.

SQL> select * from test3;

D

-

X

SQL>

SQL>

SQL>

SQL> quit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

[oracle@RAC2 ~]$

[oracle@RAC2 ~]$

[oracle@RAC2 ~]$

[oracle@RAC2 ~]$

[oracle@RAC2 ~]$

[oracle@RAC2 ~]$

[oracle@RAC2 ~]$ pwd

/home/oracle

[oracle@RAC2 ~]$ ls -l

total 40

drwxr-xr-x  2 oracle oinstall 4096 Jan  9  2012 backup

-rw-r--r--  1 oracle oinstall  323 Oct  5  2012 current_sql.sql

drwxr-xr-x  2 oracle oinstall 4096 Oct 25  2009 Desktop

-rw-r--r--  1 oracle oinstall  259 Oct  5  2012 find_current.sql

-rw-r--r--  1 oracle oinstall  193 Oct  4  2012 free_ts.sql

drwxr-xr-x  2 oracle oinstall 4096 Jul  6 01:44 rman

drwxr-xr-x  4 oracle oinstall 4096 Oct  7  2012 SQL

-rw-r--r--  1 oracle oinstall 3552 Jul  6 02:10 sqlnet.log

-rw-r--r--  1 oracle oinstall  199 Mar  9 20:39 total_MB.sql

-rw-r--r--  1 oracle oinstall  193 Oct  4  2012 total_ts.sql

[oracle@RAC2 ~]$

[oracle@RAC2 ~]$

[oracle@RAC2 ~]$ cd /opt/backup/

[oracle@RAC2 backup]$ ls -l

total 0

[oracle@RAC2 backup]$

[oracle@RAC2 backup]$

[oracle@RAC2 backup]$ pwd

/opt/backup

[oracle@RAC2 backup]$

[oracle@RAC2 backup]$

[oracle@RAC2 backup]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Sat Jul 6 19:03:49 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: RACDB1 (DBID=4241907545)

RMAN> show all;

using target database control file instead of recovery catalog

RMAN configuration parameters are:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/opt/backup/%F';

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/opt/oracle10g/product/10.2.0/db_1/dbs/snapcf_racdb2.f'; # default

RMAN> list backup summary;

List of Backups

===============

Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag

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

142     B  F  A DISK        06-JUL-13       1       1       NO         LIYF

143     B  F  A DISK        06-JUL-13       1       1       NO         TAG20130706T130158

144     B  F  A DISK        06-JUL-13       1       1       NO         TAG20130706T130330

145     B  F  A DISK        06-JUL-13       1       1       NO         TAG20130706T130609

RMAN> delete backup;

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=158 devtype=DISK

List of Backup Pieces

BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name

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

142     142     1   1   AVAILABLE   DISK        /opt/oracle10g/product/10.2.0/db_1/dbs/59oe2gtc_1_1

143     143     1   1   AVAILABLE   DISK        /opt/backup/c-4241907545-20130706-03

144     144     1   1   AVAILABLE   DISK        /opt/backup/c-4241907545-20130706-04

145     145     1   1   AVAILABLE   DISK        /opt/backup/c-4241907545-20130706-05

Do you really want to delete the above objects (enter YES or NO)? yes

deleted backup piece

backup piece handle=/opt/oracle10g/product/10.2.0/db_1/dbs/59oe2gtc_1_1 recid=142 stamp=820069292

Deleted 1 objects

RMAN-06207: WARNING: 3 objects could not be deleted for DISK channel(s) due

RMAN-06208:          to mismatched status.  Use CROSSCHECK command to fix status

RMAN-06210: List of Mismatched objects

RMAN-06211: ==========================

RMAN-06212:   Object Type   Filename/Handle

RMAN-06213: --------------- ---------------------------------------------------

RMAN-06214: Backup Piece    /opt/backup/c-4241907545-20130706-03

RMAN-06214: Backup Piece    /opt/backup/c-4241907545-20130706-04

RMAN-06214: Backup Piece    /opt/backup/c-4241907545-20130706-05

RMAN> crosscheck backup;

using channel ORA_DISK_1

crosschecked backup piece: found to be 'EXPIRED'

backup piece handle=/opt/backup/c-4241907545-20130706-03 recid=143 stamp=820069319

crosschecked backup piece: found to be 'EXPIRED'

backup piece handle=/opt/backup/c-4241907545-20130706-04 recid=144 stamp=820069410

crosschecked backup piece: found to be 'EXPIRED'

backup piece handle=/opt/backup/c-4241907545-20130706-05 recid=145 stamp=820069570

Crosschecked 3 objects

RMAN> delete backup;

using channel ORA_DISK_1

List of Backup Pieces

BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name

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

143     143     1   1   EXPIRED     DISK        /opt/backup/c-4241907545-20130706-03

144     144     1   1   EXPIRED     DISK        /opt/backup/c-4241907545-20130706-04

145     145     1   1   EXPIRED     DISK        /opt/backup/c-4241907545-20130706-05

Do you really want to delete the above objects (enter YES or NO)? yes

deleted backup piece

backup piece handle=/opt/backup/c-4241907545-20130706-03 recid=143 stamp=820069319

deleted backup piece

backup piece handle=/opt/backup/c-4241907545-20130706-04 recid=144 stamp=820069410

deleted backup piece

backup piece handle=/opt/backup/c-4241907545-20130706-05 recid=145 stamp=820069570

Deleted 3 objects

RMAN> list backup summary;

RMAN> backup database format '/opt/backup/%d_%T_%s_%p.bak'tag='liyf';

Starting backup at 06-JUL-13

using channel ORA_DISK_1

channel ORA_DISK_1: starting full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

input datafile fno=00001 name=/opt/oracle/oradata/datafile/system.dbf

input datafile fno=00003 name=/opt/oracle/oradata/datafile/sysaux.dbf

input datafile fno=00002 name=/opt/oracle/oradata/datafile/undotbs1.dbf

input datafile fno=00006 name=/opt/oracle/oradata/datafile/rman_ts.dbf

input datafile fno=00005 name=/opt/oracle/oradata/datafile/test.dbf

input datafile fno=00004 name=/opt/oracle/oradata/datafile/users.dbf

channel ORA_DISK_1: starting piece 1 at 06-JUL-13

channel ORA_DISK_1: finished piece 1 at 06-JUL-13

piece handle=/opt/backup/RACDB1_20130706_173_1.bak tag=LIYF comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:02:25

Finished backup at 06-JUL-13

Starting Control File and SPFILE Autobackup at 06-JUL-13

piece handle=/opt/backup/c-4241907545-20130706-06 comment=NONE

Finished Control File and SPFILE Autobackup at 06-JUL-13

RMAN> exit

Recovery Manager complete.

[oracle@RAC2 backup]$

[oracle@RAC2 backup]$

[oracle@RAC2 backup]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jul 6 19:10:19 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> drop tablespace test including contents and datafiles;

Tablespace dropped.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

[oracle@RAC2 backup]$

[oracle@RAC2 backup]$

[oracle@RAC2 backup]$

[oracle@RAC2 backup]$ pwd

/opt/backup

[oracle@RAC2 backup]$ ls -tl

total 780600

-rw-r-----  1 oracle oinstall   7667712 Jul  6 19:11 c-4241907545-20130706-07

-rw-r-----  1 oracle oinstall   7667712 Jul  6 19:09 c-4241907545-20130706-06

-rw-r-----  1 oracle oinstall 783204352 Jul  6 19:09 RACDB1_20130706_173_1.bak

通过alert日志,查找出删除表空间test的时间Sat Jul  6 19:11:12 2013

三 恢复测试

[oracle@RAC2 backup]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Sat Jul 6 19:13:19 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database (not started)

RMAN> list backup summary;

using target database control file instead of recovery catalog

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of list command at 07/06/2013 19:13:29

RMAN-06403: could not obtain a fully authorized session

ORA-01034: ORACLE not available

ORA-27101: shared memory realm does not exist

Linux Error: 2: No such file or directory

RMAN> startup nomount;

Oracle instance started

Total System Global Area     167772160 bytes

Fixed Size                     1218316 bytes

Variable Size                 79694068 bytes

Database Buffers              83886080 bytes

Redo Buffers                   2973696 bytes

RMAN> restore controlfile from '/opt/backup/c-4241907545-20130706-06';

Starting restore at 06-JUL-13

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=156 devtype=DISK

channel ORA_DISK_1: restoring control file

channel ORA_DISK_1: restore complete, elapsed time: 00:00:02

output filename=/opt/oracle/stage/std.ctl

output filename=/opt/oracle/stage/std1.ctl

Finished restore at 06-JUL-13

RMAN> sql 'alter database mount';

sql statement: alter database mount

released channel: ORA_DISK_1

RMAN> restore database;

Starting restore at 06-JUL-13

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=156 devtype=DISK

channel ORA_DISK_1: starting datafile backupset restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

restoring datafile 00001 to /opt/oracle/oradata/datafile/system.dbf

restoring datafile 00002 to /opt/oracle/oradata/datafile/undotbs1.dbf

restoring datafile 00003 to /opt/oracle/oradata/datafile/sysaux.dbf

restoring datafile 00004 to /opt/oracle/oradata/datafile/users.dbf

restoring datafile 00005 to /opt/oracle/oradata/datafile/test.dbf

restoring datafile 00006 to /opt/oracle/oradata/datafile/rman_ts.dbf

channel ORA_DISK_1: reading from backup piece /opt/backup/RACDB1_20130706_173_1.bak

channel ORA_DISK_1: restored backup piece 1

piece handle=/opt/backup/RACDB1_20130706_173_1.bak tag=LIYF

channel ORA_DISK_1: restore complete, elapsed time: 00:01:16

Finished restore at 06-JUL-13

RMAN> run

2> { sql 'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';

3>  set until time='2013-07-06 19:11:12';

4> recover database;

5> }

sql statement: alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"

executing command: SET until clause

Starting recover at 06-JUL-13

using channel ORA_DISK_1

starting media recovery

archive log thread 1 sequence 2 is already on disk as file /opt/oracle/oradata/group_2.260.708527535

archive log filename=/opt/oracle/oradata/group_2.260.708527535 thread=1 sequence=2

media recovery complete, elapsed time: 00:00:02

Finished recover at 06-JUL-13

RMAN> alter database open resetlogs;

database opened

RMAN> exit

Recovery Manager complete.

[oracle@RAC2 backup]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jul 6 19:27:56 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL> select name from v$tablespace;

NAME

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

SYSTEM

UNDOTBS1

SYSAUX

USERS

TEST

RMAN_TS

TEMP

7 rows selected.

SQL> conn test/test

Connected.

SQL> slect count(*) from tabs;

SP2-0734: unknown command beginning "slect coun..." - rest of line ignored.

SQL> select count(*) from tabs;

COUNT(*)

----------

3

SQL> select table_name from tabs;

TABLE_NAME

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

TEST1

TEST3

TEST

SQL> select * from test3;

D

-

X

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值