oracle 的一些基础查询
select status,T.* from user_indexes T
where table_name='T_ADMIN_DEALER' --查詢(xún)表是否有了索引?
select username,default_tablespace from dba_users;--查看用戶(hù)和默認(rèn)表空間的關(guān)系
select view_name from user_views --查看視圖名字
select * from user_source; --查詢(xún)所有函數(shù)和存儲(chǔ)過(guò)程
select * from all_users;--查詢(xún)所有用戶(hù)
select * from v$Session; --查看當(dāng)前用戶(hù)連接
SELECT * FROM USER_ROLE_PRIVS;--查看用戶(hù)角色
select * from session_privs; --查看當(dāng)前用戶(hù)權(quán)限
SELECT * FROM DBA_ROLE_PRIVS;--查看所有用戶(hù)所擁有的角色
select * from dba_roles; --查看所有角色
SELECT NAME FROM V$DATABASE; --查看數(shù)據(jù)庫(kù)名
select * from v$recovery_file_dest; -- 歸檔日志存放的位置
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
FROM dba_tablespaces t, dba_data_files d
WHERE t.tablespace_name = d.tablespace_name
GROUP BY t.tablespace_name;? --查看表空間的名稱(chēng)和大小
SELECT tablespace_name,
file_id,
file_name,
round(bytes / (1024 * 1024), 0) total_space
FROM dba_data_files
ORDER BY tablespace_name; --查看表空間物理文件的名稱(chēng)及大小
SELECT segment_name,
tablespace_name,
r.status,
(initial_extent / 1024) initialextent,
(next_extent / 1024) nextextent,
max_extents,
v.curext curextent
FROM dba_rollback_segs r, v$rollstat v
WHERE r.segment_id = v.usn(+)
ORDER BY segment_name; --查看回滾段名稱(chēng)及大小 (select segment_name,status from dba_rollback_segs;)
SELECT NAME FROM v$controlfile; --?查看控制文件?
SELECT MEMBER FROM v$logfile; --查看日志文件
SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name
FROM dba_free_space
GROUP BY tablespace_name;
SELECT a.tablespace_name,
a.bytes total,
b.bytes used,
c.bytes free,
(b.bytes * 100) / a.bytes "% USED ",
(c.bytes * 100) / a.bytes "% FREE "
FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c
WHERE a.tablespace_name = b.tablespace_name
AND a.tablespace_name = c.tablespace_name; --查看表空間使用情況
SELECT owner, object_type, status, COUNT(*) count#
FROM all_objects
GROUP BY owner, object_type, status;--查看數(shù)據(jù)庫(kù)對(duì)象
SELECT version
FROM product_component_version
WHERE substr(product, 1, 6) = 'Oracle';--查看數(shù)據(jù)庫(kù)版本
SELECT created, log_mode, log_mode FROM v$database;
--1G=1024MB
--1M=1024KB
--1K=1024Bytes
--1M=11048576Bytes
--1G=1024*11048576Bytes=11313741824Bytes
SELECT a.tablespace_name "表空間名",
total "表空間大小",
free "表空間剩余大小",
(total - free) "表空間使用大小",
total / (1024 * 1024 * 1024) "表空間大小(G)",
free / (1024 * 1024 * 1024) "表空間剩余大小(G)",
(total - free) / (1024 * 1024 * 1024) "表空間使用大小(G)",
round((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;--查看數(shù)據(jù)庫(kù)的創(chuàng)建日期和歸檔方式?
?
管理用戶(hù)、角色和權(quán)限的DBA視圖:
DBA_USERS???????? 提供用戶(hù)的信息
DBA_ROLES???????? 顯示數(shù)據(jù)庫(kù)中所有角色
DBA_COL_PRIVS???? 顯示列級(jí)對(duì)象授權(quán)
DBA_ROLE_PRIVS??? 顯示用戶(hù)及其角色
DBA_SYS_PRIVS???? 顯示被授予系統(tǒng)權(quán)限的用戶(hù)
DBA_TAB_PRIVS???? 顯示用戶(hù)及他們?cè)诒砩系臋?quán)限
ROLE_ROLE_PRIVS?? 顯示授予角色的角色
ROLE_SYS_PRIVS??? 顯示授予角色的系統(tǒng)權(quán)限
ROLE_TAB_PRIVS??? 顯示授予角色的表權(quán)限
SESSION_PRIVS???? 顯示允許用戶(hù)使用的權(quán)限
SESSION_ROLES???? 顯示當(dāng)前允許用戶(hù)使用的角色
?
SELECT NAME FROM V$DATABASE; --查看數(shù)據(jù)庫(kù)名
select instance_name,host_name,startup_time,status,database_status from v$instance; --檢查Oracle實(shí)例狀態(tài)
select group#,status,type,member from v$logfile; --檢查Oracle在線(xiàn)日志狀態(tài)
?
select resource_name,
max_utilization,
initial_allocation,
limit_value
from v$resource_limit;--檢查Oracle初始化文件中相關(guān)參數(shù)值
select sid, event, p1, p2, p3, WAIT_TIME, SECONDS_IN_WAIT
from v$session_wait
where event not like 'SQL%'
and event not like 'rdbms%';--檢查數(shù)據(jù)庫(kù)的等待事件
SELECT SQL_TEXT
FROM (SELECT * FROM V$SQLAREA ORDER BY DISK_READS)
WHERE ROWNUM <= 5;--Disk Read最高的SQL語(yǔ)句的獲取
SELECT *
FROM (SELECT PARSING_USER_ID
EXECUTIONS,
SORTS,
COMMAND_TYPE,
DISK_READS,
SQL_TEXT
FROM V$SQLAREA
ORDER BY DISK_READS DESC)
WHERE ROWNUM < 10;--最差的10條sql語(yǔ)句
SELECT *
FROM (SELECT *
FROM V$SYSTEM_EVENT
WHERE EVENT NOT LIKE 'SQL%'
ORDER BY TOTAL_WAITS DESC)
WHERE ROWNUM <= 5;--等待時(shí)間最多的5個(gè)系統(tǒng)等待事件的獲取
SELECT USERNAME,
SID,
OPNAME,
ROUND(SOFAR * 100 / TOTALWORK, 0) || '%' AS PROGRESS,
TIME_REMAINING,
SQL_TEXT
FROM V$SESSION_LONGOPS, V$SQL
WHERE TIME_REMAINING <> 0
AND SQL_ADDRESS = ADDRESS
AND SQL_HASH_VALUE = HASH_VALUE;--檢查運(yùn)行很久的SQL
SELECT P.PID PID,
S.SID SID,
P.SPID SPID,
S.USERNAME USERNAME,
S.OSUSER OSNAME,
P.SERIAL# S_#,
P.TERMINAL,
P.PROGRAM PROGRAM,
P.BACKGROUND,
S.STATUS,
RTRIM(SUBSTR(A.SQL_TEXT, 1, 80)) SQLFROM V$PROCESS P,
V$SESSION S,
V$SQLAREA A WHERE P.ADDR = S.PADDR AND S.SQL_ADDRESS = A.ADDRESS(+) AND P.SPID LIKE '%&1%';--檢查消耗CPU最高的進(jìn)程
SELECT segment_name table_name, COUNT(*) extents
FROM dba_segments
WHERE owner NOT IN ('SYS', 'SYSTEM')
GROUP BY segment_name
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
FROM dba_segments
GROUP BY segment_name);--檢查碎片程度高的表
SELECT DF.TABLESPACE_NAME NAME,
DF.FILE_NAME "FILE",
F.PHYRDS PYR,
F.PHYBLKRD PBR,
F.PHYWRTS PYW,
F.PHYBLKWRT PBW
FROM V$FILESTAT F, DBA_DATA_FILES DF
WHERE F.FILE# = DF.FILE_ID
ORDER BY DF.TABLESPACE_NAME;--檢查表空間的I/O比例
SELECT SUBSTR(A.FILE#, 1, 2) "#",
SUBSTR(A.NAME, 1, 30) "NAME",
A.STATUS,
A.BYTES,
B.PHYRDS,
B.PHYWRTS
FROM V$DATAFILE A, V$FILESTAT B
WHERE A.FILE# = B.FILE#;-- 檢查文件系統(tǒng)的I/O比例
select sid,
serial#,
username,
SCHEMANAME,
osuser,
MACHINE,
terminal,
PROGRAM,
owner,
object_name,
object_type,
o.object_id
from dba_objects o, v$locked_object l, v$session s
where o.object_id = l.object_id
and s.sid = l.session_id;--檢查死鎖及處理
SELECT a.VALUE + b.VALUE logical_reads,
c.VALUE phys_reads,
round(100 * (1 - c.value / (a.value + b.value)), 4) hit_ratio
FROM v$sysstat a, v$sysstat b, v$sysstat c
WHERE a.NAME = 'db block gets'
AND b.NAME = 'consistent gets'
AND c.NAME = 'physical reads';--檢查緩沖區(qū)命中率(如果命中率低于90%則需加大數(shù)據(jù)庫(kù)參數(shù)db_cache_size。)
select sum(pinhits) / sum(pins) * 100 from v$librarycache; --檢查共享池命中率(如低于95%,則需要調(diào)整應(yīng)用程序使用綁定變量,或者調(diào)整數(shù)據(jù)庫(kù)參數(shù)shared pool的大小。)
select name,value from v$sysstat where name like '%sort%'; --檢查排序區(qū)(如果disk/(memoty+row)的比例過(guò)高,則需要調(diào)整sort_area_size(workarea_size_policy=false)或pga_aggregate_target(workarea_size_policy=true)。)
select name,value from v$sysstat where name in ('redo entries','redo buffer allocation retries'); --檢查日志緩沖區(qū)(如果redo buffer allocation retries/redo entries超過(guò)1%,則需要增大log_buffer。)
select A.tablespace_name, (1 - (A.total) / B.total) * 100 used_percent
from (select tablespace_name, sum(bytes) total
from dba_free_space
group by tablespace_name) A,
(select tablespace_name, sum(bytes) total
from dba_data_files
group by tablespace_name) B
where A.tablespace_name = B.tablespace_name;--監(jiān)控?cái)?shù)據(jù)量的增長(zhǎng)情況(根據(jù)本周每天的檢查情況找到空間擴(kuò)展很快的數(shù)據(jù)庫(kù)對(duì)象,并采取相應(yīng)的措施:
--刪除歷史數(shù)據(jù)
移動(dòng)規(guī)定數(shù)據(jù)庫(kù)中至少保留6個(gè)月的歷史數(shù)據(jù),所以以前的歷史數(shù)據(jù)可以考慮備份然后進(jìn)行清除以便釋放其所占的資源空間。
---擴(kuò)表空間
alter tablespace <tablespace_name> add datafile ‘<file>’ size <size> autoextend off;
注意:在數(shù)據(jù)庫(kù)結(jié)構(gòu)發(fā)生變化時(shí),如增加了表空間,增加了數(shù)據(jù)文件或重做日志文件這些操作,都會(huì)造成Oracle數(shù)據(jù)庫(kù)控制文件的變化,DBA應(yīng)及進(jìn)行控制文件的備份,備份方法是:
執(zhí)行SQL語(yǔ)句:
alter database backup controlfile to '/home/backup/control.bak';
或:
alter database backup controlfile to trace;
這樣,會(huì)在USER_DUMP_DEST(初始化參數(shù)文件中指定)目錄下生成創(chuàng)建控制文件的SQL命令。)
select index_name, table_name, tablespace_name, status
From dba_indexes
Where owner = 'CTAIS2'
And status <> 'VALID';--檢查失效的索引(注:分區(qū)表上的索引status為N/A是正常的,如有失效索引則對(duì)該索引做rebuild,如:
alter index INDEX_NAME rebuild tablespace TABLESPACE_NAME; )
SELECT owner, constraint_name, table_name, constraint_type, status
FROM dba_constraints
WHERE status = 'DISABLE'
and constraint_type = 'P';--檢查不起作用的約束(如有失效約束則啟用,如:
alter Table TABLE_NAME Enable Constraints CONSTRAINT_NAME;)
SELECT owner, trigger_name, table_name, status FROM dba_triggers WHERE status = 'DISABLED';--檢查無(wú)效的trigger(如有失效觸發(fā)器則啟用,如:
alter Trigger TRIGGER_NAME Enable; )
轉(zhuǎn)載于:https://www.cnblogs.com/zy-303/p/9015305.html
總結(jié)
以上是生活随笔為你收集整理的oracle 的一些基础查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vuex在vuecli中的简单使用
- 下一篇: vsts~CI/CD实现自动化编译