1、介绍
环境:双节点 linux7+11.2.0.4rac
数据量:900G
硬件环境:2台服务器、2台存储、2台光交,1台服务器和存储各放置一个机房,做的rac,2台存储聚合,私有网络走的单独的交换机。
容灾环境:现有2个dg,1个是三方容灾机上,1个是其他厂商做的.
存储空间:3个5G的lun,5个500G的lun。服务器本地磁盘空间500G可用
网卡说明:2个光口、2个电口,网卡做了team绑定,pubic、private都各两个网卡,做的负载均衡配置。
2、需求
用户等保漏洞扫描发现大量的漏洞,其它厂商的人员在打补丁将环境进行了损坏,无法恢复的情况下,我将asm的数据抽取到了单机文件系统来临时进行了恢复,事后用户又要求:恢复rac的环境同时完成数据库的升级。
3、具体方案
用户只给了30分钟,按照以往的经验可以使用如下方案:
3.1 单节点安装19c rac,adg迁移方式后,推掉11grac添加19c节点。
3.2 单节点安装19c rac,xtts迁移升级后,推掉11grac添加19c节点。
3.3 单节点安装19c rac,ogg迁移升级后,推掉11grac添加19c节点。
我这里为了稳妥,加上产品升级执行的脚本较多,我选择了3.1。上面的步骤都不难看出我的方案全部是单机搭建rac,再加节点的方式,因为用户只有两台服务器可用。
4、RAC配置和安装
安装配置跳过...共享磁盘还是有很多人用裸设备、asmlib来绑定,asmlib这玩意我一直都不建议使用。因为asm的原理无非就是固话磁盘设备名称、固话权限和用户组。bug很多,linux原生的udev可以更好地做到这一点还更灵活。以下是我常用的多路径+udev配置1)、安装rpm -qa|grep multipath2)、将多路径软件嵌入内核(两台机器均要执行)modprobe dm-multipathmodprobe dm-round-robinlsmod|grep dm_multipathsystemctl enable multipathdsystemctl start multipathdmultipath -v2 --聚合,如果没有cp后再运行cp usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf etc/multipath.conf3)、查看多路径路径有多少条multipath -ll |grep policy |wc -lmultipath -ll |grep "active ready running"查看uuidmultipath -ll |grep mpath[root@hisservera software]# multipath -ll |grep -A 1 mpath|grep -v "^-"mpathc (360002ac0000000000000019e0001e94d) dm-5 3PARdata,VV size=5.0G features='0' hwhandler='1 alua' wp=rwmpathb (360002ac0000000000000019d0001e94d) dm-4 3PARdata,VV size=5.0G features='0' hwhandler='1 alua' wp=rwmpatha (360002ac0000000000000019c0001e94d) dm-3 3PARdata,VV size=5.0G features='0' hwhandler='1 alua' wp=rwmpathi (360002ac0000000000000000c0001e94d) dm-11 3PARdata,VV size=500G features='0' hwhandler='1 alua' wp=rwmpathg (360002ac000000000000001a50001e94d) dm-9 3PARdata,VV size=500G features='0' hwhandler='1 alua' wp=rwmpathf (360002ac000000000000001a10001e94d) dm-8 3PARdata,VV size=500G features='0' hwhandler='1 alua' wp=rwmpathe (360002ac000000000000001a00001e94d) dm-7 3PARdata,VV size=500G features='0' hwhandler='1 alua' wp=rwmpathd (360002ac0000000000000019f0001e94d) dm-6 3PARdata,VV size=500G features='0' hwhandler='1 alua' wp=rwmpathh (360002ac0000000000000000b0001e94d) dm-10 3PARdata,VV size=2.0T features='0' hwhandler='1 alua' wp=rw4) 两个节点修改多路径配置文件vim etc/multipath.confdefaults {user_friendly_names yesfind_multipaths yespath_grouping_policy group_by_priopath_selector "round-robin 0"rr_min_io 100max_fds 8192rr_weight uniformfailback immediate}blacklist {wwid "3600508b1001c75bd3203be98f718eda4" #rac1}multipaths {multipath {wwid "360002ac0000000000000019c0001e94d"alias mpathocr1}multipath {wwid "360002ac0000000000000019d0001e94d"alias mpathocr2}multipath {wwid "360002ac0000000000000019e0001e94d"alias mpathocr3}multipath {wwid "360002ac0000000000000019f0001e94d"alias mpathdata1}multipath {wwid "360002ac000000000000001a00001e94d"alias mpathdata2}multipath {wwid "360002ac000000000000001a10001e94d"alias mpathdata3}multipath {wwid "360002ac000000000000001a50001e94d"alias mpathdata4}multipath {wwid "360002ac0000000000000000c0001e94d"alias mpathdata5}}5) 两个节点排除本地盘做多路径/usr/lib/udev/scsi_id -g -u -d dev/sda6) 重命名这个配置文件mv etc/multipath/bindings etc/multipath/bindings_bakmultipath -rsystemctl restart multipathd.servicesystemctl enable multipathd.servicemultipath -Fmultipath -v2multipath -ll7) udev 配置文件编辑取得DM_UUID:cd dev/mapperfor i in `ls mpath*`;doprintf "%s %s\n" "$i" "$(udevadm info --query=all --name=/dev/mapper/$i |grep -i dm_uuid)";donempathdata1 E: DM_UUID=mpath-360002ac0000000000000019f0001e94dmpathdata2 E: DM_UUID=mpath-360002ac000000000000001a00001e94dmpathdata3 E: DM_UUID=mpath-360002ac000000000000001a10001e94dmpathdata4 E: DM_UUID=mpath-360002ac000000000000001a50001e94dmpathdata5 E: DM_UUID=mpath-360002ac0000000000000000c0001e94dmpathocr1 E: DM_UUID=mpath-360002ac0000000000000019c0001e94dmpathocr2 E: DM_UUID=mpath-360002ac0000000000000019d0001e94dmpathocr3 E: DM_UUID=mpath-360002ac0000000000000019e0001e94dvi etc/udev/rules.d/99-oracle-asmdevices.rulesKERNEL=="dm-*",ENV{DM_UUID}=="mpath-360002ac0000000000000019c0001e94d",OWNER="grid",SYMLINK+="asm_ocr1",GROUP="asmadmin",MODE="0660"KERNEL=="dm-*",ENV{DM_UUID}=="mpath-360002ac0000000000000019d0001e94d",OWNER="grid",SYMLINK+="asm_ocr2",GROUP="asmadmin",MODE="0660"KERNEL=="dm-*",ENV{DM_UUID}=="mpath-360002ac0000000000000019e0001e94d",OWNER="grid",SYMLINK+="asm_ocr3",GROUP="asmadmin",MODE="0660"KERNEL=="dm-*",ENV{DM_UUID}=="mpath-360002ac0000000000000019f0001e94d",OWNER="grid",SYMLINK+="asm_data1",GROUP="asmadmin",MODE="0660"KERNEL=="dm-*",ENV{DM_UUID}=="mpath-360002ac000000000000001a00001e94d",OWNER="grid",SYMLINK+="asm_data2",GROUP="asmadmin",MODE="0660"KERNEL=="dm-*",ENV{DM_UUID}=="mpath-360002ac000000000000001a10001e94d",OWNER="grid",SYMLINK+="asm_data3",GROUP="asmadmin",MODE="0660"KERNEL=="dm-*",ENV{DM_UUID}=="mpath-360002ac000000000000001a50001e94d",OWNER="grid",SYMLINK+="asm_data4",GROUP="asmadmin",MODE="0660"KERNEL=="dm-*",ENV{DM_UUID}=="mpath-360002ac0000000000000000c0001e94d",OWNER="grid",SYMLINK+="asm_data5",GROUP="asmadmin",MODE="0660"配置完成后重新加载和生成udev规则# 加载rules文件,重新加载udev rule1: usr/sbin/udevadm trigger --type=devices --action=change2: usr/sbin/udevadm trigger --type=devices --action=add3: usr/sbin/udevadm trigger --subsystem-match=block 这个命令就可以在线识别了,不会影响到数据库。4: usr/sbin/udevadm trigger 不会影响到数据库。优先选择1-4/sbin/udevadm control --reload 执行这个之前,需要网卡先设置参数,否则集群有问题# 验证磁盘ls dev/asm*--linux8udevadm control -Rudevadm trigger -t devices -s block[root@hisservera rules.d]# scp 99-oracle-asmdevices.rules hisservera:/etc/udev/rules.d/linux很多的人我发现都没有删除虚拟网桥,这个会影响192.168.122.x网段访问服务器,我这里单独写下。yum remove libvirt-libs.x86_64
1)安装grid[root@hisservera software]# chown -R grid:oinstall LINUX.X64_193000_grid_home.zip[root@hisservera software]# su - grid[grid@his1 ~]$ cd software/[grid@his1 software]$ unzip LINUX.X64_193000_grid_home.zip -d $ORACLE_HOME[root@hisservera software]# rpm -ivh u01/app/19.0.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm安装时候打补丁su - rootcd u01/app/19.0.0/grid/mv OPatch OPatch.bakunzip software/p6880880_190000_Linux-x86-64.zip -d u01/app/19.0.0/grid/chown -R grid:oinstall OPatchchmod -R 755 OPatch解压19.20补丁[root@hisservera software]# unzip p35319490_190000_Linux-x86-64.zip -d tmp[root@hisservera software]# unzip p35354406_190000_Linux-x86-64.zip -d tmp[root@hisservera software]# chown -R grid:oinstall tmp/35*安装软件的同时也安装上RU和OJVM补丁:[grid@hisservera ~]$ cd $ORACLE_HOME[grid@hisservera grid]$ ./gridSetup.sh -applyRU tmp/35319490/ -applyOneOffs tmp/35354406/正在准备要打补丁的主目录...正在应用补丁程序 tmp/35319490/...已成功应用补丁程序。正在应用补丁程序 tmp/35354406/...已成功应用补丁程序。可以在以下位置找到日志: /tmp/GridSetupActions2023-09-20_12-33-44PM/installerPatchActions_2023-09-20_12-33-44PM.log正在启动 Oracle Grid Infrastructure 安装向导......中途只选择安装hisservera单机rac......在asm磁盘组安装的时候选择不到磁盘,需要dd清空处理...dd if=/dev/zero of=/dev/asm_ocr1 bs=1M count=100dd if=/dev/zero of=/dev/asm_ocr2 bs=1M count=100dd if=/dev/zero of=/dev/asm_ocr3 bs=1M count=100dd if=/dev/zero of=/dev/asm_data1 bs=1M count=100dd if=/dev/zero of=/dev/asm_data2 bs=1M count=100dd if=/dev/zero of=/dev/asm_data3 bs=1M count=100dd if=/dev/zero of=/dev/asm_data4 bs=1M count=100dd if=/dev/zero of=/dev/asm_data5 bs=1M count=100安装完成后[grid@hisservera grid]$ crsctl stat res -t--------------------------------------------------------------------------------Name Target State Server State details--------------------------------------------------------------------------------Local Resources--------------------------------------------------------------------------------ora.LISTENER.lsnrONLINE ONLINE hisservera STABLEora.chadONLINE ONLINE hisservera STABLEora.net1.networkONLINE ONLINE hisservera STABLEora.onsONLINE ONLINE hisservera STABLEora.proxy_advmOFFLINE OFFLINE hisservera STABLE--------------------------------------------------------------------------------Cluster Resources--------------------------------------------------------------------------------ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)1 ONLINE ONLINE hisservera STABLEora.LISTENER_SCAN1.lsnr1 ONLINE ONLINE hisservera STABLEora.OCR.dg(ora.asmgroup)1 ONLINE ONLINE hisservera STABLEora.asm(ora.asmgroup)1 ONLINE ONLINE hisservera Started,STABLEora.asmnet1.asmnetwork(ora.asmgroup)1 ONLINE ONLINE hisservera STABLEora.cvu1 ONLINE ONLINE hisservera STABLEora.hisservera.vip1 ONLINE ONLINE hisservera STABLEora.qosmserver1 ONLINE ONLINE hisservera STABLEora.scan1.vip1 ONLINE ONLINE hisservera STABLE--------------------------------------------------------------------------------SQL> create diskgroup DATA external redundancy disk '/dev/asm_data1' disk '/dev/asm_data2' disk '/dev/asm_data3' disk '/dev/asm_data4' disk '/dev/asm_data5' attribute 'au_size'='4m','compatible.asm'='19.0.0.0.0';SQL> create diskgroup ARCH external redundancy disk '/dev/asm_data5' attribute 'au_size'='4m','compatible.asm'='19.0.0.0.0';[grid@hisservera grid]$ opatch lspatches35354406;OJVM RELEASE UPDATE: 19.20.0.0.230718 (35354406)35553096;TOMCAT RELEASE UPDATE 19.0.0.0.0 (35553096)35332537;ACFS RELEASE UPDATE 19.20.0.0.0 (35332537)35320149;OCW RELEASE UPDATE 19.20.0.0.0 (35320149)35320081;Database Release Update : 19.20.0.0.230718 (35320081)33575402;DBWLM RELEASE UPDATE 19.0.0.0.0 (33575402)OPatch succeeded.2)安装db[root@hisservera software]# chown -R oracle:oinstall software/[oracle@hisservera software]$ unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOMEsu - rootcd u01/app/oracle/product/19.0.0/db_1mv OPatch OPatch.bakunzip software/p6880880_190000_Linux-x86-64.zip -d u01/app/oracle/product/19.0.0/db_1chown -R oracle:oinstall OPatchchmod -R 755 OPatch[oracle@hisservera db_1]$ ./runInstaller -applyRU tmp/35319490/ -applyOneOffs tmp/35354406/正在准备要打补丁的主目录...正在应用补丁程序 tmp/35319490/...已成功应用补丁程序。正在应用补丁程序 tmp/35354406/...已成功应用补丁程序。可以在以下位置找到日志: /u01/app/oraInventory/logs/InstallActions2023-09-20_01-22-46PM/installerPatchActions_2023-09-20_01-22-46PM.log正在启动 Oracle 数据库安装向导......安装完成后,不dbca建库.
5、RAC单机向另一台单机搭建第4个dg
搭建过程中我遇到一个问题,就是本地的磁盘空间不够,我想到一个办法就是先把asm磁盘组的磁盘划1t出来做lvm,整个业务完成后再恢复成asm磁盘。
第一步asm磁盘转lvm[root@hisservera software]# df -Th文件系统 类型 容量 已用 可用 已用% 挂载点devtmpfs devtmpfs 126G 0 126G 0% devtmpfs tmpfs 225G 0 225G 0% dev/shmtmpfs tmpfs 126G 21M 126G 1% runtmpfs tmpfs 126G 0 126G 0% sys/fs/cgroup/dev/mapper/rhel-root xfs 543G 54G 489G 10% <<空间不能存放/dev/sda2 xfs 292M 154M 138M 53% boottmpfs tmpfs 26G 12K 26G 1% run/user/42tmpfs tmpfs 26G 0 26G 0% run/user/0tmpfs tmpfs 26G 0 26G 0% run/user/54322crsctl start crssu - gridsqlplus / as sysasmset line 220col name for a10col state for a10col COMPATIBILITY for a15col database_compatibility for a15select group_number,name,state,type,total_mb/1024 totol_gb,free_mb/1024 as free_gb,usable_file_mb/1024 usable_file_gb,allocation_unit_size/1024/1024 unit_mb,offline_disks,compatibility,database_compatibility,voting_files from v$asm_diskgroup order by 1;set line 250 pages 222col dno for a5col name for a13col state for a10col path for a40col FAILGROUP for a13col header_status for a15col rpt for 99999select group_number||'_'||disk_number as dno,name,failgroup,failgroup_type,path,create_date,mount_date,mount_status,header_status,state,os_mb,total_mb,free_mb,voting_file,repair_timer rpt from v$asm_disk order by 1;alter diskgroup data drop disk DATA_0002,DATA_0003 rebalance power 1024;exit;exit;crsctl stop crsvi /etc/udev/rules.d/99-oracle-asmdevices.rules#KERNEL=="dm-*",ENV{DM_UUID}=="mpath-360002ac000000000000001a10001e94d",OWNER="grid",SYMLINK+="asm_data3",GROUP="asmadmin",MODE="0660"#KERNEL=="dm-*",ENV{DM_UUID}=="mpath-360002ac000000000000001a50001e94d",OWNER="grid",SYMLINK+="asm_data4",GROUP="asmadmin",MODE="0660"/usr/sbin/udevadm trigger --type=devices --action=change/usr/sbin/udevadm trigger --type=devices --action=adddd if=/dev/zero of=/dev/mapper/mpathdata3 bs=1M count=100dd if=/dev/zero of=/dev/mapper/mpathdata4 bs=1M count=100vgcreate oraclevg dev/mapper/mpathdata3vgextend oraclevg dev/mapper/mpathdata4lvcreate -l 100%FREE oraclevg -n oraclelvmkfs.xfs /dev/oraclevg/oraclelvmkdir /hisdatavi /etc/fstab #### 修改fstab 开机自动挂载/dev/oraclevg/oraclelv /hisdata xfs defaults 0 0chown -R oracle:oinstall hisdata
下一步则是搭建物理dg
[root@hisservera software]# tar -zxvf 11204linux.tar.gz[root@hisservera software]# chown -R oracle:oinstall u02[root@hisservera software]# mv u023.3 关闭两个节点rac crs服务[grid@hisservera ~]$ which crsctl/u01/app/19.0.0/grid/bin/crsctl[root@hisservera software]# crsctl stop crsCRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'hisservera'CRS-2673: Attempting to stop 'ora.crsd' on 'hisservera'CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on server 'hisservera'CRS-33673: 尝试在服务器 'hisservera' 上停止资源组 'ora.asmgroup'CRS-2673: Attempting to stop 'ora.ARCH.dg' on 'hisservera'CRS-2673: Attempting to stop 'ora.DATA.dg' on 'hisservera'CRS-2673: Attempting to stop 'ora.OCR.dg' on 'hisservera'CRS-2673: Attempting to stop 'ora.qosmserver' on 'hisservera'CRS-2673: Attempting to stop 'ora.chad' on 'hisservera'CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'hisservera'CRS-2673: Attempting to stop 'ora.cvu' on 'hisservera'CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'hisservera'CRS-2677: Stop of 'ora.ARCH.dg' on 'hisservera' succeededCRS-2677: Stop of 'ora.DATA.dg' on 'hisservera' succeededCRS-2677: Stop of 'ora.OCR.dg' on 'hisservera' succeededCRS-2673: Attempting to stop 'ora.asm' on 'hisservera'CRS-2677: Stop of 'ora.cvu' on 'hisservera' succeededCRS-2677: Stop of 'ora.LISTENER.lsnr' on 'hisservera' succeededCRS-2673: Attempting to stop 'ora.hisservera.vip' on 'hisservera'CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'hisservera' succeededCRS-2673: Attempting to stop 'ora.scan1.vip' on 'hisservera'CRS-2677: Stop of 'ora.hisservera.vip' on 'hisservera' succeededCRS-2677: Stop of 'ora.asm' on 'hisservera' succeededCRS-2673: Attempting to stop 'ora.ASMNET1LSNR_ASM.lsnr' on 'hisservera'CRS-2677: Stop of 'ora.scan1.vip' on 'hisservera' succeededCRS-2677: Stop of 'ora.chad' on 'hisservera' succeededCRS-2677: Stop of 'ora.qosmserver' on 'hisservera' succeededCRS-2677: Stop of 'ora.ASMNET1LSNR_ASM.lsnr' on 'hisservera' succeededCRS-2673: Attempting to stop 'ora.asmnet1.asmnetwork' on 'hisservera'CRS-2677: Stop of 'ora.asmnet1.asmnetwork' on 'hisservera' succeededCRS-33677: 在服务器 'hisservera' 上停止资源组 'ora.asmgroup' 成功。CRS-2673: Attempting to stop 'ora.ons' on 'hisservera'CRS-2677: Stop of 'ora.ons' on 'hisservera' succeededCRS-2673: Attempting to stop 'ora.net1.network' on 'hisservera'CRS-2677: Stop of 'ora.net1.network' on 'hisservera' succeededCRS-2792: Shutdown of Cluster Ready Services-managed resources on 'hisservera' has completedCRS-2677: Stop of 'ora.crsd' on 'hisservera' succeededCRS-2673: Attempting to stop 'ora.storage' on 'hisservera'CRS-2673: Attempting to stop 'ora.crf' on 'hisservera'CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'hisservera'CRS-2673: Attempting to stop 'ora.mdnsd' on 'hisservera'CRS-2677: Stop of 'ora.drivers.acfs' on 'hisservera' succeededCRS-2677: Stop of 'ora.crf' on 'hisservera' succeededCRS-2677: Stop of 'ora.storage' on 'hisservera' succeededCRS-2673: Attempting to stop 'ora.asm' on 'hisservera'CRS-2677: Stop of 'ora.mdnsd' on 'hisservera' succeededCRS-2677: Stop of 'ora.asm' on 'hisservera' succeededCRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'hisservera'CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'hisservera' succeededCRS-2673: Attempting to stop 'ora.ctssd' on 'hisservera'CRS-2673: Attempting to stop 'ora.evmd' on 'hisservera'CRS-2677: Stop of 'ora.ctssd' on 'hisservera' succeededCRS-2677: Stop of 'ora.evmd' on 'hisservera' succeededCRS-2673: Attempting to stop 'ora.cssd' on 'hisservera'CRS-2677: Stop of 'ora.cssd' on 'hisservera' succeededCRS-2673: Attempting to stop 'ora.gipcd' on 'hisservera'CRS-2673: Attempting to stop 'ora.gpnpd' on 'hisservera'CRS-2677: Stop of 'ora.gipcd' on 'hisservera' succeededCRS-2677: Stop of 'ora.gpnpd' on 'hisservera' succeededCRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'hisservera' has completedCRS-4133: Oracle High Availability Services has been stopped.ps -ef | grep d.bin | awk '{print $2}' | xargs kill -9ps -ef |grep u01| awk '{print $2}' | xargs kill -9[root@hisservera software]# ps -ef|grep d.bin --检查rac是否还有进程运行root 27025 12165 0 04:54 pts/0 00:00:00 grep --color=auto d.bin3.4 临时修改rac1 oracle 环境变量[root@hisservera bin]# vi home/oracle/.bash_profileexport ORACLE_SID=hisdb;export ORACLE_BASE=/u02/app/oracle;export ORACLE_HOME=/u02/app/oracle/product/11.2.0/db_1;[root@hisservera software]# source home/oracle/.bash_profile一、环境主库0.100 数据库是单机,路径在/rmanbak/hisdbdata,现有2个dg,-------------------------节点1--------------节点2--------OS系统 redhat7.6 redhat7.9数据库版本 11.2.0.4 rac 11.2.0.4IP 10.10.0.100 10.10.0.202软件 装grid、db、netca、dbca 装dbinstance_name hisdb1 hisdbdb_name hisdb hisdbdb_unique_name hisdb,hisdg,hisdb1 hisdbdgtnsname.ora hisdb、hisdg、hisdb1、hisdbdgservice_names hisdb hisdb-------------------------存放路径规划--------------------Primary Standby/rmanbak/hisdbdata hisdata/hisdb/rmanbak/hisdbdata/log/archivelog hisdata/hisdb_arch二、备库环境准备2、1 拷贝主库的密码文件到备库cd $ORACLE_HOME/dbs/scp orapwhisdb1 oracle@10.10.0.202:/u02/app/oracle/product/11.2.0/db_1/dbs/mv orapwhisdb1 orapwhisdb2、2 准备备库linux的tnsnames.ora文件vim u02/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.oraHISDB =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.100)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hisdb)(UR=A)))HISDG =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.68)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hisdg)(UR=A)))hisdb1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.74)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hisdb)(UR=A)))#以下是增加的hisdbdg =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.202)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hisdb) (UR=A)))2、3 准备备库的静态监听listener.oraLISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.202)(PORT = 1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = hisdb)(ORACLE_HOME = u02/app/oracle/product/11.2.0/db_1)(SID_NAME = hisdb)))ADR_BASE_LISTENER = u02/app/oracle2、4 准备备库的参数文件,然后启动到nomount状态-------------------------存放路径规划--------------------Primary Standby/rmanbak/hisdbdata hisdata/hisdb//archivelog hisdata/hisdb_arch/*.audit_file_dest='/u02/app/oracle/admin/hisdbdg/adump'*.audit_trail='NONE'*.compatible='11.2.0.4.0'*.control_files='/hisdata/hisdb/control01.ctl','/hisdata/hisdb/control02.ctl'*.db_block_size=8192*.db_domain=''*.db_file_name_convert='/rmanbak/hisdbdata','/hisdata/hisdb'*.db_name='hisdb'*.db_recovery_file_dest='/u02/app/oracle/fast_recovery_area'*.db_recovery_file_dest_size=4385144832*.db_unique_name='hisdbdg'*.deferred_segment_creation=FALSE*.diagnostic_dest='/u02/app/oracle'*.dispatchers='(PROTOCOL=TCP) (SERVICE=hisdbXDB)'*.fal_server='hisdb'*.log_archive_config='DG_CONFIG=(hisdb,hisdg,hisdb1,hisdbdg)'*.log_archive_dest_1='LOCATION=/hisdata/hisdb_arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=hisdbdg'*.log_archive_dest_2='SERVICE=hisdb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=hisdb'*.log_archive_dest_state_1='enable'*.log_archive_dest_state_2='enable'*.log_archive_format='%t_%s_%r.arc'*.log_file_name_convert='/rmanbak/hisdbdata/log','/hisdata/hisdb'*.O7_DICTIONARY_ACCESSIBILITY=TRUE*.open_cursors=300*.optimizer_index_caching=80*.optimizer_index_cost_adj=20*.optimizer_mode='ALL_ROWS'*.pga_aggregate_target=6g*.processes=1500*.remote_login_passwordfile='exclusive'*.sec_case_sensitive_logon=FALSE*.service_names='hisdb'*.sga_max_size=30g*.sga_target=30g*.standby_file_management='AUTO'*.undo_tablespace='UNDOTBS1'*._optimizer_skip_scan_enabled=FALSE备库oracle执行mkdir -p hisdata/hisdb/mkdir -p hisdata/hisdb_arch/mkdir -p u02/app/oracle/admin/hisdbdg/{adump,dpdump,hdump,pfile}mkdir -p u02/app/oracle/fast_recovery_areavim u02/app/oracle/product/11.2.0/db_1/dbs/inithisdb.oracreate spfile from pfile='/u02/app/oracle/product/11.2.0/db_1/dbs/inithisdb.ora';startup nomount;lsnrctl stoplsnrctl start三、主库环境准备3、1 主库设置强制日志SQL> alter database force logging;SQL> select force_logging,flashback_on from v$database;FOR FLASHBACK_ON--- ------------------YES YES3、2 主库创建standby日志select * from v$Log;select * from v$Logfile;select * from v$standby_log;----------------------------方法1------------------------------------------------------alter database add standby logfile thread 1('+data','+fra') size 100M;alter database add standby logfile thread 1('+data','+fra') size 100M;alter database add standby logfile thread 1('+data','+fra') size 100M;alter database add standby logfile thread 1('+data','+fra') size 100M;alter database add standby logfile thread 1('+data','+fra') size 100M;alter database add standby logfile thread 1('+data','+fra') size 100M;alter database add standby logfile thread 2('+data','+fra') size 100M;alter database add standby logfile thread 2('+data','+fra') size 100M;alter database add standby logfile thread 2('+data','+fra') size 100M;alter database add standby logfile thread 2('+data','+fra') size 100M;alter database add standby logfile thread 2('+data','+fra') size 100M;alter database add standby logfile thread 2('+data','+fra') size 100M;-----------------------------方法2-------------------------------------------------------alter database add standby logfile thread 1 group 5 size 50m,group 6 size 50m,group 7 size 50m;alter database add standby logfile thread 2 group 8 size 50m,group 9 size 50m,group 10 size 50m;3、3 主库配置tnsnames.ora文件(rac两个节点oracle下修改)和备库一样,复制上面的内容3、4 主库RMAN duplicate数据库 到 linux备库--前台运行方法rman target sys/oracle@hisdb auxiliary sys/oracle@hisdbdgduplicate target database for standby from active database;--duplicate target database for standby from active database nofilenamecheck;--后台运行方法vi tmp/rmancopy.sh#!/bin/bashrman target sys/oracle@hisdb auxiliary sys/oracle@hisdbdg log=/tmp/rmancopy.log <<EOFrun{duplicate target database for standby from active database;}chmod u+x tmp/rmancopy.sh[oracle@xnlhisdb ~]$ nohup sh tmp/rmancopy.sh & >/tmp/1.txt3、5 修改主库参数文件(先克隆数据库到备机,再来改主库参数)select * from v$parameter where lower(name)in ('log_archive_format','log_archive_dest_1','db_unique_name','log_archive_config','log_archive_dest_2','db_file_name_convert','log_file_name_convert','hisdbdg_file_management','fal_client','fal_server','log_archive_dest_state_1','log_archive_dest_state_2','redo_transport_user','service_names');--静态参数alter system set db_unique_name='hisdb' scope=spfile sid='*'; --主库不改,用默认的alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*';--主库不改,用默认的alter system set db_file_name_convert='/hisdata/hisdbdg','+data/hisdb/datafile','/hisdata/hisdbdg','+data/hisdb/tempfile' scope=spfile sid='*'; --(不设置,因为目的不是搭建dg,而是升级备库)alter system set log_file_name_convert='/hisdata/hisdbdg','+data/hisdb/onlinelog','/hisdata/hisdbdg','+fra/hisdb/onlinelog' scope=spfile sid='*';--(不设置,因为目的不是搭建dg,而是升级备库)----主库参数调整到dumplicate后修改--动态参数--hisdb代表主库db_unique_name,standby代表备库的db_unique_name,在DataGuard中,主备库拥有相同的DB_NAME,为了区别,就必须有不同的DB_UNIQUE_NAMEalter system set log_archive_config='DG_CONFIG=(hisdb,hisdg,hisdb1,hisdbdg)' scope=both sid='*';--主库,备库--alter system set service_names='hisdb' sid='*';--alter system set log_archive_dest_state_1='enable' sid='*';--alter system set log_archive_dest_state_2='enable' sid='*';--alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=hisdb' sid='*';--alter system set log_archive_dest_2='SERVICE=hisdbdg LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=hisdbdg' sid='*';alter system set log_archive_dest_3='SERVICE=hisdbdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=hisdbdg' sid='*';#以下参数不需要设置alter system set standby_file_management=auto sid='*';alter system set fal_client='hisdb1' sid='hisdb1';alter system set fal_client='hisdb2' sid='hisdb2';alter system set fal_server='hisdbdg' sid='*';备库参数:*.fal_client='hisdbdg'*.fal_server='hisdb1','hisdb2'alter system set fal_server='hisdb1','hisdb2' sid='*';四、dg状态检查说明:duplicate数据库之后,备库只是处于mount状态,查看备库状态。alter database open;alter database recover managed standby database using current logfile disconnect;4、1 主备看状态select open_mode,database_role,db_unique_name from v$database;4、2 验证物理备库日志应用1)主库上操作create table cs (i int);/beginfor i in 1..10000 loopinsert into cs values (i);commit;dbms_lock.sleep(2);end loop;end;/alter system switch logfile;archive log list;2)备库上查看select * from cs;archive log list;
下一步则是物理dg转逻辑dg
一、检查逻辑备库在主库不支持的相关表+++++1、 检查逻辑备用数据库不支持的对象-- 检查逻辑备库不支持的表select distinct owner,table_name from dba_logstdby_unsupported order by owner,table_name;-- 精确查表表的哪一列select owner,table_name,column_name,data_type from dba_logstdby_unsupported where table_name='';确定如何处理不受支持的表。如果要在主数据库上修改不支持的对象,则可以通过在执行升级过程所需的时间段内临时挂起对不支持的表的更改来执行升级。如果可以防止更改不受支持的数据,则使用SQL Apply可能仍然是执行升级过程的可行方法。此方法要求从创建逻辑备用控制文件到完成升级之间,防止用户修改任何不受支持的表。例如,假设薪资部门更新对象表,但是该部门仅星期一至星期五更新数据库。但是,客户服务部门要求每周7天,每天24小时访问数据库,但仅使用受支持的数据类型和表。在这种情况下,您可以在一个周末内执行升级。您可以在DBA_LOGSTDBY_EVENTS视图中监视事务活动,并在执行首次切换之前中止升级(如有必要)。如果无法防止在升级过程中更改不受支持的表,则发生的任何不受支持的事务都将记录在DBA_LOGSTDBY_EVENTS逻辑备用数据库上的表中。升级完成后,您也许可以使用Oracle Data Pump导出/导入实用程序将已更改的表导入到升级的数据库中。+++++2、 在oracle11g 中,逻辑备用数据库本身不支持一下的数据类型:BFILE VARRAYS ROWID 嵌套表 UROWID 存储为对象关系的XML 类型、用户定义类型 二进制XML多媒体数据类型(例如空间数据、图像数据、oracle 文本)+++++3、 查看主数据库中不含有主键或唯一键索引的表:select owner,table_name,bad_column from dba_logstdby_not_unique where table_name not in (select table_name from dba_logstdby_unsupported) and bad_column='Y';注意BAD_COLUMN列值,该列有两个值:Y :表示该表中有采用大数据类型的字段,比如LONG啦,CLOB啦之类。如果表中除log列某些行记录完全匹配,则该表无法成功应用于逻辑standby。standby会尝试维护这些表,不过你必须保证应用不允许。N :表示该表拥有足够的信息,能够支持在逻辑standby的更新,不过仍然建议你为该表创建一个主键或者唯一索引/约束以提高log应用效率假设在某张表中你可以确认数据是唯一的,但是基于效率方面的考虑,不想为其创建主键或唯一约束,怎么办呢?没关系,Oracle早想到了这一点,你可以创建一个DISABLE的Primary-Key Rely约束。Add a disabled primary-key RELY constraint.ALTER TABLE mytab ADD PRIMARY KEY (id, name) RELY DISABLE;--备库停掉alter database stop logical standby apply;--主库执行ALTER TABLE zlhis.医保就诊登记 ADD PRIMARY KEY (记录id,病人id,就诊编号,结算编号,序号) RELY DISABLE;--备库打开alter database start logical standby apply immediate;二、将物理备库转换为逻辑备库11g新特性:Rolling Upgrade With Physical Standby从Oracle 10.1.0.3开始引入了利用逻辑备库(logical standby)实施滚动升级(rolling upgrade)的特性;在滚动升级期间(rolling upgrade),允许主库(primary database)与逻辑备库(logical standby)间运行不同的数据库版本,以最小化宕机时间。到了11g中增加了可以将物理备库(physical standby)临时性转换成逻辑备库(logical standby)以完成滚动升级,之后将该临时逻辑备库反转为物理备库的功能。使用以上临时转换功能只需要在转换语句"ALTER DATABASE RECOVER TO LOGICAL STANDBY"后加上"KEEP IDENTITY"选项。除去转换细节的区别外,使用物理备库进行滚动升级的过程与10g中的逻辑备库滚动升级没有太大的区别。当前的需求是将生产数据库升级到12.2.0.3,但要求最小化应用downtime;这里我们就可以充分利用Data Guard的环境借势升级,同时也不会破坏原有的HA可用性:备库操作:alter database recover managed standby database cancel;shutdown immediate;startup nomount;alter database mount standby database;主库操作:之后需要在Primary Database中创建Logminer dictionary日志挖掘字典:SQL> drop user zldhc cascade;SQL> EXECUTE DBMS_LOGSTDBY.BUILD;--如果一直卡住处理长事物with transaction_details as( select inst_id, ses_addr, sysdate - start_date as difffrom gv$transaction)select s.username, to_char(trunc(t.diff))|| ' days, '|| to_char(trunc(mod(t.diff * 24,24)))|| ' hours, '|| to_char(trunc(mod(t.diff * 24 * 60,24)))|| ' minutes, '|| to_char(trunc(mod(t.diff * 24 * 60 * 60,60)))|| ' seconds' as transaction_duration, s.program, s.terminal, s.status, s.sid, s.serial#from gv$session s, transaction_details twhere s.inst_id = t.inst_idand s.saddr = t.ses_addrorder by t.diff descalter system kill session '247,62496' immediate;alter system kill session '81,27857' immediate;备库操作:SQL> ALTER DATABASE RECOVER TO LOGICAL STANDBY KEEP IDENTITY;SQL> select database_role from v$database;DATABASE_ROLE----------------LOGICAL STANDBYSQL> alter database open;我们还需要完成一系列逻辑备库的配置:a.在逻辑备库中禁用自动删除外部存档日志SQL> EXEC DBMS_STATS.SET_GLOBAL_PREFS('CONCURRENT', 'FALSE' ); #BUG 12353543 version 11.2SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('LOG_AUTO_DELETE', 'FALSE');如果报错:/* 缺少DBMS_LOGSTDBY包,可以从以下脚本创建 */SQL> @?/rdbms/admin/dbmslsby.sqlb.执行以下语句可以将逻辑备库不支持的而又在主库上运行过的事务记录到DBA_LOGSTDBY_EVENTS中SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('MAX_EVENTS_RECORDED',DBMS_LOGSTDBY.MAX_EVENTS);SQL> EXECUTE DBMS_LOGSTDBY.APPLY_SET('RECORD_UNSUPPORTED_OPERATIONS', 'TRUE');c.启动在逻辑备库上的SQL APPLY:(因为windows打了补丁,所以不需要马上验证同步情况,因为linux没有windows那些补丁,开启下面的同步,数据也不会过来。会报找不到xx补丁的错误。所以我们直接跳过。开始升级,升级到12c后再打开同步即可。)----(不执行该步骤)SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;三、备库表空间文件添加处理(防止升级前数据文件路径问题)--升级前先检查表空间情况3.1 对于逻辑Standby数据库,你甚至可以通过编写自定义的PROCEDURE,来重新定义SQL应用时执行的操作。如逻辑Standby数据库的文件路径与Primary数据库路径不同,如果是物理Standby,可以通过*_FILE_NAME_CONVERT之类的参数处理,在逻辑Standby环境中这几个参数无效,应该如何处理呢?答案就是通过编写自定义的过程,修改SQL应用时执行的操作。首先当然是创建一个过程,建议创建在SYS下,因为在这个用户下的操作肯定不会有同步的问题,如下所示:SQL> CREATE OR REPLACE PROCEDURE SYS.HANDLE_TBS_DDL (OLD_STMT IN VARCHAR2,STMT_TYP IN VARCHAR2,SCHEMA IN VARCHAR2,NAME IN VARCHAR2,XIDUSN IN NUMBER,XIDSLT IN NUMBER,XIDSQN IN NUMBER,ACTION OUT NUMBER,NEW_STMT OUT VARCHAR2) ASBEGIN--NEW_STMT := REPLACE(OLD_STMT, 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\','/oradata/orcldg/');NEW_STMT := REPLACE(OLD_STMT, '/rmanbak/hisdbdata','/hisdata/hisdb');ACTION := DBMS_LOGSTDBY.SKIP_ACTION_REPLACE;EXCEPTIONWHEN OTHERS THENACTION := DBMS_LOGSTDBY.SKIP_ACTION_ERROR;NEW_STMT := NULL;END HANDLE_TBS_DDL;/逻辑非常简单,基本上就是一个REPLACE,不过PROCEDURE中声明的变量看起来很多,这个是固定格式,不建议修改。停止逻辑Standby的SQL应用:SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;如果不停,PROCEDURE不能生效。执行DBMS_LOGSTDBY.SKIP过程,将编写的过程注册到表空间处理的SQL应用中:SQL> EXEC DBMS_LOGSTDBY.SKIP (stmt => 'TABLESPACE',proc_name => 'sys.handle_tbs_ddl');这里也要借助DBMS_LOGSTDBY.SKIP过程实现。该过程功能非常强大,而且操作非常灵活。重启SQL应用:SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;3.2 查看备库应用--1、检查归档日志应用set line 200 pages 2222col file_name for a50SELECT FILE_NAME, SEQUENCE# AS SEQ#, FIRST_CHANGE# AS F_SCN#,NEXT_CHANGE# AS N_SCN#, TIMESTAMP, DICT_BEGIN AS BEG, DICT_END AS END,THREAD# AS THR#, APPLIED FROM DBA_LOGSTDBY_LOG ORDER BY SEQUENCE#;--2、检查业务表同步情况SELECT max(登记时间) from ZLHIS.病人挂号记录 where 登记时间 >sysdate-0.5;SELECT max(开嘱时间) from ZLHIS.病人医嘱记录 where 开嘱时间 >sysdate-0.5;SELECT max(登记时间) from ZLHIS.门诊费用记录 where 登记时间 >sysdate-0.5;SELECT max(登记时间) from ZLHIS.住院费用记录 where 登记时间 >sysdate-0.5;--3、检查实时应用的语句select ls.serial# "Apply Process", sas.state "State", sas.sid SID, s.sql_address "SQL Address", s.sql_hash_value "SQL Hash Value",s.SQL_ID, sa.sql_text "SQL Text"from v$logstdby ls, v$streams_apply_server sas, v$session s, v$sqlarea sawhere ls.type = 'APPLIER'and sas.state != 'IDLE'and sas.serial# = ls.serial#and s.sid = sas.sidand sa.address (+) = s.sql_addressand sa.hash_value (+) = s.sql_hash_value;--4、检查目前应用到哪个时段SELECT SYSDATE, APPLIED_TIME FROM V$LOGSTDBY_PROGRESS;--5、 检查和处理未应用或者报错的表SELECT XIDUSN, XIDSLT, XIDSQN , status , EVENT_TIME,to_char(EVENT), STATUS FROM DBA_LOGSTDBY_EVENTSwhere EVENT not like '%SYSMAN%' and EVENT not like '%SYSLS%' and to_char(EVENT) is not null ORDER BY EVENT_TIMESTAMP;SELECT distinct trunc(event_time),to_char(EVENT) FROM DBA_LOGSTDBY_EVENTS where EVENT not like '%SYSMAN%' and EVENT not like '%SYSLS%' and to_char(EVENT) is not null;select STATEMENT_OPT,OWNER,NAME from DBA_LOGSTDBY_SKIP;--跳过表的应用alter database stop logical standby apply;begin DBMS_LOGSTDBY.SKIP('DML', 'SYS', 'aud$'); end;begin DBMS_LOGSTDBY.SKIP('DML', 'ZLHIS', '检验复查明细'); end;select STATEMENT_OPT,OWNER,NAME from DBA_LOGSTDBY_SKIP;alter database start logical standby apply immediate;--跳过某个事物alter database stop logical standby apply;begin dbms_logstdby.skip_transaction (19,10,306300); end;alter database start logical standby apply immediate;
6、升级操作
1、 主库停止传输SQL> alter system set log_archive_dest_state_3 = DEFER scope=both;2、 备库停止日志应用SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;3、备库执行升级前工具(11204数据库打开的情况下操作)--为了防止出现bug,用打补丁前的19.3的preupgrade.jar[root@hisservera hisdata]# cd software/[root@hisservera software]# ll总用量 15800452-rw-r--r-- 1 root root 2460911159 9月 20 15:54 11204linux.tar.gz-rw-r--r--. 1 oracle oinstall 195388 9月 19 22:40 compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm-rw-r--r--. 1 oracle oinstall 3059705302 9月 19 22:34 LINUX.X64_193000_db_home.zip-rw-r--r--. 1 oracle oinstall 2889184573 9月 19 22:35 LINUX.X64_193000_grid_home.zip-rw-r--r--. 1 oracle oinstall 2990370786 9月 19 22:36 p35319490_190000_Linux-x86-64.zip-rw-r--r--. 1 oracle oinstall 127314614 9月 19 22:39 p35354406_190000_Linux-x86-64.zip-rw-r--r--. 1 oracle oinstall 125167420 9月 19 22:36 p6880880_190000_Linux-x86-64.zip-rw-r--r--. 1 oracle oinstall 4526702592 9月 19 22:37 rhel-server-7.9-x86_64-dvd.iso-rw-r--r--. 1 oracle oinstall 97664 9月 19 22:40 rlwrap-0.42-1.el7.x86_64.rpm[root@hisservera software]# mkdir oracletmp[root@hisservera software]# chown -R oracle:oinstall oracletmp/[root@hisservera software]# unzip LINUX.X64_193000_db_home.zip -d ./oracletmp[oracle@hisservera ~]$ u02/app/oracle/product/11.2.0/db_1/jdk/bin/java -jar software/oracletmp/rdbms/admin/preupgrade.jar==================PREUPGRADE SUMMARY==================u02/app/oracle/cfgtoollogs/hisdbdg/preupgrade/preupgrade.logu02/app/oracle/cfgtoollogs/hisdbdg/preupgrade/preupgrade_fixups.sqlu02/app/oracle/cfgtoollogs/hisdbdg/preupgrade/postupgrade_fixups.sqlExecute fixup scripts as indicated below:Before upgrade:Log into the database and execute the preupgrade fixups@/u02/app/oracle/cfgtoollogs/hisdbdg/preupgrade/preupgrade_fixups.sqlAfter the upgrade:Log into the database and execute the postupgrade fixups@/u02/app/oracle/cfgtoollogs/hisdbdg/preupgrade/postupgrade_fixups.sqlPreupgrade complete: 2023-09-20T21:43:173.1、备库预升级检查Copy the $ORACLE_HOME/rdbms/admin/emremove.sql script from the target19c ORACLE_HOME into the source 11.2.0.4.0 ORACLE_HOME.[oracle@his1 admin]$ cp u01/app/oracle/product/19.0.0/db_1/rdbms/admin/emremove.sql u02/app/oracle/product/11.2.0/db_1/rdbms/admin/sqlplus as sysdbaSQL> alter database guard none; --不执行SQL> alter session disable guard;@/u02/app/oracle/product/11.2.0/db_1/rdbms/admin/emremove.sql--11g home执行@$ORACLE_HOME/olap/admin/catnoamd.sqlSQL> alter database guard all; --不执行3.2、旧库执行SQL> @/u02/app/oracle/cfgtoollogs/hisdbdg/preupgrade/preupgrade_fixups.sql --直接执行Executing Oracle PRE-Upgrade Fixup ScriptAuto-Generated by: Oracle Preupgrade ScriptVersion: 19.0.0.0.0 Build: 1Generated on: 2023-09-20 21:43:10For Source Database: HISDBSource Database Version: 11.2.0.4.0For Upgrade to Version: 19.0.0.0.0Preup PreupgradeAction Issue IsNumber Preupgrade Check Name Remedied Further DBA Action------ ------------------------ ---------- --------------------------------1. two_pc_txn_exist NO Manual fixup required.2. parameter_obsolete NO Manual fixup recommended.3. em_present YES None.4. invalid_objects_exist NO Manual fixup recommended.5. amd_exists YES None.6. network_acl_priv NO Manual fixup recommended.7. exclusive_mode_auth NO Manual fixup recommended.8. apex_manual_upgrade NO Manual fixup recommended.9. case_insensitive_auth NO Manual fixup recommended.10. streams_setup NO Manual fixup recommended.11. mv_refresh NO Informational only.Further action is optional.12. hidden_params NO Informational only.Further action is optional.13. dictionary_stats YES None.14. trgowner_no_admndbtrg YES None.15. mv_refresh NO Informational only.Further action is optional.16. pre_fixed_objects YES None.17. parameter_deprecated NO Informational only.Further action is optional.18. exf_rul_exists NO Informational only.Further action is optional.19. min_archive_dest_size NO Informational only.Further action is optional.20. rman_recovery_version NO Informational only.Further action is optional.The fixup scripts have been run and resolved what they can. However,there are still issues originally identified by the preupgrade thathave not been remedied and are still present in the database.Depending on the severity of the specific issue, and the nature ofthe issue itself, that could mean that your database is not readyfor upgrade. To resolve the outstanding issues, start by reviewingthe preupgrade_fixups.sql and searching it for the name ofthe failed CHECK NAME or Preupgrade Action Number listed above.There you will find the original corresponding diagnostic messagefrom the preupgrade which explains in more detail what still needsto be done.PL/SQL procedure successfully completed.4、备库关监听和库SQL> shutdown immediate[oracle@hisservera ~]$ lsnrctl stop5、备库切换环境变量到rac[oracle@hisservera ~]$ vi ~/.bash_profileexport ORACLE_BASE=/u01/app/oracleexport ORACLE_SID=hisdb1 #(节点2改为hisdb2)export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1#export ORACLE_SID=hisdb;#export ORACLE_BASE=/u02/app/oracle;#export ORACLE_HOME=/u02/app/oracle/product/11.2.0/db_1;[oracle@hisservera ~]$ source ~/.bash_profile6、 备库单节点打开rac crs服务[root@hisservera ~]# u01/app/19.0.0/grid/bin/crsctl start crs7、备库rac1 在oracle_home/dbs下新建参数文件[oracle@hisservera ~]$ cd $ORACLE_HOME/dbs[oracle@hisservera dbs]# vi inithisdb1.ora*._cleanup_rollback_entries=10000*._gc_policy_time=0*._gc_undo_affinity=FALSE*._optimizer_skip_scan_enabled=FALSE*.audit_file_dest='/u01/app/oracle/admin/hisdbdg/adump'*.audit_trail='NONE'*.cluster_database=true*.compatible='19.0.0'*.control_files='+DATA','+ARCH'*.db_block_size=8192*.db_create_file_dest='+DATA'*.db_file_name_convert='/rmanbak/hisdbdata','+DATA'*.db_files=8192*.db_name='hisdb'*.db_recovery_file_dest='+ARCH'*.db_recovery_file_dest_size=100G*.db_unique_name='hisdbdg'*.deferred_segment_creation=FALSE*.diagnostic_dest='/u01/app/oracle'*.dispatchers='(PROTOCOL=TCP) (SERVICE=hisdbXDB)'*.event='28401 trace name context forever,level 1','10949 trace name context forever,level 1'*.event='10503 trace name context forever, level 4000'family:dw_helper.instance_mode='read-only'*.fal_server='hisdb'hisdb1.instance_number=1*.log_archive_config='DG_CONFIG=(hisdb,hisdbdg)'*.log_archive_dest_2='SERVICE=hisdb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=hisdb'*.log_file_name_convert='/rmanbak/hisdbdata/log','+DATA'*.local_listener='-oraagent-dummy-'*.log_buffer=104857600*.nls_language='AMERICAN'*.nls_territory='AMERICA'*.open_cursors=5000*.optimizer_index_caching=80*.optimizer_index_cost_adj=20*.optimizer_mode='ALL_ROWS'*.pga_aggregate_limit=0*.pga_aggregate_target=40G*.processes=5000*.remote_login_passwordfile='exclusive'*.session_cached_cursors=300*.service_names='hisdb'*.sga_max_size=159G*.sga_target=159G*.standby_file_management='AUTO'hisdb1.thread=1*.undo_retention=10800hisdb1.undo_tablespace='UNDOTBS1'[oracle@hisservera dbs]$ mkdir -p u01/app/oracle/admin/hisdbdg/adump8、备库rac1启动到nomount并创建spfile到asmstartup nomount;SQL> create spfile='+data' from pfile;9、备库rac使用asm的spfile启动到nomount[oracle@hisservera dbs]$ mv inithisdb1.ora inithisdb1.ora_old[oracle@hisservera dbs]# vi inithisdb1.oraspfile='+data/hisdbdg/parameterfile/spfile.256.1148094475'[oracle@his1 dbs]$ sqlplus as sysdbastartup nomount;exit;10、备库rac1恢复控制文件并启动到mount[root@his1 ~]# cd hisdata/[root@his1 oradata]# chown -R oracle:asmadmin hisdb*注意control01.ctl的权限必须是oracle:asmadmin,不然要报错,找不到备份[oracle@hisservera hisdbdg]$ rman targetRMAN> restore controlfile from '/hisdata/hisdb/control01.ctl';##备份日志文件,等会就不用重新搭建dg,再从这里开始做SQL> select 'cp -p '|| member|| ' tmp/logbak/' from v$logfile;'CP-P'||MEMBER||'/TMP/LOGBAK/'--------------------------------------------------------------------------------cp -p hisdata/hisdb/redo22.log.285 tmp/logbak/cp -p hisdata/hisdb/group_22.3315 tmp/logbak/cp -p hisdata/hisdb/redo21.log.279 tmp/logbak/cp -p hisdata/hisdb/redo21.log.3272 tmp/logbak/cp -p hisdata/hisdb/redo24.log.293 tmp/logbak/cp -p hisdata/hisdb/group_24.3321 tmp/logbak/cp -p hisdata/hisdb/redo23.log.309 tmp/logbak/cp -p hisdata/hisdb/group_23.3320 tmp/logbak/cp -p hisdata/hisdb/group_14.341 tmp/logbak/cp -p hisdata/hisdb/group_14.440 tmp/logbak/cp -p hisdata/hisdb/group_13.340 tmp/logbak/cp -p hisdata/hisdb/group_13.446 tmp/logbak/cp -p hisdata/hisdb/group_12.339 tmp/logbak/cp -p hisdata/hisdb/group_12.453 tmp/logbak/cp -p hisdata/hisdb/group_11.338 tmp/logbak/cp -p hisdata/hisdb/group_11.437 tmp/logbak/cp -p hisdata/hisdb/stdredo01.log tmp/logbak/cp -p hisdata/hisdb/stdredo02.log tmp/logbak/cp -p hisdata/hisdb/stdredo03.log tmp/logbak/cp -p hisdata/hisdb/stdredo04.log tmp/logbak/[oracle@hisservera hisdb]$ mkdir tmp/logbak...执行上面的cp命令...11、备库rac1 恢复fs文件到asmrman targetbackup as copy database format '+data';switch database to copy;临时文件未转换到asm使用sqlplus 改变路径SQL> select name from v$tempfile;NAME--------------------------------------------------------------------------------/u02/app/oracle/oradata/hisdbdg/temp.339.1024168759/u02/app/oracle/oradata/hisdbdg/bhtemp.dbf/u02/app/oracle/oradata/hisdbdg/hoatemp.dbf/u02/app/oracle/oradata/hisdbdg/temp02.dbfset line 200select 'alter database rename file ''' || name || ''' to ''' || '+data'|| ''';' from v$tempfile;'ALTERDATABASERENAMEFILE'''||NAME||'''TO'''||'+DATA'||''';'-------------------------------------------------------------------------------------------------------------------------------alter database rename file '/u02/app/oracle/oradata/hisdbdg/temp.339.1024168759' to '+data';alter database rename file '/u02/app/oracle/oradata/hisdbdg/bhtemp.dbf' to '+data';alter database rename file '/u02/app/oracle/oradata/hisdbdg/hoatemp.dbf' to '+data';alter database rename file '/u02/app/oracle/oradata/hisdbdg/temp02.dbf' to '+data';12、备库rac1 密码文件处理将/u02下的dbs/orapwhisdb 拷贝到 u01目录下并修改,rac2暂时不处理,因为后面注册数据库到ocr需要将密码文件放到asm,同时删除本地的密码文件。[oracle@hisservera hisdata]$ cd u02/app/oracle/product/11.2.0/db_1/dbs/[oracle@hisservera dbs]$ cp orapwhisdb u01/app/oracle/product/19.0.0/db_1/dbs/mv orapwhisdb orapwhisdb113、备库rac1 添加tnsnames.ora sqlnet.ora处理oracle用户添加:[oracle@hisservera admin]$ pwd/u01/app/oracle/product/19.0.0/db_1/network/admin[oracle@hisservera admin]$ vi tnsnames.oraHISDB =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.100)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hisdb)(UR=A)))HISDG =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.68)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hisdg)(UR=A)))hisdb1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.74)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hisdb)(UR=A)))#以下是增加的hisdbdg =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.202)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hisdb) (UR=A)))[oracle@his1 admin]$ vi sqlnet.oraSQLNET.ALLOWED_LOGON_VERSION_SERVER=8SQLNET.ALLOWED_LOGON_VERSION_CLIENT=814、备库rac1 添加静态监听grid用户添加:[grid@hisservera admin]$ pwd/u01/app/19.0.0/grid/network/admin[grid@hisservera admin]$ vi listener.oraSID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = hisdb)(ORACLE_HOME = u01/app/oracle/product/19.0.0/db_1)(SID_NAME = hisdb1)))15、备库rac1升级到19cSQL> startup nomount;SQL> ALTER SYSTEM SET CLUSTER_DATABASE=FALSE scope=spfile; --集群参数关闭SQL> SHUTDOWN IMMEDIATESQL> startup upgrade;alter database add logfile thread 1 group 15 ('+data') size 4G;alter database add logfile thread 1 group 16 ('+data') size 4G;--19c oracle目录[oracle@his1 dbs]$ cd $ORACLE_HOME/rdbms/admin[oracle@his1 admin]$ $ORACLE_HOME/perl/bin/perl catctl.pl -n 8 catupgrd.sql+++++++升级脚本介绍4 (默认) – 最大: 8个并行进程中断可继续运行:$ dbupgrade -R -l tmp/logs封装脚本:catctl.pl$ perl catctl.pl -n 4 -l tmp/logs catupgrd.sql+++++++[oracle@hisservera admin]$ $ORACLE_HOME/perl/bin/perl catctl.pl -n 8 catupgrd.sqlArgument list for [catctl.pl]For Oracle internal use only A = 0Run in c = 0Do not run in C = 0Input Directory d = 0Echo OFF e = 1Simulate E = 0Forced cleanup F = 0Log Id i = 0Child Process I = 0Log Dir l = 0Priority List Name L = 0Upgrade Mode active M = 0SQL Process Count n = 8SQL PDB Process Count N = 0Open Mode Normal o = 0Start Phase p = 0End Phase P = 0Reverse Order r = 0AutoUpgrade Resume R = 0Script s = 0Serial Run S = 0RO User Tablespaces T = 0Display Phases y = 0Debug catcon.pm z = 0Debug catctl.pl Z = 0catctl.pl VERSION: [19.0.0.0.0]STATUS: [Production]BUILD: [RDBMS_19.20.0.0.0DBRU_LINUX.X64_230621]/u01/app/oracle/product/19.0.0/db_1/rdbms/admin/orahome = [/u01/app/oracle/product/19.0.0/db_1]/u01/app/oracle/product/19.0.0/db_1/bin/orabasehome = [/u01/app/oracle/product/19.0.0/db_1]catctlGetOraBaseLogDir = [/u01/app/oracle/product/19.0.0/db_1]Analyzing file u01/app/oracle/product/19.0.0/db_1/rdbms/admin/catupgrd.sqlLog file directory = [/tmp/cfgtoollogs/upgrade20230921001521]catcon::set_log_file_base_path: ALL catcon-related output will be written to [/tmp/cfgtoollogs/upgrade20230921001521/catupgrd_catcon_95011.lst]catcon::set_log_file_base_path: catcon: See [/tmp/cfgtoollogs/upgrade20230921001521/catupgrd*.log] files for output generated by scriptscatcon::set_log_file_base_path: catcon: See [/tmp/cfgtoollogs/upgrade20230921001521/catupgrd_*.lst] files for spool files, if anyNumber of Cpus = 128Database Name = hisdbdgDataBase Version = 11.2.0.4.0catcon::set_log_file_base_path: ALL catcon-related output will be written to [/u01/app/oracle/product/19.0.0/db_1/cfgtoollogs/hisdbdg/upgrade20230921001523/catcatcon::set_log_file_base_path: catcon: See [/u01/app/oracle/product/19.0.0/db_1/cfgtoollogs/hisdbdg/upgrade20230921001523/catupgrd*.log] files for output genecatcon::set_log_file_base_path: catcon: See [/u01/app/oracle/product/19.0.0/db_1/cfgtoollogs/hisdbdg/upgrade20230921001523/catupgrd_*.lst] files for spool fileLog file directory = [/u01/app/oracle/product/19.0.0/db_1/cfgtoollogs/hisdbdg/upgrade20230921001523]Parallel SQL Process Count = 8Components in [hisdbdg]Installed [APEX APS CATALOG CATJAVA CATPROC CONTEXT JAVAVM ORDIM OWM SDO XDB XML XOQ]Not Installed [DV EM MGW ODM OLS RAC WK]DataBase Version = 11.2.0.4.0------------------------------------------------------Phases [0-107] Start Time:[2023_09_21 00:15:24]------------------------------------------------------*********** Executing Change Scripts ***********Serial Phase #:0 [hisdbdg] Files:1 Time: 235s*************** Catalog Core SQL ***************Serial Phase #:1 [hisdbdg] Files:5 Time: 72sRestart Phase #:2 [hisdbdg] Files:1 Time: 0s*********** Catalog Tables and Views ***********Parallel Phase #:3 [hisdbdg] Files:19 Time: 28sRestart Phase #:4 [hisdbdg] Files:1 Time: 0s************* Catalog Final Scripts ************Serial Phase #:5 [hisdbdg] Files:7 Time: 29s***************** Catproc Start ****************Serial Phase #:6 [hisdbdg] Files:1 Time: 16s***************** Catproc Types ****************Serial Phase #:7 [hisdbdg] Files:2 Time: 15sRestart Phase #:8 [hisdbdg] Files:1 Time: 0s**************** Catproc Tables ****************Parallel Phase #:9 [hisdbdg] Files:71 Time: 17sRestart Phase #:10 [hisdbdg] Files:1 Time: 0s************* Catproc Package Specs ************Serial Phase #:11 [hisdbdg] Files:1 Time: 79sRestart Phase #:12 [hisdbdg] Files:1 Time: 0s************** Catproc Procedures **************Parallel Phase #:13 [hisdbdg] Files:95 Time: 3sRestart Phase #:14 [hisdbdg] Files:1 Time: 0sParallel Phase #:15 [hisdbdg] Files:123 Time: 7sRestart Phase #:16 [hisdbdg] Files:1 Time: 0sSerial Phase #:17 [hisdbdg] Files:26 Time: 3sRestart Phase #:18 [hisdbdg] Files:1 Time: 0s***************** Catproc Views ****************Parallel Phase #:19 [hisdbdg] Files:32 Time: 9sRestart Phase #:20 [hisdbdg] Files:1 Time: 0sSerial Phase #:21 [hisdbdg] Files:3 Time: 13sRestart Phase #:22 [hisdbdg] Files:1 Time: 0sParallel Phase #:23 [hisdbdg] Files:25 Time: 102sRestart Phase #:24 [hisdbdg] Files:1 Time: 0sParallel Phase #:25 [hisdbdg] Files:12 Time: 66sRestart Phase #:26 [hisdbdg] Files:1 Time: 0sSerial Phase #:27 [hisdbdg] Files:1 Time: 0sSerial Phase #:28 [hisdbdg] Files:7 Time: 5sSerial Phase #:29 [hisdbdg] Files:1 Time: 0sRestart Phase #:30 [hisdbdg] Files:1 Time: 0s*************** Catproc CDB Views **************Serial Phase #:31 [hisdbdg] Files:1 Time: 0sRestart Phase #:32 [hisdbdg] Files:1 Time: 0sSerial Phase #:34 [hisdbdg] Files:1 Time: 0s***************** Catproc PLBs *****************Serial Phase #:35 [hisdbdg] Files:298 Time: 26sSerial Phase #:36 [hisdbdg] Files:1 Time: 0sRestart Phase #:37 [hisdbdg] Files:1 Time: 1sSerial Phase #:38 [hisdbdg] Files:10 Time: 5sRestart Phase #:39 [hisdbdg] Files:1 Time: 0s*************** Catproc DataPump ***************Serial Phase #:40 [hisdbdg] Files:3 Time: 43sRestart Phase #:41 [hisdbdg] Files:1 Time: 1s****************** Catproc SQL *****************Parallel Phase #:42 [hisdbdg] Files:13 Time: 62sRestart Phase #:43 [hisdbdg] Files:1 Time: 0sParallel Phase #:44 [hisdbdg] Files:11 Time: 6sRestart Phase #:45 [hisdbdg] Files:1 Time: 0sParallel Phase #:46 [hisdbdg] Files:3 Time: 1sRestart Phase #:47 [hisdbdg] Files:1 Time: 0s************* Final Catproc scripts ************Serial Phase #:48 [hisdbdg] Files:1 Time: 24sRestart Phase #:49 [hisdbdg] Files:1 Time: 0s************** Final RDBMS scripts *************Serial Phase #:50 [hisdbdg] Files:1 Time: 34s************ Upgrade Component Start ***********Serial Phase #:51 [hisdbdg] Files:1 Time: 0sRestart Phase #:52 [hisdbdg] Files:1 Time: 0s********** Upgrading Java and non-Java *********Serial Phase #:53 [hisdbdg] Files:2 Time: 368s***************** Upgrading XDB ****************Restart Phase #:54 [hisdbdg] Files:1 Time: 0sSerial Phase #:56 [hisdbdg] Files:3 Time: 23sSerial Phase #:57 [hisdbdg] Files:3 Time: 2sParallel Phase #:58 [hisdbdg] Files:10 Time: 2sParallel Phase #:59 [hisdbdg] Files:25 Time: 3sSerial Phase #:60 [hisdbdg] Files:4 Time: 8sSerial Phase #:61 [hisdbdg] Files:1 Time: 0sSerial Phase #:62 [hisdbdg] Files:32 Time: 3sSerial Phase #:63 [hisdbdg] Files:1 Time: 0sParallel Phase #:64 [hisdbdg] Files:6 Time: 6sSerial Phase #:65 [hisdbdg] Files:2 Time: 15sSerial Phase #:66 [hisdbdg] Files:3 Time: 66s**************** Upgrading ORDIM ***************Restart Phase #:67 [hisdbdg] Files:1 Time: 0sSerial Phase #:69 [hisdbdg] Files:1 Time: 1sParallel Phase #:70 [hisdbdg] Files:2 Time: 31sRestart Phase #:71 [hisdbdg] Files:1 Time: 0sParallel Phase #:72 [hisdbdg] Files:2 Time: 1sSerial Phase #:73 [hisdbdg] Files:2 Time: 0s***************** Upgrading SDO ****************Restart Phase #:74 [hisdbdg] Files:1 Time: 0sSerial Phase #:76 [hisdbdg] Files:1 Time: 31sSerial Phase #:77 [hisdbdg] Files:2 Time: 2sRestart Phase #:78 [hisdbdg] Files:1 Time: 0sSerial Phase #:79 [hisdbdg] Files:1 Time: 19sRestart Phase #:80 [hisdbdg] Files:1 Time: 0sParallel Phase #:81 [hisdbdg] Files:3 Time: 24sRestart Phase #:82 [hisdbdg] Files:1 Time: 0sSerial Phase #:83 [hisdbdg] Files:1 Time: 5sRestart Phase #:84 [hisdbdg] Files:1 Time: 0sSerial Phase #:85 [hisdbdg] Files:1 Time: 8sRestart Phase #:86 [hisdbdg] Files:1 Time: 0sParallel Phase #:87 [hisdbdg] Files:4 Time: 54sRestart Phase #:88 [hisdbdg] Files:1 Time: 1sSerial Phase #:89 [hisdbdg] Files:1 Time: 0sRestart Phase #:90 [hisdbdg] Files:1 Time: 0sSerial Phase #:91 [hisdbdg] Files:2 Time: 7sRestart Phase #:92 [hisdbdg] Files:1 Time: 0sSerial Phase #:93 [hisdbdg] Files:1 Time: 0sRestart Phase #:94 [hisdbdg] Files:1 Time: 1s******* Upgrading ODM, WK, EXF, RUL, XOQ *******Serial Phase #:95 [hisdbdg] Files:1 Time: 18sRestart Phase #:96 [hisdbdg] Files:1 Time: 0s*********** Final Component scripts ***********Serial Phase #:97 [hisdbdg] Files:1 Time: 3s************* Final Upgrade scripts ************Serial Phase #:98 [hisdbdg] Files:1 Time: 101s******************* Migration ******************Serial Phase #:99 [hisdbdg] Files:1 Time: 37s*** End PDB Application Upgrade Pre-Shutdown ***Serial Phase #:100 [hisdbdg] Files:1 Time: 1sSerial Phase #:101 [hisdbdg] Files:1 Time: 0sSerial Phase #:102 [hisdbdg] Files:1 Time: 65s***************** Post Upgrade *****************Serial Phase #:103 [hisdbdg] Files:1 Time: 56s**************** Summary report ****************Serial Phase #:104 [hisdbdg] Files:1 Time: 0s*** End PDB Application Upgrade Post-Shutdown **Serial Phase #:105 [hisdbdg] Files:1 Time: 1sSerial Phase #:106 [hisdbdg] Files:1 Time: 0sSerial Phase #:107 [hisdbdg] Files:1 Time: 132s------------------------------------------------------Phases [0-107] End Time:[2023_09_21 00:48:42]------------------------------------------------------Grand Total Time: 1998sLOG FILES: (/u01/app/oracle/product/19.0.0/db_1/cfgtoollogs/hisdbdg/upgrade20230921001523/catupgrd*.log)Upgrade Summary Report Located in:/u01/app/oracle/product/19.0.0/db_1/cfgtoollogs/hisdbdg/upgrade20230921001523/upg_summary.logGrand Total Upgrade Time: [0d:0h:33m:18s]16、备库rac1 升级后处理sqlplus as sysdbastartupSQL> alter trigger SYS.GGS_DDL_TRIGGER_BEFORE disable;SQL> @$ORACLE_HOME/rdbms/admin/utlusts.sqlEnter value for 1:Oracle Database Release 19 Post-Upgrade Status Tool 09-21-2023 00:51:1Database Name: HISDBComponent Current Full Elapsed TimeName Status Version HH:MM:SSOracle Server UPGRADED 19.20.0.0.0 00:14:59JServer JAVA Virtual Machine UPGRADED 19.20.0.0.0 00:03:27Oracle XDK UPGRADED 19.20.0.0.0 00:00:29Oracle Database Java Packages UPGRADED 19.20.0.0.0 00:00:11OLAP Analytic Workspace UPGRADED 19.20.0.0.0 00:00:15Oracle Text UPGRADED 19.20.0.0.0 00:00:51Oracle Workspace Manager UPGRADED 19.20.0.0.0 00:00:51Oracle Real Application Clusters UPGRADED 19.20.0.0.0 00:00:00Oracle XML Database UPGRADED 19.20.0.0.0 00:02:06Oracle Multimedia UPGRADED 19.20.0.0.0 00:00:32Spatial UPGRADED 19.20.0.0.0 00:02:29Oracle OLAP API UPGRADED 19.20.0.0.0 00:00:11Datapatch 00:01:32Final Actions 00:02:18Post Upgrade 00:00:53Total Upgrade Time: 00:29:53Database time zone version is 14. It is older than current release timezone version 42. Time zone upgrade is needed using the DBMS_DST package.时区升级:-------升级后和时区更改--------------SQL> @?/rdbms/admin/utltz_upg_check.sqlINFO: Starting with RDBMS DST update preparation.INFO: NO actual RDBMS DST update will be done by this script.INFO: If an ERROR occurs the script will EXIT sqlplus.INFO: Doing checks for known issues ...INFO: Database version is 19.0.0.0 .INFO: Database RDBMS DST version is DSTv14 .INFO: No known issues detected.INFO: Now detecting new RDBMS DST version.A prepare window has been successfully started.INFO: Newest RDBMS DST version detected is DSTv42 .INFO: Next step is checking all TSTZ data.INFO: It might take a while before any further output is seen ...A prepare window has been successfully ended.INFO: A newer RDBMS DST version than the one currently used is found.INFO: Note that NO DST update was yet done.INFO: Now run utltz_upg_apply.sql to do the actual RDBMS DST update.INFO: Note that the utltz_upg_apply.sql script willINFO: restart the database 2 times WITHOUT any confirmation or prompt.Session altered.SQL> @?/rdbms/admin/utltz_upg_apply.sqlSession altered.INFO: If an ERROR occurs, the script will EXIT SQL*Plus.INFO: The database RDBMS DST version will be updated to DSTv42 .WARNING: This script will restart the database 2 timesWARNING: WITHOUT asking ANY confirmation.WARNING: Hit control-c NOW if this is not intended.INFO: Restarting the database in UPGRADE mode to start the DST upgrade.Database closed.Database dismounted.ORACLE instance shut down.ORACLE instance started.Total System Global Area 3.4360E+11 bytesFixed Size 30156920 bytesVariable Size 4.4023E+10 bytesDatabase Buffers 2.9904E+11 bytesRedo Buffers 506712064 bytesDatabase mounted.Database opened.INFO: Starting the RDBMS DST upgrade.INFO: Upgrading all SYS owned TSTZ data.INFO: It might take time before any further output is seen ...An upgrade window has been successfully started.INFO: Restarting the database in NORMAL mode to upgrade non-SYS TSTZ data.Database closed.Database dismounted.ORACLE instance shut down.ORACLE instance started.Total System Global Area 3.4360E+11 bytesFixed Size 30156920 bytesVariable Size 4.4023E+10 bytesDatabase Buffers 2.9904E+11 bytesRedo Buffers 506712064 bytesDatabase mounted.Database opened.INFO: Upgrading all non-SYS TSTZ data.INFO: It might take time before any further output is seen ...INFO: Do NOT start any application yet that uses TSTZ data!INFO: Next is a list of all upgraded tables:Table list: "GSMADMIN_INTERNAL"."AQ$_CHANGE_LOG_QUEUE_TABLE_S"Number of failures: 0Table list: "GSMADMIN_INTERNAL"."AQ$_CHANGE_LOG_QUEUE_TABLE_L"Number of failures: 0Table list: "MDSYS"."SDO_DIAG_MESSAGES_TABLE"Number of failures: 0INFO: Total failures during update of TSTZ data: 0 .An upgrade window has been successfully ended.INFO: Your new Server RDBMS DST version is DSTv42 .INFO: The RDBMS DST update is successfully finished.INFO: Make sure to exit this SQL*Plus session.INFO: Do not use it for timezone related selects.Session altered.set line 200col PROPERTY_NAME format a30SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE 'DST_%'ORDER BY PROPERTY_NAME;select * from v$timezone_file;--升级后脚本执行SQL> @/u02/app/oracle/cfgtoollogs/hisdbdg/preupgrade/postupgrade_fixups.sqlSession altered.PL/SQL procedure successfully completed.PL/SQL procedure successfully completed.PL/SQL procedure successfully completed.Package created.No errors.Package body created.PL/SQL procedure successfully completed.No errors.1 row selected.Package created.No errors.Package body created.No errors.Executing Oracle POST-Upgrade Fixup ScriptAuto-Generated by: Oracle Preupgrade ScriptVersion: 19.0.0.0.0 Build: 1Generated on: 2023-09-20 21:43:16For Source Database: HISDBSource Database Version: 11.2.0.4.0For Upgrade to Version: 19.0.0.0.0Preup PreupgradeAction Issue IsNumber Preupgrade Check Name Remedied Further DBA Action------ ------------------------ ---------- --------------------------------21. depend_usr_tables YES None.22. old_time_zones_exist YES None.23. dir_symlinks YES None.24. post_dictionary YES None.25. post_fixed_objects NO Informational only.Further action is optional.26. upg_by_std_upgrd YES None.The fixup scripts have been run and resolved what they can. However,there are still issues originally identified by the preupgrade thathave not been remedied and are still present in the database.Depending on the severity of the specific issue, and the nature ofthe issue itself, that could mean that your database upgrade is notfully complete. To resolve the outstanding issues, start by reviewingthe postupgrade_fixups.sql and searching it for the name ofthe failed CHECK NAME or Preupgrade Action Number listed above.There you will find the original corresponding diagnostic messagefrom the preupgrade which explains in more detail what still needsto be done.PL/SQL procedure successfully completed.Session altered.SQL> @?/rdbms/admin/utlrp.sqlSQL> @?/rdbms/admin/utlusts.sqlOracle Database Release 19 Post-Upgrade Status Tool 09-21-2023 01:03:3Database Name: HISDBComponent Current Full Elapsed TimeName Status Version HH:MM:SSOracle Server VALID 19.20.0.0.0 00:14:59JServer JAVA Virtual Machine VALID 19.20.0.0.0 00:03:27Oracle XDK VALID 19.20.0.0.0 00:00:29Oracle Database Java Packages VALID 19.20.0.0.0 00:00:11OLAP Analytic Workspace VALID 19.20.0.0.0 00:00:15Oracle Text VALID 19.20.0.0.0 00:00:51Oracle Workspace Manager VALID 19.20.0.0.0 00:00:51Oracle Real Application Clusters VALID 19.20.0.0.0 00:00:00Oracle XML Database VALID 19.20.0.0.0 00:02:06Oracle Multimedia VALID 19.20.0.0.0 00:00:32Spatial VALID 19.20.0.0.0 00:02:29Oracle OLAP API VALID 19.20.0.0.0 00:00:11Datapatch 00:01:32Final Actions 00:02:18Post Upgrade 00:00:53Post Compile 00:02:01Total Upgrade Time: 00:31:54Database time zone version is 42. It meets current release needs.升级后查询确认:select * from DBA_REGISTRY_HISTORY;select comp_name,status,version from dba_server_registry;select comp_id,version,status from dba_registry;select * from v$version;show parameter compatible升级后的检查:select * from utl_recomp_errors;如果出现未选定行,说明升级没有错误
6、升级后操作
1、redo处理1) 重建在fs上的redoselect * from v$log;select * from v$logfile;select * from v$standby_log;alter database drop logfile group 11;alter database drop logfile group 12;alter database drop logfile group 13;alter database drop logfile group 14;alter database disable thread 2;alter database drop logfile group 21;alter database drop logfile group 22;alter database drop logfile group 23;alter database drop logfile group 24;alter database add logfile thread 1 group 11 ('+data') size 300m;alter database add logfile thread 1 group 12 ('+data') size 300m;alter database add logfile thread 1 group 13 ('+data') size 300m;alter database add logfile thread 1 group 14 ('+data') size 300m;alter database add logfile thread 1 group 15 ('+data') size 300m;alter database add logfile thread 2 group 21 ('+data') size 300m;alter database add logfile thread 2 group 22 ('+data') size 300m;alter database add logfile thread 2 group 23 ('+data') size 300m;alter database add logfile thread 2 group 24 ('+data') size 300m;alter database add logfile thread 2 group 25 ('+data') size 300m;alter system switch logfile;alter system checkpoint;alter database drop logfile group 15;alter database drop logfile group 16;alter database disable thread 2;alter database drop logfile group 3;2) 重建在fs上的standby(每个线程添加6组)alter database drop logfile group 1;alter database drop logfile group 2;alter database drop logfile group 3;alter database drop logfile group 4;alter database add standby logfile thread 1 group 31 ('+data') size 300m;alter database add standby logfile thread 1 group 32 ('+data') size 300m;alter database add standby logfile thread 1 group 33 ('+data') size 300m;alter database add standby logfile thread 1 group 34 ('+data') size 300m;alter database add standby logfile thread 1 group 35 ('+data') size 300m;alter database add standby logfile thread 1 group 36 ('+data') size 300m;alter database add standby logfile thread 2 group 41 ('+data') size 300m;alter database add standby logfile thread 2 group 42 ('+data') size 300m;alter database add standby logfile thread 2 group 43 ('+data') size 300m;alter database add standby logfile thread 2 group 44 ('+data') size 300m;alter database add standby logfile thread 2 group 45 ('+data') size 300m;alter database add standby logfile thread 2 group 46 ('+data') size 300m;3) 打开线程2,并为各实例设置使用的线程alter database enable thread 2;alter system set thread=1 scope=spfile sid='hisdb1';alter system set thread=2 scope=spfile sid='hisdb2';4) RAC参数调整--alter system set instance_number=1 scope=spfile sid='hisdb1';--alter system set instance_number=2 scope=spfile sid='hisdb2';--alter system set cluster_database_instances=2 scope=spfile;alter system set cluster_database=true scope=spfile;2、 注册db到OCR第一节点关闭,然后重启SQL> shutdown immediateSQL> startup当前的crs里面没有数据库的资源,需要将资源添加到crs里用oracle用户添加数据库服务及实例服务并设置成自动启动crs去启动这些服务。[grid@hisservera ~]$ srvctl config database -d hisdb --之前正常的配置Database unique name: hisdbDatabase name: hisdbOracle home: /u01/app/oracle/product/19.0.0/db_1Oracle user: oracleSpfile: +DATA/hisdb/PARAMETERFILE/spfile.268.1101872219Password file: +DATA/hisdb/PASSWORD/pwdhisdb.256.1101871767Domain:Start options: openStop options: immediateDatabase role: PRIMARYManagement policy: AUTOMATICServer pools:Disk Groups: FRA,DATAMount point paths:Services:Type: RACStart concurrency:Stop concurrency:OSDBA group: dbaOSOPER group: operDatabase instances: hisdb1,hisdb2Configured nodes: his1,his2CSS critical: noCPU count: 0Memory target: 0Maximum memory: 0Default network number for database services:Database is administrator manageda ) grid用户先处理密码文件到asm –节点一处理ASMCMD [+data/hisdbdg] > mkdir password --不新建,直接拷贝ASMCMD [+data/hisdbdg] > pwcopy --dbuniquename hisdbdg /u01/app/oracle/product/19.0.0/db_1/dbs/orapwhisdb1 +data/hisdbdg/password/pwdhisdb--如果加错路径或文件了,可以通过sqlplus进去删除SQL> alter diskgroup data drop file '+DATA/hisdbDG/PASSWORD/pwdhisdbdg.362.1101920821';b ) 旧密码文件处理[oracle@hisservera ~]$ cd $ORACLE_HOME/dbs[oracle@hisservera dbs]$ mv orapwhisdb1 orapwhisdb1_oldc ) oracle用户添加db服务到ocrsrvctl add database -db hisdbdg -oraclehome /u01/app/oracle/product/19.0.0/db_1 -spfile +DATA/hisdbdg/parameterfile/spfile.256.1148094475 -pwfile +data/hisdbdg/password/pwdhisdb -role LOGICAL_STANDBY -dbname hisdbd ) oracle用户修改db服务到ocrsrvctl modify database -d hisdbdg -diskgroup 'DATA,ARCH'[oracle@hisservera dbs]$ srvctl add instance -d hisdbdg -i hisdb1 -n hisservera[oracle@hisservera dbs]$ srvctl enable database -d hisdbdg[oracle@hisservera dbs]$ srvctl enable instance -d hisdbdg -i hisdb1[oracle@hisservera dbs]$ srvctl config database -d hisdbdg[grid@hisservera admin]$ crsctl stat res -te)集群启停测试[grid@hisservera admin]$ srvctl start database -d hisdbdg[grid@hisservera admin]$ srvctl stop database -d hisdbdg3、统计信息收集4、wm_concat函数增加5、sys授权\产品脚本执行调整...\his参数调整
7、重新开启同步
11g向19c同步
1、重新同步在逻辑备库上启用SQL APPLY(rac1开启即可)SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;主库开启日志传输SQL> alter system set log_archive_dest_state_3 = ENABLE scope=both;
8、正式切割
执行failover动作,主库释放ip,新19c rac scan修改为原生产库ip
##############################################################################1、第一步操作,停掉生产业务(zsk)su - oracle/u01/app/oracle/product/11.2.4/db_1/network/admin/sqlnet.oratcp.validnode_checking=yestcp.invited_nodes=(127.0.0.1,10.10.0.68,10.10.0.74,10.10.0.202,10.10.0.201,10.10.0.203,10.10.0.204,10.10.0.100,10.10.0.205,192.168.100.100,192.168.100.101,10.10.14.11)rac重启监听lsnrctl stoplsnrctl startps -ef|grep LOCAL=NO|grep -v grep|awk '{print $2}'|wc -lps -ef|grep LOCAL=NO|grep -v grep|awk '{print $2}'|xargs kill -92、对比新库和旧库数据select '门诊费用记录' 表,count(1) 记录数 from 门诊费用记录union allselect '住院费用记录',count(1) from 住院费用记录union allselect '药品收发记录',count(1) from 药品收发记录union allselect '病人医嘱记录',count(1) from 病人医嘱记录union allselect '电子病历记录',count(1) from 电子病历记录union allselect '电子病历内容',count(1) from 电子病历内容union allselect '病人信息',count(1) from 病人信息union allselect '病人变动记录',count(1) from 病人变动记录union allselect '病人诊断记录',count(1) from 病人诊断记录;3、主库摘掉第4个dg--主库先执行alter system set log_archive_config='DG_CONFIG=(hisdb,hisdg,hisdb1)' scope=both sid='*';alter system set log_archive_dest_3='';alter system reset log_archive_dest_3 scope=spfile;--备库(先备份现有spfile,然后再删除dg参数)create pfile from spfile;--alter system set db_unique_name='hisdb' scope=spfile;alter system set log_archive_config='';alter system reset log_archive_config scope=spfile;--alter system set log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST' scope=both;alter system set log_archive_dest_2='' scope=both;alter system reset log_archive_dest_2 scope=spfile;alter system set log_archive_dest_3='' scope=both;alter system reset log_archive_dest_3 scope=spfile;alter system reset standby_file_management scope=spfile;alter system reset db_file_name_convert scope=spfile;alter system reset log_file_name_convert scope=spfile;alter system set fal_client='' scope=both;alter system reset fal_client scope=spfile;alter system set fal_server='' scope=both;alter system reset fal_server scope=spfile;exit;su - rootsrvctl stop database -d hisdbdgsrvctl start database -d hisdbdg4、备库执行激活alter database stop logical standby apply;alter database activate logical standby database ;select db_unique_name,open_mode,switchover_status,dataguard_broker,guard_status,database_role,force_logging,log_mode,protection_mode,protection_level,name,controlfile_type,fs_failover_status from v$database;5、改掉集群的属性为主库srvctl config database -d hisdbdgsrvctl modify database -d hisdbdg -role PRIMARYsrvctl config database -d hisdbdg6、新202 用root 停掉scan和scan_listener,因为scan用的 10.10.0.201srvctl stop scan_listenersrvctl stop scan7、修改老服务器ip变为201 (zsk)vi /etc/sysconfig/network-scripts/ifcfg-bond010.10.0.201systemctl restart network8、新HIS库修改scan ip为原HIS ip 10.10.0.100A.查看当前 scanip 情况srvctl config scanB. 停止 scanipsrvctl stop scan_listenersrvctl stop scanC. 修改命名解析(两个节点都要修改)vim /etc/hosts10.10.0.100 hisdb-scan------修改后如下------#PUBLIC10.10.0.201 hisserverb10.10.0.202 hisservera#PRIVATE192.168.100.100 hisserverb-priv192.168.100.101 hisservera-priv#VIP10.10.0.203 hisserverb-vip10.10.0.204 hisservera-vip#SCAN10.10.0.100 hisdb-scanD. 刷新 scansrvctl modify scan -n hisdb-scansrvctl modify scan_listener -uE. 启动 scan 及 scan_listenersrvctl start scansrvctl start scan_listenerF. 确认一下 ip 可用srvctl config scanip a9、业务测试10、重装原正式库环境,然后搭建
9、重装原来的生产库环境,然后19c的单节点做节点添加操作
一、网卡绑定public和private网卡均按照主库进行配置,team0为public网卡,team1参考team0配置,步骤一样。1.创建teamnmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'2.配置网络参数nmcli con modify team0 ipv4.address "10.10.0.201/24" ipv4.gateway 10.10.0.1 ipv4.method manual3.添加网卡信息nmcli con add type team-slave con-name team0-port1 ifname ens4f0 master team0nmcli con add type team-slave con-name team0-port2 ifname ens4f1 master team04.查看网卡信息nmcli connection show5.激活teamnmcli connection up team0nmcli connection up team0-port1nmcli connection up team0-port26.验证teamdctl team0 stat二、环境准备添加gi-- 如添加节点hisservera(节点1 grid执行)su - gridcd $ORACLE_HOME/addnode./addnode.sh -silent -ignoreSysPrereqs -ignorePrereqFailure "CLUSTER_NEW_NODES={hisserverb}" "CLUSTER_NEW_PRIVATE_NODE_NAMES={hisserverb-priv}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={hisserverb-vip}"-- 运行root脚本(新节点2 root执行日志)[root@hisserverb software]# /u01/app/oraInventory/orainstRoot.sh[root@hisserverb software]# /u01/app/19.0.0/grid/root.sh添加db[oracle@hisservera ~]$ cd $ORACLE_HOME/addnode[oracle@hisservera addnode]$ lsaddnode_oraparam.ini addnode_oraparam.ini.sbs addnode.pl addnode.sh[oracle@hisservera addnode]$ ./addnode.sh -silent -ignoreSysPrereqs -ignorePrereqFailure "CLUSTER_NEW_NODES={hisserverb}"--执行root脚本[root@hisserverb software]# /u01/app/oracle/product/19.0.0/db_1/root.sh添加实例--添加实例之前确认密码[oracle@hisserverb ~]$ sqlplus sys/oracle@10.10.0.204/hisdb as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Thu Sep 21 21:06:15 2023Version 19.20.0.0.0Copyright (c) 1982, 2022, Oracle. All rights reserved.Connected to:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.20.0.0.0SQL> exitDisconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.20.0.0.0--添加实例[oracle@hisservera ~]$ dbca -ignorePreReqs -ignorePrereqFailure -silent -addInstance -nodeName hisserverb -gdbName hisdbdg -instanceName hisdb2 -sysDBAUserName sys -sysDBAPassword oracle注意:添加实例的时候这里一定要写对-gdbName hisdbdg
11、lvm磁盘删除,再转成asm磁盘组,同时用来做备份
第二步lvm磁盘转asm[root@hisservera hisdb]# df -Th文件系统 类型 容量 已用 可用 已用% 挂载点devtmpfs devtmpfs 126G 0 126G 0% /devtmpfs tmpfs 225G 3.2G 222G 2% /dev/shmtmpfs tmpfs 126G 21M 126G 1% /runtmpfs tmpfs 126G 0 126G 0% /sys/fs/cgroup/dev/mapper/rhel-root xfs 543G 66G 477G 13% //dev/sda2 xfs 292M 154M 138M 53% /boot/dev/mapper/oraclevg-oraclelv xfs 1000G 885G 116G 89% /hisdata[root@hisservera hisdata]# pwd/hisdata[root@hisservera hisdata]# rm hisdb* -fr[root@hisservera ~]# umount /hisdata[root@hisservera ~]#[root@hisservera ~]# df -Th文件系统 类型 容量 已用 可用 已用% 挂载点devtmpfs devtmpfs 126G 0 126G 0% /devtmpfs tmpfs 225G 3.2G 222G 2% /dev/shmtmpfs tmpfs 126G 21M 126G 1% /runtmpfs tmpfs 126G 0 126G 0% /sys/fs/cgroup/dev/mapper/rhel-root xfs 543G 56G 487G 11% //dev/sda2 xfs 292M 154M 138M 53% /boottmpfs tmpfs 26G 24K 26G 1% /run/user/42tmpfs tmpfs 26G 0 26G 0% /run/user/54322tmpfs tmpfs 26G 0 26G 0% /run/user/0[root@hisservera ~]#[root@hisservera ~]# lvremove /dev/oraclevg/oraclelvDo you really want to remove active logical volume oraclevg/oraclelv? [y/n]: yLogical volume "oraclelv" successfully removed[root@hisservera ~]# vgremove oraclevgVolume group "oraclevg" successfully removed[root@hisservera ~]# pvremove /dev/mapper/mpathdata3Labels on physical volume "/dev/mapper/mpathdata3" successfully wiped.[root@hisservera ~]# pvremove /dev/mapper/mpathdata4Labels on physical volume "/dev/mapper/mpathdata4" successfully wiped.[root@hisservera ~]# pvsPV VG Fmt Attr PSize PFree/dev/mapper/mpathh vgdata lvm2 a-- 1.95t 0/dev/sda3 rhel lvm2 a-- 558.43g 0vi /etc/fstab #### 修改fstab 开机自动挂载#/dev/oraclevg/oraclelv /hisdata xfs defaults 0 0vi /etc/udev/rules.d/99-oracle-asmdevices.rules#KERNEL=="dm-*",ENV{DM_UUID}=="mpath-360002ac000000000000001a10001e94d",OWNER="grid",SYMLINK+="asm_data3",GROUP="asmadmin",MODE="0660"#KERNEL=="dm-*",ENV{DM_UUID}=="mpath-360002ac000000000000001a50001e94d",OWNER="grid",SYMLINK+="asm_data4",GROUP="asmadmin",MODE="0660"/usr/sbin/udevadm trigger --type=devices --action=change/usr/sbin/udevadm trigger --type=devices --action=addset line 220col name for a10col state for a10col COMPATIBILITY for a15col database_compatibility for a15select group_number,name,state,type,total_mb/1024 totol_gb,free_mb/1024 as free_gb,usable_file_mb/1024 usable_file_gb,allocation_unit_size/1024/1024 unit_mb,offline_disks,compatibility,database_compatibility,voting_files from v$asm_diskgroup order by 1;set line 250 pages 222col dno for a5col name for a13col state for a10col path for a40col FAILGROUP for a13col header_status for a15col rpt for 99999select group_number||'_'||disk_number as dno,name,failgroup,failgroup_type,path,create_date,mount_date,mount_status,header_status,state,os_mb,total_mb,free_mb,voting_file,repair_timer rpt from v$asm_disk order by 1;alter diskgroup data add disk '/dev/asm_data3','/dev/asm_data4' rebalance power 1024;select * from v$asm_operation;
mkdir /backup/Auto_Ctl_Backupcd /backup/mkdir logsmkdir level0mkdir levelc1mkdir leveld1mkdir /backup/archbakchown -R oracle:asmadmin /backup打开和关闭块跟踪RAC:#查看是否开启了块跟踪select * from v$block_change_tracking;#打开块跟踪alter database enable block change tracking using file '+DATA';#关闭块跟踪alter database disable block change tracking;非RAC:#打开块跟踪alter database enable block change tracking using file '/backup/block.trc';#关闭块跟踪alter database disable block change tracking;rman target /CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;#CONFIGURE RETENTION POLICY TO REDUNDANCY 1;CONFIGURE BACKUP OPTIMIZATION ON;CONFIGURE CONTROLFILE AUTOBACKUP ON;CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/Auto_Ctl_Backup/ctl_%d_%F';CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+ARCH/snapcf_orcl.f';[oracle@hisservera ~]$ env|grep ORACLE|awk '{print "export "$1}'[oracle@wsrmyydbb backup]$ vi /backup/level0.sh#!/bin/bashexport NLS_LANG=american_america.zhs16gbkexport NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'source /home/oracle/.bash_profile$ORACLE_HOME/bin/rman target / nocatalog log=/backup/logs/db0_`date +%Y%m%d%H%M`.log <<EOFrun{crosscheck backup;delete noprompt expired backup;crosscheck archivelog all;delete noprompt expired archivelog all;delete noprompt archivelog all completed before 'sysdate-15';allocate channel c1 device type disk;allocate channel c2 device type disk;allocate channel c3 device type disk;allocate channel c4 device type disk;allocate channel c5 device type disk;allocate channel c6 device type disk;allocate channel c7 device type disk;allocate channel c8 device type disk;backup as compressed backupset incremental level 0 database format '/backup/level0/db0-%d-%T-%s' plus archivelog format '/backup/level0/arc0-%d-%T-%s';release channel c1;release channel c2;release channel c3;release channel c4;release channel c5;release channel c6;release channel c7;release channel c8;delete noprompt obsolete device type disk;}EOF[oracle@wsrmyydbb backup]$ vi levelc1.sh#!/bin/bashexport NLS_LANG=american_america.zhs16gbkexport NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'source /home/oracle/.bash_profile$ORACLE_HOME/bin/rman target / nocatalog log=/backup/logs/db_c1_`date +%Y%m%d%H%M`.log <<EOFrun{allocate channel c1 device type disk;allocate channel c2 device type disk;backup as compressed backupset incremental level 1 cumulative database format '/backup/levelc1/db_c1-%d-%T-%s' plus archivelog format '/backup/levelc1/arc_c1-%d-%T-%s';release channel c1;release channel c2;delete noprompt obsolete device type disk;}EOF[oracle@wsrmyydbb backup]$ vi leveld1.sh#!/bin/bashexport NLS_LANG=american_america.zhs16gbkexport NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'source /home/oracle/.bash_profile$ORACLE_HOME/bin/rman target / nocatalog log=/backup/logs/db_d1_`date +%Y%m%d%H%M`.log <<EOFrun{allocate channel c1 device type disk;allocate channel c2 device type disk;backup as compressed backupset incremental level 1 database format '/backup/leveld1/db_d1-%d-%T-%s' plus archivelog format '/backup/leveld1/arc_d1-%d-%T-%s';release channel c1;release channel c2;delete noprompt obsolete device type disk;}EOF[oracle@wsrmyydbb backup]$ vi arch.sh#!/bin/bashexport NLS_LANG=american_america.zhs16gbkexport NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'source /home/oracle/.bash_profile$ORACLE_HOME/bin/rman target / nocatalog log=/backup/logs/arch_`date +%Y%m%d%H%M`.log <<EOFrun{allocate channel c1 device type disk;allocate channel c2 device type disk;sql 'alter system archive log current';sql 'alter system archive log current';backup as compressed backupset archivelog all not backed up tag 'Arc' format '/backup/archbak/arc_%d_%u_%p_%s';release channel c1;release channel c2;delete noprompt obsolete device type disk;}EOF[root@hisservera backup]# chown -R oracle:asmadmin /backup[root@hisservera backup]# chmod u+x *.sh[root@hisservera backup]# ll总用量 20drwxr-xr-x 2 oracle asmadmin 6 9月 22 09:33 archbak-rwxr--r-- 1 oracle asmadmin 593 9月 22 09:32 arch.shdrwxr-xr-x 2 oracle asmadmin 6 9月 22 08:47 Auto_Ctl_Backupdrwxr-xr-x 2 oracle asmadmin 4096 9月 22 09:09 level0-rwxr--r-- 1 oracle asmadmin 1078 9月 22 08:55 level0.shdrwxr-xr-x 2 oracle asmadmin 6 9月 22 08:51 levelc1-rwxr--r-- 1 oracle asmadmin 569 9月 22 08:56 levelc1.shdrwxr-xr-x 2 oracle asmadmin 6 9月 22 08:51 leveld1-rwxr--r-- 1 oracle asmadmin 558 9月 22 08:56 leveld1.shdrwxr-xr-x 2 oracle asmadmin 6 9月 22 08:50 logs[oracle@wsrmyydbb level0]$ crontab -l00 01 * * 0 /backup/level0.sh00 01 * * 1,2,4,6 /backup/leveld1.sh00 01 * * 3,5 /backup/levelc1.sh0 */1 * * * /backup/arch.sh > /dev/null 2>&100 03 * * * find /backup/logs/ -mtime +30 -name "*" -exec rm -rf {} \;




