数据迁移系列-oracle故障01-数据库迁移实现02

数据迁移系列-oracle故障02-数据库迁移实现01(全备环节)

环境描述:
原有双节点RAC集群由于数据库故障,导致不能启动,经综合评估,备份软件有10天前的备份,经过分析和用户的沟通,最终用户选择了,
1.由备份软件恢复数据库到一台单机,恢复成功后,备份软件对新的单机做定期备份。单机采用IP为dbscan IP这样对应用基本没有影响。
2.单机运行2个周,确保数据正常的情况下,将原有RAC集群清理,重新搭建RAC环境。
3.将单机数据库生产数据数据迁移至新的RAC环境。备份软件对新的RAC环境设置定期备份策略。

本次文章,中间环节忽略,只做第3个步骤的数据库迁移。

环境:
单机生产库: 172.19.4.15/24 root/WWW.root123

RAC目标库: root/Huawei@123
#public ip ent1
172.19.4.11 rac01
172.19.4.12 rac02
#priv ip ent2
10.10.10.1 rac01prv
10.10.10.2 rac02prv
#vip ip
172.19.4.13 rac01vip
172.19.4.14 rac02vip
#scan ip
172.19.4.15 racscan

注意:由于环境有IP冲突的问题,有些步骤是按非常规处理。

迁移步骤:
2024-09-15晚上
1.对RAC02数据库服务器更改root密码
2.备份现有单机数据库racdb全备(几小时)

2024-09-16早上
1.传输文件到rac节点1(速率较低,不影响业务,等待即可)
2.对数据库服务器执行第二次增量备份
3.关闭数据库,此时已经影响业务。(因为假期,可停机时间足以满足整体迁移,所以此步停业务迁移)
4.对RAC环境做调整,清空原有数据库信息。
5.执行异机恢复,使用归档做二次追加推到最新时间点
6.做集群后续调整
7.开启集群服务
8.应用测试数据库,检查数据情况

--创建数据库全备
$mkdir -p /oracle/app/oracle/bak240915/racdb  

RMAN> show all;

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name RACDB are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
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 COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/app/oracle/product/11.2.0/db_1/dbs/snapcf_racdb.f'; # default

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
RMAN> show all;

RMAN configuration parameters for database with db_unique_name RACDB are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
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 COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/app/oracle/product/11.2.0/db_1/dbs/snapcf_racdb.f'; # default

RMAN> 

[oracle@racdb:/home/oracle]$sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sun Sep 15 00:36:57 2024

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select name,open_mode from v$database;

NAME      OPEN_MODE
--------- --------------------
RACDB     READ WRITE

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /oracle/app/oracle/oradata/archive
Oldest online log sequence     448
Next log sequence to archive   452
Current log sequence           452
SQL> 

[root@racdb ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/sda2                      90G   20G   66G  24% /
tmpfs                          64G  300K   64G   1% /dev/shm
/dev/sda1                    1008M   62M  896M   7% /boot
/dev/mapper/datavg-oradatalv 1007G  255G  702G  27% /oracle/app/oracle/oradata


--备份数据库
rman target /
crosscheck archivelog all;
crosscheck backup;
delete expired archivelog all;
delete expired backup;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
--备份脚本
run
{
allocate channel d1 type disk;
sql 'alter system archive log current';
backup format '/bak/racdb/racdbfull_%U' database include current controlfile plus archivelog ;
release channel d1;
}
--查看备份进度
SELECT SID, SERIAL#, OPNAME, 
       TO_CHAR(START_TIME, 'YYYY-MM-DD HH24:MI:SS') START_TIME, 
       SOFAR, TOTALWORK,
       CEIL(ELAPSED_SECONDS/60) ELAPSED_MI, 
       ROUND(SOFAR/TOTALWORK*100,2) "%COMPLETE"
FROM V$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%'
AND SOFAR <> TOTALWORK
AND TOTALWORK <> 0
ORDER BY START_TIME ASC;

---------
[oracle@racdb:/bak]$rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Sun Sep 15 01:39:57 2024

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: RACDB (DBID=983004276)

RMAN> run
2> {
3> allocate channel d1 type disk;
4> sql 'alter system archive log current';
5> backup format '/bak/racdb/racdbfull_%U' database include current controlfile plus archivelog ;
6> release channel d1;
7> }

using target database control file instead of recovery catalog
allocated channel: d1
channel d1: SID=6607 device type=DISK

sql statement: alter system archive log current


Starting backup at 2024-09-15 01:40:06
current log archived
skipping archived logs of thread 1 from sequence 370 to 457; already backed up
channel d1: starting archived log backup set
channel d1: specifying archived log(s) in backup set
input archived log thread=1 sequence=458 RECID=461 STAMP=1179711606
input archived log thread=1 sequence=459 RECID=462 STAMP=1179711606
channel d1: starting piece 1 at 2024-09-15 01:40:06
channel d1: finished piece 1 at 2024-09-15 01:40:07
piece handle=/bak/racdb/racdbfull_3o351u3m_1_1 tag=TAG20240915T014006 comment=NONE
channel d1: backup set complete, elapsed time: 00:00:01
Finished backup at 2024-09-15 01:40:07

Starting backup at 2024-09-15 01:40:07
channel d1: starting full datafile backup set
channel d1: specifying datafile(s) in backup set
input datafile file number=00002 name=/oracle/app/oracle/oradata/df2_sysaux.263.985387525
input datafile file number=00006 name=/oracle/app/oracle/oradata/df6_ts_zsj_d01.dbf
input datafile file number=00007 name=/oracle/app/oracle/oradata/df7_dev_odi_user01.dbf
input datafile file number=00013 name=/oracle/app/oracle/oradata/df2_sysaux02
input datafile file number=00010 name=/oracle/app/oracle/oradata/df10_dev_odi_user02.dbf
input datafile file number=00004 name=/oracle/app/oracle/oradata/df4_undotbs2.266.985387551
input datafile file number=00001 name=/oracle/app/oracle/oradata/df1_system.262.985387513
input datafile file number=00003 name=/oracle/app/oracle/oradata/df3_undotbs1.264.985387537
input datafile file number=00012 name=/oracle/app/oracle/oradata/df12_ts_zsj_d02.dbf
input datafile file number=00008 name=/oracle/app/oracle/oradata/df8_combanc.dbf
input datafile file number=00009 name=/oracle/app/oracle/oradata/df9_uum.dbf
input datafile file number=00011 name=/oracle/app/oracle/oradata/df11_dev1_odi_user.281.1101743941
input datafile file number=00005 name=/oracle/app/oracle/oradata/df5_users.267.985387561
channel d1: starting piece 1 at 2024-09-15 01:40:08
channel d1: finished piece 1 at 2024-09-15 03:09:23
piece handle=/bak/racdb/racdbfull_3p351u3o_1_1 tag=TAG20240915T014007 comment=NONE
channel d1: backup set complete, elapsed time: 01:29:15
channel d1: starting full datafile backup set
channel d1: specifying datafile(s) in backup set
including current control file in backup set
channel d1: starting piece 1 at 2024-09-15 03:09:24
channel d1: finished piece 1 at 2024-09-15 03:09:27
piece handle=/bak/racdb/racdbfull_3q3523b3_1_1 tag=TAG20240915T014007 comment=NONE
channel d1: backup set complete, elapsed time: 00:00:03
Finished backup at 2024-09-15 03:09:27

Starting backup at 2024-09-15 03:09:27
current log archived
channel d1: starting archived log backup set
channel d1: specifying archived log(s) in backup set
input archived log thread=1 sequence=460 RECID=463 STAMP=1179712673
input archived log thread=1 sequence=461 RECID=464 STAMP=1179712805
input archived log thread=1 sequence=462 RECID=465 STAMP=1179714465
input archived log thread=1 sequence=463 RECID=466 STAMP=1179716218
input archived log thread=1 sequence=464 RECID=467 STAMP=1179716227
input archived log thread=1 sequence=465 RECID=468 STAMP=1179716428
input archived log thread=1 sequence=466 RECID=469 STAMP=1179716497
input archived log thread=1 sequence=467 RECID=470 STAMP=1179716548
input archived log thread=1 sequence=468 RECID=471 STAMP=1179716967
channel d1: starting piece 1 at 2024-09-15 03:09:28
channel d1: finished piece 1 at 2024-09-15 03:10:33
piece handle=/bak/racdb/racdbfull_3r3523b8_1_1 tag=TAG20240915T030928 comment=NONE
channel d1: backup set complete, elapsed time: 00:01:05
Finished backup at 2024-09-15 03:10:33

Starting Control File and SPFILE Autobackup at 2024-09-15 03:10:33
piece handle=/oracle/app/oracle/product/11.2.0/db_1/dbs/c-983004276-20240915-00 comment=NONE
Finished Control File and SPFILE Autobackup at 2024-09-15 03:10:34

released channel: d1
----------------------

--备份参数文件
SQL> create pfile='/bak/racdb/single.pfile' from spfile;
[oracle@racdb:/bak/racdb]$ls /bak/racdb/
c-983004276-20240915-00  racdbfull_3o351u3m_1_1  racdbfull_3p351u3o_1_1  racdbfull_3q3523b3_1_1  racdbfull_3r3523b8_1_1  single.pfile

--查看RAC数据库节点1
[root@rac01 ~]# fdisk -l|grep /dev/sd
Disk /dev/sda: 214.7 GB, 214748364800 bytes
/dev/sda1   *           1          26      204800   83  Linux
/dev/sda2              26       17754   142400512   83  Linux
/dev/sda3           17754       26109    67108864   82  Linux swap / Solaris
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
Disk /dev/sde: 10.7 GB, 10737418240 bytes
Disk /dev/sdf: 10.7 GB, 10737418240 bytes
Disk /dev/sdd: 10.7 GB, 10737418240 bytes
Disk /dev/sdg: 10.7 GB, 10737418240 bytes
Disk /dev/sdi: 1649.3 GB, 1649267441664 bytes
Disk /dev/sdh: 1099.5 GB, 1099511627776 bytes
关机增加一块硬盘用于存放备份文件(这里主要是因为虚拟化环境,相对比较容易方便,物理机环境相对麻烦)
[root@rac01 ~]# init 0
[root@rac01 ~]# fdisk -l |grep /dev/sd
Disk /dev/sdb: 161.1 GB, 161061273600 bytes
Disk /dev/sde: 10.7 GB, 10737418240 bytes
Disk /dev/sdg: 10.7 GB, 10737418240 bytes
Disk /dev/sdh: 10.7 GB, 10737418240 bytes
Disk /dev/sdj: 1649.3 GB, 1649267441664 bytes
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
Disk /dev/sdf: 10.7 GB, 10737418240 bytes
Disk /dev/sda: 214.7 GB, 214748364800 bytes
/dev/sda1   *           1          26      204800   83  Linux
/dev/sda2              26       17754   142400512   83  Linux
/dev/sda3           17754       26109    67108864   82  Linux swap / Solaris
Disk /dev/sdi: 1099.5 GB, 1099511627776 bytes
Disk /dev/sdd: 10.7 GB, 10737418240 bytes

对磁盘分区,格式化,挂载目录
[root@rac01 ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xb98050a5.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sdb: 161.1 GB, 161061273600 bytes
255 heads, 63 sectors/track, 19581 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb98050a5

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19581, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-19581, default 19581): 
Using default value 19581

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@rac01 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
9830400 inodes, 39321087 blocks
1966054 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=4294967296
1200 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872

正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
You have mail in /var/spool/mail/root

#mkdir -p /bak/
mount /dev/sdb1 /bak
chown -R oracle:oinstall /bak
su - oracle
cd /bak
mkdir racdb
cd racdb

传输文件到rac其中一个节点
$scp -r 172.19.4.15:/bak/racdb/* .

RAC服务器2个节点
[root@rac01 ~]# /u01/app/11.2.0.4/grid/bin/crsctl start crs
CRS-4123: Oracle High Availability Services has been started.
[root@rac01 ~]# su - grid
[grid@rac01 ~]$ crsclt status res -t
[grid@rac01 ~]$ crsctl check crs
[grid@rac01 ~]$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  4194304   1048576        0                0               0              0             N  ARCHIVE/
MOUNTED  EXTERN  N         512   4096  4194304   1572864  1369756                0         1369756              0             N  DATA/
MOUNTED  HIGH    N         512   4096  4194304     61440    60044            20480           13188              0             Y  GRID/

由于RAC之前有DB已经坏了,但是能进入mount看一下目前参数文件的配置,这样后续调整的就比较少了。
[grid@rac01 ~]$ 

SQL> create pfile='/home/oracle/pfile.racdb' from spfile;

File created.

SQL> shutdown immediate;

[oracle@rac01 ~]$ cat /home/oracle/pfile.racdb 
racdb2.__db_cache_size=73819750400
racdb1.__db_cache_size=73819750400
racdb2.__java_pool_size=536870912
racdb1.__java_pool_size=536870912
racdb2.__large_pool_size=1073741824
racdb1.__large_pool_size=1073741824
racdb1.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
racdb2.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
racdb2.__pga_aggregate_target=22011707392
racdb1.__pga_aggregate_target=22011707392
racdb2.__sga_target=82678120448
racdb1.__sga_target=82678120448
racdb2.__shared_io_pool_size=0
racdb1.__shared_io_pool_size=0
racdb2.__shared_pool_size=6710886400
racdb1.__shared_pool_size=6710886400
racdb2.__streams_pool_size=0
racdb1.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/racdb/adump'
*.audit_trail='db'
*.cluster_database=true
*.compatible='11.2.0.4.0'
*.control_files='+DATA/racdb/controlfile/current.258.985387513'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_name='racdb'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=racdbXDB)'
racdb1.instance_number=1
racdb2.instance_number=2
*.log_archive_dest_1='location=+archive/'
*.open_cursors=300
*.pga_aggregate_target=21989687296
*.processes=2000
*.remote_listener='racscan:1521'
*.remote_login_passwordfile='exclusive'
*.sessions=2205
*.sga_target=82463162368
racdb2.thread=2
racdb1.thread=1
racdb2.undo_tablespace='UNDOTBS2'
racdb1.undo_tablespace='UNDOTBS1'
-------------------

[oracle@rac01 racdb]$ vi single.pfile

*.audit_file_dest='/u01/app/oracle/admin/racdb/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='+DATA','+ARCHIVE'
*.db_block_size=8192
*.db_domain=''
*.db_name='racdb'
*.diagnostic_dest='/u01/app/oracle'
*.open_cursors=3000
*.pga_aggregate_target=21989687296
*.processes=5000
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=2205
*.sga_target=82463162368

[oracle@rac01 racdb]$ vncserver

使用vnc 客户端连接rac01运行dbca删除原有的故障数据库
[oracle@rac01 racdb]$ dbca

节点1创建*.audit_file_dest *.diagnostic_dest 指定的目录
[oracle@rac01:/backup/racdb]$mkdir -p /u01/app/oracle/admin/racdb/adump
ssh rac02
[oracle@rac02:/backup/racdb]$mkdir -p /u01/app/oracle/admin/racdb/adump
exit

[oracle@fgerp61:/backup/fgerpdb]$sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Oct 19 05:24:22 2022

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

Connected to an idle instance.

SQL> startup pfile='/bak/racdb/single.pfile' nomount;

[oracle@rac01 racdb]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Sun Sep 15 10:44:55 2024

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: RACDB (not mounted)

恢复控制文件
RMAN> restore controlfile from '/bak/racdb/c-983004276-20240915-00';

Starting restore at 15-SEP-24
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=4709 device type=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=+DATA/racdb/controlfile/current.270.1179744369
output file name=+ARCHIVE/racdb/controlfile/current.5319.1179744369
Finished restore at 15-SEP-24

RMAN> exit

--根据恢复信息修改参数文件中的控制文件参数
[oracle@rac01 racdb]$ vi single.pfile

*.audit_file_dest='/u01/app/oracle/admin/racdb/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='+DATA/racdb/controlfile/current.270.1179744369','+ARCHIVE/racdb/controlfile/current.5319.1179744369'
*.db_block_size=8192
*.db_domain=''
*.db_name='racdb'
*.diagnostic_dest='/u01/app/oracle'
*.open_cursors=3000
*.pga_aggregate_target=21989687296
*.processes=5000
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=2205
*.sga_target=82463162368
----------------------------

[oracle@rac01 racdb]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sun Sep 15 10:51:56 2024

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> alter database mount;

Database altered.

--创建spfile文件

SQL> create spfile='+DATA' from  pfile='/bak/racdb/single.pfile';

File created.

SQL> 

--查看新创建的spfile文件
su - grid
asmcmd 
cd data/racdb/parameterfile/
ls
	+data/racdb/parameterfile/spfile.280.1179745045
[oracle@rac01 ~]$ cd cd $ORACLE_HOME/dbs^C
[oracle@rac01 ~]$ cd $ORACLE_HOME/dbs
[oracle@rac01 dbs]$ pwd
/u01/app/oracle/product/11.2.0.4/db_1/dbs
[oracle@rac01 dbs]$ ls
hc_racdb1.dat  init.ora  snapcf_racdb1.f
[oracle@rac01 dbs]$ vi initracdb1.ora
spfile="+data/racdb/parameterfile/spfile.280.1179745045"
节点2执行类似操作
[oracle@rac01 dbs]$ ssh rac02
Last login: Fri Aug 30 10:01:59 2024 from rac01
[oracle@rac02 ~]$ cd $ORACLE_HOME/dbs
[oracle@rac02 dbs]$  vi initracdb2.ora
spfile="+data/racdb/parameterfile/spfile.280.1179745045"

[oracle@rac02 dbs]$ exit
logout
Connection to rac02 closed.
You have mail in /var/spool/mail/oracle
[oracle@rac01 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sun Sep 15 11:05:06 2024

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 8.2309E+10 bytes
Fixed Size                  2262168 bytes
Variable Size            6442453864 bytes
Database Buffers         7.5699E+10 bytes
Redo Buffers              165494784 bytes
Database mounted.
SQL> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      +DATA/racdb/parameterfile/spfi
                                                 le.280.1179745045
SQL> 

--密码文件创建
[oracle@rac01 dbs]$ cd $ORACLE_HOME/dbs
[oracle@rac01 dbs]$ orapwd file=orapwracdb1 password=oracle
[oracle@rac01 dbs]$ ls
hc_racdb1.dat  init.ora  initracdb1.ora  orapwracdb1  snapcf_racdb1.f
[oracle@rac01 dbs]$ 

[oracle@rac01 dbs]$ ssh rac02
cd $ORACLE_HOME/dbs
orapwd file=orapwracdb2  password=oracleLast login: Sun Sep 15 11:03:30 2024 from rac01
cd $ORACLE_HOME/dbs
orapwd file=orapwracdb2  password=oracle[oracle@rac02 ~]$ cd $ORACLE_HOME/dbs
[oracle@rac02 dbs]$ orapwd file=orapwracdb2  password=oracle
[oracle@rac02 dbs]$ ls
hc_racdb2.dat  init.ora  initracdb2.ora  orapwracdb2
[oracle@rac02 dbs]$ 

--恢复数据文件
rman target /

run {
set newname for datafile '/oracle/app/oracle/oradata/df2_sysaux.263.985387525'				    to '+data';
set newname for datafile '/oracle/app/oracle/oradata/df6_ts_zsj_d01.dbf'                       to '+data';
set newname for datafile '/oracle/app/oracle/oradata/df7_dev_odi_user01.dbf'                   to '+data';
set newname for datafile '/oracle/app/oracle/oradata/df2_sysaux02'                             to '+data';
set newname for datafile '/oracle/app/oracle/oradata/df10_dev_odi_user02.dbf'                  to '+data';
set newname for datafile '/oracle/app/oracle/oradata/df4_undotbs2.266.985387551'               to '+data';
set newname for datafile '/oracle/app/oracle/oradata/df1_system.262.985387513'                 to '+data';
set newname for datafile '/oracle/app/oracle/oradata/df3_undotbs1.264.985387537'               to '+data';
set newname for datafile '/oracle/app/oracle/oradata/df12_ts_zsj_d02.dbf'                      to '+data';
set newname for datafile '/oracle/app/oracle/oradata/df8_combanc.dbf'                          to '+data';
set newname for datafile '/oracle/app/oracle/oradata/df9_uum.dbf'                              to '+data';
set newname for datafile '/oracle/app/oracle/oradata/df11_dev1_odi_user.281.1101743941'        to '+data';
set newname for datafile '/oracle/app/oracle/oradata/df5_users.267.985387561'                  to '+data';
restore DATABASE;
switch datafile all;
}

---------------前面的工作完,先暂停,等生产环境停机继续追增量恢复。上述工作可以任何时间做,不涉及停机,下面工作是等数据库可以停机的时候做。
远端单机备份归档日志
--备份归档日志
[oracle@racdb:/home/oracle]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Wed Oct 19 07:00:55 2022

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: FGERPDB (DBID=3402649552)

RMAN> run {
2>  allocate channel d1 type disk;
3>   sql 'alter system archive log current';
4>  backup
5>    tag db_arch
6>    format '/bak/racdb/racdb_arch_%s_%p_%t'
7>   (archivelog all);
8>   release channel d1;
9> }

RMAN> exit


Recovery Manager complete.
--备份完成要停止数据库,此时源端单机生产数据库应彻底停机
[oracle@racdb:/home/oracle]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Oct 19 07:01:19 2022

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> quit

将备份文件传到目标RAC节点1

[oracle@racdb:/bak/racdb]$scp -r *db_arch* 172.19.4.11:/bak/racdb/       
The authenticity of host '172.19.4.11 (172.19.4.11)' can't be established.
RSA key fingerprint is dd:39:ce:59:bf:96:52:b7:41:61:f2:b3:b0:c9:e0:23.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.19.4.11' (RSA) to the list of known hosts.
oracle@172.19.4.11's password: 
racdb_arch_125_1_1179747924                                                                                                                100%  181MB 181.3MB/s   00:01    
[oracle@racdb:/bak/racdb]$

目标节点1操作:
删除过期备份
RMAN> crosscheck backup;

using channel ORA_DISK_1
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/oracle/app/oracle/bak240915/racdb/racdbfull_3i351qhg_1_1 RECID=127 STAMP=1179707952
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/oracle/app/oracle/bak240915/racdb/racdbfull_3j351qjs_1_1 RECID=128 STAMP=1179708028
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/oracle/app/oracle/bak240915/racdb/racdbfull_3l351sak_1_1 RECID=129 STAMP=1179709780
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/oracle/app/oracle/bak240915/racdb/racdbfull_3n351u13_1_1 RECID=130 STAMP=1179711523
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdbfull_3o351u3m_1_1 RECID=131 STAMP=1179711606
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdbfull_3p351u3o_1_1 RECID=132 STAMP=1179711608
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdbfull_3q3523b3_1_1 RECID=133 STAMP=1179716964
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdbfull_3r3523b8_1_1 RECID=134 STAMP=1179716968
Crosschecked 8 objects


RMAN> delete expired backup;

using channel ORA_DISK_1

List of Backup Pieces
BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
127     112     1   1   EXPIRED     DISK        /oracle/app/oracle/bak240915/racdb/racdbfull_3i351qhg_1_1
128     113     1   1   EXPIRED     DISK        /oracle/app/oracle/bak240915/racdb/racdbfull_3j351qjs_1_1
129     114     1   1   EXPIRED     DISK        /oracle/app/oracle/bak240915/racdb/racdbfull_3l351sak_1_1
130     115     1   1   EXPIRED     DISK        /oracle/app/oracle/bak240915/racdb/racdbfull_3n351u13_1_1

Do you really want to delete the above objects (enter YES or NO)? yes
deleted backup piece
backup piece handle=/oracle/app/oracle/bak240915/racdb/racdbfull_3i351qhg_1_1 RECID=127 STAMP=1179707952
deleted backup piece
backup piece handle=/oracle/app/oracle/bak240915/racdb/racdbfull_3j351qjs_1_1 RECID=128 STAMP=1179708028
deleted backup piece
backup piece handle=/oracle/app/oracle/bak240915/racdb/racdbfull_3l351sak_1_1 RECID=129 STAMP=1179709780
deleted backup piece
backup piece handle=/oracle/app/oracle/bak240915/racdb/racdbfull_3n351u13_1_1 RECID=130 STAMP=1179711523
Deleted 4 EXPIRED objects


RMAN> crosscheck backup;

using channel ORA_DISK_1
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdbfull_3o351u3m_1_1 RECID=131 STAMP=1179711606
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdbfull_3p351u3o_1_1 RECID=132 STAMP=1179711608
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdbfull_3q3523b3_1_1 RECID=133 STAMP=1179716964
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdbfull_3r3523b8_1_1 RECID=134 STAMP=1179716968
Crosschecked 4 objects

注册目录,准备恢复归档
RMAN> catalog start with '/bak/racdb/';

searching for all files that match the pattern /bak/racdb/

List of Files Unknown to the Database
=====================================
File Name: /bak/racdb/single.pfile
File Name: /bak/racdb/single.pfile.bak
File Name: /bak/racdb/c-983004276-20240915-00
File Name: /bak/racdb/racdb_arch_125_1_1179747924

Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /bak/racdb/c-983004276-20240915-00
File Name: /bak/racdb/racdb_arch_125_1_1179747924

List of Files Which Where Not Cataloged
=======================================
File Name: /bak/racdb/single.pfile
  RMAN-07517: Reason: The file header is corrupted
File Name: /bak/racdb/single.pfile.bak
  RMAN-07517: Reason: The file header is corrupted

RMAN>  crosscheck backup;

using channel ORA_DISK_1
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdbfull_3o351u3m_1_1 RECID=131 STAMP=1179711606
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdbfull_3p351u3o_1_1 RECID=132 STAMP=1179711608
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdbfull_3q3523b3_1_1 RECID=133 STAMP=1179716964
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdbfull_3r3523b8_1_1 RECID=134 STAMP=1179716968
crosschecked backup piece: found to be 'AVAILABLE'
backup piece handle=/bak/racdb/racdb_arch_125_1_1179747924 RECID=135 STAMP=1179748909
Crosschecked 5 objects

--查看最新scn
--恢复如果有问题,则用第二个脚本,但需要Listbackup查看当前备份中最新的SCN
RMAN>  list backup;  --471
BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
120     181.27M    DISK        00:00:00     15-SEP-24      
        BP Key: 135   Status: AVAILABLE  Compressed: NO  Tag: DB_ARCH
        Piece Name: /bak/racdb/racdb_arch_125_1_1179747924

  List of Archived Logs in backup set 120
  Thrd Seq     Low SCN    Low Time  Next SCN   Next Time
  ---- ------- ---------- --------- ---------- ---------
  1    469     18886731271 15-SEP-24 18888744250 15-SEP-24
  1    470     18888744250 15-SEP-24 18888775898 15-SEP-24
  1    471     18888775898 15-SEP-24 18888775907 15-SEP-24

RMAN> 

run {
set archivelog destination to '/backup/racdb';
restore archivelog until sequence 471 thread 1;
}


ou have mail in /var/spool/mail/oracle
[oracle@rac01 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sun Sep 15 12:21:21 2024

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> !ls /bak/racdb/archive
1_370_1178396014.dbf  1_385_1178396014.dbf  1_400_1178396014.dbf  1_415_1178396014.dbf  1_430_1178396014.dbf  1_445_1178396014.dbf  1_460_1178396014.dbf
1_371_1178396014.dbf  1_386_1178396014.dbf  1_401_1178396014.dbf  1_416_1178396014.dbf  1_431_1178396014.dbf  1_446_1178396014.dbf  1_461_1178396014.dbf
1_372_1178396014.dbf  1_387_1178396014.dbf  1_402_1178396014.dbf  1_417_1178396014.dbf  1_432_1178396014.dbf  1_447_1178396014.dbf  1_462_1178396014.dbf
1_373_1178396014.dbf  1_388_1178396014.dbf  1_403_1178396014.dbf  1_418_1178396014.dbf  1_433_1178396014.dbf  1_448_1178396014.dbf  1_463_1178396014.dbf
1_374_1178396014.dbf  1_389_1178396014.dbf  1_404_1178396014.dbf  1_419_1178396014.dbf  1_434_1178396014.dbf  1_449_1178396014.dbf  1_464_1178396014.dbf
1_375_1178396014.dbf  1_390_1178396014.dbf  1_405_1178396014.dbf  1_420_1178396014.dbf  1_435_1178396014.dbf  1_450_1178396014.dbf  1_465_1178396014.dbf
1_376_1178396014.dbf  1_391_1178396014.dbf  1_406_1178396014.dbf  1_421_1178396014.dbf  1_436_1178396014.dbf  1_451_1178396014.dbf  1_466_1178396014.dbf
1_377_1178396014.dbf  1_392_1178396014.dbf  1_407_1178396014.dbf  1_422_1178396014.dbf  1_437_1178396014.dbf  1_452_1178396014.dbf  1_467_1178396014.dbf
1_378_1178396014.dbf  1_393_1178396014.dbf  1_408_1178396014.dbf  1_423_1178396014.dbf  1_438_1178396014.dbf  1_453_1178396014.dbf  1_468_1178396014.dbf
1_379_1178396014.dbf  1_394_1178396014.dbf  1_409_1178396014.dbf  1_424_1178396014.dbf  1_439_1178396014.dbf  1_454_1178396014.dbf  1_469_1178396014.dbf
1_380_1178396014.dbf  1_395_1178396014.dbf  1_410_1178396014.dbf  1_425_1178396014.dbf  1_440_1178396014.dbf  1_455_1178396014.dbf  1_470_1178396014.dbf
1_381_1178396014.dbf  1_396_1178396014.dbf  1_411_1178396014.dbf  1_426_1178396014.dbf  1_441_1178396014.dbf  1_456_1178396014.dbf  1_471_1178396014.dbf
1_382_1178396014.dbf  1_397_1178396014.dbf  1_412_1178396014.dbf  1_427_1178396014.dbf  1_442_1178396014.dbf  1_457_1178396014.dbf  2_133394_985387508.dbf
1_383_1178396014.dbf  1_398_1178396014.dbf  1_413_1178396014.dbf  1_428_1178396014.dbf  1_443_1178396014.dbf  1_458_1178396014.dbf  2_133395_985387508.dbf
1_384_1178396014.dbf  1_399_1178396014.dbf  1_414_1178396014.dbf  1_429_1178396014.dbf  1_444_1178396014.dbf  1_459_1178396014.dbf  thread_2_seq_133395.2952.1175357867

SQL> set logsource '/bak/racdb/archive';
SQL> recover database using backup controlfile
ORA-00279: change 18886132619 generated at 09/15/2024 01:40:08 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_460_1178396014.dbf
ORA-00280: change 18886132619 for thread 1 is in sequence #460


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00279: change 18886165361 generated at 09/15/2024 01:57:53 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_461_1178396014.dbf
ORA-00280: change 18886165361 for thread 1 is in sequence #461
ORA-00278: log file '/bak/racdb/archive/1_460_1178396014.dbf' no longer needed
for this recovery


ORA-00279: change 18886169916 generated at 09/15/2024 02:00:05 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_462_1178396014.dbf
ORA-00280: change 18886169916 for thread 1 is in sequence #462
ORA-00278: log file '/bak/racdb/archive/1_461_1178396014.dbf' no longer needed
for this recovery


ORA-00279: change 18886187800 generated at 09/15/2024 02:27:45 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_463_1178396014.dbf
ORA-00280: change 18886187800 for thread 1 is in sequence #463
ORA-00278: log file '/bak/racdb/archive/1_462_1178396014.dbf' no longer needed
for this recovery


ORA-00279: change 18886537979 generated at 09/15/2024 02:56:57 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_464_1178396014.dbf
ORA-00280: change 18886537979 for thread 1 is in sequence #464
ORA-00278: log file '/bak/racdb/archive/1_463_1178396014.dbf' no longer needed
for this recovery


ORA-00279: change 18886545885 generated at 09/15/2024 02:57:06 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_465_1178396014.dbf
ORA-00280: change 18886545885 for thread 1 is in sequence #465
ORA-00278: log file '/bak/racdb/archive/1_464_1178396014.dbf' no longer needed
for this recovery


ORA-00279: change 18886596556 generated at 09/15/2024 03:00:27 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_466_1178396014.dbf
ORA-00280: change 18886596556 for thread 1 is in sequence #466
ORA-00278: log file '/bak/racdb/archive/1_465_1178396014.dbf' no longer needed
for this recovery


ORA-00279: change 18886623587 generated at 09/15/2024 03:01:36 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_467_1178396014.dbf
ORA-00280: change 18886623587 for thread 1 is in sequence #467
ORA-00278: log file '/bak/racdb/archive/1_466_1178396014.dbf' no longer needed
for this recovery


ORA-00279: change 18886643306 generated at 09/15/2024 03:02:28 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_468_1178396014.dbf
ORA-00280: change 18886643306 for thread 1 is in sequence #468
ORA-00278: log file '/bak/racdb/archive/1_467_1178396014.dbf' no longer needed
for this recovery


ORA-00279: change 18886731271 generated at 09/15/2024 03:09:27 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_469_1178396014.dbf
ORA-00280: change 18886731271 for thread 1 is in sequence #469
ORA-00278: log file '/bak/racdb/archive/1_468_1178396014.dbf' no longer needed
for this recovery


ORA-00279: change 18888744250 generated at 09/15/2024 06:00:14 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_470_1178396014.dbf
ORA-00280: change 18888744250 for thread 1 is in sequence #470
ORA-00278: log file '/bak/racdb/archive/1_469_1178396014.dbf' no longer needed
for this recovery


ORA-00279: change 18888775898 generated at 09/15/2024 11:45:24 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_471_1178396014.dbf
ORA-00280: change 18888775898 for thread 1 is in sequence #471
ORA-00278: log file '/bak/racdb/archive/1_470_1178396014.dbf' no longer needed
for this recovery


ORA-00279: change 18888775907 generated at 09/15/2024 11:45:24 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_472_1178396014.dbf
ORA-00280: change 18888775907 for thread 1 is in sequence #472
ORA-00278: log file '/bak/racdb/archive/1_471_1178396014.dbf' no longer needed
for this recovery


ORA-00308: cannot open archived log '/bak/racdb/archive/1_472_1178396014.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

SQL> recover database using backup controlfile until cancel;
ORA-00279: change 18888775907 generated at 09/15/2024 11:45:24 needed for
thread 1
ORA-00289: suggestion : /bak/racdb/archive/1_472_1178396014.dbf
ORA-00280: change 18888775907 for thread 1 is in sequence #472


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> 

有需要汇报模板的可以到一下网址,免费下载哦。
https://download.csdn.net/download/king01299/89756465
oracle数据库单机-RAC的数据库迁移 完整过程文档
https://download.csdn.net/download/king01299/89756674
还请大家多好评,收藏,评论,关注,一键三连哦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

king01299

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值