ORACLE TIPS
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Tổng hợp 30 câu truy vấn hữu ích trong Oracle

Chào các bạn, hôm nay vô tình đọc được một bài tổng hợp hơn 40 câu truy vấn hữu ích trong Oracle khá hay nên mình dịch lại và chia sẻ với các bạn, đây là những câu truy vấn mà mọi DBA nào cũng phải lưu lại vì trong quá trình quản lý Oracle sẽ phải sử dụng đến, đó là những câu truy vấn liên quan đến máy chủ server, trạng thái thực thi, tính kích thước database, ...

I. Oracle date/time queries

Dưới đây là những lệnh có liên quan đến Date/Time trong Oracle.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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 SYS_CONTEXT ('userenv', 'current_schema') 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

SELECT * FROM v$version;

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;<br>

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;<br>

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é

Cùng chuyên mục:

Hàm Hàm ASCII trong Oracle

Hàm Hàm ASCII trong Oracle

Cách sử dụng hàm Hàm ASCII trong 150

Hàm Hàm ASCIISTR trong Oracle

Hàm Hàm ASCIISTR trong Oracle

Cách sử dụng hàm Hàm ASCIISTR trong 150

Hàm Hàm CHR trong Oracle

Hàm Hàm CHR trong Oracle

Cách sử dụng hàm Hàm CHR trong 150

Hàm Hàm COMPOSE trong Oracle

Hàm Hàm COMPOSE trong Oracle

Cách sử dụng hàm Hàm COMPOSE trong 150

Hàm Hàm CONCAT trong Oracle

Hàm Hàm CONCAT trong Oracle

Cách sử dụng hàm Hàm CONCAT trong 150

Hàm Hàm CONVERT trong Oracle

Hàm Hàm CONVERT trong Oracle

Cách sử dụng hàm Hàm CONVERT trong 150

Hàm Hàm DECOMPOSE trong Oracle

Hàm Hàm DECOMPOSE trong Oracle

Cách sử dụng hàm Hàm DECOMPOSE trong 150

Hàm Hàm DUM trong Oracle

Hàm Hàm DUM trong Oracle

Cách sử dụng hàm Hàm DUM trong 150

Hàm Hàm INITCAP trong Oracle

Hàm Hàm INITCAP trong Oracle

Cách sử dụng hàm Hàm INITCAP trong 150

Hàm Hàm INSTR trong Oracle

Hàm Hàm INSTR trong Oracle

Cách sử dụng hàm Hàm INSTR trong 150

Hàm Hàm INSTR2 trong Oracle

Hàm Hàm INSTR2 trong Oracle

Cách sử dụng hàm Hàm INSTR2 trong 150

Hàm Hàm INSTR4 trong Oracle

Hàm Hàm INSTR4 trong Oracle

Cách sử dụng hàm Hàm INSTR4 trong 150

Hàm Hàm INSTRB trong Oracle

Hàm Hàm INSTRB trong Oracle

Cách sử dụng hàm Hàm INSTRB trong 150

Hàm Hàm INSTRC trong Oracle

Hàm Hàm INSTRC trong Oracle

Cách sử dụng hàm Hàm INSTRC trong 150

Hàm Hàm LENGTH trong Oracle

Hàm Hàm LENGTH trong Oracle

Cách sử dụng hàm Hàm LENGTH trong 150

Hàm Hàm LENGTH2 trong Oracle

Hàm Hàm LENGTH2 trong Oracle

Cách sử dụng hàm Hàm LENGTH2 trong 150

Hàm Hàm LOWER trong Oracle

Hàm Hàm LOWER trong Oracle

Cách sử dụng hàm Hàm LOWER trong 150

Hàm Hàm LPAD trong Oracle

Hàm Hàm LPAD trong Oracle

Cách sử dụng hàm Hàm LPAD trong 150

Hàm Hàm LTRIM trong Oracle

Hàm Hàm LTRIM trong Oracle

Cách sử dụng hàm Hàm LTRIM trong 150

Hàm Hàm NCHR trong Oracle

Hàm Hàm NCHR trong Oracle

Cách sử dụng hàm Hàm NCHR trong 150

Top