客戶透過duplicate生產備庫的方式建立cascade備庫。
發現每次都會遇到兩個檔案報錯,ORA-17628: Oracle error 19505錯誤,且每一次跑,報錯檔案不一樣。
現在想幫客戶驗證,這屬於是正常現象還是bug;
本文需要先模擬客戶11.2.0.3環境,構建備庫、級聯備庫環境;
一、構造測試環境
1.搭建3套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
...
2.規劃主機名和IP地址並設定
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
3.清除沒有用的資料庫
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
先把測試環境準備好了,週末找時間再繼續測。