Dưới đây là Runbook vận hành SQL Server theo ngày/tuần/tháng (bám đúng tinh thần 21 module), kèm checklist + script tổng hợp để FO/NOC/DBA chạy nhanh.
1) Runbook vận hành SQL Server
A. Daily (Hằng ngày)
A1. Health check tổng quan
Mục tiêu: biết server/instance có “bất thường” không.
/* DAILY_01_INSTANCE_HEALTH.sql */
SELECT @@SERVERNAME AS server_name, @@VERSION AS version;
SELECT
SERVERPROPERTY('MachineName') AS MachineName,
SERVERPROPERTY('ServerName') AS ServerName,
SERVERPROPERTY('InstanceName') AS InstanceName,
SERVERPROPERTY('Edition') AS Edition,
SERVERPROPERTY('ProductVersion') AS ProductVersion;
SELECT name, state_desc, recovery_model_desc, log_reuse_wait_desc
FROM sys.databases
ORDER BY name;
Đọc kết quả
-
state_descphải làONLINE -
log_reuse_wait_descnếu stuck lâu (vdACTIVE_TRANSACTION,REPLICATION,AVAILABILITY_REPLICA) → cần xử lý
A2. Kiểm tra blocking / deadlock / session bất thường
/* DAILY_02_BLOCKING.sql */
SELECT
r.session_id, r.blocking_session_id, r.status,
r.cpu_time, r.total_elapsed_time,
r.wait_type, r.wait_time, r.wait_resource,
DB_NAME(r.database_id) AS dbname,
t.text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.session_id <> @@SPID
ORDER BY r.cpu_time DESC;
Xử lý nhanh
-
Nếu có
blocking_session_id <> 0kéo dài → tìm “đầu chuỗi” blocker, xác định query và cân nhắc kill (theo quy trình change/incident).
A3. Top query gây tải CPU/Reads
/* DAILY_03_TOP_CPU.sql */
SELECT TOP 10
qs.total_worker_time/1000 AS total_cpu_ms,
qs.execution_count,
(qs.total_worker_time/NULLIF(qs.execution_count,0))/1000 AS avg_cpu_ms,
SUBSTRING(t.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(t.text)
ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)+1) AS stmt
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) t
ORDER BY qs.total_worker_time DESC;
A4. Kiểm tra dung lượng Data/Log/TempDB
/* DAILY_04_SPACE.sql */
-- Data/Log theo DB hiện tại
SELECT name, type_desc, physical_name, size*8/1024 AS size_MB
FROM sys.database_files;
-- Tempdb usage
SELECT
SUM(user_object_reserved_page_count)*8/1024 AS user_obj_MB,
SUM(internal_object_reserved_page_count)*8/1024 AS internal_obj_MB,
SUM(version_store_reserved_page_count)*8/1024 AS version_store_MB
FROM sys.dm_db_file_space_usage;
A5. Backup status (đã chạy đúng chưa?)
/* DAILY_05_BACKUP_STATUS.sql */
SELECT
d.name AS dbname,
MAX(CASE WHEN b.type='D' THEN b.backup_finish_date END) AS last_full,
MAX(CASE WHEN b.type='I' THEN b.backup_finish_date END) AS last_diff,
MAX(CASE WHEN b.type='L' THEN b.backup_finish_date END) AS last_log
FROM sys.databases d
LEFT JOIN msdb.dbo.backupset b ON b.database_name = d.name
GROUP BY d.name
ORDER BY d.name;
Ngưỡng gợi ý
-
Full: trong 24h (hoặc theo policy)
-
Log: trong 15–30 phút (nếu FULL recovery)
B. Weekly (Hằng tuần)
B1. DBCC CHECKDB (Integrity)
/* WEEKLY_01_CHECKDB.sql */
DBCC CHECKDB (N'MyDB') WITH NO_INFOMSGS, ALL_ERRORMSGS;
DB cực lớn: cân nhắc
PHYSICAL_ONLY(nhanh hơn, nhưng không sâu bằng).
B2. Index maintenance + stats (theo mức phân mảnh)
1) Xem fragmentation
/* WEEKLY_02_INDEX_FRAG_REPORT.sql */
SELECT
OBJECT_SCHEMA_NAME(ps.object_id) AS [schema_name],
OBJECT_NAME(ps.object_id) AS [table_name],
i.name AS index_name,
ps.avg_fragmentation_in_percent,
ps.page_count
FROM sys.dm_db_index_physical_stats(DB_ID('MyDB'), NULL, NULL, NULL, 'SAMPLED') ps
JOIN sys.indexes i ON ps.object_id=i.object_id AND ps.index_id=i.index_id
WHERE ps.page_count > 1000
ORDER BY ps.avg_fragmentation_in_percent DESC;
2) Thực hiện
-
5–30%: REORGANIZE
-
30%: REBUILD
/* WEEKLY_03_INDEX_MAINT.sql */
ALTER INDEX ALL ON dbo.BigTable REORGANIZE;
-- hoặc
ALTER INDEX ALL ON dbo.BigTable REBUILD WITH (SORT_IN_TEMPDB = ON);
3) Update stats
/* WEEKLY_04_UPDATE_STATS.sql */
USE MyDB;
EXEC sp_updatestats;
B3. Review waits (định hướng tối ưu)
/* WEEKLY_05_WAITS.sql */
SELECT TOP 20
wait_type, waiting_tasks_count, wait_time_ms/1000.0 AS wait_s
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%'
ORDER BY wait_time_ms DESC;
C. Monthly (Hằng tháng)
C1. Restore test (bắt buộc)
Mục tiêu: backup có “restore được” không (đây là điểm sống còn).
-
Thực hành restore vào UAT/DR.
-
Ghi log: thời gian restore, lỗi, RTO/RPO đạt hay không.
(Phần restore mẫu anh đã có ở Module 15.)
C2. Dọn msdb (backup/job history) & housekeeping
/* MONTHLY_01_CLEAN_MSDB.sql */
EXEC msdb.dbo.sp_delete_backuphistory @oldest_date = DATEADD(DAY, -30, GETDATE());
EXEC msdb.dbo.sp_purge_jobhistory @oldest_date = DATEADD(DAY, -30, GETDATE());
C3. Review cấu hình “tam giác vàng”
/* MONTHLY_02_CONFIG_REVIEW.sql */
EXEC sp_configure 'max server memory (MB)';
EXEC sp_configure 'max degree of parallelism';
EXEC sp_configure 'cost threshold for parallelism';
C4. Báo cáo tăng trưởng dung lượng (capacity planning)
/* MONTHLY_03_DB_SIZE.sql */
SELECT
DB_NAME(database_id) AS dbname,
SUM(size)*8/1024 AS size_MB
FROM sys.master_files
GROUP BY database_id
ORDER BY size_MB DESC;
2) Checklist vận hành (FO/NOC/DBA)
Daily checklist
-
Instance/DB trạng thái ONLINE
-
Không có blocking/deadlock kéo dài
-
CPU/IO không bất thường; top query không “đột biến”
-
TempDB không tăng bất thường
-
Backup Full/Diff/Log chạy đúng lịch
-
Dung lượng Data/Log còn đủ theo ngưỡng
Weekly checklist
-
CHECKDB (hoặc PHYSICAL_ONLY) ok
-
Index maintenance theo báo cáo frag
-
Update statistics
-
Review waits và top query
Monthly checklist
-
Restore test thành công (có biên bản)
-
Cleanup msdb
-
Review cấu hình memory/MAXDOP/CTFP
-
Báo cáo tăng trưởng dung lượng + kế hoạch mở rộng
3) Script tổng hợp “1 file chạy nhanh” (mẫu)
Anh có thể tạo 3 file để chuẩn hóa:
RUNBOOK_DAILY.sql
-
INSTANCE_HEALTH
-
BLOCKING
-
TOP_CPU
-
SPACE
-
BACKUP_STATUS
RUNBOOK_WEEKLY.sql
-
CHECKDB (từng DB quan trọng)
-
INDEX_FRAG_REPORT
-
UPDATE_STATS
-
WAITS
RUNBOOK_MONTHLY.sql
-
CLEAN_MSDB
-
CONFIG_REVIEW
-
DB_SIZE
TƯ VẤN: Click Here 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