暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

复制$ORACLE_HOME替代opatch

原创 刘继超 2023-07-13
386

一、背景:

因xx国产库厂商要做测试,需要恢复一个oracle数据库测试环境,通过爱数一体机去恢复,

爱数的相关工程师说恢复的测试环境需要和生产环境的opatch的补丁号必须一致,还需要oracle_sid 也必须一致,才能进行恢复。

二、实现方法

2.1 备份生产环境的$ORACLE_HOME

tar -pzcvf 0712.tar.gz $ORACLE_HOME

2.2 传入到目标端并解压


[root@dbn01 ~]# ll
total 4725860
-rw-r--r--  1 root root  155214192 Jul 10 10:59 0710.tar.gz
-rw-------. 1 root root      32560 Nov  2  2022 anaconda-ks.cfg
-rwxr-xr-x  1 root root 4588568576 Jul  6 16:57 CentOS-7.6-x86_64-DVD-1810.iso
-rw-r--r--  1 root root     195388 Oct 24  2022 compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
drwxr-xr-x  2 root root       4096 Jul  6 17:47 Desktop
drwxr-xr-x  2 root root       4096 Jul  6 17:47 Documents
drwxr-xr-x  2 root root       4096 Jul  6 17:47 Downloads
-rw-r-----  1 root root         14 Nov  4  2022 logs_openibd
drwxr-xr-x  2 root root       4096 Jul  6 17:47 Music
drwxr-xr-x  6 root root       4096 Sep 23  2022 ob-loader-dumper-3.3.0-SNAPSHOT
-rwxr-x---  1 root root   94867417 Feb  4 09:33 ob-loader-dumper-3.3.0-SNAPSHOT.zip
-rw-------. 1 root root      27870 Nov  2  2022 original-ks.cfg
drwxr-xr-x  2 root root       4096 Jul  6 17:47 Pictures
drwxr-xr-x  2 root root       4096 Jul  6 17:47 Public
-rw-r--r--  1 root root     313139 Jul 24  2020 rlwrap-0.43.tar.gz
drwxr-xr-x  2 root root       4096 Jul  6 17:47 Templates
--ws--S---  1 root root         21 Jul 10 10:58 test.txt
drwxr-xr-x  9 root root       4096 Jan  5  2023 t-oceanbase-antman
drwxr-xr-x  2 root root       4096 Jul  6 17:47 Videos

[root@dbn01 ~]# chown oracle:oinstall 0710.tar.gz
[root@dbn01 ~]# su - oracle
Last login: Mon Jul 10 10:59:32 CST 2023 on pts/13

[oracle@dbn01:/home/oracle]$ 
[oracle@dbn01:/home/oracle]$ cd $ORACLE_HOME
[oracle@dbn01:/oracle/app/oracle/product/19.0.0/db_1]$ cd ..
[oracle@dbn01:/oracle/app/oracle/product/19.0.0]$ ll
total 4
drwxrwxr-x 70 oracle oinstall 4096 Jul 10 09:23 db_1
[oracle@dbn01:/oracle/app/oracle/product/19.0.0]$ mv db_1 db_1.bak
[oracle@dbn01:/oracle/app/oracle/product/19.0.0]$ ll
total 4
drwxrwxr-x 70 oracle oinstall 4096 Jul 10 09:23 db_1.bak
[oracle@dbn01:/oracle/app/oracle/product/19.0.0]$ mkdir db_1
[oracle@dbn01:/oracle/app/oracle/product/19.0.0]$ ll
total 8
drwxr-xr-x  2 oracle oinstall 4096 Jul 10 11:03 db_1
drwxrwxr-x 70 oracle oinstall 4096 Jul 10 09:23 db_1.bak
[oracle@dbn01:/oracle/app/oracle/product/19.0.0]$ cd db_1

2.3 因为恢复的是哥单机环境,生产环境是rac(Rac On / Rac Off - Relinking the RAC Option (Doc ID 211177.1))



[oracle@dbn01:/oracle/app/oracle/product/19.0.0/db_1]$ cd $ORACLE_HOME/rdbms/lib
[oracle@dbn01:/oracle/app/oracle/product/19.0.0/db_1/rdbms/lib]$ make -f ins_rdbms.mk rac_off
rm -f /oracle/app/oracle/product/19.0.0/db_1/lib/libskgxp19.so
cp /oracle/app/oracle/product/19.0.0/db_1/lib//libskgxpg.so /oracle/app/oracle/product/19.0.0/db_1/lib/libskgxp19.so
rm -f /oracle/app/oracle/product/19.0.0/db_1/lib/libskgxn2.so
cp /oracle/app/oracle/product/19.0.0/db_1/lib//libskgxns.so \
      /oracle/app/oracle/product/19.0.0/db_1/lib/libskgxn2.so
/usr/bin/ar d /oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/libknlopt.a kcsm.o
/usr/bin/ar cr /oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/libknlopt.a /oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/ksnkcs.o 
[oracle@dbn01:/oracle/app/oracle/product/19.0.0/db_1/rdbms/lib]$ make -f ins_rdbms.mk ioracle
chmod 755 /oracle/app/oracle/product/19.0.0/db_1/bin

 - Linking Oracle 
rm -f /oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/oracle
/oracle/app/oracle/product/19.0.0/db_1/bin/orald  -o /oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/oracle -m64 -z noexecstack -Wl,--disable-new-dtags -L/oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/ -L/oracle/app/oracle/product/19.0.0/db_1/lib/ -L/oracle/app/oracle/product/19.0.0/db_1/lib/stubs/   -Wl,-E /oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/opimai.o /oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/ssoraed.o /oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/ttcsoi.o -Wl,--whole-archive -lperfsrv19 -Wl,--no-whole-archive /oracle/app/oracle/product/19.0.0/db_1/lib/nautab.o /oracle/app/oracle/product/19.0.0/db_1/lib/naeet.o /oracle/app/oracle/product/19.0.0/db_1/lib/naect.o /oracle/app/oracle/product/19.0.0/db_1/lib/naedhs.o /oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/config.o  -ldmext -lserver19 -lodm19 -lofs -lcell19 -lnnet19 -lskgxp19 -lsnls19 -lnls19  -lcore19 -lsnls19 -lnls19 -lcore19 -lsnls19 -lnls19 -lxml19 -lcore19 -lunls19 -lsnls19 -lnls19 -lcore19 -lnls19 -lclient19  -lvsnst19 -lcommon19 -lgeneric19 -lknlopt -loraolap19 -lskjcx19 -lslax19 -lpls19  -lrt -lplp19 -ldmext -lserver19 -lclient19  -lvsnst19 -lcommon19 -lgeneric19 `if [ -f /oracle/app/oracle/product/19.0.0/db_1/lib/libavserver19.a ] ; then echo "-lavserver19" ; else echo "-lavstub19"; fi` `if [ -f /oracle/app/oracle/product/19.0.0/db_1/lib/libavclient19.a ] ; then echo "-lavclient19" ; fi` -lknlopt -lslax19 -lpls19  -lrt -lplp19 -ljavavm19 -lserver19  -lwwg  `cat /oracle/app/oracle/product/19.0.0/db_1/lib/ldflags`    -lncrypt19 -lnsgr19 -lnzjs19 -ln19 -lnl19 -lngsmshd19 -lnro19 `cat /oracle/app/oracle/product/19.0.0/db_1/lib/ldflags`    -lncrypt19 -lnsgr19 -lnzjs19 -ln19 -lnl19 -lngsmshd19 -lnnzst19 -lzt19 -lztkg19 -lmm -lsnls19 -lnls19  -lcore19 -lsnls19 -lnls19 -lcore19 -lsnls19 -lnls19 -lxml19 -lcore19 -lunls19 -lsnls19 -lnls19 -lcore19 -lnls19 -lztkg19 `cat /oracle/app/oracle/product/19.0.0/db_1/lib/ldflags`    -lncrypt19 -lnsgr19 -lnzjs19 -ln19 -lnl19 -lngsmshd19 -lnro19 `cat /oracle/app/oracle/product/19.0.0/db_1/lib/ldflags`    -lncrypt19 -lnsgr19 -lnzjs19 -ln19 -lnl19 -lngsmshd19 -lnnzst19 -lzt19 -lztkg19   -lsnls19 -lnls19  -lcore19 -lsnls19 -lnls19 -lcore19 -lsnls19 -lnls19 -lxml19 -lcore19 -lunls19 -lsnls19 -lnls19 -lcore19 -lnls19 `if /usr/bin/ar tv /oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/libknlopt.a | grep "kxmnsd.o" > /dev/null 2>&1 ; then echo " " ; else echo "-lordsdo19 -lserver19"; fi` -L/oracle/app/oracle/product/19.0.0/db_1/ctx/lib/ -lctxc19 -lctx19 -lzx19 -lgx19 -lctx19 -lzx19 -lgx19 -lclscest19 -loevm -lclsra19 -ldbcfg19 -lhasgen19 -lskgxn2 -lnnzst19 -lzt19 -lxml19 -lgeneric19 -locr19 -locrb19 -locrutl19 -lhasgen19 -lskgxn2 -lnnzst19 -lzt19 -lxml19 -lgeneric19  -lgeneric19 -lorazip -loraz -llzopro5 -lorabz2 -lorazstd -loralz4 -lipp_z -lipp_bz2 -lippdc -lipps -lippcore  -lippcp -lsnls19 -lnls19  -lcore19 -lsnls19 -lnls19 -lcore19 -lsnls19 -lnls19 -lxml19 -lcore19 -lunls19 -lsnls19 -lnls19 -lcore19 -lnls19 -lsnls19 -lunls19  -lsnls19 -lnls19  -lcore19 -lsnls19 -lnls19 -lcore19 -lsnls19 -lnls19 -lxml19 -lcore19 -lunls19 -lsnls19 -lnls19 -lcore19 -lnls19 -lasmclnt19 -lcommon19 -lcore19  -ledtn19 -laio -lons  -lmql1 -lipc1 -lfthread19    `cat /oracle/app/oracle/product/19.0.0/db_1/lib/sysliblist` -Wl,-rpath,/oracle/app/oracle/product/19.0.0/db_1/lib -lm    `cat /oracle/app/oracle/product/19.0.0/db_1/lib/sysliblist` -ldl -lm   -L/oracle/app/oracle/product/19.0.0/db_1/lib `test -x /usr/bin/hugeedit -a -r /usr/lib64/libhugetlbfs.so && test -r /oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/shugetlbfs.o && echo -Wl,-zcommon-page-size=2097152 -Wl,-zmax-page-size=2097152 -lhugetlbfs`
rm -f /oracle/app/oracle/product/19.0.0/db_1/bin/oracle 
mv /oracle/app/oracle/product/19.0.0/db_1/rdbms/lib/oracle /oracle/app/oracle/product/19.0.0/db_1/bin/oracle
chmod 6751 /oracle/app/oracle/product/19.0.0/db_1/bin/oracle
(if [ ! -f /oracle/app/oracle/product/19.0.0/db_1/bin/crsd.bin ]; then \
    getcrshome="/oracle/app/oracle/product/19.0.0/db_1/srvm/admin/getcrshome" ; \
    if [ -f "$getcrshome" ]; then \
        crshome="`$getcrshome`"; \
        if [ -n "$crshome" ]; then \
            if [ $crshome != /oracle/app/oracle/product/19.0.0/db_1 ]; then \
                oracle="/oracle/app/oracle/product/19.0.0/db_1/bin/oracle"; \
                $crshome/bin/setasmgidwrap oracle_binary_path=$oracle; \
            fi \
        fi \
    fi \
fi\
);
[oracle@dbn01:/oracle/app/oracle/product/19.0.0/db_1/rdbms/lib]$ 

2.4 启动数据库


[oracle@dbn01:/oracle/app/oracle/product/19.0.0/db_1/rdbms/lib]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jul 10 12:34:14 2023
Version 19.9.0.0.0

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

Connected to an idle instance.

SQL> startup
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file '+DATADG/PRIBILLB/PARAMETERFILE/spfile.792.1088730917'
ORA-17503: ksfdopn:10 Failed to open file +DATADG/PRIBILLB/PARAMETERFILE/spfile.792.1088730917
ORA-29701: unable to connect to Cluster Synchronization Service
SQL>    
SQL>

原因是从生产复制过来的pfile起的,需要指定老的pfile文件
2.5用老的pfile文件启动

le@dbn01:/oracle/app/oracle/product/19.0.0/db_1/dbs]$ cp ../../db_1.bak/dbs/spfilebillb1.ora ./
[oracle@dbn01:/oracle/app/oracle/product/19.0.0/db_1/dbs]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jul 10 12:40:56 2023
Version 19.9.0.0.0

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 2.4320E+11 bytes
Fixed Size                 30147920 bytes
Variable Size            2.9528E+10 bytes
Database Buffers         2.1314E+11 bytes
Redo Buffers              506720256 bytes
Database mounted.
Database opened.
SQL> 

2.6 验证补丁和生产一致

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论