Trong bài viết này tôi sẽ hướng dẫn bạn cách xây dựng một cơ chế dự phòng vật lý của Oracle Database với giải pháp Physical Standby. Giả định là
cơ sở dữ liệu chính đã hoạt động tốt và ORACLE software được cài đặt trên máy chủ
dự phòng.
PRIMARY
|
STANDBY
|
|
SERVER
|
primary-host
|
standby-host
|
DB_UNIQUE_NAME
|
PROD
|
PRODSBY
|
PRIMARY:
Đảm bảo cơ sở dữ liệu là archive
log mode, và enable force logging.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
PRIMARY > select
log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
----- Bật force login:
----- FORCE LOGGING là yêu cầu bắt buộc, mọi sự thay đổi trong database sẽ được gi ra redo logs, từ đó sẽ được apply tới standby
SQL > ALTER DATABASE FORCE LOGGING;
Database altered.
|
[PRIMARY]Thêm logfiles dự phòng;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
SQL > select GROUP#,BYTES/1024/1024,thread# from v$log;
GROUP# BYTES/1024/1024 THREAD#
---------- --------------- ----------
1 128 1
2 128 1
3 128 1
4 128 1
5 128 1
6 128 1
7 128 1
8 128 1
8 rows selected.
SQL >col member for a45
SQL > set pagesize 200
SQL > set lines 200
SQL >select GROUP#,MEMBER from v$logfile;
GROUP# MEMBER
----------
---------------------------------------------
1 /uv1249/redo1/PROD/redo_01a.dbf
1 /uv1249/redo2/PROD/redo_01b.dbf
2 /uv1249/redo1/PROD/redo_02a.dbf
2 /uv1249/redo2/PROD/redo_02b.dbf
3 /uv1249/redo1/PROD/redo_03a.dbf
3 /uv1249/redo2/PROD/redo_03a.dbf
4 /uv1249/redo1/PROD/redo_04a.dbf
4 /uv1249/redo2/PROD/redo_04a.dbf
5 /uv1249/redo1/PROD/redo_05a.dbf
5 /uv1249/redo2/PROD/redo_05a.dbf
6 /uv1249/redo1/PROD/redo_06a.dbf
6 /uv1249/redo2/PROD/redo_06a.dbf
7 /uv1249/redo1/PROD/redo_07a.dbf
7 /uv1249/redo2/PROD/redo_07b.dbf
8 /uv1249/redo1/PROD/redo_08a.dbf
8 /uv1249/redo2/PROD/redo_08b.dbf
--- Truy vấn động để tạo ra các sqls .
SQL > select 'alter database add standby logfile
'''||
regexp_substr(MEMBER,'/.+/')||'stdby_'||
regexp_replace(member,regexp_substr(MEMBER,'/.+/'),'')||
''' size '||bytes||';'
"Create Standby redo"
from v$logfile lf , v$log
l
where l.group# = lf.group#
/ 2 3 4 5 6 7
Create Standby redo
------------------------------------------------------------------------------------------------------------------
--------------------------------
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_01a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_01b.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_02a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_02b.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_03a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_03a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_04a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_04a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_05a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_05a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_06a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_06a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_07a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_07b.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_08a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_08b.dbf' size 134217728;
16 rows selected.
SQL> alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_01a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_01b.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_02a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_02b.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_03a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_03a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_04a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_04a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_05a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_05a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_06a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_06a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_07a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_07b.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo1/PROD/stdby_redo_08a.dbf' size 134217728;
alter database add standby logfile '/uv1249/redo2/PROD/stdby_redo_08b.dbf' size 134217728;
database altered
database altered
....
.
.
.
.
.
|
[PRIMARY]tạo tập tin mật khẩu
1
2
3
4
5
6
|
cd $ORACLE_HOME/dbs
orapwd file=orapwPROD password=prod1234 entries=30
|
[PRIMARY]Tạo cấu hình các listener và tns như bên dưới.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
cat tnsnames.ora
PROD =
(DESCRIPTION = (ADDRESS = (PROTOCOL = tcp)(HOST = primary-host )(PORT = 1571)) (CONNECT_DATA = (SID = PROD)))
PRODSBY =
(DESCRIPTION = (ADDRESS = (PROTOCOL = tcp)(HOST = standby-host )(PORT = 1571)) (CONNECT_DATA = (SID = PRODSBY)))
cat listener.ora
LISTENER_PROD =
(address_list =
(address =
(protocol = tcp)
(host = primary-host)
(port = 1571)
)
)
SID_LIST_LISTENER_PROD =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = PROD)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0)
(SID_NAME = PROD)
)
)
lsnrctl start LISTENER_PROD
|
[PRIMARY]Thực hiện dưới đây những
thay đổi trong spfile:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
--- Tham số log_archive_config gửi và nhận archive logs tới remote dest
----DG_CONFIG - need to specify the list of db_unique_name of
both primary and standby.
alter system set log_archive_config='DG_CONFIG=(PROD,PRODSBY)' scope=BOTH;
--- archive destination in local(primary server)
alter system set log_archive_dest_1='LOCATION=/uv1249/arch/PROD
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PROD' scope=BOTH;
---log_archive_dest_2
parameter defines the archive destination of standby
--- ASYNC - This
is used for maximum performance mode(DEFAULT)
.Means redo logs generated in primary need not be shipped/applied in standby
alter system set log_archive_dest_2='SERVICE=PRODSBY
LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=PRODSBY' scope=BOTH;
alter system set log_archive_dest_state_2='ENABLE' scope=BOTH;
alter system set log_archive_dest_state_1='ENABLE' scope=BOTH;
--- Tns entry name for primary
alter system set fal_client='PROD' scope=BOTH;
--- tns entry name for primary -- i.e It will fetch the archives from standby .
alter system set fal_server='PRODSBY' scope=BOTH;
|
[PRIMARY] Vì vậy, sau khi thay đổi,
tệp spfile trong Primary
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
strings spfilePROD.ora
*.audit_trail='DB'
*.compatible='11.2.0'
*.control_files='/uv1249/data1/PROD/control1.ora','/uv1249/data2/PROD/control2.ora','/uv1249/undo/PROD/control3.ora'
*.core_dump_dest='/uv1249/admin/PROD/cdump'
*.db_block_size=8192
*.db_cache_size=3008M
*.db_file_multiblock_read_count=64
*.db_keep_cache_size=512M
*.db_name='PROD'
*.db_unique_name='PROD'
*.diagnostic_dest='/uv1249/admin/PROD/diag'
*.dml_locks=100
*.fal_client='PROD'
*.fal_server='PRODSBY'
*.instance_name='PROD'
*.job_queue_processes=2
*.log_archive_config='DG_CONFIG=(PROD,PRODSBY)'
*.log_archive_dest_1='LOCATION=/uv1249/arch/PROD
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PROD'
*.log_archive_dest_2='SERVICE=PRODSBY
LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PRODSBY'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='arch_PROD_%t_%s_%r.arc'
*.log_buffer=31367168# log buffer update
*.log_checkpoint_interval=300000
*.max_dump_file_size='unlimited'
*.nls_date_format='DD-MON-RR'
*.os_authent_prefix='NULL'
*.pga_aggregate_target=1500M
*.processes=600
*.remote_dependencies_mode='SIGNATURE'
*.remote_login_passwordfile='EXCLUSIVE'
*.resource_limit=TRUE
*.sga_max_size=5152M# internally adjusted
*.shared_pool_size=512M
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=30000
*.undo_tablespace='UNDO'
|
STANDBY:
[STANDBY] Tạo cấu trúc thư mục
giống như cấu trúc chính
1
2
3
4
5
6
7
8
9
|
mkdir -p /uv1249/data1/PROD/
mkdir -p /uv1249/data2/PROD/
mkdir -p /uv1249/arch/PROD
mkdir -p /uv1249/undo/PROD
mkdir -p /uv1249/admin/PROD/cdump
mkdir -p /uv1249/admin/PROD/diag
|
[STANDBY]
Tạo pfile and password trong $ORACLE_HOME/dbs :
1
2
3
4
5
6
7
8
9
10
11
|
-----copy the password file from production and rename to standby name.
cd $ORACLE_HOME/dbs
scp oracle@primary-host:/u01/app/oracle/product/11.2.0/dbs/orapwPROD orapwPRODSBY
-----create an init file with minimum parameter as below
vi initPRODSBY.ora
DB_NAME=PROD
DB_UNIQUE_NAME=PRODSBY
|
[STANDBY]
Listener và tns
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
cat tnsnames.ora
PROD =
(DESCRIPTION = (ADDRESS = (PROTOCOL = tcp)(HOST = primary-host )(PORT = 1571)) (CONNECT_DATA = (SID = PROD)))
PRODSBY =
(DESCRIPTION = (ADDRESS = (PROTOCOL = tcp)(HOST = standby-host )(PORT = 1571)) (CONNECT_DATA = (SID = PRODSBY)))
cat listener.ora
LISTENER_PRODSBY =
(address_list =
(address =
(protocol = tcp)
(host = standby-host)
(port = 1571)
)
)
SID_LIST_LISTENER_PRODSBY =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = PRODSBY)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0)
(SID_NAME = PRODSBY)
)
)
lsnrctl start LISTENER_PRODSBY
|
[STANDBY]bắt đầu cơ sở dữ liệu dự
phòng ở trạng thái nomount :
1
2
3
4
5
6
7
8
9
10
11
|
SQL > startup nomount
ORACLE instance started.
Total System Global Area 6415597568 bytes
Fixed Size 2170304 bytes
Variable Size 905970240 bytes
Database Buffers 5502926848 bytes
Redo Buffers 4530176 bytes
|
[STANDBY]Bây giờ hãy kiểm tra kết nối giữa primary vàstandby dùng mật khẩu sys
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
-----In primary:
$ sqlplus sys/prod1234@PRODSBY as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Sat Jul 25 15:17:56 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
----- IN STANDBY:
sqlplus sys/prod1234@PROD as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Sat Jul 25 15:17:56 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
|
STANDBY:
[STANDBY]Bây giờ kết nối với rman
và chạy lệnh duplicate như được đề cập dưới đây.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
rman target sys/prod1234@PROD
auxiliary sys/prod1234@PRODSBY
Recovery Manager: Release 11.2.0.3.0 - Production on Thu May 16 08:42:46 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: PROD (DBID=839852638)
connected to auxiliary database: PROD (not mounted)
rman >
run
{
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate channel prmy3 type disk;
allocate channel prmy4 type disk;
allocate channel prmy5 type disk;
allocate channel prmy6 type disk;
allocate channel prmy7 type disk;
allocate auxiliary channel stby
type disk;
DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
DORECOVER
spfile
set db_unique_name='PRODSBY'
set control_files='/uv1249/data1/PROD/control1.ora','/uv1249/data2/PROD/control2.ora','/uv1249/undo/PROD/control3.ora'
set fal_client='PRODSBY'
set fal_server='PROD'
set log_file_name_convert = ','
set standby_file_management='AUTO'
set log_archive_config='DG_CONFIG=(PROD,PRODSBY)'
set log_archive_dest_1='LOCATION=/uv1249/arch/PROD
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRODSBY'
set log_archive_dest_2='service=PROD
ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=PROD'
nofilenamecheck;
}
|
[STANDBY]Sau khi sao chép xong. Bắt đầu
phục hồi
1
2
3
4
5
6
7
8
|
SQL > ALTER DATABASE RECOVER MANAGED STANDBY
DATABASE DISCONNECT FROM SESSION;
DATABASE ALTERED.
SQL > select process,status,sequence# from v$managed_standby:
|
Thiết lập dự phòng vật lý đã sẵn sàng
để sử dụng.
=============================
* 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/Zalo: 0902912888
👨 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: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Đị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
=============================
* 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/Zalo: 0902912888
👨 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: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Đị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
=============================
DataGuard Duplicate, Physical Standby Database Duplicate, Thủ tục Cài đặt Oracle Data Guard 11g, 12c, 19c với Physical Standby bằng Duplicate, oracle tutorial, 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,sql tutorial, khóa học pl/sql tutorial, 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 RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty