Thứ Sáu, 21 tháng 2, 2020

HỌC ORACLE DATABASE CƠ BẢN TỪ A-Z - BÀI 4: TẠO DATABASE

4.1.CÁC BƯỚC TẠO DATABASE

Oracle hiện đã hỗ trợ một công cụ cho phép tạo database trên hệ điều hành Windows một cách trực quan. Đó là công cụ Oracle Database Assistant. Tuy nhiên, trong một số trường hợp công cụ này tỏ ra không được thuận tiện lắm.
Bên cạnh việc sử dụng công cụ cung cấp sẵn của Oracle để tạo database, Oracle còn cho phép user có thể tạo database mà không sử dụng các công cụ của Oracle. Phương pháp này gọi là tạo database bằng tay – manually.
Việc tạo database được tiến hành theo các bước:
1.      Quyết định chọn lựa tên instance và tên database duy nhất. Chọn character set – tập ký tự sử dụng trong database.
2.      Thiết lập các biến hệ thống.
3.      Chuẩn bị file tham số, tạo file mật khẩu (nên có thao tác này).
4.      Chuẩn bị instance phục vụ quản trị
5.      Tạo database.
6.       Chạy scripts để tạo các dictionary cho database.



4.2.CHUẨN BỊ MÔI TRƯỜNG

4.2.1.  Chuẩn bị hệ điều hành

Để tạo database, quản trị viên trước tiên phải có thể truy nhập vào hệ điều hành với đầy đủ quyền.
Trước khi tạo database, cần tính toán dung lượng bộ nhớ cho database căn cứ vào cấu hình của Server và đảm bảo có đủ bộ nhớ để thực hiện các tiến trình của Oracle một cách hiệu quả.
Tính toán lượng đĩa trống cần thiết cho việc lưu trữ các data files, các control files, các redo log file và các files khác...

4.2.2.  Lên kế hoạch bố trí các file thông tin

Để bảo vệ an toàn cho database, ta cần có kế hoạch bố trí các file thông tin.

Control files

Để đảm bảo an toàn, một database cần ít nhất 02 control files và được đặt tại hai chỗ khác nhau. Các control files nên được đặt tên khác nhau sao cho dễ dàng có thể phân biệt.
Tên của Control files nên được đặt kèm với tên của database cho dễ nhớ, như sau:
CTL<n><database_name>.ORA
Với:
            n                                  là số thứ tự của control file
            database_name            tên của database

Trong parameter file, tên của các control files được đặt phân cách nhau bởi các dấu phẩy.
Ví dụ:
control_files =             (“C:\ORANT\DATABASE\CTL1KTKB.ORA”,                                                                  ”C:\ORANT\DATABASE\CTL2KTKB.ORA”)

Online redo log files

Online redo log files thông thường bao gồm nhiều nhóm các online redo log files khác nhau. Với mỗi nhóm chứa các bản sao của các redo log file. Tương tự như control file. Các online redo log file cũng nên được đặt ở các nới khác nhau.
Cũng giống như Control files, việc đặt tên cho các Online redo log files nên được đặt kèm với tên của database cho dễ nhớ, như sau:
LOG<n><database_name>.ORA
Với:
            n                                  là số thứ tự của control file
            database_name            tên của database

Tên của các control files được đặt phân cách nhau bởi các dấu phẩy.
Ví dụ:
logfile =          ‘C:\ORANT\DATABASE\LOG1KTKB.ORA’ SIZE 1024K,                                              ‘C:\ORANT\DATABASE\LOG2KTKB.ORA’ SIZE 1024K

Datafiles

Tên của datafiles nên được đặt theo như nội dung của nó.
Đối với các data files, ta cần quan tâm tới một số tính chất sau:
§  Giảm thiểu việc phân đoạn trong các data files.
§  Tách riêng các đối tượng trong database như tách các application data, temporary data trên các tablespaces khác nhau.
Các datafile được phân chia theo các segment khác nhau. Tên của chúng thường được đặt với đuôi là .DBF còn phần đầu sẽ được phân theo từng loại segment tương ứng.
Ví dụ:
C:\ORANT\DATABASE\KTKB\SYSTEM01.DBF
C:\ORANT\DATABASE\KTKB\RBS01.DBF
C:\ORANT\DATABASE\KTKB\RBS02.DBF
C:\ORANT\DATABASE\KTKB\USERS01.DBF
C:\ORANT\DATABASE\KTKB\TEMP01.DBF
C:\ORANT\DATABASE\KTKB\TOOLS01.DBF
C:\ORANT\DATABASE\KTKB\INDX01.DBF
 4.2.3.  Optimal Flexible Architecture – OFA
Điều quan trọng khi tạo database là tổ chức các file hệ thống sao cho dễ dàng cho việc quản trị, thêm mới và bổ sung các dữ liệu vào database tận dụng hiệu quả các thao tác vào ra của hệ thống.
OFA với các tiện ích giúp cho việc bảo trì database được đơn giản.
Cáu trúc của OFA:
1.      Đặt tên các thiết bị để nó có thể chứa đựng các dữ liệu Oracle server giống như một tập hợp.
2.     Phân biệt các file sản phẩm, bao gồm các phần mềm và các công cụ Oracle server, các file quản trị, file script khởi tạo,...
3.      Lưu lại các phiên bản của các sản phẩm Oracle server
4.      Tạo các thư mục lưu trữ dữ liệu Oracle server.

4.2.4.  Cấu trúc thư mục phần mềm Oracle

Thư mục
Diễn giải
Bin
Chứa các file sản phẩm ở dạng nhị phân
Dbs
Chứa các file dữ liệu
Lib
Chứa các file thư viện sản phẩm của Oracle
Orainst
Chứa chương trình và các file phục vụ cho việc cài đặt
Rdbms
Các file server, các file thư viện và các file khác cần thiết cho database
Plsql
PL/SQL và các sản phẩm liên quan
Sqlplus
SQL*Plus
Network
Các sản phẩm Oracle Net8
Svrmgrl
Server manager
Cấu trúc thư mục con
Thư mục
Diễn giải
Admin
File scripts quản trị
Demo
File dữ liệu và các scripts minh hoạ
Doc
README file
Install
Các file phục vụ cho việc cài đặt
Lib
Các thư viện sản phẩm
Log
Các file log

4.2.5.Biến môi trường

Trên hệ điều hành Windows, ta thiết lập các biến môi trường. Các biến này tương ứng với các tham số trong registry như: ORACLE_HOME, ORACLE_SID, NLS_LANG.
Để tạo mới database, cần tạo mới biến môi trường ORACLE_SID:
C:\set ORACLE_SID = U16

4.3.CHUẨN BỊ CÁC THAM SỐ TRONG PARAMETER FILE

Khi tạo mới một database, ta cần quan tâm tới việc tạo parameter file. Parameter file chứa các thông tin cần thiết trong database, trong đó quan tâm nhất là các tham số sau:
Tham số
Diễn giải
DB_NAME
Tên định danh của database, tối đa 8 ký tự. Tên database phải trùng với giá trị của biến môi trường ORACLE_SID.
CONTROL_FILES
Liệt kê danh sách các control file sử dụng trong database. Tối thiểu có 01 control file trong database. Tuy nhiên, ta nên tạo 02 control files trở lên để đề phòng hỏng file. Các control files không cần thiết phải tồn tại. Khi tạo database, Oracle sẽ tạo các control files này
DB_BLOCK_SIZE
Xác định kích thước của một block sử dụng trong database. Kích thước này sẽ không thay đổi được sau khi database đã được tạo lập. Kích thước của các block được tính theo đơn vị K (Kilobytes).
Kích thước của block thường được đặt bằng số nguyên lần luỹ thừa của 2. để tương ứng với số nguyên lần các block vật lý của hệ điều hành. Do đó, có thể tối ưu được số lần truy xuất đĩa cứng. Ví dụ: 2K, 4K, 8K, 16K, 32K, tuỳ theo phiên bản của Oracle và hệ điều hành.
Thông thường, khi chuẩn bị parameter file của một database sắp được tạo, ta có thể sao chép lại nội dung của parameter file mẫu rồi chỉnh sửa lại một vài thông số trong đó như db_name, control_files,...
Parameter file mẫu của oracle thường được đặt ở thư mục:
<%ORACLE_HOME%>\ADMIN\SAMPLES\PFILE

Ví dụ về nội dung của file tham số: file InitU16.ora
db_name = U16
db_files = 1020
control_files = ("C:\ORANT\database\ctl1U16.ora",
"C:\ORANT\database\ctl2U16.ora")
db_file_multiblock_read_count = 16
db_block_buffers = 2000
shared_pool_size = 30000000
log_checkpoint_interval = 8000
processes = 100
dml_locks = 200
log_buffer = 65536
sequence_cache_entries = 30
sequence_cache_hash_buckets = 23
#audit_trail = true
#timed_statistics = true
background_dump_dest = C:\ORANT\rdbms80\trace
user_dump_dest = C:\ORANT\rdbms80\trace
db_block_size =8192
compatible = 8.0.4.0.0
sort_area_size = 65536
log_checkpoint_timeout = 0
remote_login_passwordfile = shared
max_dump_file_size = 10240
  

4.4.CHUẨN BỊ INSTANCE PHỤC VỤ QUẢN TRỊ

Sử dụng công cụ ORADIM để tạo instance phục vụ cho việc tạo database. ORADIM sẽ tạo một service dành riêng cho database. Đây là một công cụ thực hiện ở chế độ dòng lệnh. Công cụ này chỉ cần thiết khi user tạo mới, sửa đổi hay huỷ instance của database bằng tay. Trong trường hợp sử dụng công cụ Oracle Database Configuration Assistant để can thiệp vào database thì không cần thiết phải biết tới công cụ này.
ORADIM
Oracle Database Configuration Assistant
Có thể tạo mới, start, stop, sửa đổi hay xoá bỏ instances. Không can thiệp tới database files
Chỉ có thể tạo mới hay huỷ bỏ databse. Không thể start hay stop database
Có thể sử dụng để sửa đổi instance
Không thể để sửa đổi instance
Dùng để tạo password file và service liên quan. Không tạo database được
Dùng để tạo password file và service liên quan, instance và cả database
Lưu ý: Ở các phiên bản trước của Oracle, công cụ ORADIM có tên là ORADIM80

4.4.1.  Tạo một instance

Cú pháp:
C:\>ORADIM -NEW -SID SID | -SRVC SERVICE_NAME [-INTPWD INTERNAL_PWD] - SHUTTYPE SRVC | INST | SRVC, INST [-MAXUSERS NUMBER][-STARTMODE AUTO | MANUAL][-PFILE FILENAME]  
Với:
-NEW                          Tạo mới instance phục vụ cho database.
-SID SID                     Tên của instance được tạo (tên này thường được lấy chính là tên của database).  
-SRVC SERVICE_NAME                                                                                                     Tên của service phục vụ database.
-INTPWD INTERNAL_PWD
Mật khẩu của Internal account sử dụng để quản trị database
-MAXUSERS NUMBER
Số lượng user tối đa định nghĩa trong password file
-STARTMODE AUTO, MANUAL
Đặt chế độ khởi động instance phục vụ (khởi động service trên máy chủ server)
-PFILE FILENAME
Chỉ rõ parameter file INIT<Database_name>.ORA
-SHUTTYPE SRVC, INST
                                    Dừng instance phục vụ (stop service)

Ví dụ:
C:\> ORADIM -NEW -SID PROD -INTPWD MYPASSWORD1 -STARTMODE AUTO -PFILE C:\ORACLE\ADMIN\PROD\PFILE\INIT.ORA  

 4.4.2.  Khởi động instance
Cú pháp:
C:\ORADIM -STARTUP -SID SID [-USRPWD USER_PWD] [-STARTTYPE SRVC | INST | SRVC, INST] [-PFILE FILENAME] 
Với:
-STARTUP                 Khởi động instance phục vụ sẵn sàng cho việc tạo database.
-SID SID                     Tên của instance được tạo (tên này thường được lấy chính là tên của database).  
-USERPWD USER_PWD                                                                                                     Mật khẩu.
-STARTTYPE SRVC, INST
Chế độ khởi động là service hay instance

Ví dụ:
C:\> ORADIM            -STARTUP -SID PUMA -STARTTYPE SRVC                               -PFILE C:\ORACLE\ADMIN\PROD\PFILE\INIT.ORA  
 4.4.3.  Dừng instance
Cú pháp:
C:\>ORADIM -SHUTDOWN -SID SID  [-USRPWD USER_PWD] [-SHUTTYPE SRVC | INST | SRVC, INST] [-SHUTMODE A | I | N]
Với:
-SHUTDOWN            Dừng (stop) instance phục vụ.
-SID SID                     Tên của instance được tạo (tên này thường được lấy chính là tên của database).  
-USERPWD USER_PWD                                                                                                     Mật khẩu.
-SHUTMODE            Xác định chế độ dừng: A – abort mode,        I I – Immediate mode, N – Normal mode

Ví dụ:
C:\> ORADIM -SHUTDOWN -SID PUMA -SHUTTYPE SRVC INST 

 4.4.4.  Huỷ instance
Cú pháp:
C:\>ORADIM -DELETE -SID sid
Ví dụ:
C:\> ORADIM -DELETE -SID PUMA

4.5.TẠO DATABASE

4.5.1.  Khởi động Instance

Sử dụng user với mức quyền DBA. Dùng công cụ ORADIM để tạo Instance.
Khởi động Instance ở chế độ NOMOUNT và chỉ rõ file tham số sử dụng trong chương trình:
SVRMGR> STARTUP NOMOUNT \
                         > PFILE=initU16.ora
 4.5.2.  Lệnh tạo database
Sử dụng câu lệnh CREATE DATABASE để tạo database
Cú pháp:
CREATE DATABASE [database]
[CONTROLFILE REUSE]
[LOGFILE [GROUP integer] filespec
[, [GROUP integer] filespec]...]
[MAXLOGFILES integer]
[MAXLOGMEMBERS integer]
[MAXLOGHISTORY integer]
[MAXDATAFILES integer]
[MAXINSTANCES integer]
[ARCHIVELOG|NOARCHIVELOG]
[CHARACTER SET charset]
[NATIONAL CHARACTER SET charset]
[DATAFILE filespec [autoextend_clause]
[, filespec [autoextend_clause]...]]

filespec :== 'filename' [SIZE integer][K|M] [REUSE]

autoextend_clause :==
[AUTOEXTEND {OFF
|ON [NEXT integer[K|M]]
[MAXSIZE {UNLIMITED|integer[K|M]}]
}
]
Với:
Database                      Tên của CSDL cần tạo (tên này giống với tên của tham số DB_NAME trong parameter file)
CONTROLFILE REUSE      
                                    Tên file tham số đã tồn tại được tái sử dụng
LOGFILE GROUP   
Tên của log file được sử dụng
MAXLOGFILES
Số lượng tối đa các log file group cho CSDL
MAXLOGMEMBERS
Số lượng tối đa các log file member đối với một log file group
MAXLOGHISTORY
Số lượng tối đa các redo log trong một group
DATAFILE filespec  
Tên file dữ liệu được sử dụng
AUTOEXTEND        
Cho phép hoặc không cho phép mở rộng tự động các file dữ liệu
MAXDATAFILES    
Số lượng tỗi đa các datafiles trong database
MAXINSTANCES   
Số lượng lớn nhất các instance có thể đồng thời mount open database
ARCHIVELOG         
Xác định ràng redo log cần để ở chế độ archive trước khi được dùng lại
NOARCHIVELOG   
Xác định ràng redo log cần được dùng lại mà không cần đặt chế độ archive
CHARACTER SET, NATIONAL CHARACTER SET      
Chuẩn ký tự mà CSDL sử dụng để lưu trữ các dữ liệu

Ví dụ: tạo database
SPOOL creU16.log

STARTUP NOMOUNT PFILE=initU16.ora

CREATE DATABASE U16
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXLOGHISTORY 100
LOGFILE
GROUP 1 ('/DISK3/log1a.rdo',/DISK4/log1b.rdo’) SIZE 1 M,
GROUP 2 ('/DISK3/log2a.rdo',/DISK4/log2b.rdo’) SIZE 1 M
DATAFILE
'/DISK1/system01.dbf' size 50M autoextend on
CHARACTER SET WE8ISO8859P1;

 

4.5.3. Oracle Database Assistant
Để tạo database, Oracle hỗ trợ công cụ rất tiện lợi giúp người quản trị dễ dàng tạo database hơn thông qua giao diện đồ hoạ, đó là công cụ Oracle Database Assistant.
Kết quả hình ảnh cho Oracle Database Assistant
Hình vẽ 1.    Công cụ tạo hỗ trợ database – Oracle Database Assistant
Với công cụ này, người quản trị chỉ việc khai báo các tham số cần thiết cho database. Oracle Database Assistant sẽ tự động kết sinh ra câu lệnh SQL tương ứng với các tham số đã được khai báo. Các câu lệnh SQL có thể được chạy luôn hoặc cũng có thể được lưu lại thành các script files sử dụng sau này.
4.5.4.  File script ví dụ tạo một database
File sqlu16.bat
set ORACLE_SID=U16
C:\ORANT\bin\oradim -new -sid U16 -intpwd oracle -startmode
auto -pfile C:\ORANT\database\initU16.ora
C:\ORANT\bin\oradim -startup -sid U16 -starttype srvc,inst
-usrpwd oracle -pfile C:\ORANT\database\initU16.ora
C:\ORANT\bin\svrmgr @U16run.sql

File U16run.sql
spool C:\ORANT\database\spoolmain
set echo on
connect INTERNAL/oracle
startup nomount pfile=C:\ORANT\database\initU16.ora
CREATE DATABASE U16
LOGFILE 'C:\ORANT\database\logU161.ora' SIZE 1024K,
'C:\ORANT\database\logU162.ora' SIZE 1024K
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
DATAFILE 'C:\ORANT\database\Sys1U16.ora' SIZE 50M
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET WE8ISO8859P1
NATIONAL CHARACTER SET WE8ISO8859P1;
spool off

File initU16.ora
db_name = U16
db_files = 1020
control_files = ("C:\ORANT\database\ctl1U16.ora",
"C:\ORANT\database\ctl2U16.ora")
db_file_multiblock_read_count = 16
db_block_buffers = 2000
shared_pool_size = 30000000
log_checkpoint_interval = 8000
processes = 100
dml_locks = 200
log_buffer = 65536
sequence_cache_entries = 30
sequence_cache_hash_buckets = 23
#audit_trail = true
#timed_statistics = true
background_dump_dest = C:\ORANT\rdbms80\trace
user_dump_dest = C:\ORANT\rdbms80\trace
db_block_size =8192
compatible = 8.0.4.0.0
sort_area_size = 65536
log_checkpoint_timeout = 0
remote_login_passwordfile = shared
max_dump_file_size = 10240
 4.5.5.  Lỗi xảy ra khi tạo database
Lỗi xảy ra khi tạo database phần lớn do các nguyên nhân sau:
§  Lỗi cú pháp lệnh tạo database
§  Các file dữ liệu cần tạo lập đã tồn tại
§  Lỗi do hệ điều hành, không có đủ quyền, không đủ chỗ trống,...

4.5.6. Kết quả sau khi tạo database
Kết thúc các bước trên ta thu được một database với:
§  02 data files được đặt trong SYSTEM tablespace.
§  Các control files và các redo log files phục vụ cho database
§  Hai user quản trị database và mật khẩu tương ứng là: SYS/change_on_install SYSTEM/manager
§  01 Rollback segment SYSTEM
§  Các bảng dữ liệu internal với dữ liệu trống

4.6.TẠO DATA DICTIONARY CHO DATABASE

Trong trường hợp tạo database bằng tay, sau khi tạo xong database, Oracle server sẽ tạo cho ta một database hoàn toàn trống. Các bảng trong database này đều được lưu trữ dưới dạng mã và ta không thể nào quan sát các thông tin trong nó được. Để có thể quan sát được các thông tin trong database. Ta cần tạo data dictionary cho database này.
Data dictionary hay còn gọi là từ điển dữ liệu của database là tập hợp các views được thiết lập trong database cung cấp các thông tin về database.
Các file tạo data dictionary cho database được Oracle cung cấp sẵn và thường được đặt trong thư mục <%ORACLE_HOME%>\RDBMS\ADMIN
Các dictionary views được phân loại và đặt trong các file SQL khác nhau.
Một số file SQL hay dùng:
Tên file SQL
Diễn giải
CATALOG.SQL
Tạo các dictionary views cơ bản, trigger và store procedure cơ sở
CATPROC.SQL
Tạo các package cơ sở
CATREP.SQL
Tạo các chức năng Replication cho database

Ngoài ra còn có rất nhiều file script khác.
=============================
Website không bao giờ 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 muốn tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp 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ộ kinh nghiệm, thủ tục, quy trình, bí kíp thực chiến mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google 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/admin1_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

=============================
HỌC ORACLE DB TỪ A-Z - BÀI 4: TẠO DATABASE, 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, ms 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