电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

RMAN的备份及恢复-丢失所有控制文件


发布日期:2021/4/18
 

数据库基本信息

[oracle@standby oracle]$ sqlplus / as sysdba

SQL*Plus: Release Production on Wed Mar ::

Copyright (c) Oracle Corporation All rights reserved

Connected to:

Oraclei Enterprise Edition Release Production

With the Partitioning option

JServer Release Production

SQL> select name from v$datafile;

NAME

/opt/oracle/oradata/primary/systemdbf

/opt/oracle/oradata/primary/undotbsdbf

/opt/oracle/oradata/primary/usersdbf

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination /opt/oracle/oradata/primary/archive

Oldest online log sequence

Next log sequence to archive

Current log sequence

SQL> select name from v$archived_log;

NAME

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

NAME

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

/opt/oracle/oradata/primary/archive/_dbf

rows selected

SQL> select name from v$controlfile;

NAME

/opt/oracle/oradata/primary/controlctl

/opt/oracle/oradata/primary/controlctl

/opt/oracle/oradata/primary/controlctl

SQL> exit

Disconnected from Oraclei Enterprise Edition Release Production

With the Partitioning option

JServer Release Production

启用控制文件的自动备份

[oracle@standby oracle]$ rman target /

Recovery Manager: Release Production

Copyright (c) Oracle Corporation All rights reserved

connected to target database: PRIMARY (DBID=)

RMAN> configure controlfile autobackup on;

using target database controlfile instead of recovery catalog

new RMAN configuration parameters:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

new RMAN configuration parameters are successfully stored

RMAN> exit

Recovery Manager complete

执行RMAN全备份

[oracle@standby oracle]$ ls

g admin dictionaryora initprimaryora jre oradata oraInventory oui

[oracle@standby oracle]$ mkdir orabak

[oracle@standby oracle]$ rman target /

Recovery Manager: Release Production

Copyright (c) Oracle Corporation All rights reserved

connected to target database: PRIMARY (DBID=)

RMAN> run {

> backup database

> format /opt/oracle/orabak/full_%d_%T_%s

> plus archivelog

> format /opt/oracle/orabak/arch_%d_%T_%s

> delete all input; }

Starting backup at MAR

current log archived

using target database controlfile instead of recovery catalog

allocated channel: ORA_DISK_

channel ORA_DISK_: sid= devtype=DISK

channel ORA_DISK_: starting archive log backupset

channel ORA_DISK_: specifying archive log(s) in backup set

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

input archive log thread= sequence= recid= stamp=

channel ORA_DISK_: starting piece at MAR

channel ORA_DISK_: finished piece at MAR

piece handle=/opt/oracle/orabak/arch_PRIMARY__ comment=NONE

channel ORA_DISK_: backup set complete elapsed time: ::

channel ORA_DISK_: deleting archive log(s)

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

Finished backup at MAR

Starting backup at MAR

using channel ORA_DISK_

channel ORA_DISK_: starting full datafile backupset

channel ORA_DISK_: specifying datafile(s) in backupset

input datafile fno= name=/opt/oracle/oradata/primary/systemdbf

input datafile fno= name=/opt/oracle/oradata/primary/undotbsdbf

input datafile fno= name=/opt/oracle/oradata/primary/usersdbf

channel ORA_DISK_: starting piece at MAR

channel ORA_DISK_: finished piece at MAR

piece handle=/opt/oracle/orabak/full_PRIMARY__ comment=NONE

channel ORA_DISK_: backup set complete elapsed time: ::

Finished backup at MAR

Starting backup at MAR

current log archived

using channel ORA_DISK_

channel ORA_DISK_: starting archive log backupset

channel ORA_DISK_: specifying archive log(s) in backup set

input archive log thread= sequence= recid= stamp=

channel ORA_DISK_: starting piece at MAR

channel ORA_DISK_: finished piece at MAR

piece handle=/opt/oracle/orabak/arch_PRIMARY__ comment=NONE

channel ORA_DISK_: backup set complete elapsed time: ::

channel ORA_DISK_: deleting archive log(s)

archive log filename=/opt/oracle/oradata/primary/archive/_dbf recid= stamp=

Finished backup at MAR

Starting Control File and SPFILE Autobackup at MAR

piece handle=/opt/oracle/product//dbs/c comment=NONE

Finished Control File and SPFILE Autobackup at MAR

RMAN> exit

Recovery Manager complete

移除所有控制文件及数据文件

[oracle@standby oracle]$ sqlplus / as sysdba

SQL*Plus: Release Production on Wed Mar ::

Copyright (c) Oracle Corporation All rights reserved

Connected to:

Oraclei Enterprise Edition Release Production

With the Partitioning option

JServer Release Production

SQL> shutdown immediate;

Database closed

Database dismounted

ORACLE instance shut down

SQL> exit

Disconnected from Oraclei Enterprise Edition Release Production

With the Partitioning option

JServer Release Production

[oracle@standby oracle]$ cd oradata/

[oracle@standby oradata]$ ls

primary

[oracle@standby oradata]$ mv primary/ primarybak

[oracle@standby oradata]$ mkdir primary

[oracle@standby oradata]$ ls

primary primarybak

从自动备份中恢复控制文件

[oracle@standby oradata]$ rman target /

Recovery Manager: Release Production

Copyright (c) Oracle Corporation All rights reserved

connected to target database (not started)

RMAN> startup nomount;

Oracle instance started

Total System Global Area bytes

Fixed Size bytes

Variable Size bytes

Database Buffers bytes

Redo Buffers bytes

RMAN> restore controlfile to /opt/oracle/oradata/controlctl from autobackup;

Starting restore at MAR

using target database controlfile instead of recovery catalog

allocated channel: ORA_DISK_

channel ORA_DISK_: sid= devtype=DISK

RMAN: ===========================================================

RMAN: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN: ===========================================================

RMAN: failure of restore command at // ::

RMAN: must explicitly specify DBID with SET DBID command

RMAN> set DBID=

executing command: SET DBID

RMAN> restore controlfile to /opt/oracle/oradata/controlctl from autobackup;

Starting restore at MAR

using channel ORA_DISK_

channel ORA_DISK_: looking for autobackup on day:

channel ORA_DISK_: autobackup found: c

channel ORA_DISK_: controlfile restore from autobackup complete

Finished restore at MAR

RMAN> exit

Recovery Manager complete

你可能需要修改spfile文件

当然如果文件位置等信息没有变化就无需修改

[oracle@standby oradata]$ sqlplus / as sysdba

SQL*Plus: Release Production on Wed Mar ::

Copyright (c) Oracle Corporation All rights reserved

Connected to:

Oraclei Enterprise Edition Release Production

With the Partitioning option

JServer Release Production

SQL> create pfile from spfile;

File created

SQL> !

[oracle@standby oradata]$ cd $ORACLE_HOME/dbs

[oracle@standby dbs]$ vi initprimaryora

*aq_tm_processes=

*background_dump_dest=/opt/oracle/admin/primary/bdump

patible=

ntrol_files=/opt/oracle/oradata/controlctl

re_dump_dest=/opt/oracle/admin/primary/cdump

*db_block_size=

*db_cache_size=

*db_domain=

*db_file_multiblock_read_count=

*db_name=primary

*fast_start_mttr_target=

*hash_join_enabled=TRUE

*instance_name=primary

*java_pool_size=

*job_queue_processes=

*large_pool_size=

*log_archive_dest_=LOCATION=/opt/oracle/oradata/primary/archive

*log_archive_format=%t_%sdbf

*log_archive_start=true

*open_cursors=

*pga_aggregate_target=

*processes=

*query_rewrite_enabled=FALSE

*remote_login_passwordfile=EXCLUSIVE

*resource_manager_plan=SYSTEM_PLAN

*shared_pool_size=

*sort_area_size=

*star_transformation_enabled=FALSE

*timed_statistics=TRUE

*undo_management=AUTO

*undo_retention=

*undo_tablespace=UNDOTBS

*user_dump_dest=/opt/oracle/admin/primary/udump

*utl_file_dir=/opt/oracle

~

~

~

~

~

initprimaryora L C written

[oracle@standby dbs]$ exit

exit

SQL> shutdown immediate;

ORA: database not mounted

ORACLE instance shut down

SQL> create spfile from pfile;

File created

SQL> startup mount;

ORACLE instance started

Total System Global Area bytes

Fixed Size bytes

Variable Size bytes

Database Buffers bytes

Redo Buffers bytes

Database mounted

SQL> exit

Disconnected from Oraclei Enterprise Edition Release Production

With the Partitioning option

JServer Release Production

使用rman进行恢复

[oracle@standby oradata]$ rman target /

Recovery Manager: Release Production

Copyright (c) Oracle Corporation All rights reserved

connected to target database: PRIMARY (DBID=)

RMAN> restore database;

Starting restore at MAR

using target database controlfile instead of recovery catalog

allocated channel: ORA_DISK_

channel ORA_DISK_: sid= devtype=DISK

channel ORA_DISK_: starting datafile backupset restore

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

restoring datafile to /opt/oracle/oradata/primary/systemdbf

restoring datafile to /opt/oracle/oradata/primary/undotbsdbf

restoring datafile to /opt/oracle/oradata/primary/usersdbf

channel ORA_DISK_: restored backup piece

piece handle=/opt/oracle/orabak/full_PRIMARY__ tag=TAGT params=NULL

channel ORA_DISK_: restore complete

Finished restore at MAR

RMAN> recover database;

Starting recover at MAR

using channel ORA_DISK_

starting media recovery

channel ORA_DISK_: starting archive log restore to default destination

channel ORA_DISK_: restoring archive log

archive log thread= sequence=

channel ORA_DISK_: restored backup piece

piece handle=/opt/oracle/orabak/arch_PRIMARY__ tag=TAGT params=NULL

channel ORA_DISK_: restore complete

archive log filename=/opt/oracle/oradata/primary/archive_dbf thread= sequence=

unable to find archive log

archive log thread= sequence=

RMAN: ===========================================================

RMAN: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN: ===========================================================

RMAN: failure of recover command at // ::

RMAN: media recovery requesting unknown log: thread scn

RMAN> alter database open resetlogs;

database opened

RMAN>

至此恢复完成

上一篇:如何架构高性价比的分布式计算机集群(1)

下一篇:在 RedHat 环境手工建立tunnel