Primary Database Name: PO
Primary DB Unique Name: PO
Primary Database Version: 19.0.0.0
Standby Database Name: PO
Standby DB Unique Name: DR
Operating System: Windows 10 Pro 64 Bit
Lưu ý: Việc tạo cơ sở dữ liệu dự phòng vật lý bằng lệnh RMAN DUPLICATE ...FROM ACTIVE DATABASE không yêu cầu phải tắt cơ sở dữ liệu chính. Ngoài ra, nó cũng không yêu cầu bất kỳ bản sao lưu nào. Đây là tính năng của Oracle 11g, cho phép sao chép sang cơ sở dữ liệu dự phòng mà không cần sao lưu.
Ở đây, tôi đang tạo cơ sở dữ liệu dự phòng vật lý trên cùng máy chủ với cơ sở dữ liệu chính. Vì vậy, các thông tin chi tiết bên dưới sẽ giống nhau cho cả cơ sở dữ liệu chính và dự phòng.
- tnsnames.ora
- listener.ora
- Các tệp nhị phân ORACLE_HOME
Bước 1: Tạo các thư mục riêng biệt cho cơ sở dữ liệu DR. Kiểm tra các thư mục cơ sở dữ liệu hiện có như data files, control files, redo log files, archived log files, etc. Kiểm tra kỹ lại các thư mục bạn đã thêm trong tệp pfile và lệnh duplicate.
SQL> set lines 300 pages 3000 SQL> col name for a12 SQL> col FORCE_LOGGING for a12 SQL> col DB_UNIQUE_NAME for a12 SQL> select name,db_unique_name,open_mode,database_role,protection_mode,force_logging,log_mode from v$database; NAME DB_UNIQUE_NA OPEN_MODE DATABASE_ROLE PROTECTION_MODE FORCE_LOGGIN LOG_MODE ----- ------------ ----------- ------------- ------------------ ------------ ---------- PO PO READ WRITE PRIMARY MAXIMUM PROTECTION YES ARCHIVELOG SQL> set lines 300 pages 3000 SQL> col name for a56 SQL> select name from v$datafile; NAME ----------------------------------------------- D:\RUPESH\APP\RGHUBADE\ORADATA\PO\SYSTEM01.DBF D:\RUPESH\APP\RGHUBADE\ORADATA\PO\DATA01.DBF D:\RUPESH\APP\RGHUBADE\ORADATA\PO\SYSAUX01.DBF D:\RUPESH\APP\RGHUBADE\ORADATA\PO\UNDOTBS02.DBF SQL> select name from v$tempfile; NAME -------------------------------------------- D:\RUPESH\APP\RGHUBADE\ORADATA\PO\TEMP01.DBF D:\RUPESH\APP\RGHUBADE\ORADATA\PO\TEMP02.DBF SQL> select name from v$controlfile; NAME ----------------------------------------------- D:\RUPESH\APP\RGHUBADE\ORADATA\PO\CONTROL01.CTL D:\RUPESH\APP\RGHUBADE\ORADATA\PO\CONTROL02.CTL SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination D:\RUPESH\app\rghubade\oradata\PO\archive Oldest online log sequence 691 Next log sequence to archive 693 Current log sequence 693 SQL> show parameter log_archive_dest_1 NAME TYPE VALUE --------------------- ------- ------------------------------ log_archive_dest_1 string LOCATION=D:\RUPESH\app\rghubad e\oradata\PO\archive Nếu bạn chưa bật chế độ force_logging trong cơ sở dữ liệu, bạn có thể bật nó bằng lệnh sau: SQL> alter database force logging; Database altered. SQL> select force_logging from v$database; FORCE_LOGGING ----------------- YES Dưới đây là tập tin pfile " INITDR.ORA" dùng để tạo cơ sở dữ liệu dự phòng trùng lặp. *._readable_standby_sync_timeout=60 *.audit_file_dest='D:\RUPESH\Setups\DR\adump' *.audit_trail='db' *.compatible='19.0.0' *.control_files='D:\RUPESH\Setups\DR\control01.ctl','D:\RUPESH\Setups\DR\control02.ctl' *.db_block_size=8192 *.db_keep_cache_size=218103808 *.db_name='PO' *.db_unique_name='DR' *.diagnostic_dest='D:\RUPESH\app\rghubade' *.log_archive_dest_1='LOCATION=D:\RUPESH\Setups\DR\archive' *.log_archive_format='%t_%s_%r.arc' *.nls_language='AMERICAN' *.nls_territory='AMERICA' *.open_cursors=300 *.pga_aggregate_limit=3221225472 *.pga_aggregate_target=1073741824 *.processes=1000 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=4831m *.undo_tablespace='UNDOTBS_NEW' *.standby_file_management='AUTO' *.log_archive_config='dg_config=(PO,DR)' *.db_create_file_dest='D:\RUPESH\Setups\DR' *.DB_CREATE_ONLINE_LOG_DEST_1='D:\RUPESH\Setups\DR' |
Bước 2: Tạo tệp mật khẩu cho cơ sở dữ liệu sao chép "DR" hoặc bạn có thể sao chép tệp mật khẩu cơ sở dữ liệu hiện có và đổi tên thành PWDDR.ora.
Bước 3: Cấu hình tệp tnsnames.ora và listener.ora cho cả cơ sở dữ liệu chính và cơ sở dữ liệu dự phòng (DR).
Lưu ý: Vui lòng thêm địa chỉ IP thực của bạn vào các tệp mạng bên dưới thay vì *.*.*.*.
Nội dung của tnsnames.ora PO = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1530)) ) (CONNECT_DATA = (SERVICE_NAME = PO) ) ) DR = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1531)) ) (CONNECT_DATA = (SERVICE_NAME = DR) ) ) Nội dung của listener.ora LISTENER_PO = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC2)) (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1530)) ) ) SID_LIST_LISTENER_PO = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = PO) (ORACLE_HOME = D:\RUPESH\Setups\WINDOWS.X64_193000_db_home) (SID_NAME = PO) ) ) LISTENER_DR = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1531)) ) ) SID_LIST_LISTENER_DR = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = DR) (ORACLE_HOME = D:\RUPESH\Setups\WINDOWS.X64_193000_db_home) (SID_NAME = DR) ) ) |
Bước 4: Thực hiện các thay đổi tham số sau trong cơ sở dữ liệu chính của bạn.
SQL> alter system set log_archive_dest_2='service=DR LGWR ASYNC valid_for=(all_logfiles,all_roles) db_unique_name=DR'; SQL> alter system set log_archive_config='dg_config=(PO,DR)'; SQL> show parameter remote_login_passwordfile NAME TYPE VALUE -------------------------- ------- ----------- remote_login_passwordfile string EXCLUSIVE SQL> show parameter log_archive_dest_1 NAME TYPE VALUE -------------------- ------ ------------------------------ log_archive_dest_1 string LOCATION=D:\RUPESH\app\rghubad e\oradata\PO\archive NAME TYPE VALUE -------------------- ------ ------------------------------ log_archive_dest_2 string service=DR LGWR ASYNC va lid_for=(all_logfiles,all_role s) db_unique_name=DR NAME TYPE VALUE -------------------- ------ ------------------------------ log_archive_config string dg_config=(PO,DR) |
Bước 5: Tạo dịch vụ cho cơ sở dữ liệu dự phòng (DR) như sau:
oradim -NEW -SID DR -syspwd sys123 -STARTMODE auto -PFILE D:\RUPESH\Setups\WINDOWS.X64_193000_db_home\database\INITDR.ORA Hãy đảm bảo các dịch vụ sau đang chạy trong services.msc - OracleServiceDR - OracleOraDB19Home1TNSListenerLISTENER_PO - OracleOraDB19Home1TNSListenerLISTENER_DR C:\windows\system32>tnsping po TNS Ping Utility for 64-bit Windows: Version 19.0.0.0.0 - Production on 30-MAR-2023 21:38:48 Copyright (c) 1997, 2022, Oracle. All rights reserved. Used parameter files: D:\RUPESH\Setups\WINDOWS.X64_193000_db_home\network\admin\sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (SDU = 65535) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1530))) (CONNECT_DATA = (SERVICE_NAME = PO))) OK (0 msec) C:\windows\system32>tnsping dr TNS Ping Utility for 64-bit Windows: Version 19.0.0.0.0 - Production on 25-MAR-2023 23:18:44 Copyright (c) 1997, 2022, Oracle. All rights reserved. Used parameter files: D:\RUPESH\Setups\WINDOWS.X64_193000_db_home\network\admin\sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1531))) (CONNECT_DATA = (SERVICE_NAME = DR))) OK (0 msec) C:\windows\system32> set ORACLE_SID=DR C:\windows\system32>set o ORACLE_SID=DR OS=Windows_NT C:\windows\system32>sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sat Mar 25 23:32:29 2023 Version 19.16.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Connected to an idle instance. SQL> startup nomount pfile='D:\RUPESH\Setups\WINDOWS.X64_193000_db_home\database\INITDR.ORA'; ORACLE instance started. Total System Global Area 5066718192 bytes Fixed Size 9038832 bytes Variable Size 889192448 bytes Database Buffers 4160749568 bytes Redo Buffers 7737344 bytes Verify sqlplus connectivity for both Primary and Standby(DR) database. C:\windows\system32>sqlplus sys/sys123@PO as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sat Mar 25 23:36:20 2023 Version 19.16.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.16.0.0.0 SQL> select name,open_mode from v$database; NAME OPEN_MODE --------- -------------------- PO READ WRITE C:\windows\system32>sqlplus sys/sys123@DR as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Sat Mar 25 23:36:27 2023 Version 19.16.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.16.0.0.0 SQL> select name,open_mode from v$database; select name,open_mode from v$database * ERROR at line 1: ORA-01507: database not mounted C:\windows\system32>rman target sys/sys123@PO auxiliary sys/sys123@DR Recovery Manager: Release 19.0.0.0.0 - Production on Sat Mar 25 23:44:58 2023 Version 19.16.0.0.0 Copyright (c) 1982, 2022, Oracle and/or its affiliates. All rights reserved. connected to target database: PO (DBID=2972374659) connected to auxiliary database: PO (not mounted) RMAN> run { 2> allocate channel d1 type disk; 3> allocate channel d2 type disk; 4> allocate auxiliary channel a1 type DISK; 5> allocate auxiliary channel a2 type DISK; 6> duplicate target database for standby from active database nofilenamecheck dorecover; 7> } using target database control file instead of recovery catalog allocated channel: d1 channel d1: SID=777 device type=DISK allocated channel: d2 channel d2: SID=967 device type=DISK allocated channel: a1 channel a1: SID=196 device type=DISK allocated channel: a2 channel a2: SID=387 device type=DISK Starting Duplicate Db at 25-MAR-23 current log archived contents of Memory Script: { backup as copy reuse passwordfile auxiliary format 'D:\RUPESH\Setups\WINDOWS.X64_193000_db_home\DATABASE\PWDdr.ORA' ; } executing Memory Script Starting backup at 25-MAR-23 Finished backup at 25-MAR-23 duplicating Online logs to Oracle Managed File (OMF) location duplicating Datafiles to Oracle Managed File (OMF) location contents of Memory Script: { restore clone from service 'PO' standby controlfile; } executing Memory Script Starting restore at 25-MAR-23 channel a1: starting datafile backup set restore channel a1: using network backup set from service PO channel a1: restoring control file channel a1: restore complete, elapsed time: 00:00:01 output file name=D:\RUPESH\SETUPS\DR\CONTROL01.CTL output file name=D:\RUPESH\SETUPS\DR\CONTROL02.CTL Finished restore at 25-MAR-23 contents of Memory Script: { sql clone 'alter database mount standby database'; } executing Memory Script sql statement: alter database mount standby database contents of Memory Script: { set newname for clone tempfile 1 to new; set newname for clone tempfile 2 to new; switch clone tempfile all; set newname for clone datafile 1 to new; set newname for clone datafile 2 to new; set newname for clone datafile 3 to new; set newname for clone datafile 5 to new; restore from nonsparse from service 'PO' clone database ; sql 'alter system archive log current'; } executing Memory Script executing command: SET NEWNAME executing command: SET NEWNAME renamed tempfile 1 to D:\RUPESH\SETUPS\DR\DR\DATAFILE\O1_MF_TEMP_%U_.TMP in control file renamed tempfile 2 to D:\RUPESH\SETUPS\DR\DR\DATAFILE\O1_MF_TEMP2_%U_.TMP in control file executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME Starting restore at 25-MAR-23 channel a1: starting datafile backup set restore channel a1: using network backup set from service PO channel a1: specifying datafile(s) to restore from backup set channel a1: restoring datafile 00001 to D:\RUPESH\SETUPS\DR\DR\DATAFILE\O1_MF_SYSTEM_%U_.DBF channel a2: starting datafile backup set restore channel a2: using network backup set from service PO channel a2: specifying datafile(s) to restore from backup set channel a2: restoring datafile 00002 to D:\RUPESH\SETUPS\DR\DR\DATAFILE\O1_MF_TEST_%U_.DBF channel a2: restore complete, elapsed time: 00:00:15 channel a2: starting datafile backup set restore channel a2: using network backup set from service PO channel a2: specifying datafile(s) to restore from backup set channel a2: restoring datafile 00003 to D:\RUPESH\SETUPS\DR\DR\DATAFILE\O1_MF_SYSAUX_%U_.DBF channel a1: restore complete, elapsed time: 00:00:19 channel a1: starting datafile backup set restore channel a1: using network backup set from service PO channel a1: specifying datafile(s) to restore from backup set channel a1: restoring datafile 00005 to D:\RUPESH\SETUPS\DR\DR\DATAFILE\O1_MF_UNDOTBS__%U_.DBF channel a1: restore complete, elapsed time: 00:00:07 channel a2: restore complete, elapsed time: 00:00:28 Finished restore at 25-MAR-23 sql statement: alter system archive log current current log archived contents of Memory Script: { restore clone force from service 'PO' archivelog from scn 9518522; switch clone datafile all; } executing Memory Script Starting restore at 25-MAR-23 channel a1: starting archived log restore to default destination channel a1: using network backup set from service PO channel a1: restoring archived log archived log thread=1 sequence=239 channel a2: starting archived log restore to default destination channel a2: using network backup set from service PO channel a2: restoring archived log archived log thread=1 sequence=240 channel a1: restore complete, elapsed time: 00:00:00 channel a2: restore complete, elapsed time: 00:00:01 Finished restore at 25-MAR-23 datafile 1 switched to datafile copy input datafile copy RECID=5 STAMP=1132443964 file name=D:\RUPESH\SETUPS\DR\DR\DATAFILE\O1_MF_SYSTEM_L1YGKQ3B_.DBF datafile 2 switched to datafile copy input datafile copy RECID=6 STAMP=1132443965 file name=D:\RUPESH\SETUPS\DR\DR\DATAFILE\O1_MF_TEST_L1YGKQ99_.DBF datafile 3 switched to datafile copy input datafile copy RECID=7 STAMP=1132443965 file name=D:\RUPESH\SETUPS\DR\DR\DATAFILE\O1_MF_SYSAUX_L1YGL6FC_.DBF datafile 5 switched to datafile copy input datafile copy RECID=8 STAMP=1132443965 file name=D:\RUPESH\SETUPS\DR\DR\DATAFILE\O1_MF_UNDOTBS__L1YGL9O2_.DBF contents of Memory Script: { set until scn 9518705; recover standby clone database delete archivelog ; } executing Memory Script executing command: SET until clause Starting recover at 25-MAR-23 starting media recovery archived log for thread 1 with sequence 239 is already on disk as file D:\RUPESH\SETUPS\DR\ARCHIVE\1_239_1084451655.ARC archived log for thread 1 with sequence 240 is already on disk as file D:\RUPESH\SETUPS\DR\ARCHIVE\1_240_1084451655.ARC archived log file name=D:\RUPESH\SETUPS\DR\ARCHIVE\1_239_1084451655.ARC thread=1 sequence=239 archived log file name=D:\RUPESH\SETUPS\DR\ARCHIVE\1_240_1084451655.ARC thread=1 sequence=240 media recovery complete, elapsed time: 00:00:01 Finished recover at 25-MAR-23 contents of Memory Script: { delete clone force archivelog all; } executing Memory Script deleted archived log archived log file name=D:\RUPESH\SETUPS\DR\ARCHIVE\1_239_1084451655.ARC RECID=1 STAMP=1132443963 Deleted 1 objects deleted archived log archived log file name=D:\RUPESH\SETUPS\DR\ARCHIVE\1_240_1084451655.ARC RECID=2 STAMP=1132443963 Deleted 1 objects Finished Duplicate Db at 25-MAR-23 released channel: d1 released channel: d2 released channel: a1 released channel: a2 RMAN> exit Recovery Manager complete. C:\windows\system32> SQL> select name,open_mode,database_role from v$database; NAME OPEN_MODE DATABASE_ROLE --------- -------------------- ---------------- PO MOUNTED PHYSICAL STANDBY Primary: SQL> select name,open_mode,database_role from v$database; NAME OPEN_MODE DATABASE_ROLE --------- ----------- ------------- PO READ WRITE PRIMARY SQL> select dest_id,error from v$archive_dest; DEST_ID ERROR ---------- --------- 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 32 rows selected. Các tham số FAL bên dưới là tùy chọn, không bắt buộc. Tôi chưa thiết lập các tham số này. SQL> show parameter fal NAME TYPE VALUE -------------- ----------- ------ fal_client string fal_server string SQL> select max(sequence#) from v$archived_log; MAX(SEQUENCE#) -------------- 241 SQL> alter system switch logfile; System altered. SQL> / System altered. SQL> / System altered. SQL> / System altered. SQL> SQL> / System altered. SQL> / System altered. SQL> select max(sequence#) from v$archived_log; MAX(SEQUENCE#) -------------- 247 Standby: SQL> select name,open_mode,database_role from v$database; NAME OPEN_MODE DATABASE_ROLE --------- ----------- ---------------- PO MOUNTED PHYSICAL STANDBY SQL> select max(sequence#) from v$archived_log where applied='YES'; MAX(SEQUENCE#) -------------- 240 SQL> / MAX(SEQUENCE#) -------------- 240 SQL> / MAX(SEQUENCE#) -------------- 240 SQL> / MAX(SEQUENCE#) -------------- 240 SQL> / MAX(SEQUENCE#) -------------- 240 SQL> select process,status from v$managed_standby; PROCESS STATUS --------- ------------ DGRD ALLOCATED ARCH CONNECTED DGRD ALLOCATED ARCH CONNECTED ARCH CONNECTED ARCH CONNECTED RFS IDLE RFS IDLE RFS IDLE 9 rows selected. SQL> recover managed standby database disconnect from session; Media recovery complete. SQL> select process,status from v$managed_standby; PROCESS STATUS --------- ------------ DGRD ALLOCATED ARCH CONNECTED DGRD ALLOCATED ARCH CONNECTED ARCH CONNECTED ARCH CONNECTED RFS IDLE RFS IDLE RFS IDLE MRP0 WAIT_FOR_LOG SQL> select max(sequence#) from v$archived_log where applied='YES'; MAX(SEQUENCE#) -------------- 247 |
TƯ VẤN: Click hoặc Hotline/Zalo 090.29.12.888
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- 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
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
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
=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, 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/21c/23c/23ai, 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, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty