Thứ Hai, 26 tháng 9, 2022

Tổng hợp câu hỏi thường gặp trong Quản trị CSDL Oracle (Admin Q&A)

1. Có những cơ sở dữ liệu nào phổ biến hiện nay vậy Thầy Bình?
Trả lời: 

Cơ sở dữ liệu phổ biến hiện này các doanh nghiệp hay sử dụng gồm:
- Oracle Database
- SQL Server
- MySQL
- PostgreSQL
- IBM DB2
- MongoDB
...
Trong đó thông dụng nhất là Oracle Database

2. Khi học cơ sở dữ liệu Oracle em cần học những gì ạ?
Trả lời: 

Em cần học theo lộ trình sau trên các phiên bản 11g, 12c, 19c,...:
- Oracle Database Admin Workshop 1 (gọi tắt là Admin 1)
- SQL Fundamental 1, 2 (gọi tắt là SQL cơ bản)
- Thi chứng chỉ OCA (2 môn: SQL, Admin 1)
- Linux
- Oracle Database Admin Workshop 2 (gọi tắt là Admin 2)
- Thi chứng chỉ OCP (OCA + Admin 2)
- Oracle Database 12c, 19c New Features
- Oracle GoldenGate
- Oracle DataGuard
- Oracle Performance Tunning
- Oracle RAC
- Thi chứng chỉ OCE Tunning hoặc RAC
- Oracle Security
- Các hệ điều hành khác: Solaris, AIX

Và 1 điều quan trọng là hãy thực hành, làm thật nhiều vào nhé các em.

3. Công việc của DBA là gì ạ?

Trả lời:

1. Giám sát, vận hành, quản trị các CSDL của các hệ thống được giao:
- Cài đặt phần mềm CSDL, tạo CSDL, chuyển dữ liệu sang hệ thống mới phục vụ kiểm thử hoặc tối ưu kiến trúc hệ thống.
- Thực hiện nâng cấp cơ sở dữ liệu và phần mềm lên các cấp phát hành mới CSDL
- Bật và tắt instance cơ sở dữ liệu khi có yêu cầu cập nhật phần cứng máy chủ, định kỳ khởi động lại CSDL để giải phóng cache hoặc đảm bảo an toàn CSDL.
- Quản lý cấu trúc lưu trữ của CSDL: Quy hoạch lưu trữ dữ liệu của các user, cấp phát dung lượng tablespace, dọn dẹp các dữ liệu không cần thiết.
- Quản lý các đối tượng CSDL như: bảng, index, view, procedure, package, dblink…
- Sao lưu cơ sở dữ liệu (backup) và thực hiện các hoạt động khôi phục khi cần thiết (recovery), định kỳ kiểm thử bản chất lượng bản backup để đảm bảo an toàn cho dữ liệu.
- Giám sát tải CSDL: các session truy cập, các session bất thường, đặt ngưỡng an toàn cho CSDL; có  biện pháp phòng ngừa hoặc khắc phục theo yêu cầu đảm bảo hệ thống hoạt động online 24/7 với hiệu năng cao. Xây dựng thủ tục giám sát, báo cáo CSDL tự động nhằm phát hiện sớm bất thường đem lại an toàn cho HT.
- Tối ưu CSDL: tối ưu tham số; rà soát phát hiện và tối ưu câu lệnh, thủ tục chiếm tải cao hoặc theo yêu cầu của người dùng ứng dụng.
- Nghiên cứu các giải pháp giám sát tập trung giảm công sức giám sát thủ công, hướng tới tự động hóa.
- Khắc phục sự cố liên quan đến CSDL.
- Hỗ trợ yêu cầu từ ứng dụng liên quan đến database kịp thời (cấp/thu hồi quyền; tạo/thay đổi cấu trúc bảng, thủ tục và các object liên quan, kill tiến trình; tối ưu câu lệnh theo yêu cầu từ ứng dụng;…).
2. Chuyển dữ liệu lịch sử của các CSDL lớn lên SAN tốc độ thấp hoặc Tape.

3. Giám sát, vận hành, quản trị các tiến trình đồng bộ Golden Gate, DataGuard, Mview, CDC,…

4. Quản lý người dùng và bảo mật:
○ Tạo user truy cập vào cơ sở dữ liệu theo phê duyệt đảm bảo đúng quy trinh, quy định; Phân quyền đúng, đủ, kịp thời.
○ Đặt Firewall trên database để chặn IP theo user.
○ Che dấu dữ liệu “nhạy cảm” (thông tin khách hàng, thẻ tín dụng, tài khoản, thanh toán, công nợ,....), ghi log người dùng truy cập các dữ liệu này.
○ Audit tác động của người dùng (bằng Imperva, FGA,…)

.... (3 dấu chấm vậy thôi nhưng là rất nhiều việc đấy nhé)

4. Em muốn tự thực hành thì làm như thế nào ạ?

Trả lời: 

Em cài vmware hoặc virtual box xong lấy lab của thầy dựng sẵn về sử dụng hoặc tự cài:

5. Biến môi trường là gì ạ?

Trả lời: 

Khi mình gõ sqlplus không ra gì toàn báo command not found hay các lệnh khác cũng thế

Nguyên nhân do mình chưa setup biến môi trường

Giải pháp: Tạo biến môi trường trong file .bash_profile (với linux) và file .profile (với aix hoặc Solaris)
(từ root)# su  - oracle

(hoặc từ đường dẫn khác muốn về home thì gõ cd ~)

(đã sang oracle)$ vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=dbaviet
export ORACLE_UNQNAME=dbaviet
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=dbaviet
export PDB_NAME=dbavietpdb
export DATA_DIR=/oradata
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

- Cập nhật biến môi trường:
$ . .bash_profile (dấu chấm nhé)
hoặc
$ source .bash_profile

- Kiểm tra lại biến môi trường:
$ env |grep ORA

(yêu cầu phải có các biến ORACLE_SID, ORACLE_BASE, ORACLE_HOME,...)

(PATH=$ORACLE_HOME/bin để có lệnh sqlplus, dbca, lsnrctl,... hay các lệnh khác)

6. Thầy cho em xin biến môi trường của user oracle, grid mẫu?

Trả lời:
- Biến môi trường user oracle (thay đổi ORACLE_SID=dbn02, dbn03 là tên instance của các bạn):

[root@dbn01~]# su - oracle
[oracle@dbn01 ~]# vi .bash_profile
export PATH
export TMPDIR=$TMP
export ORACLE_HOSTNAME=dbn01
export ORACLE_UNQNAME=db0
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db
export ORACLE_SID=dbn01
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

- Biến môi trường user grid (thay đổi ORACLE_SID=+ASM2, +ASM3 tùy vào node của bạn):

[root@dbn01~]# su - grid
[grid@dbn01 ~]# vi .bash_profile
export PATH
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=dbn01
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export ORACLE_SID=+ASM1
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

- Biến môi trường user root khi thao tác stop, start grid:

[root@dbn01 ~]# vi .bash_profile
export GRID_HOME=/u01/app/11.2.0/grid
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db
export PATH=$GRID_HOME/bin:$GRID_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin

7. Em mới sử dụng Oracle Database 12c, 1 số lệnh hơi khác làm em lúng túng, thầy giúp em với ạ?

Trả lời:

Em tham khảo link này để học những lệnh cơ bản nhất: https://www.tranvanbinh.vn/2020/06/co-ban-ve-oracle-database-12c.html


8. 1 máy chủ chạy 2 database, làm sao để em chuyển qua lại được giữa các database này ạ?

Trả lời: 

Em chỉ cần đặt  biến môi trường cho ORACLE_SID là được (nếu ORACLE_HOME không đổi, còn nếu ORACLE_HOME thay đổi thì em export cả ORACLE_HOME)

-- Thao tác với dbaviet1
(oracle)$ export ORACLE_SID=dbaviet1
$ sqlplus / as sysdba
SQL> select INSTANCE_NUMBER, INSTANCE_NAME, status from gv$instance;
SQL> select inst_id,name, open_mode from gv$database;

-- Giờ muốn chuyển sang dbaviet2
(oracle)$ export ORACLE_SID=dbaviet2
$ sqlplus / as sysdba
SQL> select INSTANCE_NUMBER, INSTANCE_NAME, status from gv$instance;
SQL> select inst_id,name, open_mode from gv$database;

9. Bảng to, bảng vừa và bảng lớn thì bao nhiêu row ạ?

Trả lời:

- Bảng nhỏ: <= 5 triệu row
 
- Bảng vừa: 5 triệu - 50 triệu row
 
- Bảng lớn: 50 triệu row - 100 triệu row

- Bảng rất lớn: 100 triệu row - 500 triệu row

- Bảng KHỦNG: 500 triệu row - 1,2 tỷ row

- Bảng cực KHỦNG: >= 2 tỷ row

10. SID, Service_Name là gì ạ?
Trả lời:

SID là tên duy nhất của Instance

Service_Name là alias được sử dụng khi client kết nối:

+ Với Single thì khai báo trong biến SERVICE_NAMES = sales.acme.com, widgetsales.acme.com --> Khi đó có 2 service_name khi kết nối

+ Với RAC không sử dụng biến SERVICE_NAMES mà dùng DBCA hoặc SRVCTL để quản lý, khi đó  với SIDs Sales1, Sales2, chúng ta chỉ có cần 1 service_name Sales là client sẽ kết nối lần lượt vào 1 trong 2 SIDs đó.


11. Phân biệt dynamic performance views và dictionary view trong oracle database?

Trả lời:

Trong Oracle Database, có hai loại view được sử dụng để truy xuất các thông tin liên quan đến cơ sở dữ liệu:

  1. Dictionary Views: là các view được tạo sẵn bởi Oracle Database để hiển thị thông tin về cấu trúc và đối tượng của cơ sở dữ liệu. Các view này có thể được truy cập bởi tất cả người dùng và được lưu trữ trong tablespace SYSTEM của cơ sở dữ liệu.

  2. Dynamic Performance Views: là các view được tạo ra bởi Oracle Database để hiển thị các thông tin liên quan đến hoạt động của cơ sở dữ liệu. Các view này chỉ có thể được truy cập bởi các quản trị viên hoặc người dùng có quyền đặc biệt, và được lưu trữ trong tablespace SYSAUX.

Sự khác biệt chính giữa hai loại view này là:

  • Dictionary Views cung cấp thông tin về cấu trúc và đối tượng của cơ sở dữ liệu, trong khi Dynamic Performance Views cung cấp thông tin về hoạt động của cơ sở dữ liệu.
  • Dictionary Views có thể được truy cập bởi tất cả người dùng, trong khi Dynamic Performance Views chỉ có thể được truy cập bởi các quản trị viên hoặc người dùng có quyền đặc biệt.
  • Dictionary Views được lưu trữ trong tablespace SYSTEM của cơ sở dữ liệu, trong khi Dynamic Performance Views được lưu trữ trong tablespace SYSAUX.

12. Phân biệt Oracle SID, Database Name, Service Name trong Oracle Database?

Trong Oracle Database, có ba khái niệm quan trọng: SID, Database Name và Service Name. Dưới đây là giải thích về từng khái niệm:

  • SID (System Identifier): Là một chuỗi ký tự định danh hệ thống cho một instance của Oracle Database. Nó là tên duy nhất được cấu hình trong file tệp tin khởi động của instance (init.ora hoặc spfile.ora). Khi bạn kết nối vào Oracle Database, bạn sử dụng tên này để xác định instance mà bạn muốn kết nối. Với Oracle RAC 2 node thì sẽ có 2 SID ví dụ dbaviet1, dbaviet2, với Database Single Node thì chỉ có 1 SID là dbaviet1 chẳng hạn
  • Database Name: Là tên định danh của một database trong Oracle. Nó là tên của cơ sở dữ liệu, và thường được sử dụng để liên kết với tên tệp tin của các đối tượng cơ sở dữ liệu, như các datafile, controlfile, redo log file,... Database Name thường được xác định trong file tệp tin khởi động của instance, và nó là duy nhất trên một hệ thống. Với Oracle RAC 2 node chỉ có 1 tên Database name duy nhất là dbaviet
  • Service Name: Là tên dịch vụ mà một instance cung cấp. Nó là một tên định danh dịch vụ được sử dụng để kết nối vào một instance thông qua listener. Service Name có thể được sử dụng để xác định các kết nối cho các mục đích khác nhau như kết nối dành cho ứng dụng, kết nối dành cho quản trị cơ sở dữ liệu,... Với Oracle RAC chúng ta thường chỉ có 1 service name tên tùy chọn ví dụ dbaviet hoặc dbav (tùy chúng ta thích tên gì) hoặc khi cần thêm 1 service name cho nghiệp vụ khác ví dụ dbaviet_erp thì chúng ta có thể tạo thêm; Với Oracle Single Node thì có thể đặt tên service name khác với SID, Database Name ví dụ dbaviet_servicename.

Tóm lại, SID là định danh duy nhất cho một instance Oracle, Database Name là tên định danh của cơ sở dữ liệu Oracle, và Service Name là tên dịch vụ mà một instance cung cấp để kết nối đến.

=============================
* 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: 0902912888
⚡️ Skype: tranbinh48ca
👨 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

=============================
Tổng hợp câu hỏi thường gặp trong Quản trị CSDL Oracle (Admin Q&A), 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,khóa học pl/sql, 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 dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

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