TA的每日心情 | 开心 2023-8-9 11:05 |
---|
|
1.老库生成pfile,复制到新库,修改相关得目录和参数,启动到nomount。
主要注意修改以下参数:
- *.compatible='19.0.0.0'
- *.cluster_database=false
复制代码 2.老库生成或者利用现有的rman全备,传输到新库的服务器上。
3.rman 恢复控制文件
- RMAN> restore controlfile from '/rman_backup/data/8rv53kaa_1_1.bak';
复制代码 4.新库到mount状态
- RMAN> alter database mount;
复制代码 5.注册复制过来得rman备份文件
- RMAN> catalog start with '/rman_backup/data';
复制代码 6.清理备份信息
- RMAN> crosscheck bakcup;
- delete noprompt expired backup;
- list bakcup summary;
复制代码 7.restore database
如果新老环境卷组或者数据文件名不一致,可以用以下sql批量改名,如果卷组和名称一致,则不需要修改
- select 'set newname for datafile '''|| name ||''' to ''+DATA/orcl/datafile/'||substr(name,23) ||''';' from v$datafile;
复制代码 编辑restore脚本并执行
- [oracle@rac11 rman_backup]$ cat restoredb.sh
- rman target / cmdfile='/rman_backup/restoredb.rcv' log=/rman_backup/restoredb.log
- [oracle@rac11 rman_backup]$ cat restoredb.rcv
- run{
- allocate channel 'd1' type disk;
- allocate channel 'd2' type disk;
- allocate channel 'd3' type disk;
- allocate channel 'd4' type disk;
- allocate channel 'd5' type disk;
- allocate channel 'd6' type disk;
- set newname for datafile 语句省略…
- restore database;
- switch datafile all;
- release channel d1;
- release channel d2;
- release channel d3;
- release channel d4;
- release channel d5;
- release channel d6;
- }
复制代码 8.监控rman进度
现在数据库是mount状态,在sqlplus中执行以下语句查看rman进度
- SET ECHO OFF
- SET FEEDBACK 6
- SET HEADING ON
- SET LINESIZE 180
- SET PAGESIZE 50000
- SET TERMOUT ON
- SET TIMING OFF
- SET TRIMOUT ON
- SET TRIMSPOOL ON
- SET VERIFY OFF
- CLEAR COLUMNS
- CLEAR BREAKS
- CLEAR COMPUTES
- COLUMN instance_name FORMAT a10 HEADING 'Instance'
- COLUMN sid HEADING 'Oracle|SID'
- COLUMN serial_num HEADING 'Serial|#'
- COLUMN opname FORMAT a30 HEADING 'RMAN|Operation'
- COLUMN start_time FORMAT a18 HEADING 'Start|Time'
- COLUMN totalwork HEADING 'Total|Work'
- COLUMN units FORMAT a10 HEADING 'units'
- COLUMN sofar HEADING 'So|Far'
- COLUMN pct_done HEADING 'Percent|Done'
- COLUMN elapsed_seconds HEADING 'Elapsed|Seconds'
- COLUMN time_remaining HEADING 'Seconds|Remaining'
- COLUMN done_at FORMAT a18 HEADING 'Done|At'
- break on report
- COMPUTE sum OF totalwork ON report
- SELECT
- i.instance_name instance_name
- , sid sid
- , serial# serial_num
- , b.opname opname
- , TO_CHAR(b.start_time, 'mm/dd/yy HH24:MI:SS') start_time
- , b.totalwork totalwork
- , units units
- , b.sofar sofar
- , ROUND( (b.sofar/DECODE( b.totalwork
- , 0
- , 0.001
- , b.totalwork)*100),0) pct_done
- , b.elapsed_seconds elapsed_seconds
- , b.time_remaining time_remaining
- , DECODE( b.time_remaining
- , 0
- , TO_CHAR((b.start_time + b.elapsed_seconds/3600/24), 'mm/dd/yy HH24:MI:SS')
- , TO_CHAR((SYSDATE + b.time_remaining/3600/24), 'mm/dd/yy HH24:MI:SS')
- ) done_at
- FROM
- gv$session a
- JOIN gv$session_longops b USING (sid,serial#)
- JOIN gv$instance i ON ( i.inst_id = a.inst_id
- AND i.inst_id = b.inst_id)
- WHERE
- a.program LIKE 'rman%'
- AND b.opname LIKE 'RMAN%'
- AND b.opname NOT LIKE '%aggregate%'
- AND b.totalwork > 0
- ORDER BY
- i.instance_name
- , b.start_time
- /
复制代码
9.脚本跑完,检查以下数据文件
- select name from v$datafile;
复制代码 10.检查是否有需要恢复的归档
- SQL> select * from v$recovery_log;
复制代码 交互式追加归档
- SQL> recover database using backup controlfile until cancel;
- ORA-00279: change 24747113033 generated at 07/12/2020 05:22:45 needed for thread 1
- ORA-00289: suggestion : /rman_backup/logs/1_6629_1030105727.dbf
- ORA-00280: change 24747113033 for thread 1 is in sequence #6629
- Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
- /rman_backup/logs/thread_1_seq_6647.1301.1045599039
- ORA-00279: change 24753244620 generated at 07/12/2020 18:44:35 needed for thread 2
- ORA-00289: suggestion : /rman_backup/logs/2_6391_1030105727.dbf
- ORA-00280: change 24753244620 for thread 2 is in sequence #6391
- ORA-00278: log file '/rman_backup/logs/thread_2_seq_6390.620.1045593875' no longer needed for this recovery
- Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
- cancel
- Media recovery cancelled.
复制代码 11.配置redo
- SQL> select member from v$logfile;
复制代码 redo修改名称
- SQL> select 'alter database rename file '''|| member ||''' to ''+DATA/orcl/'||substr(member,14) ||''';' from v$logfile;
复制代码 12.配置temp
- SQL> select 'alter database tempfile ''' || name || ''' drop including datafiles;' from v$tempfile;
复制代码- SQL> alter tablespace temp add tempfile '+data/orcl/datafile/temp01.dbf' size 30g;
- Tablespace altered.
复制代码 13.resetlog打开数据库
- SQL> alter database open resetlogs upgrade;
- Database altered.
复制代码 14.运行升级脚本
- SQL> @?/rdbms/admin/catupgrd.sql
- DOC>######################################################################
- DOC>######################################################################
- DOC> ERROR
- DOC>
- DOC>
- DOC> As of 12.2, customers must use the parallel upgrade utility, catctl.pl,
- DOC> to invoke catupgrd.sql when upgrading the database dictionary.
- DOC> Running catupgrd.sql directly from SQL*Plus is no longer supported.
- DOC>
- DOC> For Example:
- DOC>
- DOC> cd $ORACLE_HOME/rdbms/admin
- DOC> catctl
- DOC>
- DOC> or
- DOC>
- DOC> cd $ORACLE_HOME/rdbms/admin
- DOC> $ORACLE_HOME/perl/bin/perl catctl.pl catupgrd.sql
- DOC>
- DOC> Refer to the Oracle Database Upgrade Guide for more information.
- DOC>
- DOC>
- DOC>######################################################################
- DOC>######################################################################
- DOC>#
- Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
- Version 19.3.0.0.0
- [oracle@rac11 admin]$ $ORACLE_HOME/perl/bin/perl catctl.pl -n 4 catupgrd.sql
复制代码 15.升级日志
16.升级成功后,修改集群参数,添加2节点,注册到集群,确认集群数据所有实例状态。
|
|