Đăng bởi: daoquanghuynh | 19/10/2009

Oracle Physical Standby Database

GIỚI THIỆU

Standby database là hệ thống cơ sở dữ liệu dự phòng cho phép chuyển đổi vai trò từ máy Database Standby thành máy Database Primary và ngược lại, khi máy Database Primary gặp sự cố hỏng hóc hay muốn thay đổi vai trò để maintenance máy Database Primary như nâng cấp, tinh chỉnh về phần cứng….
Physical Standby Database là 1 Database vật lý dự phòng cho máy Database chính đang hoạt động
Khi máy Database Primary đang hoạt động thì máy Database Standby có nhiệm vụ sao lưu, dự phòng bằng cách apply các logfile từ máy Database Primary vào Database Standby giúp cho 2 máy đồng nhất ở thời điểm máy Primary kết xuất log file cuối cùng.
Trong quá trình hoạt động của hệ thống “Standby Database” thì máy Database Standby có thể được open để dùng cho mục đích report (giảm thiểu truy xuất quá nhiều vào server chính), đồng thời lúc này việc apply các logfile từ Database Primary sẽ không được thực hiện nhưng các logfile vẫn được copy qua máy Standby.
Sau đó chúng ta có thể apply các logfile này sau.

CẤU HÌNH PHYSICAL STANDBY DATABASE

Đặt tên 2 server lần lượt là:

Server 1: Primary
Server 2: Standby

Đề xuất: Cấu hình 2 server phải tương đương nhau thì tốt hoặc ngang ngang nhau cũng được, quan trọng nhất là HDD và RAM vì HDD liên quan trực tiếp đến Datafile còn RAM liên quan trực tiếp đến bộ nhớ mà Oracle ghi nhận trong các file định nghĩa riêng cho Oracle Database ví dụ Pfile hoặc Spfile. vì vậy 2 máy phải tương đương nhau là tốt nhất.

Và dùng Oracle Database 9i, các bạn cũng có thể làm thử tại Oracle Database hiện hành của mình và tìm hiểu thêm tài liệu về Oracle Database đó, dưới đây là các bước được làm cho Oracle Database 9i

I.TẠI SERVER 1

1.Đưa database về trạng thái Archive Log
Nên thiết lập biến môi trường trước khi connect vào database để đảm bảo đang làm việc cho Database nào

Start > Run > Cmd
C:\set ORACLE_SID=orcl

Chú ý: Dấu ‘=’ ở trên không được có khoảng trắng

Kiểm tra database đã Archive Log Mode chưa

SQL> conn / as sysdba
Connected.
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled

Như trên là Database đã được đưa vào trạng thái Archive Log Mode

SQL> conn / as sysdba
Connected.
SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled

Như trên là database chưa được đưa vào trạng thái Archive Log Mode
Đưa vào trạng thái Archive Log Mode

SQL>shutdown immediate
SQL>startup mount
SQL>alter database open;
SQL>archive log start;

2.Tạo pfile INIT.ORA từ SPFILE

Nếu database của bạn được start bằng SPFILE thì tạo PFILE
Còn nếu start bằng PFILE thì ko cần tạo lại và làm tiếp các bước bên dưới

SQL>create pfile ='<path>\init_pri.ora’ from spfile;

Thêm các dòng sau vào file init_pri.ora vừa tạo để hoàn tất việc đưa database vào trạng thái Archive Log

log_archive_format = ‘arch_%T_%S.arc’
log_archive_start = TRUE
log_archive_dest_1 = ‘LOCATION=D:\oracle\oradata\arch1’
log_archive_dest_state_1 = enable
log_archive_dest_2 = ‘SERVICE=standby OPTIONAL’
log_archive_dest_state_2 = enable

Chú ý: log_archive_dest_1 là nơi lưu các archive log file (dùng để apply vào mày Standby) tại server Primary

3.Tạo lại SPFILE tạm từ PFILE (init_pri.ora, init_stb.ora)

SQL>create spfile=‘D:\oracle\ora92\database\spfile<SID>.tmp’ from pfile=‘<path>\init_pri.ora’;

Đổi tên spfile<SID>.ora hiện tại trên máy Primary, sau đó đổi tên spfile<SID>.tmp thành spfile<SID>.ora

Nhân bản file init_pri.ora thêm 1 bản và đặt tên file mới init_stb.ora, thêm tiếp các dòng sau vào file init_stb.ora

standby_archive_dest  = D:\oracle\oradata\arch1
fal_client = standby
fal_server = primary
standby_file_management = AUTO

Sửa lại tham số coltrol_files

control_files = ‘d:\oracle\oradata\orcl\control01.stb’,
‘d:\oracle\oradata\orcl\control02.stb’,
‘d:\oracle\oradata\orcl\control03.stb’,

Tạo SPFILE tạm từ PFILE (init_stb.ora)

SQL>create spfile=’D:\oracle\ora92\database\spfile<SID>_stb.tmp’ from pfile=’<path>\init_stb.ora’;

4.Tạo standby control files trên máy primary

SQL>alter database create standby controlfile as ‘path\control01.stb’

5.Tạo template database cần cấu hình standby trên máy Primary

Dùng Tool DBCA để tạo template

6.Cấu hình các file LISTENER.ORA và TNSNAMES.ORA

File listener.ora

LISTENER = (DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP của máy Primary)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC3))
)
)
)

File tnsname.ora thêm 2 đoạn sau vào

primary =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP máy Primary)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)

standby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP máy Standby)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)

Restart lại listener sau khi chỉnh sửa

Start > Run > cmd
C:\lsnrctl stop
C:\lsnrctl start listener

7.Cold Backup trên máy Primary

Tạo thư mục backup trên máy Primary
D:\backup\yyyymmdd

SQL>sqlplus /nolog
SQL>conn / as sysdba
SQL>shutdown immediate

Sau đó copy thư mục và các file sau vào D:\backup\yyyymmdd
–    orcl (ví dụ là tên database cần cấu hình standby) trong thư mục D:\oracle\oradata
–    spfile<SID>_stb.tmp, init_stb.ora, pwd<sid>.ora trong D:\oracle\ora92\database
–    path\control01.stb
–    sqlnet.ora và tnsname.ora trong D:\oracle\ora92\network\admin
–    file template database trong thư mục D:\oracle\ora92\assistants\dbca\templates

II.TẠI SERVER 2

8.Tạo thư mục backup trên máy Standby

D:\backup\yyyymmdd

Sau đó copy tất cả các file thư mục trong D:\backup\yyyymmdd của máy Primary sang máy Standby

9.Tạo Database theo template
Trước khi tạo Database theo template của máy Primary thì phải bảm đảm Oracle Software đã được cài trên máy Standby nếu chưa thì đưa đĩa Oracle Database vào và cài đặt chỉ chọn Oracle software không cần tạo Database, sau đó chúng ta sẽ tạo database theo template của máy Primary.

Copy file template database từ thư mục backup ở trên sang thư mục D:\oracle\ora92\assistants\dbca\templates
Sau đó tạo database theo template vừa copy.
Sau khi cài đặt xong, xóa các file và thư mục
–    orcl (ví dụ là tên database vừa tạo) trong thư mục D:\oracle\oradata
–    spfileorcl.ora trong thư mục D:\oracle\ora92\database
–    pwdorcl.ora trong thư mục D:\oracle\ora92\database
–    sqlnet.ora và tnsname.ora trong D:\oracle\ora92\network\admin

Sau đó copy các file và thư mục tương ứng vừa xóa bên trên vào các thư mục đó và làm các bước sau

–    Đổi tên spfileorcl_stb.tmp thành spfileorcl.ora
–    Xóa 3 file Control01.ctl, Control02.ctl, Control03.ctl trong thư mục D:\oracle\oradata\orcl vừa copy vào, và copy file Control01.stb vào thư mục này và nhân thành 3 bản (Control01.stb, Control02.stb, Control03.stb)
–    Copy thêm file init_stb.ora vào thư mục D:\oracle\ora92\database

10.Chỉnh sửa file listener.ora

Sau khi copy hoàn tất thì mở file listener.ora ra và sửa IP của máy Primary thành IP máy Standby

Restart lại listener sau khi chỉnh sửa

Start > Run > cmd
C:\lsnrctl stop
C:\lsnrctl start listner

11.Khởi động quá trình standby database trên máy Standby

Luôn luôn start máy Standby trước khi start máy Primary

C:>\sqlplus /nolog
SQL>connect / as sysdba
SQL>startup nomount
SQL>alter database mount standby database;
SQL>recover managed standby database disconnect;

Sau đó chúng ta start máy Primary lên.

12.Kiểm tra hệ thống Standby database

a.Tại máy Primary

C:>\sqlplus /nolog
SQL>connect / as sysdba
SQL>startup
SQL>create table tbl_test (col_nu number(1));
SQL>insert into tbl_test values (1);
SQL>commit;
SQL>alter system switch logfile;

Kiểm tra archive file : Vào thư mục D:\oracle\oradata\arch1 xem có file archive log mới không

b.Tại máy Standby

Kiểm tra archive file : Vào thư mục D:\oracle\oradata\arch1 xem có file archive log mới không
Open database ở dạng READ ONLY

SQL>recover managed standby database cancel;
SQL>alter database open read only;

Kiểm tra dữ liệu

SQL>select * from tbl_test;

c.Khởi động lại hệ thống standby

SQL>shutdown immediate
SQL>startup nomount
SQL>alter database mount standby database;
SQL>recover managed standby database disconnect;

CHUYỂN MÁY STANDBY THÀNH MÁY PRIMARY

I.Chuyển máy Standy thành máy Primary

1.Active standby Database

SQL>conn / as sysdba
SQL>recover managed standby database cancel;
SQL>alter database activate standby database;
SQL>Shutdown immediate

2.Cấu hình lại Server Standby

–    Đổi địa chỉ IP thành địa chỉ IP của máy Primary
–    Đổi tên Server Standby thành Primary và ngược lại
–    Sửa tên file của file Control<xx>.stb thành Control<xx>.ctl
–    Sửa lại tham số control_files trong file init_stb.ora
control_files=(“D:\oracle\oradata\orcl\Control01.ctl”,
“D:\oracle\oradata\orcl\Control02.ctl”,
“D:\oracle\oradata\orcl\Control03.ctl”)
–    Startup Database

II.Làm lại máy Primary đang bị lỗi thành máy Standby

Làm tương tự như quá trình Cấu hình Physical Standby Database


Danh mục

%d bloggers like this: