You are on page 1of 42

T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

LINUX THỰC CHIẾN DÀNH


RIÊNG CHO DBA

“Hiệu quả, thực tiễn và nhanh gọn”


Đồng tác giả: Trần Quốc Huy & Đặng Xuân Duy
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

Mục Lục
GIỚI THIỆU TÁC GIẢ i

LỜI NÓI ĐẦU iii

CHƯƠNG 1 1

Kiể m tra File s và Dire ctorie s 1


1_1. Tìm kiếm Files theo tên 2
1_2. Tìm kiếm chuỗi ký tự trong nội dung Files 3
1_3. Tìm kiếm file và directory theo dung lượng 4
1_4. Tìm kiếm kết hợp dọn dẹp file 6
1-5. So sánh nội dung file 7

CHƯƠNG 2 9

Kiể m tra tiế n trình và ngư ời dùng 9


2-1. Hiển thị và kill tiến trình từ OS 10
2-2. Hiển thị thông tin của người dùng 12

CHƯƠNG 3 14

Tạ o và chỉnh sử a File 14
3-1. Tạo File 14
3-2. Cách thức di chuyển con trỏ trong File 17
3-3. Hiển thị số dòng trong File 17
3-4. Tìm kiếm và thay thế trong File 18

CHƯƠNG 4 20

Phâ n tích và giá m sá t hiệ u nă ng 20


4-1. Đánh giá tổng quan hiệu năng của hệ thống 21
4-2. Xác định các Process chiếm quá nhiều CPU 22
4-3. Xác định các Process chiếm quá nhiều Memory 24

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y
4-4. Giám sát I/O của hệ thống 25
4-5. Giám sát lịch sử tải CPU của hệ thống 27
4-6. Giám sát lịch sử tải Memory của hệ thống 29
4-7. Giám sát lịch sử tải I/O của hệ thống 31

LỜI KẾT: 33

L ý do thà nh lậ p Ta le nt5 33

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

GIỚI THIỆU TÁC GIẢ


TRẦN QUỐC HUY
Đồng sáng lập và giám đốc điều hành hai công ty
công nghệ WECOMMIT và TALENT5

• 10 năm kinh nghiệm trong lĩnh vực Quản trị Cơ


sở dữ liệu. Chuyên gia trong các lĩnh vực tối ưu
Cơ sở dữ liệu, các giải pháp đồng bộ và tăng
cường tính sẵn sàng (Oracle RAC, Oracle Data
Guard, Oracle Golden Gate).
• 05 năm kinh nghiệm giảng dạy, đào tạo Cơ sở
dữ liệu cho các tập đoàn & cá nhân.
• Giảng viên thỉnh giảng khoa Toán tin trường Đại
học Khoa học Tự nhiên.
• Admin diễn đàn Oracle DBA Hà Nội, 1 group trên
facebook về Cơ sở dữ liệu rất uy tín hiện nay.
• Một số dự án tiêu biểu:
✓ Chuyển đổi hệ thống Corebanking –
CBBank – Myanmar
✓ Quản trị toàn bộ CSDL, tối ưu và tham
gia các dự án nâng cấp trong giai đoạn
2013-2014 – MSB
✓ Tối ưu hệ thống Core chứng khoán:
chứng khoán KB, chứng khoán
Vietcombank, chứng khoán Bảo Việt…
✓ Tham gia vị trí chuyên gia tối ưu và hỗ
trợ xử lý sự cố toàn bộ Cơ sở dữ liệu –
Tổng cục Thuế
✓ Quản trị và tối ưu các Cơ sở dữ liệu của
tập đoàn VNPT.
• Email liên hệ: huy.tranquoc@wecommit.com.vn
• hoặc huy.tranquoc@talent5.com.vn

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 i
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

ĐẶNG XUÂN DUY


Giám đốc công nghệ WECOMMIT
•Anh là chuyên gia về CSDL khá nổi tiếng, được
giới DBA tại Việt Nam biết đến với nickname
Jerry Dang.
• Hơn 8 năm kinh nghiệm trong lĩnh vực Quản trị
Cơ sở dữ liệu.
• Admin của diễn đàn Oracle DBA Hà Nội, 1 group
trên facebook về CSDL rất uy tín hiện nay.
• Giảng viên thỉnh giảng khoa Toán tin trường Đại
học Khoa học Tự nhiên.
• Một số dự án tiêu biểu:
✓ Quản trị các hệ thống trọng yếu của
Ngân Hàng Techcombank như Core
Banking, Thẻ, Data Warehouse…
✓ Chuyển đổi và nâng cấp hệ thống Data
Warehouse, ECM, Mobile Banking ngân
hang Techcombank
✓ Hỗ trợ quản trị, xử lý sự cố cho Trung
tâm Tính Cước - Tổng Công ty Viễn
Thông Mobifone
✓ Xây dựng phương án đồng bộ dữ liệu về
Cơ sở dữ liệu tập trung – EVN
• Email liên hệ: duy.dangxuan@wecommit.com.vn
hoặc duy.dangxuan@talent5.com.vn

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 ii
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

LỜI NÓI ĐẦU


Con đường trở thành chuyên gia DBA bạn sẽ phải trải qua ít nhất 03 mốc
quan trọng:

• Thứ nhất: Hiểu và vận dụng thành thạo kỹ năng xử lý, tương tác với
dữ liệu. Đối với Oracle DBA chúng ta thường sử dụng SQL và PL/SQL.

• Thứ hai: Có kỹ năng triển khai, quản trị và tối ưu tham số hệ điều
hành. Trên thực tế các hệ thống lớn thường sử dụng những hệ điều
hành Unix, Linux (ví dụ: AIX, HP-UX, Solaris, Oracle Linux, Redhat…)

• Thứ ba: Hiểu rõ kiến trúc và cách thức vận hành, quản trị Cơ sở dữ
liệu. Kèm với đó có kỹ năng triển khai những công nghệ như: công
nghệ tăng cường tính sẵn sàng (Ví dụ: Oracle RAC, Oracle Active
Data Guard,…), các giải pháp đồng bộ dữ liệu (Ví dụ: Oracle Golden
Gate, Oracle Stream).

Với mỗi hạng mục kỹ năng trên, các chuyên gia thực tế đều có những “bí
kíp” để giúp công việc quản trị, triển khai thực hiện một cách nhanh
chóng, hiệu quả và ít sai sót nhất.

Cuốn sách này chia sẻ một trong những “bí kíp”, những tình huống thực
tế sẽ gặp trong quá trình làm việc với những hệ thống lớn dùng hệ điều
hành Linux, kèm với đó là phương pháp xử lý.

Các chương trong cuốn sách không có liên quan với nhau, bạn có thể
đọc bất kỳ chương nào và đều có thể áp dụng ngay vào công việc hiện
tại. Nội dung sách bao gồm 4 chương:

• Chương 1: Những kinh nghiệm và câu lệnh thực chiến khi làm việc
với Files và Directories.

• Chương 2: Kinh nghiệm và thực chiến khi làm việc với Tiến trình và
Người dùng

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 iii
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

• Chương 3: Cách thức tạo và chỉnh sửa file sử dụng vi.

• Chương 4: Phân tích và giám sát hiệu năng của hệ thống.

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 iv
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

“Không có kho báu nào quý bằng học thức. Hãy tích lũy nó bất cứ lúc nào
có thể”.

-Rudasky-

CHƯƠNG 1
Kiểm tra Files và Directories
Trong vai trò một DBA có rất nhiều trường hợp bạn cần kỹ năng kiểm tra,
quản lý File và Directories.

Có thể bạn cần kiểm tra và định kỳ dọn dẹp các file trace, log, cũng có
trường hợp bạn xử lý gấp khi một phân vùng trên hệ thống đã gần đầy
100%.

Chương này cung cấp các tình huống thực tế cùng những câu lệnh để xử
lý các tình huống đó.

1. Tìm kiếm Files theo tên


2. Tìm kiếm chuỗi ký tự trong nội dung Filess
3. Tìm kiếm file theo dung lượng
4. Tìm kiếm kết hợp xóa file
5. So sánh nội dung của các file

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 1
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

1_1. Tìm kiếm Files theo tên

Đặt vấn đề
Bạn muốn tìm kiếm một file trong hệ thống, bạn chỉ biết tên của file
đó. Ví dụ: bạn muốn tìm kiếm file log của Oracle database, bạn biết file
log sẽ được đặt tên theo cú pháp alert<ORACLE_SID>.log .

Giải pháp
• Tìm kiếm các file mà tên file chứa từ alert và kết thúc file là từ log.
Tại ví dụ này tôi tìm kiếm trong toàn bộ các phân vùng (tìm trong /).
$ cd /
$ find . -name "alert*.log"
Kết quả trả ra bao gồm đường dẫn chi tiết đến file:
./u01/app/oracle/diag/rdbms/lab/lab/trace/alert_lab.log

• Trong thực tế nếu bạn sử dụng user không có quyền truy cập vào
một số directory khi tìm kiếm, bạn sẽ thấy rất nhiều cảnh báo
warning hiển thị ra màn hình, ví dụ như:

find: `./var/cache/ldconfig': Permission denied


find: `./var/cache/hald': Permission denied
find: `./var/cache/rpcbind': Permission denied
find: `./var/log/sssd': Permission denied
find: `./var/log/gdm': Permission denied
Để loại bỏ các warning đó, bạn có thể sử dụng lệnh sau:
$ find . -name "alert*.log" 2>/dev/null

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 2
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

1_2. Tìm kiếm chuỗi ký tự trong nội dung Files

Đặt vấn đề
Trong quá trình quản trị, sẽ có rất nhiều công việc bạn cần đến kỹ
năng này.

Giả sử bạn có một tập các file sql để thực hiện cập nhật Cơ sở dữ
liệu, bạn muốn tìm xem file nào chứa câu lệnh “insert”. Hoặc bạn muốn
tìm xem những file trace nào có chứa cụm từ cảnh báo lỗi “ERROR”.

Trong hệ thống có rất nhiều file, nếu chúng ta tìm thủ công từng file
thì sẽ mất rất nhiều thời gian.

Giải pháp
• Thực hiện tìm kiếm sử dụng xargs kết hợp find

$ find /home/oracle/scripts/ -name "*.sql" | xargs grep -i


"insert"
Kết quả trả ra bao gồm tên file và phần nội dung chứa chuỗi ký tự đang tìm kiếm:
/home/oracle/scripts/upcode1.sql:insert into test select * from
hr.employees;
Giải thích câu lệnh:
✓ /home/oracle/scripts/ : đường dẫn chúng ta tìm kiếm
✓ -name "*.sql" : Tìm tất cả các file có đuôi là .sql
✓ xargs grep -i "insert" : nội dung trong các file có chứa chuỗi “insert”

• Chúng ta cũng có thể sử dụng phương án sau:


$ find /home/oracle/scripts/ -name "*.sql" -exec grep -i "insert"
'{}' \; -print
Kết quả trả ra như sau:

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 3
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

✓ insert into test select * from hr.employee s; → đây là nội dung trong
file chứa chuỗi ký tự đang tìm kiếm
✓ /home/oracle/scripts/upcode1.sql → đây là tên file chứa nội dung trên
Giải thích câu lệnh:
✓ find /home/oracle/scripts/ -name "*.sql": Tìm các file có tên file cuối
cùng là “.sql” trong thư mục /home/oracle/scripts/
✓ Kết quả của câu lệnh trên sẽ được đưa vào lệnh -exec '{}', tại đây mỗi file sẽ
được thực thi câu lệnh grep -i "insert"
✓ Ký tự \; để kết thúc của lệnh -exec
✓ -print để hiển thị tên các file tìm được

• Tại một số trường hợp bạn chỉ muốn hiển thị tên của file (không cần
hiển thị nội dung):
$ f /home/oracle/scripts/ -name "*.sql" -exec grep -qi "insert"
'{}' \; -print

1_3. Tìm kiếm file và directory theo dung lượng

Đặt vấn đề
Trong các công việc quản trị, ắt hẳn có nhiều lúc bạn cần tìm kiếm
hoặc sắp xếp các file theo dung lượng. Ví dụ như một phân vùng của hệ
thống có dung lượng quá lớn, bạn muốn biết các file nào có dung lượng
lớn nhất. Tại đây tôi sẽ đưa ra các cách thức để bạn có thể tìm kiếm:
• Các file có dung lượng lớn
• Các directory có tổng dung lượng lớn

Giải pháp
• Bạn muốn sắp xếp các file theo dung lượng giảm dần. Hiển thị ra
màn hình 5 file đầu tiên.
$ ls -laS |grep "^-"| head -5
Kết quả trả ra như sau:

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 4
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y
-rw-r--r--. 1 oracle oinstall 3453696911 Oct 7 2019 Oracle Database 12R2.zip
-rw-r--r--. 1 oracle oinstall 616912 Feb 8 06:52 awrrpt_1_27_30.html
-rw-r--r--. 1 oracle oinstall 513819 Feb 8 06:37 awrrpt_1_28_30.html
-rw-------. 1 oracle oinstall 6219 Apr 17 10:58 .viminfo
-rw-------. 1 oracle oinstall 5580 Apr 17 08:35 .ICEauthority

• Đôi khi bạn cần biết các file lớn nhất ở trong toàn bộ các thư mục
con. Trường hợp này thực tế rất hay gặp khi một phân vùng (ví dụ
/u01 ) của bạn gần đầy, trong đó có chứa cả file và nhiều thư mục
con. Bạn cần phải nhanh chóng biết những file lớn và thư mục cụ thể
đang chứa chúng để có phương án xử lý.
$ find /u01 -ls |sort -nrk7|head -5
Kết quả trả ra như sau:
804203 1935372 -rw-r----- 1 oracle oinstall 1981816832 Apr 16 07:27
/u01/app/oracle/oradata/lab/system01.dbf
804274 624652 -rw-r----- 1 oracle oinstall 639639552 Apr 16 07:30
/u01/app/oracle/oradata/lab/sysaux01.dbf
930759 416184 -rw-r--r-- 1 oracle oinstall 426166074 Oct 7 2019
/u01/app/oracle/product/11.2.0/dbhome_1/lib/libserver12.a
930806 398552 -rwsr-s--x 1 oracle oinstall 408110137 Oct 7 2019
/u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
788431 274472 -rw-r----- 1 oracle oinstall 281059328 Jan 26 2017
/u01/app/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates/Seed_Database.df
b

Giải thích câu lệnh:


sort -nrk7: Sắp xếp giảm dần theo cột thứ 7 (ở đây là cột về dung lượng)

• Bạn muốn tìm kiếm các file có dung lượng lớn hơn 10G ?
$ find . -size 10G

• Bạn muốn tìm kiếm các file có dung lượng nhỏ hơn 10G ?
$ find . -size 10G

• Tìm kiếm TOP 5 directory có dung lượng lớn nhất trong phân vùng
/u01
$ du -S /u01 |sort -nr |head -5

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 5
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y
3452548 /u01/app/oracle/oradata/lab
1944552 /u01/app/oracle/product/11.2.0/dbhome_1/lib
623464 /u01/app/oracle/product/11.2.0/dbhome_1/bin
411616 /u01/app/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates
344600 /u01/app/oracle/product/11.2.0/dbhome_1/javavm/jdk/jdk8/admin

• Bạn muốn biết tổng dung lượng của một phân vùng ?
$ du -sh /u01
11G /u01

1_4. Tìm kiếm kết hợp dọn dẹp file

Đặt vấn đề
Bạn muốn dọn dẹp những file trace, log của hệ thống, Cơ sở dữ liệu
đã cũ hơn 14 ngày. Bạn muốn tìm những file mới bị thay đổi trong 10
phút gần nhất để phán đoán một tình huống lỗi khi xử lý sự cố. Đó là hai
trường hợp bạn có thể gặp trong quá trình vận hành, triển khai hoặc ứng
cứu hệ thống.

Giải pháp
• Hệ thống bạn đột nhiên gặp vấn đề, ngoài việc kiểm tra hiệu năng và
các câu lệnh trên Database, bạn muốn kiểm tra phân vùng /u01 trên
OS xem có file nào mới bị thay đổi trong vòng 10 phút gần nhất
không
$ find /u01 -mmin -10

• Trường hợp bạn muốn tìm các file trong phân vùng /u01 mà bị thay
đổi lớn hơn 10 phút.
$ find /u01 -mmin +10

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 6
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

• Nếu bạn muốn hiển thị thêm thời gian file đã bị thay đổi thể thuận
tiện cho việc phán đoán xự cố
$ find /u01 -mmin -10 -printf "%p %TY-%Tm-%Td %TH:%TM:%TS %Tz\n"

• Câu lệnh sau đây cho phép bạn xóa những file trace cũ hơn 10 ngày
find $ORACLE_BASE/diag/rdbms/talent5/talent5/trace/*.trc -type f
-mtime +10 -exec rm -f {} \;

• Sử dụng câu lệnh sau cũng có thể cho kết quả tương tự : xóa những
file trace cũ hơn 10 ngày
find $ORACLE_BASE/diag/rdbms/talent5/talent5/trace/*.trc -mtime
+10 | xargs rm

1-5. So sánh nội dung file

Đặt vấn đề
Bạn muốn so sánh 2 scripts hoặc 2 parameter file có gì khác nhau.

Giải pháp
• So sánh 2 fille pfilelab.ora và pfilelab_bk.ora sử dụng lệnh diff
$ diff pfilelab.ora pfilelab_bk.ora
8c8
< lab.__pga_aggregate_target=289406976
---
> *._pga_aggregate_target=289406976
18d17
< *.db_name='lab'
28c27
< *.open_cursors=500
---
> *.open_cursors=300

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 7
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

33a33
> *.db_name='lab'

Giải thích kết quả:


Dấu < : Thể hiện tham số đó ở file pfilelab.ora
Dấu > : Thể hiện tham số đó ở file pfilelab_bk.ora
c : change
a : append
d : delete

• Bạn có thể sử dụng lệnh sdiff để kết quả dễ đọc hơn


$ sdiff pfilelab.ora pfilelab_bk.ora

• Kết quả sẽ hiển thị như sau :

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 8
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

“Mọi người sinh ra đều bình đẳng, nếu có khác biệt là do học vấn”
Fukuzawa Yukichi

CHƯƠNG 2
Kiểm tra tiến trình và người dùng
Trong quá trình quản trị, chúng ta sẽ phải kết hợp giữa các kỹ
năng, câu lệnh kiểm tra ở mức Cơ sở dữ liệu và những câu lệnh để kiểm
tra ở mức hệ điều hành.

Ví dụ trong các trường hợp hệ thống cao tải, gần như các câu
lệnh mức Cơ sở dữ liệu đều hoạt động rất chậm, lúc này người quản trị
có thể kill các tiến trình từ mức hệ điều hành để ngay lập tức giải phóng
tài nguyên, tránh hiện tượng crash hoặc treo hoàn toàn Cơ sở dữ liệu.

Chương này cung cấp cho các bạn những câu lệnh hay được sử
dụng thực tế liên quan đến tiến trình và người dùng.

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 9
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

2-1. Hiển thị và kill tiến trình từ OS

Đặt vấn đề
Bạn muốn xem thông tin các tiến trình đang hoạt động trên hệ thống
và muốn thực hiện kill tiến trình để giải phòng tài nguyên khi hệ thống
gặp vấn đề về hiệu năng.

Giải pháp
• Kiểm tra xem hệ thống có bao nhiêu Database instance đang hoạt
động.
$ ps -ef | grep -i smon | grep -v grep
Kết quả trả ra như sau:
oracle 8213 1 0 Jan25 ? 00:01:43 ora_smon_TALENT5
oracle 25355 1 0 Feb23 ? 00:00:50 ora_smon_Wecommit
Giải thích câu lệnh:
✓ Do mỗi Database instance khi hoạt động sẽ có một background process SMON
(phần này các bạn học kiến trúc của Oracle Database sẽ rõ). Do đó để biết có bao
nhiêu Database instance đang hoạt động, chúng ta chỉ cần xem có bao nhiêu tiến
trình SMON trên hệ thống. (Các bạn cũng có thể tìm kiếm tiến trình PMON cũng
đem lại kết quả tương tự)
Giải thích kết quả:
✓ Cột đầu tiên trong kết quả trả ra cho thấy owner của tiến trình là oracle
✓ Cột thứ hai cho biết PID (mỗi tiến trình sẽ có một PID)
✓ Cột thứ năm xác định thời gian hoạt động của tiến trình. Trong ví dụ này tiến trình
SMON của database TALENT5 đã hoạt động từ ngày 25/01

• Khi bạn thấy hệ thống có vấn đề đột biến về mặt hiệu năng (theo
chiều hướng quá tải), các bạn cũng có thể kiểm tra xem số lượng
các process của user Oracle đang vào hệ thống có bị tăng đột biến
không.

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 10
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

# Hiển thị các process của user Oracle


$ ps -fu oracle
UID PID PPID C STIME TTY TIME CMD
oracle 7884 1 0 Jan25 ? 00:03:54 ora_pmon_TALENT5
oracle 7813 1 0 Jan25 ? 00:11:35 ora_psp0_TALENT5
oracle 7802 1 0 Jan25 ? 08:55:51 ora_vktm_TALENT5
oracle 8213 1 0 Jan25 ? 00:02:23 ora_smon_TALENT5

#Kiểm tra xem số lượng process của user Oracle đang vào hệ thống là bao nhiêu
$ ps -fu oracle | wc -l
2100

• Giả sử bạn có một tiến trình backup (RMAN) đang hoạt động, bạn
muốn kill tiến trình này do lo ngại ảnh hưởng đến hiệu năng của hệ
thống.
#Kiểm tra thông tin PID của tiến trình và kill tiến trình sử dụng lệnh kill -9
$ ps -ef |egrep 'rman|UID' |egrep -v egrep
UID PID PPID C STIME TTY TIME CMD
oracle 3767 3743 2 08:42 pts/2 00:00:01 rman target /
Giải thích:
- Tiến trình backup (RMAN) có PID là 3767
# Thực hiện kill tiến trình
kill -9 3767

• Trong một số trường hợp cao tải, việc kill tiến trình từ OS sẽ hiệu quả
hơn nhiều nếu bạn chỉ sử dụng lệnh kill session trên Database. Câu
lệnh sau đây cho phép bạn tìm kiếm PID tương ứng trên OS của một
session id (SID) trên Database.
select a.sid, a.serial#,a.username, a.osuser, b.spid
from v$session a, v$process b
where a.paddr= b.addr
and a.sid='&sid'
order by a.sid;

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 11
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

• Trường hợp bạn muốn kill toàn bộ các session kết nối từ bên ngoài
vào Cơ sở dữ liệu. Trường hợp này thường sử dụng khi Database đã
bị treo, thay vì phải restart database, chúng ta sẽ kill toàn bộ các tiến
trình đang kết nối để giải phóng tài nguyên.
kill -9 `ps -ef |grep LOCAL=NO|grep -v grep |awk '{print $2}'`

2-2. Hiển thị thông tin của người dùng

Đặt vấn đề
Bạn thấy hệ thống có những thay đổi khác thường. Bạn kiểm tra
thấy một số file bị thay đổi gần đây. Bạn muốn kiểm tra lịch sử đăng
nhập của các user vào OS.

Giải pháp
• Kiểm tra thông tin user và thời gian đang đăng nhập vào hệ thống.
$ who
oracle tty1 2020-02-12 08:40 (:0)
oracle pts/0 2020-02-12 08:40 (:0.0)
oracle pts/1 2020-02-12 08:40 (192.168.231.1)
oracle pts/2 2020-02-12 08:42 (192.168.231.1)

• Bạn muốn kiểm tra thông tin chi tiết hơn về những user đang đăng
nhập. Câu lệnh sau cho bạn cái nhìn tổng quan hơn, bao gồm thông
tin Uptime, thông tin về tải và câu lệnh của User.
$ w
09:01:48 up 24 min, 4 users, load average: 0.00, 0.10, 0.29
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
oracle tty1 :0 08:40 23:45 2.28s 0.08s pam: gdm-password
oracle pts/0 :0.0 08:40 21:34 0.00s 0.00s bash
oracle pts/1 192.168.231.1 08:40 1.00s 0.12s 0.01s w
oracle pts/2 192.168.231.1 08:42 19:22 1.21s 1.21s rman target /

• Kiểm tra lịch sử đăng nhập của User


Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 12
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

$ last oracle
oracle tty1 :0 Tue Dec 10 05:56 - crash (05:52)
oracle pts/0 :0.0 Tue Dec 10 05:49 - down (00:05)
oracle tty1 :0 Tue Dec 10 05:49 - down (00:05)
oracle pts/0 :0.0 Fri Nov 8 23:02 - crash (31+06:45)
oracle tty1 :0 Fri Nov 8 23:02 - crash (31+06:45)
oracle pts/0 :0.0 Mon Oct 28 05:12 - crash (11+17:47)
oracle tty1 :0 Mon Oct 28 04:41 - crash (11+18:18)

• Trường hợp lịch sử đăng nhập của User hiển thị quá nhiều, bạn có
thể sử dụng lệnh sau để dễ dàng cho việc đọc.
$ last oracle | less

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 13
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

“Nếu đam mê là con đường dẫn đến thành công, thì sự kiên trì chính là
chiếc xe đưa bạn đến đó”

Bill Bradleys

CHƯƠNG 3
Tạo và chỉnh sửa File
Là một DBA bạn sẽ phải thực hiện rất nhiều công việc liên quan đến
tạo, chỉnh sửa File trên hệ điều hành. Nếu các bạn nắm vững các quy
tắc, phím tắt thì công việc sẽ được tăng tốc rất nhiều.

Chương này tôi sẽ cung cấp cho các bạn những cách thức làm việc
với trình xử lý text của hệ điều hành Linux: “vi”.

• Tôi không đưa ra mọi mặt, mọi vấn đề khi dùng “vi”
• Mục tiêu của chương là đưa ra những vấn đề thường xuyên được sử
dụng trong thực tế.

3-1. Tạo File

Đặt vấn đề
Bạn cần tạo một file check_db.sql

Giải pháp
Để tạo file tên là check_db.sql bạn sử dụng lệnh sau :

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 14
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

$ vi check_db.sql

Khi gõ lệnh trên bạn sẽ thấy một cửa sổ với cấu trúc như sau:
• Bên trái của cửa sổ có rất nhiều ký tự ~. Những ký tự này có ý nghĩa:
các dòng ở đây đều là dòng trắng.
• Cuối cùng cửa sổ là "check_db.sql" [New File]

• Để bắt đầu thêm nội dung vào file, bạn thực hiện như sau:
o Ấn phím i. Sau khi ấn i bạn sẽ thấy ở cuối file đã chuyển sang
trạng thái bắt đầu thêm được nội dung: -- INSERT –

o Bạn bắt đầu thêm các nội dung vào file, tại đây tôi thêm một
câu lệnh SQL:
select status from v$instance;

o Ấn ENTER để xuống dòng mới, tại đây tôi thêm một câu lệnh
SQL khác:
select sum(bytes)/1024/1024/1024 from dba_segments;

• Khi đã kết thúc, bạn cần lưu file và thoát ra khỏi trình duyệt soạn
thảo thì làm như sau:
✓ Đầu tiên ấn phím Escape để thoát khỏi mode Insert. Khi ấn
phím này bạn để ý ở góc dưới màn hình đã không còn dòng
-- INSERT – là đúng. Thực tế bạn chỉ cần ấn Escape một lần,
tuy nhiên nếu bạn ấn nhiều lần cũng không vấn đề gì.
✓ Sau đó bạn ấn :wq (ý nghĩa là write + quit) để lưu nội dung và
thoát ra khỏi vi. Bạn để ý thì :wq sẽ được hiển thị ở cuối file.
Bên trên là cách thức đơn giản mà người quản trị hay sử dụng để tạo
file, sau đây tôi sẽ nói sâu hơn về bản chất của lệnh vi.
Để tương tác với lệnh vi chúng ta cần hiểu về 02 trạng thái hoạt động
của lệnh
• Trạng thái điều khiển (Command Mode)

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 15
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

• Trạng thái thêm dữ liệu (Insert Mode)

Khi bạn mới vào vi , mặc định bạn sẽ ở Command Mode. Tại đây bạn sẽ
nhập các lệnh điều khiển để hệ thống hiểu bạn muốn làm gì với File, ví
dụ:
• Bắt đầu vào trạng thái thêm dữ liệu (nhập i như trong ví dụ trên)
• Lưu file
• Thoát khỏi vi
Một số Command Mode hay được sử dụng:
Gõ các phím sau Ý nghĩa
:wq Lưu file và thoát
:x Lưu file và thoát
:w Lưu file nhưng không thoát
:w! Lưu file ngay cả file đang ở trạng thái read-
only
:e! Quay lại file đã được lưu gần nhất

Một số cách để vào Insert Mode hay được sử dụng:


Gõ các phím sau Ý nghĩa
i Thêm ký tự vào bên phải của con trỏ
I (viết hoa) Thêm ký tự vào đầu dòng
A (viết hoa) Thêm ký tự vào cuối dòng
o Thêm ký tự vào bên dưới của dòng hiện tại
O (viết hoa) Thêm ký tự vào bên trên của dòng hiện tại

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 16
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

3-2. Cách thức di chuyển con trỏ trong File

Đặt vấn đề
Bạn đang làm việc với một File khá lớn trong Linux. Nếu chỉ sử dụng
các phím điều hướng cơ bản (lên, xuống, trái, phải) thì công việc sẽ rất
lâu. Bạn muốn biết các phím tắt để có thể dễ dàng đưa con trỏ đến vị trí
mình mong muốn.

Giải pháp
Dưới đây là các phím tắt giúp bạn có thể thao tác vô cùng nhanh
chóng trong lệnh vi
Phím tắt Ý nghĩa
0 (số 0) Quay về đầu dòng hiện tại
$ Đi đến cuối dòng hiện tại
H Đi lên đầu của màn hình hiện tại
L Đi xuống cuối của màn hình hiện tại
1G Quay về dòng đầu tiên của File
G Đi đến dòng cuối cùng trong File
Ctl + f (hoặc Page Down) Kéo xuống 1 trang màn hình
Ctl +b (hoặc Page Up ) Kéo lên 1 trang màn hình

3-3. Hiển thị số dòng trong File

Đặt vấn đề
Bạn muốn hiển thị số dòng trong file để quá trình làm việc dễ dàng
và thuận tiện hơn.

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 17
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

Giải pháp
Ở chế độ Command mode của vi , bạn gõ lệnh sau để bật tính năng hiển
thị số dòng
:set number

Giả sử bạn đang xem file alert log của database, lúc này hiển thị trên
màn hình sẽ như sau :
1 2019-10-28T05:34:44.998254+07:00
2 Starting ORACLE instance (normal) (OS id: 52700)
3 2019-10-28T05:34:45.241883+07:00
4 CLI notifier numLatches:3 maxDescs:519
5 2019-10-28T05:34:45.489856+07:00

Các bạn sẽ thấy ở bên tay trái của file sẽ có thêm các số tương ứng với
số dòng.
Để chuyển về trạng thái không đặt số dòng các bạn sử dụng lệnh
:set nonumber

3-4. Tìm kiếm và thay thế trong File

Đặt vấn đề
Bạn muốn hiển thị số dòng trong file để quá trình làm việc dễ dàng
và thuận tiện hơn.

Giải pháp
• Giả sử bạn muốn tìm kiếm chuỗi ký từ “ORA-” trong file alert log. Đây
là cách DBA có thể kiểm tra các cảnh báo lỗi của Cơ sở dữ liệu Oracle

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 18
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

Ấn /ORA- để bắt đầu tìm kiếm


Ấn n để tìm kiếm các dòng phía sau
Ấn N (viết hoa) để tìm kiếm các dòng phía trước

• Giả sử bạn có một parameter file và cần thay thế toàn một chữ “lab”
thành “TALENT5 ”
File trước ban đầu như sau:
lab.__data_transfer_cache_size=0
lab.__db_cache_size=343932928
lab.__inmemory_ext_roarea=0
lab.__inmemory_ext_rwarea=0
lab.__java_pool_size=4194304
lab.__large_pool_size=8388608
lab.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
..

• Bạn thực hiện lệnh sau:


:%s/lab/TALENT5/g

• Câu lệnh sẽ tìm kiếm và thay thế toàn bộ trong file các chuỗi ký tự
“lab” thành TALENT5. Kết quả như sau:
TALENT5.__data_transfer_cache_size=0
TALENT5.__db_cache_size=343932928
TALENT5.__inmemory_ext_roarea=0
TALENT5.__inmemory_ext_rwarea=0
TALENT5.__java_pool_size=4194304
TALENT5.__large_pool_size=8388608
TALENT5.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 19
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

"Đầu tư vào tri thức đem lại lợi nhuận cao nhất."

Benjamin Franklin

CHƯƠNG 4
Phân tích và giám sát hiệu năng
Để phân tích và phán đoán khi hiệu năng của Cơ sở dữ liệu có dấu
hiệu không còn cao, chúng ta cần sử dụng nhiều công cụ, nhiều kỹ
năng :

✓ Kiểm tra các Wait, các session đang bị block thông qua câu
lệnh SQL, các giao diện quản trị Enterprise Manager.
✓ Hoặc chúng ta có thể xem xét các chỉ số đánh giá hiệu năng
trong AWR, ADDM…
✓ Kết hợp với đó người quản trị cũng cần kiểm tra những chỉ
số về tài nguyên trên OS để phán đoán các điểm nghẽn.

Chương này tôi sẽ tập trung vào những công cụ thực tế hay sử dụng
cho việc đánh giá, phân tích hiệu năng mức OS.

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 20
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

4-1. Đánh giá tổng quan hiệu năng của hệ thống

Đặt vấn đề
Một ngày đẹp trời bạn nhận thông tin phản ánh từ đội quản trị ứng
dụng rằng hệ thống hoạt động chậm hơn bình thường. Bạn muốn kiểm
tra xem từ phía database server hiệu năng có vấn đề gì không.

Giải pháp
Ngay lập tức bạn có thể sử dụng lệnh vmstat để biết tổng quan hiệu
năng trên server. Lệnh này hiển thị thông tin về hiệu năng thời điểm
hiện tại (các thông tin liên quan đến CPU, I/O, Memory, paging). Câu lệnh
và kết quả hiển thị sẽ như sau:

Kết quả trả ra có nhiều thông số, bạn có thể nhìn nhanh vào các thông
số sau để khoanh vùng suy luận:

• Nếu chỉ số wa (time wait for I/O) mà cao, hệ thống của bạn đang
gặp vấn đề liên quan đến I/O. Chúng ta sẽ sử dụng các câu lệnh kiểm
tra chi tiết về I/O để phân tích sâu hơn.

• Nếu chỉ số b (process sleeping) luôn lớn hơn 0 và chỉ số us (chỉ số


sử dụng CPU của user) hoặc chỉ số sy (chỉ số sử dụng CPU của
system) cao, hệ thống có thể đang gặp vấn đề với CPU. Chúng ta sẽ
sử dụng các câu lệnh phân tích CPU để kiểm tra sâu hơn.

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 21
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

• Nếu chỉ số si (swapped in to disk) và chỉ số so (swapped out to disk)


luôn lớn hơn 0 bạn có thể đang gặp vấn đề với Memory. Chúng ta sẽ
sử dụng các câu lênh kiểm tra chi tiết hơn liên quan đến Memory.

Để tránh trường hợp bạn phải gõ lệnh vmstat thủ công liên tục trong quá
trình giám sát, bạn có thể sử dụng lệnh sau:
$ vmstat <thời gian lặp lại> <Số lần sẽ hiển thị>

• Ví dụ: Lệnh sau sẽ hiển thị kết quả lệnh vmstat sau mỗi 2 giây, kết
thúc sau 5 kết quả.
$ vmstat 2 5

• Bạn cũng có thể thêm option -t để kết quả có cột thời gian
$ vmstat 2 100 -t

4-2. Xác định các Process chiếm quá nhiều CPU

Đặt vấn đề
Sau khi bạn đánh giá tổng quan hệ thống, bạn khoanh vùng hệ thống
đang có vấn đề về hiệu năng liên quan đến CPU, bạn muốn kiểm tra xem
tiến trình nào đang gây ra tình trạng này, nếu là tiến trình của Database
thì bắt nguồn từ user nào và câu lệnh nào.

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 22
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

Giải pháp
• Bước 1: Trên hệ điều hành bạn kiểm tra xem các process đang
chiếm nhiều CPU nhất là các process có PID nào.
[oracle@lab-oracle ~]$ ps -e -o pcpu,pid,user,tty,args | sort -n
-k 1 -r | head -5
Kết quả:
84.6 4053 oracle ? oraclelab (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
2.1 3609 oracle ? ora_vktm_lab
0.2 3661 oracle ? ora_mmon_lab
0.1 996 root ? /sbin/udevd -d
0.1 3980 oracle pts/1 sqlplus ass sysdba
Giải thích kết quả:
✓ Cột đầu tiên cho biết % CPU đang được process sử dụng.
✓ Cột thứ hai cho ta biết PID của tiến trình. Nhờ vào PID này ta có thể tiến hành bước
tiếp theo: kiểm tra chi tiết câu lệnh này ứng với SID

• Bước 2: Kiểm tra trong Database từ kết quả PID có được ở bước 1
SET LINESIZE 300 HEADING OFF FEEDBACK OFF
SELECT
RPAD('USERNAME : ' || s.username, 300) ||
RPAD('PROGRAM : ' || s.program, 300) ||
RPAD('SPID : ' || p.spid, 300) ||
RPAD('SID : ' || s.sid, 300) ||
RPAD('SERIAL# : ' || s.serial#, 300) ||
RPAD('MACHINE : ' || s.machine, 300) ||
RPAD('TERMINAL : ' || s.terminal, 300)||
RPAD('SQL_TEXT : ' || substr(sa.sql_text,1,300), 300)
FROM v$session s, v$process p, v$sqlarea sa
WHERE s.paddr = p.addr and s.sql_address=sa.address(+)
AND s.sql_hash_value=sa.hash_value(+)
AND p.spid = '&PID_FROM_OS';
Tại đây ta điền thông tin PID đã có ở bước 1 :
Enter value for pid_from_os: 4053
old 14: AND p.spid = '&PID_FROM_OS'
new 14: AND p.spid = '4053'

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 23
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

Kết quả trả ra như sau:


USERNAME : WECOMMIT
PROGRAM : sqlplus@lab-oracle (TNS V1-V3)
SPID : 4053
SID : 1
SERIAL# : 7657
MACHINE : lab-oracle
TERMINAL : pts/1
SQL_TEXT : select sum(a.CREATED_VSNID*b.MODIFIED_VSNID) from test
a, test b where a.object_id=b.object_id and sa.CREATED_APPID>1000

4-3. Xác định các Process chiếm quá nhiều


Memory

Đặt vấn đề
Sau khi bạn đánh giá tổng quan hệ thống, bạn khoanh vùng hệ thống
đang có vấn đề về hiệu năng liên quan đến Memory, bạn muốn kiểm tra
xem tiến trình nào đang gây ra tình trạng này, nếu là tiến trình của
Database thì bắt nguồn từ user nào và câu lệnh nào.

Giải pháp
• Bước 1: Trên hệ điều hành bạn kiểm tra xem các process đang
chiếm nhiều CPU nhất là các process có PID nào.
$ ps -e -o pmem,pid,user,tty,args | sort -n -k 1 -r | head
Kết quả:
48.1 8446 oracle ? oraclelab (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
13.4 3615 oracle ? ora_mman_lab
11.5 3661 oracle ? ora_mmon_lab
10.8 3639 oracle ? ora_dbw0_lab
10.5 3706 oracle ? ora_cjq0_lab
8.1 3651 oracle ? ora_w000_lab
6.8 3645 oracle ? ora_smon_lab
6.4 3629 oracle ? ora_dbrm_lab
6.2 8177 oracle ? ora_w003_lab
5.9 3851 oracle ? ora_q004_lab

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 24
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

Giải thích kết quả :


✓ Cột đầu tiên cho biết % Memory đang được process sử dụng.
✓ Cột thứ hai cho ta biết PID của tiến trình. Nhờ vào PID này ta có thể tiến hành bước
tiếp theo: kiểm tra chi tiết câu lệnh này ứng với SID nào trong database hoặc bạn
có thể kill tiến trình.

• Bước 2: Kiểm tra trong Database từ kết quả PID có được ở bước 1
SET LINESIZE 300 HEADING OFF FEEDBACK OFF
SELECT
RPAD('USERNAME : ' || s.username, 300) ||
RPAD('PROGRAM : ' || s.program, 300) ||
RPAD('SPID : ' || p.spid, 300) ||
RPAD('SID : ' || s.sid, 300) ||
RPAD('SERIAL# : ' || s.serial#, 300) ||
RPAD('MACHINE : ' || s.machine, 300) ||
RPAD('TERMINAL : ' || s.terminal, 300)||
RPAD('SQL_TEXT : ' || substr(sa.sql_text,1,300), 300)
FROM v$session s, v$process p, v $sqlarea sa
WHERE s.paddr = p.addr and s.sql_address=sa.address(+)
AND s.sql_hash_value=sa.hash_value(+)
AND p.spid = '&PID_FROM_OS';

4-4. Giám sát I/O của hệ thống

Đặt vấn đề
Sau khi bạn đánh giá tổng quan hệ thống, bạn khoanh vùng hệ thống
đang có vấn đề về hiệu năng liên quan đến I/O, bạn muốn kiểm tra chi
tiết hơn về vấn đề này.

Giải pháp
• Sử dụng lênh iostat để kiểm tra tình trạng I/O của hệ thống
$ iostat -xd

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 25
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

Khi đọc kết quả, các bạn chú ý vào các cột được bôi đỏ trong hình:
✓ Chú ý tới các Device có chỉ số r/s (read requests per second) hoặc w/s (write
requests per second) cao bất thường
✓ Chú ý tới Device có chỉ số %Util cao (ví dụ gần 100%)

• Sử dụng câu lệnh SQL trong Oracle Database để xác định TOP các
câu lệnh và object đang ảnh hưởng đến I/O
# Kiểm tra TOP 20 câu lệnh đang ảnh hưởng đến I/O
SELECT *
FROM ( SELECT parsing_schema_name,
direct_writes,
SUBSTR (sql_text, 1, 75),
disk_reads
FROM v$sql
ORDER BY disk_reads DESC)
WHERE ROWNUM < 20;

# Kiểm tra TOP 20 object đang ảnh hưởng I /O


SELECT *
FROM ( SELECT s.statistic_name,
s.owner,
s.object_type,
s.object_name,
s.VALUE
FROM v$segment_statistics s
WHERE s.statistic_name IN ('physical reads',
'physical writes',
'logical reads',
'physical reads direct',
'physical writes direct')
ORDER BY s.VALUE DESC)
WHERE ROWNUM < 20;

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 26
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

4-5. Giám sát lịch sử tải CPU của hệ thống

Đặt vấn đề
Bạn cần kiểm tra, đánh giá tải CPU của hệ thống trong một số ngày
trước đó.

Giải pháp
Các bạn có thể sử dụng lệnh sar để xem thông tin tải trong quá khứ.
Mặc định lệnh sar sẽ cho kết quả trạng thái tải của hệ thống trong ngày.
$ sar -u

Tại đây chúng ta có thể nhìn tổng quan các thời điểm trong ngày hệ
thống đang sử dụng bao nhiêu %CPU, %iowait như thế nào.

Các file log lưu thông tin lịch sử của lệnh sar được hệ thống lưu tại
đường dẫn /var/log/sa. Các file lưu trong thư mục này sẽ có định dạng
saXX (trong đó XX là 02 số hiển thị ngày trong tháng).

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 27
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

# ls /var/log/sa
sa01 sa04 sa07 sa10 sa13 sa16 sa19 sa23 sa26 sa29 sar01 sar04 sar07
sar10 sar13 sar16 sar19 sar24 sar27 sar30 sa02 sa05 sa08 sa11 sa14 sa17
sa20 sa24 sa27 sa30 sar02 sar05 sar08 sar11 sar14 sar17 sar22 sar25
sar28 sar31 sa03 sa06 sa09 sa12 sa15 sa18 sa22 sa25 sa28 sa31 sar03
sar06 sar09 sar12 sar15 sar18 sar23 sar26 sar29

• Giả sử ta muốn xem lại lịch sử tải trong ngày mùng 3 thì dung lệnh
sau:
$ sar -u -f /var/log/sa/sa03

• Nếu bạn chỉ muốn xem trong thời gian từ 10h40 đến 11h20 ngày
mùng 2. Tại đây khi ta đã xác định được khoảng thời gian mà hệ
thống bị cao tải trong quá khứ, các bạn có thể sử dụng công cụ AWR
hoặc ADDM trong Oracle để lấy báo cáo chi tiết hoạt động của Cơ
sở dữ liệu.
$ sar -u -s 10:40:01 -e 11:20:02 -f /var/log/sa/sa02

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 28
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

Ngoài ra bạn cũng có thể sử dụng lệnh sar để theo dõi trạng thái tải CPU
thời điểm hiện tại:
• Hiển thị tải CPU thời điểm hiện tại theo tần suất 2 giây một lần, hiển
thị tất cả 5 lần:
$ sar 2 5

• Hiển thị CPU từ thời điểm đầu ngày đến thời điểm hiện tại (đã ví dụ
kết quả trả ra ở đầu bài viết)
$ sar -u

4-6. Giám sát lịch sử tải Memory của hệ thống

Đặt vấn đề
Bạn cần kiểm tra, đánh giá tải Memory của hệ thống trong một số
ngày trước đó.

Giải pháp
Các bạn có thể sử dụng lệnh sar để xem thông tin tải trong quá khứ. Đây
là lệnh khá hữu dụng và thường được tôi sử dụng trong quá trình quản
trị.
• Xem thông tin swap của hệ thống trong ngày hôm nay
$ sar -W

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 29
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

• Xem thông tin swap của một ngày trong quá khứ, ví dụ: xem thông
tin của ngày mùng 02 trong tháng
$ sar -W -f /var/log/sa/sa02

• Xem thông tin sử dụng memory của hệ thống tại một khung giờ trong
quá khứ
$ sar -r -s 10:02:01 -e 13:30:00 -f /var/log/sa/sa03

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 30
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

4-7. Giám sát lịch sử tải I/O của hệ thống

Đặt vấn đề
Bạn cần kiểm tra, đánh giá tải I/O của hệ thống trong một số ngày
trước đó.

Giải pháp
• Trong phần giám sát tải CPU trong lịch sử các bạn cũng phần nào
biết được thông tin I/O Wait của hệ thống.
$ sar -u

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 31
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

• Ngoài phương án trên, bạn cũng có thể xem chi tiết thông tin thống
kê về I/O trên từng Device của hệ thống. Để xem thông tin I/O trong
ngày hiện tại bạn sử dụng lệnh sau:
$ sar -d

• Xem thông tin I/O của ngày mùng 2 trong tháng


$ sar -d -f /var/log/sa/sa02

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 32
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

LỜI KẾT:
Lý do thành lập Talent5
“Nếu tôi không cháy lên
Nếu anh không cháy lên
Nếu tất cả chúng ta không cháy lên
Thì làm sao
Bóng tối
Có thể trở thành
Ánh sáng”
-Nadim Hitmet-

Hỡi các Tri Thức Việt Nam đang ngủ quên trong bóng tối!

Việt Nam chúng ta không còn là bóng tối nhưng vẫn đang ở trong vùng
trũng của thế giới và chưa bắt kịp “ánh sáng” của các nước phát triển.

Cuộc cách mạng công nghiệp 4.0 (CMCN 4.0) và Xã hội siêu thông
minh 5.0 (Society 5.0) đang ập tới như vũ bão. Nhưng hãy xem Việt
Nam đang ở đâu trên bản đồ này?

Theo báo cáo của Diễn Đàn Kinh Tế Thế Giới (WEF) năm 2018, trong
100 quốc gia được đánh giá, Việt Nam được xếp vào nhóm các quốc
gia chưa sẵn sàng cho cuộc CMCN 4.0. Đặc biệt điểm số cho đổi mới
sáng tạo công nghệ và giáo dục cực thấp:

- Technology & Innovation: đứng thứ 90/100


- Platform Technology: đứng thứ 92/100
- Human Capital: đứng thứ 70/100
- Chất lượng đại học: đứng thứ 75/100
- Lao động có chuyên môn cao: thứ 81/100

Năm 2020, Việt Nam đang thiếu khoảng 100.000 nhân sự ngành IT.
Mặc dù VN hiện có khoảng 300 trường Đại học và Cao đẳng có ngành
Công nghệ thông tin, nhưng:

- Mỗi năm chỉ đào tạo được: ~50.000 nhân sự IT

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 33
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

- Nhân lực thực sự làm được việc chỉ có: ~5000 nhân sự IT
(chiếm khoảng 10% số tốt nghiệp ra trường)
- Tổng nhân lực hiện đang làm trong ngành IT: ~600.000 người

Chúng ta đang thiếu nguồn nhân lực có chuyên môn cao cả về “lượng”
và “chất”. Việt Nam đang sở hữu “dân số vàng”, và sẽ còn duy trì được
thời kỳ “dân số vàng” ít nhất 15 năm nữa (tới 2035). Nhưng chúng ta
chưa biết cách đào tạo kỹ năng và phát triển trình độ của nguồn nhân
lực trẻ.

Chúng ta không hề thua kém thế giới ở bất cứ một cuộc thi Trí Tuệ nào,
đặc biệt là chúng ta được xếp trong nhóm các quốc gia Giỏi Toán.
Nhân tài người Việt Nam không thiếu, nhưng họ đang ở rải rác khắp
các nơi trên thế giới, chưa có nhiều cơ hội kết nối với nhau, cùng chia
sẻ kiến thức, cùng thực hiện các dự án vì đất nước, vì xã hội Việt Nam.

Có thể nói, cuộc CMCN4.0 và Society 5.0 chính là “chuyến xe cuối


cùng” để chúng ta bắt kịp với các nước phát triển trên thế giới. Chúng
ta không được phép bỏ lỡ cơ hội này một lần nữa. (Trong quá khứ,
chúng ta đã có thời kỳ 1992-1997 tăng trưởng trung bình ~9%/năm,
nếu duy trì được mốc tăng trưởng này thì chúng ta hoàn toàn có thể
bắt kịp các nước phát triển). Chúng ta phải làm được, và sẽ làm được
vì chúng ta có đủ “KHÁT VỌNG” và “TIỀM LỰC TRI THỨC”.

Talent5 được thành lập với khát vọng cháy bỏng: kết nối Nhân Tài Việt,
truyền bá Tri Thức và thực hiện các dự án Công Nghệ Cao; đóng góp
một phần nhỏ bé của mình giúp Việt Nam có thể bắt kịp “chuyến xe
cuối cùng” này.

Học viện Talent5 là học viện mà ở đó:


Giảng viên cũng là Học viên,
Học viên cũng sẽ là Giảng viên,
Và tất cả cùng đồng hành
trên một chuyến xe CMCN 4.0
có đích đến là Society 5.0

Talent5 – Học thật, làm thật thông qua các dự án thực tế.

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 34
T RẦ N Q U Ố C HU Y & Đ Ặ NG XU Â N D U Y

Kính mong nhận được sự đồng hành của các Chuyên Gia người Việt ở
khắp nơi trên thế giới, và xin được chào mừng tất cả các bạn Tri Thức
Trẻ đến với Học Viện Talent5!

-Đội ngũ sáng lập Talent5-

Tài liệu độc quyền của Công ty cổ phần công nghệ Talent5 35

You might also like