Thứ Hai, 28 tháng 11, 2022

CÀI ĐẶT DATAGUARD PHYSICAL STANDBY DATABASE TRÊN 2 MÁY LINUX 10g/11g/12c/

CÀI ĐẶT DATAGUARD PHYSICAL STANDBY DATABASE TRÊN 2 MÁY LINUX

 

I. GIỚI THIỆU

 

Cài đặt Dataguard đã có nhiều tài liệu của ORACLE giới thiệu. Tuy nhiên tài liệu của ORACLE đọc không phải ai lần đầu cũng làm thành công được.

 

Bài này sẽ hướng dẫn các bạn các bước STEP BY STEP cài đặt Physical Standby Database trên 2 máy linux khác nhau.

 

II. MÔI TRƯỜNG

 

OS: CENTOS 5.3

DATABASE: ORACLE 10G 2

 

Chuẩn bị 2 máy linux như sau;

 

PRIMARY:

 

  • Hostname: group1db

  • IP: 192.168.241.62

  • Database name (db_name):ORCL

  • Database Unique Name (db_unique_name): primary

  • TNS Service Name: to_standby

 

STANDBY:

 

  • Hostname: standby

  • IP: 192.168.241.61

  • Database name (db_name):ORCL

  • Database Unique Name (db_unique_name): standby

  • TNS Service Name: to_primary

 

 

Đảm bảo 2 máy này có thể thấy nhau

 

Ví dụ trên máy standby có thể ping được máy primary (192.168.241.62)

[root@standby ~]# ping 192.168.241.62

PING 192.168.241.62 (192.168.241.62) 56(84) bytes of data.

64 bytes from 192.168.241.62: icmp_seq=1 ttl=64 time=2.22 ms

64 bytes from 192.168.241.62: icmp_seq=2 ttl=64 time=3.61 ms

64 bytes from 192.168.241.62: icmp_seq=3 ttl=64 time=1.04 ms

64 bytes from 192.168.241.62: icmp_seq=4 ttl=64 time=3.34 ms

64 bytes from 192.168.241.62: icmp_seq=5 ttl=64 time=1.08 ms

64 bytes from 192.168.241.62: icmp_seq=6 ttl=64 time=2.14 ms

  

III. MÁY NGUỒN PRIMARY

 

3.1 Enable Forced Logging

 

Đặt máy PRIMARY ở mode FORCE LOGGING bằng lệnh sau

SQL>ALTER DATABASE FORCE LOGGING;

  

3.2 Create a Password File

[primary]$orapwd file=$ORACLE_HOME/dbs/orapworcl.ora password=oracle entries=2;

  

3.3 Configure a Standby Redo Log

 

Số Standby redo log thêm vào dựa theo công thức sau

(maximum number of logfiles for each thread + 1) * maximum number of threads

Trong đó

Số thread ở đây xác định bằng số instance trên database. Ví dụ có 1 RAC DB có 2 node thì số thread bằng 2, 3 node thì số thread là 3. Ở đây mình chỉ có single node thôi nên số thread là 1. Do đó số Standby redo log cần thêm là 4

 

SQL>alter database add standby logfile group 4 ('/u01/app/oracle/oradata/orcl/redostd1.log') SIZE 50M;

SQL>alter database add standby logfile group 5 ('/u01/app/oracle/oradata/orcl/redostd2.log') SIZE 50M;

SQL>alter database add standby logfile group 6 ('/u01/app/oracle/oradata/orcl/redostd3.log') SIZE 50M;

SQL>alter database add standby logfile group 7 ('/u01/app/oracle/oradata/orcl/redostd4.log') SIZE 50M;

 

 Kiểm tra các standby redo log file groups được tạo ra bằng lệnh sau

 

SQL>SELECT GROUP#,member from v$logfile;

SQL>SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;

  

3.4 Set Primary Database Initialization Parameters

 

Về cơ bản phải set các parameter sau

 

DB_NAME

DB_UNIQUE_NAME

LOG_ARCHIVE_CONFIG

CONTROL_FILES

LOG_ARCHIVE_DEST_1

LOG_ARCHIVE_DEST_2

LOG_ARCHIVE_DEST_STATE_1

SERVICE_NAMES

LOG_ARCHIVE_DEST_STATE_2

REMOTE_LOGIN_PASSWORDFILE

LOG_ARCHIVE_FORMAT

LOG_ARCHIVE_MAX_PROCESSES

FAL_SERVER

FAL_CLIENT

DB_FILE_NAME_CONVERT

LOG_FILE_NAME_CONVERT

STANDBY_FILE_MANAGEMENT

 

Tuy nhiên chú ý mọi người là set up DG cho 2 máy khác nhau thì nên set INSTANCE và cấu trúc thư mục hòan tòan giống nhau cho 2 máy để tránh các rắc rối phải gặp sau này. Mình cũng cố tình thử set cho nó khác nhau rồi nhưng đến thời điểm này là chưa có cái nào chạy thành công như ý.

 

Do đó khi set up giống nhau như trên thì chỉ cần quan tâm đến các parameter in đậm thôi các parameter sau là không cần

DB_FILE_NAME_CONVERT

LOG_FILE_NAME_CONVERT

 

 

SQL> ALTER SYSTEM SET DB_NAME=orcl scope=spfile;

SQL>ALTER SYSTEM SET DB_UNIQUE_NAME=primary scope=spfile;

SQL>ALTER SYSTEM SET Log_archive_config='DG_CONFIG=(primary,standby)' scope=spfile;

SQL> ALTER SYSTEM SET CONTROL_FILES='/u01/app/oracle/oradata/orcl/control01.ctl', '/u01/app/oracle/oradata/orcl/control02.ctl', '/u01/app/oracle/oradata/orcl/control03.ctl' scope=spfile;

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= 'LOCATION=/u01/arch1/orcl/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=primary' scope=spfile;

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=to_standby LGWR ASYNC  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby' scope=spfile;

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=spfile;

SQL>ALTER SYSTEM SET service_names='primary' scope=spfile;

 

Set parameter LOG_ARCHIVE_DEST_STATE_2 này trên PRIMARY để enable LOG SHIPPING tức start shipping archived redo logs. Nếu không muốn SHIPPING thì set bằng DEFER

 

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=spfile;

SQL>ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE scope=spfile;

SQL>ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' scope=spfile;

SQL>ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=4 scope=spfile;

SQL> ALTER SYSTEM SET FAL_SERVER='to_standby' scope=spfile;

SQL>ALTER SYSTEM SET FAL_CLIENT='to_primary' scope=spfile;

SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO scope=spfile

 

3.5 Enable Archiving

 

Nếu Database chưa ở mode archive thì bật nó lên như sau

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP MOUNT;

SQL> ALTER DATABASE ARCHIVELOG;

SQL> ALTER DATABASE OPEN;

 

3.6 Create a Control File for the Standby Database

 

Tạo file control file controlstd.ctl cho máy STANDBY dùng. Thực hiện ở mode MOUNT

Chú ý file controlstd.ctl sẽ được copy qua máy STANDBY sử dụng sau

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP MOUNT;

SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/u01/backup/controlstd.ctl';

SQL> ALTER DATABASE OPEN;

 

3.7 Prepare an Initialization Parameter File for the Standby Database

 

Cách nhanh nhất là tạo 1 pfile trên máy PRIMARY sau đó copy nó qua máy STANDBY và sửa lại một số thông số cho thích hợp

 

Tạo pfile tên initorclstd.ora trên máy PRIMARY

SQL> CREATE PFILE='/u01/backup/initorclstd.ora' FROM SPFILE;

 

Nội dung của file initorclstd.ora vừa tạo ra (chưa chỉnh sửa) như sau

 

orcl.__db_cache_size=46137344

orcl.__java_pool_size=4194304

orcl.__large_pool_size=4194304

orcl.__shared_pool_size=104857600

orcl.__streams_pool_size=0

*.archive_lag_target=0

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'

*.compatible='10.2.0.1.0'

*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl'

*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='orcl'

*.db_recovery_file_dest_size=2147483648

*.db_recovery_file_dest='/u01/flashback'

*.db_unique_name='PRIMARY'

*.dg_broker_start=TRUE

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.fal_client='to_primary'

*.fal_server='to_standby'

*.job_queue_processes=0

*.log_archive_config='nodg_config'

*.log_archive_dest_1='LOCATION=/u01/arch1/orcl/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=primary'

*.log_archive_dest_2=''

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.log_archive_format='%t_%s_%r.arc'

*.log_archive_max_processes=4

*.log_archive_min_succeed_dest=1

*.open_cursors=300

*.pga_aggregate_target=200278016

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.service_names='primary'

*.sga_target=167772160

*.standby_file_management='auto'

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'

 

3.8 Tạo Oracle Net Service cho cả 2 máy Source và đích dùng cho việc di chuyển dữ liệu của các Redolog

 

PRIMARY

 

Thêm alias TO_STANDBY trỏ đến máy STANDBY 192.168.241.61

 

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

 

TO_STANDBY =

  (DESCRIPTION =

(ADDRESS_LIST =

   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.241.61)(PORT = 1521))

)

(CONNECT_DATA =

   (SERVICE_NAME = orcl)

)

  )

ORCL =

  (DESCRIPTION =

(ADDRESS_LIST =

   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.241.62)(PORT = 1521))

)

(CONNECT_DATA =

   (SERVER = DEDICATED)

   (SERVICE_NAME = orcl)

)

  )

EXTPROC_CONNECTION_DATA =

  (DESCRIPTION =

(ADDRESS_LIST =

   (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

(CONNECT_DATA =

   (SID = PLSExtProc)

   (PRESENTATION = RO)

)

  )

 

Đến đây phần PRIMARY xem như xong. Chúng ta bắt đầu chuẩn bị cho máy STANDBY.

Trước mắt là 

 

3.9 Copy tất cả Datafiles và Redolog từ máy PRIMARY sang máy STANDBY

Chú ý phải shutdown 2 database PRIMARY và STANDBY trước khi copy để đảm bảo thống nhất dữ liệu

 

 

IV. MÁY ĐÍCH STANDBY

 

4.1 Create a server parameter file for the standby database.

 

+ Copy File initorclstd.ora tạo ra ở bước 3.7 vào thư mục /u01/backup/ của máy STANDBY

 

+ Sửa nội dung file initorclstd.ora cho phù hợp với máy STANDBY sửa chổ in đậm

 

Điểm chú ý là mặc dầu trên máy Standby nhưng tên DB_NAME vẫn là tên máy Primary orcl

FAL_SERVER là alias orcl của máy STANDBY trong tnsnames.ora đóng vai trò Server. Ý nghĩa là khi có sự FAIL OVER thì thằng STANDBY orcl sẽ chuyển vai trò ngược lại làm Server

 

FAL_CLIENT là alias orclstd của máy PRIMARY trong tnsnames.ora đóng vai trò CLIENT. Ý nghĩa là khi có sự FAIL OVER thì thằng PRIMARY orclstd sẽ chuyển vai trò ngược lại làm CLIENT

.

CONTROL_FILES phải chỉ đến file controlstd.ctl đã tạo ra ở bước 3.6. file này được copy qua máy STANDY để tại  /u01/app/oracle/oradata/orcl/

sau đó nhân lên 3 file có tên lần lượt control01.ctl,control02.ctl,control03.ctl

  

DB_NAME= 'orcl'

DB_UNIQUE_NAME=standby

LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'

CONTROL_FILES='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl'

LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc

LOG_ARCHIVE_DEST_1=

'LOCATION=/u01/arch1/orcl/

  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

  DB_UNIQUE_NAME=standby'

LOG_ARCHIVE_DEST_2=

'SERVICE=to_primary LGWR ASYNC

  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

  DB_UNIQUE_NAME=primary'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

STANDBY_FILE_MANAGEMENT=AUTO

FAL_SERVER=to_primary

FAL_CLIENT=to_standby

SERVICE_NAMES='standby'

 

 

File /u01/backup/initorclstd.ora sau khi thay đổi có nội dung như sau

 

orcl.__db_cache_size=83886080

orcl.__java_pool_size=4194304

orcl.__large_pool_size=4194304

orcl.__shared_pool_size=67108864

orcl.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'

*.compatible='10.2.0.1.0'

*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl'

*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='orcl'

*.db_recovery_file_dest_size=2147483648

*.db_recovery_file_dest='/u01/flashback'

*.db_unique_name='STANDBY'

*.dg_broker_start=TRUE

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.fal_client='to_standby'

*.fal_server='to_primary'

*.job_queue_processes=0

*.log_archive_config='DG_CONFIG=(primary,standby)'

*.log_archive_dest_1='LOCATION=/u01/arch1/orcl/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=standby'

*.log_archive_dest_2='SERVICE=to_primary LGWR ASYNC  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary'

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.log_archive_format='%t_%s_%r.arc'

*.log_archive_max_processes=4

*.open_cursors=300

*.pga_aggregate_target=200278016

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.service_names='standby'

*.sga_target=167772160

*.standby_file_management='AUTO'

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'

 

 

+ Copy Stanby control file tạo ở bước 3.6 sang máy đích để tại /u01/backup

 copy đến path thích hợp trên máy STANDBY tại /u01/app/oracle/oradata/orcl

[standby]$ cp /u01/backup/controlstd.ctl /u01/app/oracle/oradata/orcl

 

  

+Create a password file (nếu chưa thực hiện)

 

orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle entries=2

 

+ Tạo spfile cho Database STANDBY

SQL> create spfile from pfile='/u01/backup/initorclstd.ora';

 

 4.2 Tạo Oracle Net Service cho cả 2 máy Source và đích dùng cho việc di chuyển dữ liệu của các Redolog

  

Thêm alias orclstd trỏ đến máy PRIMARY 192.168.241.62

 

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

TO_PRIMARY =

  (DESCRIPTION =

(ADDRESS_LIST =

   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.241.62)(PORT = 1521))

)

(CONNECT_DATA =

   (SERVICE_NAME = orcl)

)

  )

ORCL =

  (DESCRIPTION =

(ADDRESS_LIST =

   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.241.61)(PORT = 1521))

)

(CONNECT_DATA =

   (SERVER = DEDICATED)

   (SERVICE_NAME = orcl)

)

  )

EXTPROC_CONNECTION_DATA =

  (DESCRIPTION =

(ADDRESS_LIST =

   (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

(CONNECT_DATA =

   (SID = PLSExtProc)

   (PRESENTATION = RO)

)

  )

  

Các source sau khi cấu hình bằng GUI sẽ có nội dung như sau

 

 

 4.3 Start the Physical Standby Database

 

Start ở mode MOUNT:

SQL> STARTUP MOUNT;

  

Muốn các REDO APPLY thì phải thực hiện tiếp lệnh sau

Option DISCONNECT FROM SESSION để các REDO apply ở background session

 

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

 

Đến đây coi như đã cài đặt xong. Chuyển sang bước test xem hệ thống có thực hiện đúng chức năng Dataguard hay không?

  

V. KIỂM TRA SAU KHI CÀI ĐẶT

 

1. Check that primary and standby are synchronized.

 

PRIMARY

 

SQL> archive log list;

Database log mode          Archive Mode

Automatic archival         Enabled

Archive destination        /u01/arch1/orcl/

Oldest online log sequence 43

Next log sequence to archive   45

Current log sequence       45

SQL> select database_role, open_mode from v$database;

 

DATABASE_ROLE OPEN_MODE

---------------- ----------

PRIMARY      READ WRITE

 

 

STANDBY

 

SQL> archive log list;

Database log mode          Archive Mode

Automatic archival         Enabled

Archive destination        /u01/arch1/orcl/

Oldest online log sequence 43

Next log sequence to archive   0

Current log sequence       45

SQL> select database_role, open_mode from v$database;

 

DATABASE_ROLE OPEN_MODE

---------------- ----------

PHYSICAL STANDBY MOUNTED

 

2. Check that standby is applying redo logs

 

On this step we will make switch logfile on the primary and will check how the sequence is advanced also on the physical standby

 

PRIMARY

 

SQL> alter system switch logfile;

 

System altered.

 

SQL> archive log list;

Database log mode          Archive Mode

Automatic archival         Enabled

Archive destination        /u01/arch1/orcl/

Oldest online log sequence 44

Next log sequence to archive   46

Current log sequence       46

 

Check the status of Standby Archiving destination

 

SQL> Select Status, Error from v$Archive_dest where dest_id=2;

STATUS ERROR

--------- ----------------------------------------------------

VALID

;

  

PHYSICAL STANDBY

 

 SQL> archive log list;

Database log mode          Archive Mode

Automatic archival         Enabled

Archive destination        /u01/arch1/orcl/

Oldest online log sequence 44

Next log sequence to archive   0

Current log sequence       46

 

 

Verify new archived redo log files were applied.

 

On the standby database, query the V$ARCHIVED_LOG view to verify the archived redo log files were applied

Chú ý phải chờ 1 thời gian mới thấy trạng thái các ARCHIVED_LOG chuyển sang YES. Do đó nếu chưa thấy thì cứ thực hiện các bước tiếp theo 

 

STANDBY

SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

SEQUENCE# APP

---------- ---

      3 YES

      4 YES

      5 YES

      6 YES

      7 YES

      8 YES

      9 YES

     10 YES

     11 YES

     12 YES

     13 YES

 

 

SQL> SELECT INSTANCE_NUMBER, INSTANCE_NAME, STARTUP_TIME, ARCHIVER,LOG_SWITCH_WAIT FROM V$INSTANCE;

INSTANCE_NUMBER INSTANCE_NAME STARTUP_T ARCHIVE LOG_SWITCH_WAIT

--------------- ---------------- --------- ------- ---------------

           1 orcl         13-OCT-09 STARTED

 

3. Check Data apply qua máy STANDBY 

 

PRIMARY

 

Xem các datafile

SQL> select a.name,b.name from v$datafile a, v$tablespace b where a.ts#=b.ts#;

Tạo tablespace với datafile là test01DG.dbf

 

SQL>create tablespace test01DG datafile '/u01/backup/test01DG.dbf' size 100M extent management local uniform size 256k segment space management auto;

 

Datafile test01DG.dbf created  

 

SQL> alter system switch logfile; 

 

STANDBY

 

Kiểm tra lại trên máy STANDBY để xác nhận là test01DG.dbf cũng được tạo ra

SQL> select a.name,b.name from v$datafile a, v$tablespace b where a.ts#=b.ts#;

/u01/backup/test01DG.dbf   ONLINE

 

 



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

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