11g ADG級聯備庫基礎測試環境準備

2023-05-13 06:00:50

客戶通過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

先把測試環境準備好了,週末找時間再繼續測。