Bài viết này được đăng tại anhben.com, không được copy dưới mọi hình thức.
Mục lục
- I. Oracle date/time queries
- 1/ Lấy ngày đầu tiên của tháng
- 2/ Lấy ngày cuối cùng của tháng
- 3/ Lấy ngày đầu tiên của năm
- 4/ Lấy ngày cuối cùng của năm
- 5/ Tính số lượng ngày của tháng
- 6/ Tính số ngày đã trôi qua trong tháng
- 7/ Tính số ngày giữa hai ngày
- 8/ Hiển thị ngày bắt đầu và ngày kết thúc của từng tháng trong năm
- 9/ Tính sô giây đã trôi qua trong ngày
- 10/ Tính số giây còn lại trong ngày
- II. Oracle data dictionary queries
- III. Database administration queries
- 16/ Hiển thị database version
- 17/ Hiển thị thông tin mặc định của database
- 18/ Hiển thị thông tin character set
- 19/ Hiển thị Oracle version
- 20/ Thay đổi kích thước của bảng mà không cần thêm dữ liệu
- 21. Kiểm tra bật / tắt tự động cho không gian bảng
- 22. Thêm dữ liệu vào khoảng trống của bảng
- 23. Tăng kích thước của tập dữ liệu
- 24. Kiểm tra kích thước thực tế của dữ liệu
- 25. Kiểm tra chi tiết kích thước dữ liệu của database
- 26. Tìm kích thước của SHEMA/ USER
- 27. Câu SQL cuối cùng thực hiện bởi User
- IV. Performance related queries
I. Oracle date/time queries
Dưới đây là những lệnh có liên quan đến Date/Time trong Oracle.
1. Lấy ngày đầu tiên của tháng
SELECT TRUNC (SYSDATE, 'MONTH') "First day of current month" FROM DUAL;
2. Lấy ngày cuối cùng của tháng
SELECT TRUNC (LAST_DAY (SYSDATE)) "Last day of current month" FROM DUAL;
3. Lấy ngày đầu tiên của năm
SELECT TRUNC (SYSDATE, 'YEAR') "Year First Day" FROM DUAL;
4. Lấy ngày cuối cùng của năm
SELECT ADD_MONTHS (TRUNC (SYSDATE, 'YEAR'), 12) - 1 "Year Last Day" FROM DUAL
5. Tính số lượng ngày của tháng
SELECT CAST (TO_CHAR (LAST_DAY (SYSDATE), 'dd') AS INT) number_of_days FROM DUAL;
6. Tính số ngày đã trôi qua trong tháng
SELECT SYSDATE, LAST_DAY (SYSDATE) "Last", LAST_DAY (SYSDATE) - SYSDATE "Days left" FROM DUAL;
7. Tính số ngày giữa hai ngày
SELECT ROUND ( (MONTHS_BETWEEN ('01-Feb-2014', '01-Mar-2012') * 30), 0) num_of_days FROM DUAL; OR SELECT TRUNC(sysdate) - TRUNC(e.hire_date) FROM employees;
8. Hiển thị ngày bắt đầu và ngày kết thúc của từng tháng trong năm
SELECT ADD_MONTHS (TRUNC (SYSDATE, 'MONTH'), i) start_date, TRUNC (LAST_DAY (ADD_MONTHS (SYSDATE, i))) end_date FROM XMLTABLE ( 'for $i in 0 to xs:int(D) return $i' PASSING XMLELEMENT ( d, FLOOR ( MONTHS_BETWEEN ( ADD_MONTHS (TRUNC (SYSDATE, 'YEAR') - 1, 12), SYSDATE))) COLUMNS i INTEGER PATH '.');
9. Tính sô giây đã trôi qua trong ngày
SELECT (SYSDATE - TRUNC (SYSDATE)) * 24 * 60 * 60 num_of_sec_since_morning FROM DUAL;
10. Tính số giây còn lại trong ngày
SELECT (TRUNC (SYSDATE+1) - SYSDATE) * 24 * 60 * 60 num_of_sec_left FROM DUAL;
Lưu ý: Những ví dụ trên sử dụng SYSDATE là ngày hiện tại của hệ thống, nếu bạn muốn tính một ngày khác thì hãy thay đổi giá trị cho biến này nhé.
II. Oracle data dictionary queries
Sau đây là những lệnh hữu ích liên quan đến cấu trúc của database.
11. Kiểm tra table đã tồn tại trong database
SELECT table_name FROM user_tables WHERE table_name = 'TABLE_NAME';
12. Kiểm tra culumn đã tồn tại trong table
SELECT column_name AS FOUND FROM user_tab_cols WHERE table_name = 'TABLE_NAME' AND column_name = 'COLUMN_NAME';
13. Hiển thị cấu trúc table
SELECT DBMS_METADATA.get_ddl ('TABLE', 'TABLE_NAME', 'USER_NAME') FROM DUAL;
14. Lấy tên của shema hiện tại
SELECT DBMS_METADATA.get_ddl ('TABLE', 'TABLE_NAME', 'USER_NAME') FROM DUAL;
15. Thay đổi Shema hiện tại
ALTER SESSION SET CURRENT_SCHEMA = new_schema;
III. Database administration queries
Các lệnh dành cho Admin quản trị database.
16. Hiển thị database version
ALTER SESSION SET CURRENT_SCHEMA = new_schema;
17. Hiển thị thông tin mặc định của database
SELECT username, PROFILE, default_tablespace, temporary_tablespace FROM dba_users;
18. Hiển thị thông tin character set
SELECT * FROM nls_database_parameters;
19. Hiển thị Oracle version
SELECT VALUE FROM v$system_parameter WHERE name = 'compatible';
20. Thay đổi kích thước của bảng mà không cần thêm dữ liệu
ALTER DATABASE DATAFILE '/work/oradata/STARTST/STAR02D.dbf' resize 2000M;
21. Kiểm tra bật / tắt tự động cho không gian bảng
SELECT SUBSTR (file_name, 1, 50), AUTOEXTENSIBLE FROM dba_data_files; (OR) SELECT tablespace_name, AUTOEXTENSIBLE FROM dba_data_files;
22. Thêm dữ liệu vào khoảng trống của bảng
ALTER TABLESPACE data01 ADD DATAFILE '/work/oradata/STARTST/data01.dbf' SIZE 1000M AUTOEXTEND OFF;
23. Tăng kích thước của tập dữ liệu
ALTER DATABASE DATAFILE '/u01/app/Test_data_01.dbf' RESIZE 2G;
24. Kiểm tra kích thước thực tế của dữ liệu
SELECT SUM (bytes) / 1024 / 1024 / 1024 AS GB FROM dba_data_files;
25. Kiểm tra chi tiết kích thước dữ liệu của database
SELECT SUM (bytes) / 1024 / 1024 / 1024 AS GB FROM dba_segments;
26. Tìm kích thước của SHEMA/ USER
SELECT SUM (bytes / 1024 / 1024) "size" FROM dba_segments WHERE owner = '&owner';
27. Câu SQL cuối cùng thực hiện bởi User
SELECT S.USERNAME || '(' || s.sid || ')-' || s.osuser UNAME, s.program || '-' || s.terminal || '(' || s.machine || ')' PROG, s.sid || '/' || s.serial# sid, s.status "Status", p.spid, sql_text sqltext FROM v$sqltext_with_newlines t, V$SESSION s, v$process p WHERE t.address = s.sql_address AND p.addr = s.paddr(+) AND t.hash_value = s.sql_hash_value ORDER BY s.sid, t.piece;
IV. Performance related queries
Đây là những câu truy vấn kiểm tra hiệu suất.
28. CPU được sử dụng bởi User
SELECT ss.username, se.SID, VALUE / 100 cpu_usage_seconds FROM v$session ss, v$sesstat se, v$statname sn WHERE se.STATISTIC# = sn.STATISTIC# AND NAME LIKE '%CPU used by this session%' AND se.SID = ss.SID AND ss.status = 'ACTIVE' AND ss.username IS NOT NULL ORDER BY VALUE DESC;
29. Lấy session id, process id, client process id hiện tại
SELECT b.sid, b.serial#, a.spid processid, b.process clientpid FROM v$process a, v$session b WHERE a.addr = b.paddr AND b.audsid = USERENV ('sessionid');
30. Lấy số lượng Object của mỗi owner
SELECT owner, COUNT (owner) number_of_objects FROM dba_objects GROUP BY owner ORDER BY number_of_objects DESC;
Trên là 30 câu truy vấn SQL hữu ích dành cho người quản trị Oracle Database, các bạn hãy lưu lại để tham khảo nhé