异机恢复操作
1.手动copy数据文件到新的目录
cp 源库的数据文件到新的目录
[oracle@10gdb 10gdb]$ scp *.dbf 192.168.90.17:/u01/app/oracle/oradata/zen/
oracle@192.168.90.17's password:
syszen01.dbf 100% 340MB 7.7MB/s 00:44
system01.dbf 100% 490MB 12.0MB/s 00:41
temp01.dbf 100% 20MB 10.0MB/s 00:02
undotbs01.dbf 100% 25MB 12.5MB/s 00:02
users01.dbf 100% 5128KB 5.0MB/s 00:01
zentbs01.dbf 100% 5128KB 5.0MB/s 00:01
2.通过对system数据文件头部信息找到数据库名称及字符集信息
[oracle@10gdb zen]$ dd if=system01.dbf of=zen bs=8192 skip=722 count=1
1+0 records in
1+0 records out
8192 bytes (8.2 kB) copied, 2.9e-05 seconds, 282 MB/s
查看具体信息
[oracle@10gdb zen]$ strings zen
GLOBAL_DB_NAME%10GDB.REGRESS.RDBMS.DEV.US.ORACLE.COM --dbname为10gdb
Global database name,
DBTIMEZONE
00:00
DB time zone,
EXPORT_VIEWS_VERSION
Export views revision #,
GLOBAL_DB_NAME(SEEDDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM
Global database name,
NLS_RDBMS_VERSION
10.2.0.1.0 RDBMS version for NLS parameters,
NLS_NCHAR_CHARACTERSET AL16UTF16
NCHAR Character set,
NLS_NCHAR_CONV_EXCP
FALSE
NLS conversion exception,
NLS_LENGTH_SEMANTICS
BYTE
NLS length semantics,
NLS_COMP
BINARY
NLS comparison,
NLS_DUAL_CURRENCY
Dual currency symbol,
NLS_TIMESTAMP_TZ_FORMAT
DD-MON-RR HH.MI.SSXFF AM TZR
Timestamp with timezone format,
NLS_TIME_TZ_FORMAT
HH.MI.SSXFF AM TZR
Time with timezone format,
NLS_TIMESTAMP_FORMAT
DD-MON-RR HH.MI.SSXFF AM
Time stamp format,
NLS_TIME_FORMAT
HH.MI.SSXFF AM
Time format,
NLS_SORT
BINARY
Linguistic definition,
NLS_DATE_LANGUAGE
AMERICAN
Date language,
NLS_DATE_FORMAT DD-MON-RR
Date format,
NLS_CALENDAR GREGORIAN
Calendar system,
NLS_CHARACTERSET ---字符集ZHS16GBK
ZHS16GBK
Character set,
NLS_NUMERIC_CHARACTERS
Numeric characters,
NLS_ISO_CURRENCY
AMERICA
ISO currency,
NLS_CURRENCY
Local currency,
NLS_TERRITORY
AMERICA Territory,
NLS_LANGUAGE
AMERICAN
Language,
DEFAULT_TBS_TYPE SMALLFILE
Default tablespace type<
DEFAULT_PERMANENT_TABLESPACE
USERS$Name of default permanent tablespace,
DEFAULT_TEMP_TABLESPACE
TEMP$Name of default temporary tablespace,
DICT.BASE
dictionary base tables version #
3.编写参数文件
手动写一个pfile
vim 1.ora
*.audit_file_dest='/u01/app/oracle/admin/zen/adump'
*.background_dump_dest='/u01/app/oracle/admin/zen/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u01/app/oracle/oradata/zen/control01.ctl','/u01/app/oracle/oradata/zen/control02.ctl','/u01/app/oracle/oradata/zen/control03.ctl'
*.core_dump_dest='/u01/app/oracle/admin/zen/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='10gdb' ---数据库名称要与system头部信息一致
*.db_unique_name='zen' ---要恢复的实例名称
*.dispatchers='(PROTOCOL=TCP) (SERVICE=10gdbXDB)'
*.job_queue_processes=10
*.log_archive_dest_1='location=/u01/app/oracle/arch1'
*.open_cursors=300
*.pga_aggregate_target=252706816
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=758120448
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/zen/udump'
*._allow_resetlogs_corruption=true ---由于是不完全恢复因此以下两个参数必须要添加。
*._allow_terminal_recovery_corruption=true
4.通过手写的参数文件启动数据库到nomount
startup nomount pfile='/home/oracle/1.ora'
5.手动创建控制文件
CREATE CONTROLFILE REUSE DATABASE "10GDB" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/zen/redo01.log' SIZE 50M,
GROUP 2 '/u01/app/oracle/oradata/zen/redo02.log' SIZE 50M,
GROUP 3 '/u01/app/oracle/oradata/zen/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/zen/system01.dbf',
'/u01/app/oracle/oradata/zen/undotbs01.dbf',
'/u01/app/oracle/oradata/zen/syszen01.dbf',
'/u01/app/oracle/oradata/zen/users01.dbf',
'/u01/app/oracle/oradata/zen/zentbs01.dbf'
CHARACTER SET ZHS16GBK
;
dbname和字符集均由system数据文件查出。
6.将归档迁移到恢复服务器中,存放位置与参数文件一致 从源端scp到目标端
[oracle@10gdb ~]$ cd /u01/app/oracle/arch
[oracle@10gdb arch]$ ll
total 73152
-rw-r----- 1 oracle dba 2104832 Mar 7 15:37 1_10_1130749717.dbf
-rw-r----- 1 oracle dba 48741888 Mar 7 09:28 1_1_1130749717.dbf
-rw-r----- 1 oracle dba 1024 Mar 7 09:28 1_2_1130749717.dbf
-rw-r----- 1 oracle dba 1024 Mar 7 09:28 1_3_1130749717.dbf
-rw-r----- 1 oracle dba 1024 Mar 7 09:28 1_4_1130749717.dbf
-rw-r----- 1 oracle dba 74752 Mar 7 09:30 1_5_1130749717.dbf
-rw-r----- 1 oracle dba 23804416 Mar 7 13:25 1_6_1130749717.dbf
-rw-r----- 1 oracle dba 1024 Mar 7 13:25 1_7_1130749717.dbf
-rw-r----- 1 oracle dba 1024 Mar 7 13:25 1_8_1130749717.dbf
-rw-r----- 1 oracle dba 60928 Mar 7 13:26 1_9_1130749717.dbf
[oracle@10gdb arch]$ scp * 192.168.90.17:/u01/app/oracle/arch1/
oracle@192.168.90.17's password:
1_10_1130749717.dbf 100% 2056KB 2.0MB/s 00:00
1_1_1130749717.dbf 100% 46MB 7.8MB/s 00:06
1_2_1130749717.dbf 100% 1024 1.0KB/s 00:00
1_3_1130749717.dbf 100% 1024 1.0KB/s 00:00
1_4_1130749717.dbf 100% 1024 1.0KB/s 00:00
1_5_1130749717.dbf 100% 73KB 73.0KB/s 00:00
1_6_1130749717.dbf 100% 23MB 7.6MB/s 00:03
1_7_1130749717.dbf 100% 1024 1.0KB/s 00:00
1_8_1130749717.dbf 100% 1024 1.0KB/s 00:00
1_9_1130749717.dbf 100% 60KB 59.5KB/s 00:00
在恢复的数据库中注册归档文件:
alter database register physical logfile '/u01/app/oracle/arch1/1_1_1130749717.dbf';
alter database register physical logfile '/u01/app/oracle/arch1/1_2_1130749717.dbf';
alter database register physical logfile '/u01/app/oracle/arch1/1_3_1130749717.dbf';
alter database register physical logfile '/u01/app/oracle/arch1/1_4_1130749717.dbf';
alter database register physical logfile '/u01/app/oracle/arch1/1_5_1130749717.dbf';
alter database register physical logfile '/u01/app/oracle/arch1/1_6_1130749717.dbf';
alter database register physical logfile '/u01/app/oracle/arch1/1_7_1130749717.dbf';
alter database register physical logfile '/u01/app/oracle/arch1/1_8_1130749717.dbf';
alter database register physical logfile '/u01/app/oracle/arch1/1_9_1130749717.dbf';
alter database register physical logfile '/u01/app/oracle/arch1/1_10_1130749717.dbf';
恢复数据库
相关的报错信息不用管,因为使用的until cancel,因此会恢复到报错归档的前一个。
SQL> recover database using backup controlfile until cancel
ORA-00279: change 1834585 generated at 03/09/2023 10:14:21 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/arch1/1_12_1130749717.dbf
ORA-00280: change 1834585 for thread 1 is in sequence #12
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log '/u01/app/oracle/arch1/1_12_1130749717.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-00308: cannot open archived log '/u01/app/oracle/arch1/1_12_1130749717.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
8.查询控制文件记录的scn号与数据文件头部记录scn号是否一致
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1834585
2 1834585
3 1834585
4 1834585
5 1834585
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1834585
2 1834585
3 1834585
4 1834585
5 1834585
使用open resetlogs进行开启数据库
SQL> alter database open resetlogs;
Database altered.
10.后续操作
导出所需要的所有表内容,此数据库只能临时使用,不能用于正式环境。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




