客户通过duplicate生产备库的方式创建cascade备库。
发现每次都会遇到两个文件报错,ORA-17628: Oracle error 19505错误,且每一次跑,报错文件不一样。
现在想帮客户验证,这属于是正常现象还是bug;
本文需要先模拟客户11.2.0.3环境,构建备库、级联备库环境;
自己测试资源有限,只有一个11.2.0.3的单实例,然后以此为模版克隆两台分别用作备库和级联备库。
克隆前需要将模版先挂起:
# virsh suspend db11g # virt-clone --original db11g --name db11gadg --auto-clone
使用nohup后台进行克隆,避免中断:
nohup virt-clone --original db11g --name db11gadg --auto-clone & nohup virt-clone --original db11g --name db11gcas --auto-clone &
克隆两台的动作只能串行,并行会有明确错误提示。
即便串行,查看日志发现5分钟内也能搞定这个克隆动作。
[root@bogon ~]# tail -20f nohup.out WARNING Setting the graphics device port to autoport, in order to avoid conflicting. Allocating 'db11gadg.img' | 10 GB 00:16 Allocating 'db1-lun1-clone-2-clone.img' | 100 GB 02:09 Clone 'db11gadg' created successfully. WARNING Setting the graphics device port to autoport, in order to avoid conflicting. Allocating 'db11gcas.img' | 10 GB 00:14 Allocating 'db1-lun1-clone-2-clone-1.img' | 100 GB 02:01 Clone 'db11gcas' created successfully.
克隆完成后,恢复模版并打开克隆的环境,确认均正常运行:
# virsh resume db11g # virsh start db11gadg # virsh start db11gcas # virsh list --all [root@bogon ~]# virsh list --all Id Name State ---------------------------------------------------- ... 11 db11g running 12 db11gadg running 13 db11gcas running ...
db11g IP地址是 192.168.1.18
db11gadg IP地址是 192.168.1.19
db11gcas IP地址是 192.168.1.20
# db11gadg [root@bogon ~]# virsh console db11gadg hostnamectl set-hostname db11gadg vi /etc/hosts vi /etc/sysconfig/network-scripts/ifcfg-eth0 vi /etc/sysconfig/network-scripts/ifcfg-ens9 <-- 这里是我特有的一个网卡,你若没有可以不设置,不影响本次测试 reboot # db11gcas [root@bogon ~]# virsh console db11gcas hostnamectl set-hostname db11gcas vi /etc/hosts vi /etc/sysconfig/network-scripts/ifcfg-eth0 vi /etc/sysconfig/network-scripts/ifcfg-ens9 reboot
db11gadg 和 db11gcas 只需要保留Oracle软件,原有数据库实例删除掉。
监听文件的配置,里面也有主机名信息,按实际改下即可。
删除Oracle实例(稍微有些繁琐,但这也是成熟的表现,毕竟删库这种事情就要搞的门槛高些,避免误操作)
比如使用SQL直接删除在运行中的数据库,直接提示不被允许:
SQL> drop database; drop database * ERROR at line 1: ORA-01586: database must be mounted EXCLUSIVE and not open for this operation
rman操作同样直接提示不被允许:
[oracle@db11gcas ~]$ rman target / Recovery Manager: Release 11.2.0.3.0 - Production on Fri May 12 23:30:19 2023 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: JINGYU (DBID=3834912727) RMAN> drop database; database name is "JINGYU" and DBID is 3834912727 Do you really want to drop the database (enter YES or NO)? yes RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== ORA-01586: database must be mounted EXCLUSIVE and not open for this operation RMAN>
按文档建议步骤,使用rman删除数据库
rman target / RMAN> STARTUP FORCE MOUNT SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; RMAN> DROP DATABASE INCLUDING BACKUPS NOPROMPT; ... database name is "JINGYU" and DBID is 3834912727 database dropped
纯SQL操作也是OK的:
SQL> STARTUP FORCE MOUNT SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL> DROP DATABASE
先把测试环境准备好了,周末找时间再继续测。