Thứ Ba, 1 tháng 11, 2022

Nâng cấp DataGuard Standby DB lên 19c

 Ở đây chúng ta sẽ xem cách nâng cấp cơ sở dữ liệu dự phòng (standby database) của bạn từ 12c lên 19c mà không cần xây dựng lại cơ sở dữ liệu dự phòng. Bạn có thể nâng cấp cơ sở dữ liệu của mình lên bản mới và giữ nguyên thiết lập data guard. Các cơ sở dữ liệu dự phòng có thể được nâng cấp ngầm định thông qua redo từ cơ sở dữ liệu chính và không cần phải xây dựng lại cơ sở dữ liệu dự phòng sau khi nâng cấp.


Chi tiết Cơ sở dữ liệu Chính: 

DB_NAME = MYDB, DB_UNIQUE_NAME = MYDB1, ServerName = ed-olraclin1

Chi tiết Cơ sở dữ liệu Dự phòng:

DB_NMAE = MYDB, DB_UNIQUE_NAME = MYDB2, ServerName = ed-olraclin2

1. Cài đặt Oracle Home mới trên cả máy chủ chính và máy chủ dự phòng. Hai Oracle Home phải có các bản vá lỗi giống nhau được áp dụng với RU mới nhất.

2. Trước khi Nâng cấp trên cơ sở dữ liệu Dự phòng (MYDB2), hãy chạy preupgrade.jar và tập lệnh SQL sửa lỗi trước  nâng cấp (preupgrade)

TỔNG HỢP SỬ DỤNG: 12c_release_Oracle_home/jdk/bin/java -jar $19c_release_Oracle_home/rdbms/admin/preupgrade.jar [FILE|TERMINAL] [TEXT|XML] [DIR output_dir]

#java -jar /u01/app/oracle/product/19.9.0.0/mydb_home/rdbms/admin/preupgrade.jar TERMINAL TEXT

3. Vô hiệu hóa Dataguard broker

Nếu bạn không sử dụng broker thì hãy sử dụng phương pháp thủ công để vô hiệu hóa việc vận chuyển redo log từ DB chính sang DB dự phòng. Đồng thời vô hiệu hóa cấu hình broker

DGMGRL SYS@MYDB1> disable fast_start failover;

DGMGRL SYS@MYDB1> disable configuration;

Sau đó, bạn có thể tắt broker  ở DB chính. Tạo một bản sao của các tệp cấu hình broker. Sử dụng SQL dưới đây để tạo các lệnh sao chép tệp. Hãy nhớ thực hiện các lệnh được tạo:

MYDB1 SQL> alter system set dg_broker_start=false scope=both;

MYDB1 SQL> select 'host cp ' || value || ' /tmp' as cmd from v$parameter where name like 'dg_broker_config_file%';

MYDB1 SQL> --Bây giờ, thực hiện các lệnh

MYDB1 SQL> host ls /tmp/dr*.dat

Cuối cùng, bạn làm tương tự đối với cơ sở dữ liệu dự phòng:

MYDB2 SQL> alter system set dg_broker_start=false scope=both;
MYDB2 SQL> select 'host cp ' || value || ' /tmp' as cmd from v$parameter where name like 'dg_broker_config_file%';
MYDB1 SQL> --Bây giờ, thực hiện các lệnh
MYDB2 SQL> host ls /tmp/dr*.dat

Bây giờ Dừng DataGuard: Trên cơ sở dữ liệu chính, dừng việc vận chuyển redo log đến cơ sở dữ liệu dự phòng. Điều này là không cần thiết, nhưng có thể được thực hiện. Đảm bảo xác minh rằng log_archive_dest_state_2 là đích lưu trữ thực tế cho cơ sở dữ liệu dự phòng của bạn

MYDB1 SQL> show parameter log_archive_dest_2

MYDB1 SQL> alter system set log_archive_dest_state_2='defer' scope=both;

Tiếp theo, bạn hủy apply trên cơ sở dữ liệu dự phòng:

MYDB2 SQL> alter database recover managed standby database cancel;

Cuối cùng, bạn tắt cơ sở dữ liệu:

MYDB2 SQL> shutdown immediate

Nếu bạn đang sử dụng  Grid Infrastructure (GI)  để quản lý cơ sở dữ liệu, bạn nên dừng và tắt cơ sở dữ liệu. Vô hiệu hóa cơ sở dữ liệu có thể không nhất thiết nhưng an toàn thì cứ vô hiệu hóa:

[oracle@ed-olraclin2]$ $ORACLE_HOME/bin/srvctl stop database -d MYDB2

[oracle@ed-olraclin2]$ $ORACLE_HOME/bin/srvctl disable database -d MYDB2

Nâng cấp DB chính lên 19c:

Bây giờ bạn có thể nâng cấp cơ sở dữ liệu chính bằng phương pháp bạn muốn. Hoàn thành tất cả các nhiệm vụ sau nâng cấp và thực hiện các kiểm tra cần thiết để xác nhận bản cơ sở dữ liệu mới.

Nếu có điều gì đó xảy ra trong quá trình nâng cấp và bạn muốn quay lui, bạn có thể flashback lại cơ sở dữ liệu và chỉ cần khôi phục lại các bước trước khi nâng cấp (bắt đầu bằng cách bật cơ sở dữ liệu, khởi động cơ sở dữ liệu, bắt đầu apply redo, v.v.). Hãy nhớ rằng cơ sở dữ liệu dự phòng đã bị bỏ ra trước khi chúng ta bắt đầu thao tác, vì vậy nếu không thành công, chỉ cần khởi động lại cơ sở dữ liệu dự phòng và kết nối người dùng lại.

Sau khi nâng cấp Khởi động lại Data Guard:

Khi bạn hài lòng với việc nâng cấp và đảm bảo bản cơ sở dữ liệu mới, bạn có thể tiếp tục. Cập nhật listener trên máy chủ dự phòng. Đảm bảo cập nhật thông tin Oracle Home trong mục listener.ora. Lưu ý rằng listener.ora của bạn có thể được lưu trữ ở vị trí không phải mặc định, vì vậy hãy sử dụng lsnrctl status để lấy vị trí. Cuối cùng, reload lại listener:

[grid@ed-olraclin2]$ $GRID_HOME/bin/lsnrctl status

[grid@ed-olraclin2]$ vi $GRID_HOME/network/admin/listener.ora

[grid@ed-olraclin2]$ $GRID_HOME/bin/lsnrctl reload

Đối với các lệnh tiếp theo, tôi sẽ được sử dụng cùng một dấu nhắc và tôi sẽ cần các biến môi trường sau:

[oracle@ed-olraclin2]$ export OLD_HOME=/u01/app/oracle/MYDBuct/18.0.0.0/dbhome_1

[oracle@ed-olraclin2]$ export NEW_HOME=/u01/app/oracle/MYDBuct/19.0.0.0/dbhome_1

[oracle@ed-olraclin2]$ export ORACLE_HOME=$NEW_HOME

[oracle@ed-olraclin2]$ export ORACLE_SID=MYDB

[oracle@ed-olraclin2]$ #Set ORACLE_UNQNAME to DB_UNIQUE_NAME

[oracle@ed-olraclin2]$ export ORACLE_UNQNAME=MYDB2 

Tiếp theo, nếu cơ sở dữ liệu dự phòng đang sử dụng TNS_ADMIN ở vị trí mặc định ($ ORACLE_HOME/network/admin), thì hãy nhớ sao chép các bí danh TNS có liên quan vào tnsnames.ora mới. Nên có bí danh TNS cho cơ sở dữ liệu chính và cơ sở dữ liệu dự phòng. Hoặc, nếu không có cơ sở dữ liệu nào khác trong cùng Oracle Home, bạn có thể chỉ cần sao chép các tệp:

[oracle @ ed-olraclin2] $ # Sao lưu tệp

[oracle@ed-olraclin2]$ cp $NEW_HOME/network/admin/sqlnet.ora $NEW_HOME/network/admin/sqlnet.ora.backup

[oracle@ed-olraclin2]$ cp $NEW_HOME/network/admin/tnsnames.ora $NEW_HOME/network/admin/tnsnames.ora.backup

[oracle@ed-olraclin2]$ #Copy home từ cũ sang mới 

[oracle@ed-olraclin2]$ cp $OLD_HOME/network/admin/sqlnet.ora $NEW_HOME/network/admin

[oracle@ed-olraclin2]$ cp $OLD_HOME/network/admin/tnsnames.ora $NEW_HOME/network/admin

Bây giờ, bạn sửa /etc/oratab và cập nhật thông tin Oracle Home để trùng với Oracle Home mới:

[oracle@ed-olraclin2]$ vi /etc/oratab

Sao chép tệp tin SPFile và mật khẩu vào Oracle Home mới:

[oracle@ed-olraclin2]$ cp $OLD_HOME/dbs/orapw$ORACLE_SID $ORACLE_HOME/dbs

[oracle@ed-olraclin2]$ cp $OLD_HOME/dbs/spfile$ORACLE_SID.ora $ORACLE_HOME/dbs

Nếu bạn đang sử dụng GI để quản lý cơ sở dữ liệu, bạn phải nâng cấp cơ sở dữ liệu, nghĩa là cập nhật thông tin Oracle Home, vì vậy GI sẽ khởi động cơ sở dữ liệu trong Oracle Home chính xác. Tiếp theo, bật lại và khởi động cơ sở dữ liệu:

[oracle@ed-olraclin2]$ $ORACLE_HOME/bin/srvctl upgrade database -db $ORACLE_UNQNAME -oraclehome $ORACLE_HOME

[oracle@ed-olraclin2]$ $ORACLE_HOME/bin/srvctl modify database -db $ORACLE_UNQNAME -startoption MOUNT -role PHYSICAL_STANDBY

[oracle@ed-olraclin2]$ $ORACLE_HOME/bin/srvctl enable database -d $ORACLE_UNQNAME

[oracle@ed-olraclin2]$ $ORACLE_HOME/bin/srvctl start database -d $ORACLE_UNQNAME

Hoặc, nếu bạn không sử dụng GI, chỉ cần khởi động cơ sở dữ liệu:

MYDB2 SQL> startup mount

Bật lại Redo Log Transport và Apply

Trên cơ sở dữ liệu chính, kích hoạt lại quá trình truyền redo log sang cơ sở dữ liệu dự phòng:

MYDB1 SQL> alter system set log_archive_dest_state_2='enable' scope=both;

Trên cơ sở dữ liệu dự phòng khởi động lại apply redo:

MYDB2 SQL> alter database recover managed standby database disconnect from session;

Bật lại DataGuard Broker: Trước tiên, chúng ta cần sao chép tệp cấu hình broker vào  Oracle Home mới. Nếu bạn lưu trữ các tệp cấu hình broker của mình bên ngoài Oracle Home, điều này có thể không cần thiết đối với bạn:

[oracle@ed-olraclin1]$ export ORACLE_HOME=/u01/app/oracle/MYDBuct/19.0.0.0/dbhome_1

[oracle@ed-olraclin1]$ export ORACLE_UNQNAME=MYDB1

[oracle@ed-olraclin1]$ cp /tmp/dr1$ORACLE_UNQNAME.dat $ORACLE_HOME/dbs

[oracle@ed-olraclin1]$ cp /tmp/dr2$ORACLE_UNQNAME.dat $ORACLE_HOME/dbs

Làm tương tự trên máy chủ cơ sở dữ liệu dự phòng:

[oracle@ed-olraclin2]$ export ORACLE_HOME=/u01/app/oracle/MYDBuct/19.0.0.0/dbhome_1

[oracle@ed-olraclin2]$ export ORACLE_UNQNAME=MYDB2 

[oracle@ed-olraclin2]$ cp /tmp/dr1$ORACLE_UNQNAME.dat $ORACLE_HOME/dbs

[oracle@ed-olraclin2]$ cp /tmp/dr2$ORACLE_UNQNAME.dat $ORACLE_HOME/dbs

Bây giờ, bạn có thể khởi động lại Data Guard Broker trên cả cơ sở dữ liệu chính và cơ sở dữ liệu dự phòng:

MYDB1 SQL> alter system set dg_broker_start=true scope=both;

MYDB2 SQL> alter system set dg_broker_start=true scope=both;

Cuối cùng, kích hoạt cấu hình broker và bắt đầu nhanh chuyển đổi dự phòng:

DGMGRL SYS@MYDB1> show configuration

DGMGRL SYS@MYDB1> enable configuration

DGMGRL SYS@MYDB1> enable fast_start failover

Kiểm tra: Sử dụng broker để đảm bảo mọi thứ đều ổn:

DGMGRL SYS@MYDB1> show configuration

DGMGRL SYS@MYDB1> show database MYDB1

DGMGRL SYS@MYDB1> show database MYDB2

Bạn nên liệt kê SUCCESS cho cả hai cơ sở dữ liệu. 

Nếu bạn không sử dụng Data Guard Broker, bạn sử dụng SQL và SQLPlus thông thường để xác minh môi trường Data Guard. Việc nâng cấp cơ sở dữ liệu của bạn thực sự không phức tạp đến vậy, ngay cả khi nó là một phần của thiết lập Data Guard. Cần thêm một chút thao tác để chăm sóc cơ sở dữ liệu dự phòng. Nhưng điều tốt là thiết lập DR của bạn được duy trì trong suốt quá trình.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master