首页 > Linux操作系统 > Linux操作系统 > 只有RMAN数据文件备份恢复过程
只有RMAN数据文件备份恢复过程
(欢迎转载frog create http://space.itpub.net/22779291/)
步骤:
1.建立密码文件,参数文件,数据存放目录,日志存放目录.
2.指定ORACLE_SID,然后通过dbms_backup_restore从备份中读出数据文件
3.建立控制文件
4.加日志参数后resetlogs生成日志文件
5.全备数据库测试交易是否存在,并全备
模拟环境:
RMAN> backup database format '/opt/oracle/back/full_%d_%T_%s';
RMAN> list backup;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
29 Full 650.94M DISK 00:01:25 24-MAY-10
BP Key: 30 Status: AVAILABLE Compressed: NO Tag: FULL_BACK
Piece Name: /opt/oracle/back/full_TMORCL_20100524_37
List of Datafiles in backup set 29
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
1 Full 3913413 24-MAY-10 /opt/oracle/oradata/tmorcl/system01.dbf
2 Full 3913413 24-MAY-10 /opt/oracle/oradata/tmorcl/undotbs01.dbf
3 Full 3913413 24-MAY-10 /opt/oracle/oradata/tmorcl/sysaux01.dbf
4 Full 3913413 24-MAY-10 /opt/oracle/oradata/tmorcl/users01.dbf
7 Full 3913413 24-MAY-10 /opt/oracle/oradata/tmorcl/low.dbf
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
30 Full 7.08M DISK 00:00:01 24-MAY-10
BP Key: 31 Status: AVAILABLE Compressed: NO Tag: FULL_BACK
Piece Name: /opt/oracle/back/full_TMORCL_20100524_38
Control File Included: Ckp SCN: 3913468 Ckp time: 24-MAY-10
SPFILE Included: Modification time: 22-MAY-10
oracle@linux-rpu7:~> echo $ORACLE_SID
tmorcl
oracle@linux-rpu7:~> cd /opt/oracle/product/10.2/db_1/dbs/
oracle@linux-rpu7:~/product/10.2/db_1/dbs> ls
hc_temobi.dat initdw.ora init.ora inittemobi.ora lkTEMOBI snapcf_tmorcl.f spfiletemobi.ora
oracle@linux-rpu7:~/product/10.2/db_1/dbs> cd /opt/oracle/oradata/
oracle@linux-rpu7:~/oradata> ls
temobi
oracle@linux-rpu7:~/oradata> cd /opt/oracle/back/
oracle@linux-rpu7:~/back> ls
backup.log backuup.sh full_TMORCL_20100524_37 full_TMORCL_20100524_38
在该台电脑上面已经没有TMORCL相关的数据文件,参数文件,日志文件,控制文件。没有其他可用的备份文件,只有RMAN备份的数据文件存在。
数据库启动需要数据文件,参数文件,控制文件。
恢复过程:
1。建立实例TMORCL必须的目录,密码文件,参数文件
目录:
oracle@linux-rpu7:~> mkdir /opt/oracle/oradata/tmorcl
oracle@linux-rpu7:~> mkdir /opt/oracle/admin/tmorcl/adump -p
oracle@linux-rpu7:~> mkdir /opt/oracle/admin/tmorcl/cdump
oracle@linux-rpu7:~> mkdir /opt/oracle/admin/tmorcl/bdump
oracle@linux-rpu7:~> mkdir /opt/oracle/admin/tmorcl/udump
oracle@linux-rpu7:~> mkdir /opt/oracle/admin/tmorcl/dpdump
oracle@linux-rpu7:~> cd /opt/oracle/admin/tmorcl/
oracle@linux-rpu7:~/admin/tmorcl> ls
adump bdump cdump dpdump udump
建立密码文件:
oracle@linux-rpu7:~> orapwd file=/opt/oracle/product/10.2/db_1/dbs/orapwtmorcl password=qingsheng entries=5
建立参数文件:
oracle@linux-rpu7:~/product/10.2/db_1/dbs> pwd
/opt/oracle/product/10.2/db_1/dbs
oracle@linux-rpu7:~/product/10.2/db_1/dbs> vi inittmorcl.ora
tmorcl.__db_cache_size=62914560
tmorcl.__java_pool_size=4194304
tmorcl.__large_pool_size=4194304
tmorcl.__shared_pool_size=88080384
tmorcl.__streams_pool_size=4194304
*.audit_file_dest='/opt/oracle/admin/tmorcl/adump'
*.background_dump_dest='/opt/oracle/admin/tmorcl/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/opt/oracle/oradata/tmorcl/control01.ctl','/opt/oracle/oradata/tmorcl/control02.ctl','/opt/oracle/oradata/tmorcl/co
ntrol03.ctl'
*.core_dump_dest='/opt/oracle/admin/tmorcl/cdump'
*.db_block_checksum='TYPICAL'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='tmorcl'
*.db_recovery_file_dest='/opt/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=5368709120
*.dispatchers='(PROTOCOL=TCP) (SERVICE=tmorclXDB)'
*.job_queue_processes=10
*.log_archive_format='%t_%s_%r.dbf'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/opt/oracle/admin/tmorcl/udump'
建立了参数文件,数据库可以启动到nomount状态了。
oracle@linux-rpu7:~> export ORACLE_SID=TMORCL
oracle@linux-rpu7:~> sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Mon May 24 15:42:03 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to an idle instance.
SQL> startup force nomount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1266392 bytes
Variable Size 100666664 bytes
Database Buffers 62914560 bytes
Redo Buffers 2924544 bytes
SQL> ho ls /opt/oracle/oradata/tmorcl 没有数据文件存在。
SQL>
2.使用DMBS_BACKUP_RESTORE提取数据文件。
SQL> declare
2 devtype varchar2(256);
3 done boolean;
4 begin
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>1,toname=>'/opt/oracle/oradata/tmorcl/system01.dbf');
8 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>2,toname=>'/opt/oracle/oradata/tmorcl/undotbs01.dbf');
9 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>3,toname=>'/opt/oracle/oradata/tmorcl/sysaux01.dbf');
10 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>4,toname=>'/opt/oracle/oradata/tmorcl/users01.dbf');
11 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>7,toname=>'/opt/oracle/oradata/tmorcl/low.dbf');
12 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/opt/oracle/back/full_TMORCL_20100524_37',params=>null);
13 sys.dbms_backup_restore.deviceDeallocate;
14 end;
15 /
declare
*
ERROR at line 1:
ORA-19568: a device is already allocated to this session
ORA-06512: at "SYS.X$DBMS_BACKUP_RESTORE", line 173
ORA-06512: at "SYS.X$DBMS_BACKUP_RESTORE", line 148
ORA-06512: at line 5
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup force nomount;
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1266392 bytes
Variable Size 100666664 bytes
Database Buffers 62914560 bytes
Redo Buffers 2924544 bytes
SQL> cle scr
SQL> declare
2 devtype varchar2(256);
3 done boolean;
4 begin
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>1,toname=>'/opt/oracle/oradata/tmorcl/system01.dbf');
8 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>2,toname=>'/opt/oracle/oradata/tmorcl/undotbs01.dbf');
9 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>3,toname=>'/opt/oracle/oradata/tmorcl/sysaux01.dbf');
10 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>4,toname=>'/opt/oracle/oradata/tmorcl/users01.dbf');
11 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>7,toname=>'/opt/oracle/oradata/tmorcl/low.dbf');
12 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/opt/oracle/back/full_TMORCL_20100524_37',params=>null);
13 sys.dbms_backup_restore.deviceDeallocate;
14 end;
15 /
PL/SQL procedure successfully completed.
SQL> ho ls -l /opt/oracle/oradata/tmorcl/ 数据文件已经恢复。
total 1559321
-rw-r----- 1 oracle oinstall 10493952 2010-05-24 16:21 low.dbf
-rw-r----- 1 oracle oinstall 346038272 2010-05-24 16:22 sysaux01.dbf
-rw-r----- 1 oracle oinstall 534781952 2010-05-24 16:22 system01.dbf
-rw-r----- 1 oracle oinstall 340795392 2010-05-24 16:21 undotbs01.dbf
-rw-r----- 1 oracle oinstall 363077632 2010-05-24 16:21 users01.dbf
http://www.itpub.net/viewthread.php?tid=862625&extra=&page=2 关于DBMS_BACKUP_RESTORE的一个讨论
3.建立控制文件
SQL> create controlfile set database "TMORCL" resetlogs noarchivelog
2 maxlogfiles 16
3 maxlogmembers 3
4 maxdatafiles 100
5 maxinstances 8
6 maxloghistory 292
7 logfile
8 group 1 '/opt/oracle/oradata/tmorcl/redo01.log' size 50m,
9 group 2 '/opt/oracle/oradata/tmorcl/redo02.log' size 50m,
10 group 3 '/opt/oracle/oradata/tmorcl/redo03.log' size 50m
11 datafile
12 '/opt/oracle/oradata/tmorcl/system01.dbf',
13 '/opt/oracle/oradata/tmorcl/sysaux01.dbf',
14 '/opt/oracle/oradata/tmorcl/undotbs01.dbf',
15 '/opt/oracle/oradata/tmorcl/users01.dbf',
16 '/opt/oracle/oradata/tmorcl/low.dbf'
17 character set zhs16gbk;
Control file created.
SQL> alter database open resetlogs;
Database altered.
SQL> ho ls -l /opt/oracle/oradata/tmorcl/
total 1734752
-rw-r----- 1 oracle oinstall 7389184 2010-05-24 16:35 control01.ctl
-rw-r----- 1 oracle oinstall 7389184 2010-05-24 16:35 control02.ctl
-rw-r----- 1 oracle oinstall 7389184 2010-05-24 16:35 control03.ctl
-rw-r----- 1 oracle oinstall 10493952 2010-05-24 16:35 low.dbf
-rw-r----- 1 oracle oinstall 52429312 2010-05-24 16:35 redo01.log
-rw-r----- 1 oracle oinstall 52429312 2010-05-24 16:35 redo02.log
-rw-r----- 1 oracle oinstall 52429312 2010-05-24 16:35 redo03.log
-rw-r----- 1 oracle oinstall 346038272 2010-05-24 16:35 sysaux01.dbf
-rw-r----- 1 oracle oinstall 534781952 2010-05-24 16:35 system01.dbf
-rw-r----- 1 oracle oinstall 340795392 2010-05-24 16:35 undotbs01.dbf
-rw-r----- 1 oracle oinstall 363077632 2010-05-24 16:35 users01.dbf
到此步,控制文件已经建立完成。
4。生成日志文件
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1266392 bytes
Variable Size 100666664 bytes
Database Buffers 62914560 bytes
Redo Buffers 2924544 bytes
Database mounted.
Database opened.
SQL> ho ls -l /opt/oracle/oradata/tmorcl/ 日志文件生成
total 1734752
-rw-r----- 1 oracle oinstall 7389184 2010-05-24 16:37 control01.ctl
-rw-r----- 1 oracle oinstall 7389184 2010-05-24 16:37 control02.ctl
-rw-r----- 1 oracle oinstall 7389184 2010-05-24 16:37 control03.ctl
-rw-r----- 1 oracle oinstall 10493952 2010-05-24 16:36 low.dbf
-rw-r----- 1 oracle oinstall 52429312 2010-05-24 16:36 redo01.log
-rw-r----- 1 oracle oinstall 52429312 2010-05-24 16:36 redo02.log
-rw-r----- 1 oracle oinstall 52429312 2010-05-24 16:36 redo03.log
-rw-r----- 1 oracle oinstall 346038272 2010-05-24 16:36 sysaux01.dbf
-rw-r----- 1 oracle oinstall 534781952 2010-05-24 16:36 system01.dbf
-rw-r----- 1 oracle oinstall 340795392 2010-05-24 16:36 undotbs01.dbf
-rw-r----- 1 oracle oinstall 363077632 2010-05-24 16:36 users01.dbf
SQL> create spfile from pfile;
File created.
至此,数据库已经恢复完成。
后续工作,备份数据库。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22779291/viewspace-663518/ ,如需转载,请注明出处,否则将追究法律责任。