Thứ Tư, 23 tháng 10, 2019

Thủ tục Cài đặt Oracle Data Guard 11g, 12c, 19c với Physical Standby bằng Duplicate

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ộcmọi sự thay đổi  trong database sẽ được gi ra redo logstừ đó 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

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.



SQLalter 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  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.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*PlusRelease 11.2.0.3.0 Production on Sat Jul 25 15:17:56 2015

Copyright (c19822011Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the PartitioningOLAPData Mining and Real Application Testing options


----- IN STANDBY:

sqlplus sys/prod1234@PROD as sysdba

SQL*PlusRelease 11.2.0.3.0 Production on Sat Jul 25 15:17:56 2015

Copyright (c19822011Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the PartitioningOLAPData 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 ManagerRelease 11.2.0.3.0 - Production on Thu May 16 08:42:46 2013
Copyright (c19822011Oracle and/or its affiliatesAll rights reserved.
connected to target databasePROD (DBID=839852638)
connected to auxiliary databasePROD (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

=============================
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


ĐỌC NHIỀU

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