Chủ Nhật, 20 tháng 4, 2025

Xóa và add node ORACLE RAC 19.15

Môi trường ORACLE RAC chạy trên VMware

Node 1:

OS: Windows server 2019 standard

Server name: SVR-1145-DB

CPU: 32 core, RAM 64GB

Oracle: 19.15

Node 2:

OS: Windows server 2019 standard

Server name: SVR-1146-DB

CPU: 32 core, RAM 64GB

Oracle: 19.15

1. Vấn đề hệ thống

Dùng tool zerto move Node 1 qua môi trường khác start cluster không lên. Node 2 ở DC vẫn hoạt động bình thường

Move node 1 về lại môi trường cũ start lại cluster cũng không lên.

Lưu ý: Node 1 đã không chạy trong thời gian dài trên 2 tháng.

Lúc setup đặt tên cluster dài hơn 15 ký tự nó vẫn cho cài tiếp nhưng khi đến bước addnode thứ hai có thể sẽ bị lỗi

bởi vì tại bước này nó thực thi file gridconfig.bat, trong file này sẽ tiếp tục gọi đến file crsgenconfig_params nằm trong 

đường dẫn ( C:\oracle\app\19.0.0\gridhome\crs\install) để lấy cluster name lúc này cluster name chỉ còn 15 ký tự nên 

nó không hiểu và sinh ra lỗi không addnode được.

Giải pháp để xử lý trước khi add node lại

    1. Xác định đúng cluster name

    2. Edit cluster name trong file  crsgenconfig_params trên node còn hoạt động cho đúng với cluster name được yêu 

cầu trong log khi quá trình addnode bị lỗi sinh ra. Sau khi sửa xong tiến hành addnode trở lại và tiếp tục theo dõi log 

mới để trouble. 

2. Giải quyết vấn đề

2.1 Clone toàn bộ hệ thống Prod đưa vào môi trường isolate để làm UAT

  • Kiểm tra phần share disk trên tất cả các node. 

    Đảm bảo tất cả các disk phải được share theo đúng thứ tự vmdk và các controller.

  • Dùng diskpart để kiểm tra:
    Mở Command Prompt với quyền Administrator
    Nhập lệnh:

    diskpart
    list disk
       
    select disk 1
    online disk -- nếu nó chưa online
    detail disk -- xem chi tiết disk 1 nếu nó read only
    attribute disk clear readonly -- remove thuộc tính readonly của disk 1
    --Current Read-only State : No

    Tất cả disk phải có trạng thái online

  • Kiểm tra lại môi trường như

    • Tắt tất cả local firewall trên tất cả các node
      Tắt tất cả local firewall trên tất cả các node

    • Chạy lệnh cluvfy stage -pre crsinst svr-1145-db, svr-1146-db -verbose

  • Start lại cluster trên node 1 đứng trên node 1

    • Kiểm tra asm disk bằng lệnh asmca hoặc asmtool -list

    • Kiểm tra toàn bộ trạng thái resource trong cluster

  • Trong trường hợp này instance database startup mount nhưng không thể open

 

  • Đứng trên node 2 delete instance node 1 ra khỏi cluster.

  • Sqlplus và instance node 2 kiểm tra redo log group của node 1 xem còn không? 
    nếu còn thì phải xóa tất cả các redo log group 1 ra khỏi database bằng câu lệnh sau:

         Status: inactive

    SQL> ALTER DATABASE DISABLE THREAD 1;

SQL> ALTER DATABASE DROP LOGFILE GROUP 1;

SQL> ALTER DATABASE DROP LOGFILE GROUP 2;

SQL> ALTER DATABASE DROP LOGFILE GROUP 3;

SQL> ALTER DATABASE DROP LOGFILE GROUP 4;

SQL> ALTER DATABASE DROP LOGFILE GROUP 14;

  • Deinstall database software (database home trên node 1)

         deinstall.bat -local

  • Deinstall grid software (grid home trên node 1)    

         deinstall.bat -local

  • Kiểm tra thông tin (đứng trên node 2)

    • olsnodes -s -t -n --> đảm bảo không còn node 1

    • resource VIP của node 1 trong cluster --> nếu còn phải remove

    • Chạy cluvfy stage -post nodedel svr-1145-db -verbose      

    • Chạy cluvfy stage -pre nodeadd svr-1145-db -verbose

  • Thực hiện add grid home vào cluster (đứng trên node 2 add node 1)

    • Restart lại node 1

    • Kiểm tra WTime32

    • Tạo grid home

    • Chạy lại cluvfy stage -pre nodeadd svr-1145-db -verbose (fix hết các lỗi nếu có mới tiến hành add node)

    • Đứng trên grid home node 2 chạy lệnh addnode.bat với quyền Administrator

    • Đứng trên node 1 chạy lệnh gridconfig.bat trên node 1 ( chú ý cluster name không được lớn 15 ký tự)

    • Kiểm tra tất cả resource của node 1 trên cluster

  • Thực hiện add database home và cluster (đứng trên node 2 add node 1)

    • Đứng trên database home node 2 chạy lệnh addnode.bat với quyền Administrator

    • Làm theo yêu cầu từ màn hình

  •  Add instance database vào cluster

    • Đứng trên node 2 khai bao môi trường database home chạy lệnh DBCA để add instance vào cluster 

    • Add instance database vào cluster

2.2 Thực hiện trên môi trường Prod

 👉 Trường hợp này cluster trên node 1 bị lỗi không start được

 👉 Instance database không chạy

 

 Giải quyết:

 1. Manual xóa tất cả các thành phần

  • Xóa redo log group của instance 1

    Status: inactive

    SQL> ALTER DATABASE DISABLE THREAD 1;

SQL> ALTER DATABASE DROP LOGFILE GROUP 1;

SQL> ALTER DATABASE DROP LOGFILE GROUP 2;

SQL> ALTER DATABASE DROP LOGFILE GROUP 3;

SQL> ALTER DATABASE DROP LOGFILE GROUP 4;

SQL> ALTER DATABASE DROP LOGFILE GROUP 14;

  • Deinstall database software (database home trên node 1)

         deinstall.bat -local 

  • Deinstall grid software (grid home trên node 1)    

         deinstall.bat -local

  • Kiểm tra thông tin (đứng trên node 2)

    • olsnodes -s -t -n --> đảm bảo không còn node 1 → nếu còn cần phải restart cluster trên node 2 và thực hiện lệnh sau:

crsctl delete node -n svr-1145-db

  • resource VIP của node 1 trong cluster --> nếu còn phải remove

  • Chạy cluvfy stage -post nodedel svr-1145-db -verbose      

  • Chạy cluvfy stage -pre nodeadd svr-1145-db -verbose

2. Thực hiện add node vào cluster

Lưu ý: Kiểm tra phải restart process OracleRemExecServiceV2 thành công trên cả 2 node

  • Thực hiện add grid home vào cluster (đứng trên node 2 add node 1)

    • Restart lại node 1

    • Kiểm tra WTime32

    • Tạo grid home

    • Chạy lại cluvfy stage -pre nodeadd svr-1145-db -verbose (fix hết các lỗi nếu có mới tiến hành add node)

    • Đứng trên grid home node 2 chạy lệnh addnode.bat với quyền Administrator

    • Đứng trên node 1 chạy lệnh gridconfig.bat trên node 1 (chú ý cluster name không được lớn 15 ký tự)

    • Kiểm tra tất cả resource của node 1 trên cluster

    • Chỉnh 2 tham số này trong registry trên cả 2 node có giá trị 600 (MaxNegPhaseCorrection,MaxPosPhaseCorrection)

  • Thực hiện add database home và cluster (đứng trên node 2 add node 1)

    • Đứng trên database home node 2 chạy lệnh addnode.bat với quyền Administrator

    • Làm theo yêu cầu từ màn hình

  •  Add instance database vào cluster

    • Đứng trên node 2 khai báo môi trường database home chạy lệnh DBCA để add instance vào cluster 

    • Add instance database vào cluster




Chủ Nhật, 23 tháng 3, 2025

Migrate Oracle RAC 19C To New SAN

 

1. Tạo diskgroup mới

 ##Disk group name:
 OCR (3 LUN - 20GB/LUN - Total: 60GB)
 ARCH (1 LUN - 500GB/LUN - Total: 500GB)
 BACKUP (1 LUN - 500GB/LUN - Toal: 500GB)
 REDO1:(2 LUN - 20GB/LUN - Toal: 40GB)
 REDO2: (2 LUN - 20GB/LUN - Toal: 40GB)
 DGDATA: (3 LUN - 300GB/LUN - Toal: 900GB)

2. Tạo database nhỏ dùng file system để test CALIBRATE_IO (link)

CONN / AS SYSDBA

SET SERVEROUTPUT ON
DECLARE
  l_latency  PLS_INTEGER;
  l_iops     PLS_INTEGER;
  l_mbps     PLS_INTEGER;
BEGIN
   DBMS_RESOURCE_MANAGER.calibrate_io (num_physical_disks => 1, 
                                       max_latency        => 20,
                                       max_iops           => l_iops,
                                       max_mbps           => l_mbps,
                                       actual_latency     => l_latency);
 
  DBMS_OUTPUT.put_line('Max IOPS = ' || l_iops);
  DBMS_OUTPUT.put_line('Max MBPS = ' || l_mbps);
  DBMS_OUTPUT.put_line('Latency  = ' || l_latency);
END;
/

Max IOPS = 95
Max MBPS = 449
Latency  = 20

PL/SQL procedure successfully completed.

SQL>

3. Migrate datafile oracle database

3.1 CREATE NEW DISKGROUP (ONLINE)

3.2 BACKUP AS COPY DATABASE (ONLINE)

rman target /
## set PARALLEL để tăng tốc độ backup
CONFIGURE DEVICE TYPE DISK PARALLELISM 20 BACKUP TYPE TO BACKUPSET;
backup as copy database format '+DGDATA';

3.3 SWITCH DATABASE TO COPY (OFFLINE)

srvctl stop database -d coredb
srvctl start instance -d coredb -i coredb1 -o mount
rman target /
switch database to copy;
recover database;
srvctl stop instance -d coredb -i coredb1
srvctl start database -d coredb

4. Migrate TEMP FILE

4.1 Check total size temp files old

SELECT tablespace_name, sum(round((bytes / 1024 / 1024), 2)) AS "Size (MB)"
FROM dba_temp_files group by tablespace_name;

4.2 Check temp files size

set line 200
col name for a60
col status for a20
select name, bytes/1024/1024/1024 MB,status from v$tempfile;

4.3 Create the new temp files


ALTER TABLESPACE TEMP ADD TEMPFILE '+ARCH' SIZE 10M AUTOEXTEND ON NEXT 1M MAXSIZE 100M;

4.4 Make sure there is no session is using the temp tablespace

SELECT USERNAME, SESSION_NUM, SESSION_ADDR FROM V$SORT_USAGE;

SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE SERIAL#=SESSION_NUM;
Or
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE SADDR=SESSION_ADDR;

4.5 Change the status of the temp files to Offline.

alter database tempfile '<PATH>/XXX_PF_TMP_001.dbf' OFFLINE;
alter database tempfile '<PATH>/XXX_PF_TMP_002.dbf' OFFLINE;

4.6 Drop the old temp files.

ALTER DATABASE TEMPFILE '<PATH>/XXX_PF_TMP_001.dbf' DROP;

ALTER DATABASE TEMPFILE '<PATH>/XXX_PF_TMP_002.dbf' DROP;

Verify the info of the new temp files.

SQL> select * from dba_temp_files;
Or
SQL> select * from V$TEMPFILE;

5. Migrate online redo logfile (online)

Tạo thêm các redo log group nằm trên diskgroup mới

Thực hiện drop các redo log group cũ đang inactive
ALTER DATABASE ADD LOGFILE THREAD 1 ('+REDO1', '+REDO2') SIZE 200M;
ALTER DATABASE ADD LOGFILE THREAD 1 ('+REDO1', '+REDO2') SIZE 200M;
ALTER DATABASE ADD LOGFILE THREAD 1 ('+REDO1', '+REDO2') SIZE 200M;
ALTER DATABASE ADD LOGFILE THREAD 2 ('+REDO1', '+REDO2') SIZE 200M;
ALTER DATABASE ADD LOGFILE THREAD 2 ('+REDO1', '+REDO2') SIZE 200M;
ALTER DATABASE ADD LOGFILE THREAD 2 ('+REDO1', '+REDO2') SIZE 200M;

6. Migrate spfile (offline)

Note: alter system set archive_log_dest_1='LOCATION=+ARCH';
. oraenv
coredb
sqlplus / as sysdba
create pfile='/tmp/init/init_coredb.ora' from spfile;
create spfile='+DGDATA' from pfile='/tmp/init/init_coredb.ora';
##Check lại location spfile
$srvctl config database -d coredb

7. Migrate controlfile (offline)

sqlplus / as sysdba 

alter system set controlfile ='+new_diskgroup/ctr1.ora',''+new_diskgroup/ctr2.ora' scope = spfile sid='*';

srvctl stop database -d coredb

Vào asm

copy control file từ đường dẫn cũng sang đường dẫn mới.

srvctl start database -d coredb

8. Migrate OCR (online)

#$ORACLE_HOME/bin/ocrcheck
#$crsctl query css votedisk
#$ORACLE_HOME/bin/bin/ocrconfig -add +OCR //(+OCR diskgroup mới)
#$ORACLE_HOME/bin/bin/ocrconfig -delete +ASM //(+ASM diskgroup cũ)
#$ORACLE_HOME/bin/crsctl replace votedisk +OCR //(+OCR diskgroup mới)
#$ORACLE_HOME/bin/crsctl query css votedisk // check vote disk
#$ORACLE_HOME/bin/ocrcheck

==MODIFY THE BACKUP LOCATION FOR THE OCR
ocrconfig -showbackup
ocrconfig -backuploc <new location>

9. Migrate asm spfile (offline)

oraenv
+ASM1
sqlplus / as sysasm
create pfile='/tmp/initasm.ora' from spfile;
create spfile='+OCR' from pfile='/tmp/initasm.ora';
$ORACLE_HOME/bin/gpnptool get

10. Move password file asm

 Login as user grid
$srvctl config asm


https://www.oracledbworld.com/oracle-rac/how-to-migrate-ocr-vote-file-asm-spfile-and-asm-password-file-to-new-diskgroup-in-oracle-19c/

 
$asmcmd pwmove --asm  -f +ASM/orapwASM +OCR/orapwASM
## Change location backup of password file asm
Login as user grid
$ srvctl modify asm -pwfilebackup  +OCR/orapwASM_backup


==STOP VÀ START CRS TRÊN ALL NODES
#crsctl stop crs -f
#crsctl start crs -wait
#crsctl status res -t 

 11. ROLLBACK (SỐ NGÀY ROLLBACK PHỤ THUỘC VÀO SỐ NGÀY ARCHIVE ĐƯỢC GIỮ)

srvctl stop database -d coredb
srvctl start instance -d coredb -i coredb1 -o mount
rman target /
switch database to copy;
recover database;
srvctl stop instance -d coredb -i coredb1
srvctl start database -d coredb

 

 

 

 

 

 

 

Thứ Bảy, 20 tháng 11, 2021

Cài đặt db Oracle RAC 2 node 19C trên server VMW

1. Môi trường

1.1 Cài đặt OS

Download OracleLinux-R8-U4-x86_64-dvd.iso 

Guide setup: tại đây    

Cấu hình host file Node 1, Node 2

192.32.146.20  ck-tl-orc-dba-01    ck-tl-orc-dba-01.domainname

192.32.146.21  ck-tl-orc-dba-02    ck-tl-orc-dba-02.domainname

192.32.146.26  ck-tl-orc-dba-01-vip    ck-tl-orc-dba-01-vip.domainname

192.32.146.27  ck-tl-orc-dba-01-vip    ck-tl-orc-dba-02-vip.domainname

192.32.146.28  scan    scan.domainname

192.32.146.29  scan    scan.domainname

192.32.146.30  scan    scan.domainname

10.20.10.1   ck-tl-orc-dba-01-priv   ck-tl-orc-dba-01-priv.domainname

10.20.10.2   ck-tl-orc-dba-01-priv   ck-tl-orc-dba-02-priv.domainname 

Stop và disable firewall trên 2 nodes

systemctl stop firewalld.service

systemctl disable firewalld.service

Set dns trỏ về server dns

vi /etc/resolv.conf 

# add line below

nameserver    192.168.1.90

Run all Node

sudo dnf groupinstall "Server with GUI"

Config VNC Server: tại đây 

1.2 Cấu hình tham số hệ thống

a.Cấu hình tham số cần thiết cài đặt Oracle Grid và Database 
# yum -y install oracle-database-preinstall-19c  
b.Cài đặt và cấu hình oracleasm

As user root:

# cd /tmp

# wget https://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.17-1.el8.x86_64.rpm

# wget https://public-yum.oracle.com/repo/OracleLinux/OL8/addons/x86_64/getPackage/oracleasm-support-2.1.12-1.el8.x86_64.rpm

# yum localinstall ./oracleasm-support-2.1.12-1.el8.x86_64.rpm ./oracleasmlib-2.0.17-1.el8.x86_64.rpm 

c.Cấu hình ssh          

Create Passwordless user root:

Node 1:

Login root

Passphare để trống

ssh-keygen –t rsa

Create file authorized_keys

cat id_rsa.pub >> authorized_keys

Node 2:

Login root

Passphare để trống

ssh-keygen –t rsa

Create file authorized_keys

cat id_rsa.pub >> authorized_keys

Add ssh key Node 1 to Node 2

cat authorized_keys

Copy content in authorized_keys in Node 1 and then past content to authenrized_keys in Node 2

Add ssh key Node 2 to Node 1

cat authorized_keys

Copy content in authorized_keys in Node 2 and then past content to authenrized_keys in Node 1

Check ssh

Login Root in Node 1

ssh hostname_node2 date

Check ssh

Login Root in Node 2

ssh hostname_node1 date

d.Cấu hình ntp client

Cài và cấu hình ntp client

Đưa ntp server vào file cấu hình: /etc/chrony.conf

Server 192.168.1.100

Server 192.168.1.200

systemctl restart chronyd.service

systemctl status chronyd.service 

ntpq -p

e. Đặt crontab cho ntp

30 * * * * /usr/sbin/ntpdate -u 192.168.1.100

f. Tạo Oracle Home

Create Oracle Home trên 2 nodes  

Tạo folder cài đặt Grid

mkdir -p /u01/app/oracle/19.3.0

mkdir -p /u01/app/oracle/grid

Tạo lại đường dẫn oracle home 
  
mkdir -p /u01/app/oracle/database/19.3.0/dbhome_1

chown -R oracle:oinstall /u01/

chmod -R 775 /u01 

1.3 Cấu hình disk cho RAC

1.Yêu cầu quản trị SAN cấp 1 vùng SAN tổng sau đó map lên 2 server theo dạng device:

Lưu ý:  cả 2 server phải cùng đọc và ghi vào các device này .

sdb, sdc, sdd, sde, sdf, sdg, ... 

2. Crate partition cho các device

2.0 # fdisk /dev/sdb

2.1 Nhập vào n để tạo partition mới

2.2 Command aciton: p

2.3 Chọn loại partition là p ( primary )

2.4 Partition number : chọn 1

2.5 First cylender: chọn 1

2.6 Last cylender: để default và nhấn Enter để lấy toàn bộ dung lượng của đĩa cho partition 1

2.7 Chọn w để lưu lại

3. Lặp lại bước 2.0 đến 2.7 cho các disk còn lại

4. Update info kernel

# /sbin/partprobe

1.4 Cấu hình asmdisk

       a. Run on Node 1, Node 2:

# oracleasm configure -I

Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library

driver.  The following questions will determine whether the driver is

loaded on boot and what permissions it will have.  The current values

will be shown in brackets ('[]').  Hitting <ENTER> without typing an

answer will keep that current value.  Ctrl-C will abort.

 

Default user to own the driver interface []: oracle

Default group to own the driver interface []: oinstall

Start Oracle ASM library driver on boot (y/n) [n]: y

Scan for Oracle ASM disks on boot (y/n) [y]: y

 

The next two configuration options take substrings to match device names.

The substring "sd" (without the quotes), for example, matches "sda", "sdb",

etc.  You may enter more than one substring pattern, separated by spaces.

The special string "none" (again, without the quotes) will clear the value.

 

Device order to scan for ASM disks []:

Devices to exclude from scanning []:

Directories to scan []:

Use device logical block size for ASM (y/n) [n]: y

Writing Oracle ASM library driver configuration: done

 

b. Run on Node 1, Node 2:

# oracleasm init 

Loading module "oracleasm": oracleasm

Configuring "oracleasm" to use device logical block size

Mounting ASMlib driver filesystem: /dev/oracleasm

c. Run on Node 1:

# oracleasm createdisk archlog1 /dev/sdb1

Writing disk header: done

Instantiating disk: done

# oracleasm createdisk controlfile1 /dev/sdc1

Writing disk header: done

Instantiating disk: done

# oracleasm createdisk controlfile2 /dev/sdd1

Writing disk header: done

Instantiating disk: done

# oracleasm createdisk controlfile3 /dev/sde1

Writing disk header: done

Instantiating disk: done

# oracleasm createdisk data01 /dev/sdf1

Writing disk header: done

Instantiating disk: done

# oracleasm createdisk redo01 /dev/sdg1

Writing disk header: done

Instantiating disk: done

# oracleasm createdisk redo02 /dev/sdh1

Writing disk header: done

Instantiating disk: done

# oracleasm createdisk redo03 /dev/sdi1

Writing disk header: done

Instantiating disk: done

# oracleasm createdisk ocr01 /dev/sdj1

Writing disk header: done

Instantiating disk: done

# oracleasm createdisk ocr02 /dev/sdk1

Writing disk header: done

Instantiating disk: done

# oracleasm createdisk ocr03 /dev/sdl1

Writing disk header: done

Instantiating disk: done
 
 d. Run on Node 1, Node 2:
 
# oracleasm scandisks

Reloading disk partitions: done

Cleaning any stale ASM disks...

Scanning system for ASM disks...

# oracleasm listdisks

ARCHLOG1

CONTROLFILE1

CONTROLFILE2

CONTROLFILE3

DATA01

OCR01

OCR02

OCR03

REDO01

REDO02

REDO03 

 

2. Cài đặt grid 19.3.0

a. Tải soft Grid và DB tại đây

b. Cài đặt Grid

Use user oracle:

Open SNTP or Xftp or WinSCP .. connect to Node 1

Upload source grid to path: /u01/app/oracle/19.3.0

c. Connect VNC Server Node 1

Open VNC Client in MobaXterm

Connect to :192.32.146.20:1

Open terminal

export CV_ASSUME_DISTID=OEL8.4

$ cd /u01/app/oracle/19.3.0

$ unzip grid_home19300.zip

$ rm -rf  grid_home19300.zip

$ ./gridSetup.sh

 

 Next

Next

Next

SSH connectivity

Enter pass 
Setup --> OK
Next

Next

Next








Next
Create diskgroup OCR
Click Next

Next 

Next

Next

Yes --> Next

Next

Next

Next

Next

Next

Next

Login user root

Run on Node 1, Node 2

# /u01/app/oracle/oraInventory/orainstRoot.sh

 Run on Node 1, Node 2

#  /u01/app/oracle/19.3.0/root.sh



OK
Next
Yes --> Next
Finish

3. Cài đặt database 19.3.0 

Cài đặt database software

Use user oracle:
Open SNTP or Xftp or WinSCP .. connect to Node 1
Upload source db to path: /u01/app/oracle/database/19.3.0/dbhome_1

Open VNC Client in MobaXterm

Connect to :192.32.146.20:1

Open terminal

export CV_ASSUME_DISTID=OEL8.4

$ cd /u01/app/oracle/database/19.3.0/dbhome_1

$ unzip database_home19300.zip

$ rm -rf  database_home19300.zip

$ ./runInstaller

 
Next

Next

Next

Next

Next

Yes and Next

Next

Next
Yes and Next
Next

Login user root

Run on Node 1, Node 2

#  /u01/app/oracle/database/19.3.0/dbhome_1/root.sh

OK 

Finish