SELECT
name ,
round(total_mb/1024,2)||'GB' AS total,
round(FREE_MB/1024,2)||'GB' AS free,
to_char(round((total_mb -FREE_MB) /1024,2), '990.99') ||'GB' AS used,
to_char(round((total_mb -FREE_MB)/total_mb *100 ,2), '990.99') ||'%' AS PERCENT
FROM v$asm_diskgroup_stat
DB
sql复制代码
SELECT
name AS dbname,
'oracle' AS dbtype,
version AS dbversion,
log_mode AS logmode,
database_role AS dbrole,
(SELECT LISTAGG(DB_UNIQUE_NAME, ', ') WITHIN GROUP (ORDER BY dest_id) AS dbuname FROM v$archive_dest WHERE UPPER(db_unique_name) NOT IN ( SELECT UPPER(db_unique_name) FROM v$database) AND db_unique_name !='NONE') AS dbuname ,
CASE WHEN (SELECT count(*) FROM gv$instance) >1 THEN 1 ELSE 0 END AS israc ,
(SELECT count(*) FROM gv$instance) AS racnum,
TO_CHAR(startup_time, 'YYYY-MM-DD HH24:MI:SS') AS uptime
FROM v$database, v$instance
实例
sql复制代码
SELECT inst_id AS instid ,
instance_name AS instname,
host_name AS hostname,
TO_CHAR(startup_time, 'YYYY-MM-DD HH24:MI:SS') AS uptime,
status AS inststatus,
database_status AS dbstatus
FROM gv$instance
order by inst_id
参数
sql复制代码
SELECT name AS pname, display_value AS pvalue, description AS description
FROM v$parameter
WHERE name IN ('memory_target',
'sga_target', 'pga_aggregate_target','processes', 'sessions', 'db_block_size',
'log_buffer', 'shared_pool_size', 'buffer_cache_size','java_pool_size',
'large_pool_size','db_recovery_file_dest','db_recovery_file_dest_size')
用户 及对象
sql复制代码
WITH z AS (
SELECT
owner ,
NVL("TABLE", 0) AS tablenum,
NVL("VIEW", 0) AS viewnum,
NVL("FUNCTION", 0) AS functionnum,
NVL("INDEX", 0) AS indexnum,
NVL("PROCEDURE", 0) AS procedurenum,
NVL("TRIGGER", 0) AS triggernum,
NVL("SYNONYM", 0) AS synonymnum,
NVL("SEQUENCE", 0) AS sequencenum,
NVL("PACKAGE", 0) AS packagenum
FROM ( SELECT owner, object_type, COUNT(*) AS cnt
FROM all_objects
WHERE owner IN (SELECT username FROM dba_users WHERE account_status = 'OPEN') AND owner NOT IN ('SYSTEM', 'SYS')
GROUP BY owner, object_type ) t
PIVOT (SUM(cnt)
FOR object_type IN (
'TABLE' AS "TABLE",
'VIEW' AS "VIEW",
'FUNCTION' AS "FUNCTION",
'INDEX' AS "INDEX",
'PROCEDURE' AS "PROCEDURE",
'TRIGGER' AS "TRIGGER",
'SYNONYM' AS "SYNONYM",
'SEQUENCE' AS "SEQUENCE",
'PACKAGE' AS "PACKAGE" )) p)
SELECT
a.username,
a.account_status AS userstatus,
TO_CHAR(a.created, 'YYYY-MM-DD HH24:MI:SS') AS createtime,
TO_CHAR(a.lock_date, 'YYYY-MM-DD HH24:MI:SS') AS locktime,
TO_CHAR(a.expiry_date, 'YYYY-MM-DD HH24:MI:SS') AS expirytime,
TO_CHAR(a.PASSWORD_CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS') AS changepstime,
TO_CHAR(a.LAST_LOGIN, 'YYYY-MM-DD HH24:MI:SS') AS lastlogintime,
a.default_tablespace AS dtablespace,a.temporary_tablespace AS ttablespace,
z.tablenum,z.viewnum,z.functionnum,z.indexnum,z.procedurenum,z.triggernum,z.synonymnum,z.sequencenum,z.packagenum
FROM dba_users a LEFT JOIN z ON a.username=z.owner
ORDER BY a.account_status DESC , a.username
表空间
sql复制代码
SELECT
dt.tablespace_name as tablespace,
to_char( round(dt.block_size * dtum.used_space /1024/1024/1024,2), '990.99')||'GB' as used,
round(dt.block_size * dtum.tablespace_size /1024/1024/1024,2)||'GB' as total,
round(dt.block_size * (dtum.tablespace_size - dtum.used_space) /1024/1024/1024,2)||'GB' as free,
to_char(round(dtum.used_space/dtum.tablespace_size *100 ,2), '990.99') ||'%' percent
FROM dba_tablespace_usage_metrics dtum, dba_tablespaces dt
WHERE dtum.tablespace_name = dt.tablespace_name
and dt.contents != 'TEMPORARY'
union
SELECT
dt.tablespace_name as tablespace,
to_char(round((dt.tablespace_size - dt.free_space) /1024/1024/1024,2), '990.99')||'GB' as used,
round(dt.tablespace_size /1024/1024/1024,2)||'GB' as total,
round(dt.free_space /1024/1024/1024,2)||'GB' as free,
to_char(round((dt.tablespace_size - dt.free_space) / dt.tablespace_size *100 ,2), '990.99') ||'%' AS percent
FROM dba_temp_free_space dt
order by percent DESC
分区表
sql复制代码
WITH z AS (
SELECT k.owner,k.name, LISTAGG(k.column_name, ', ') WITHIN GROUP (ORDER BY k.column_position) AS partition_key
FROM dba_part_key_columns k WHERE k.owner NOT IN ('AUDSYS', 'MDSYS', 'SYS', 'SYSTEM')
AND k.object_type = 'TABLE' GROUP BY k.owner,k.name )
SELECT t.owner AS username,
t.table_name AS tablename,
z.partition_key AS partkey,
t.partitioning_type AS parttype,
t.INTERVAL AS interval,
t.SUBPARTITIONING_TYPE AS subparttype,
p.partition_name AS partname,
p.high_value AS highvalue,
p.tablespace_name AS tablespace,
ROUND(s.bytes / 1024 / 1024, 2)||'MB' AS "size",
p.num_rows AS numrows,
TO_CHAR( p.last_analyzed , 'YYYY-MM-DD HH24:MI:SS') AS analyzed
FROM dba_part_tables t LEFT JOIN dba_tab_partitions p ON t.owner=p.table_owner AND t.table_name =p.table_name
LEFT JOIN z ON t.owner=z.owner AND t.table_name =z.name
LEFT JOIN dba_segments s ON t.owner = s.owner AND t.table_name = s.segment_name AND p.partition_name = s.partition_name
WHERE t.owner NOT IN ('AUDSYS', 'MDSYS', 'SYS', 'SYSTEM')
order by t.owner,t.table_name,p.partition_name
分区索引
sql复制代码
SELECT
pi.owner AS username,
pi.table_name AS tablename,
pi.index_name AS indexname,
pi.locality AS locality,
pi.partitioning_type AS parttype,
ip.partition_name AS partname,
ip.status AS status,
ip.tablespace_name AS tablespace,
ip.high_value AS highvalue,
TO_CHAR(ip.last_analyzed, 'YYYY-MM-DD HH24:MI:SS') AS analyzed
FROM
dba_part_indexes pi
JOIN
dba_ind_partitions ip
ON pi.owner = ip.index_owner
AND pi.index_name = ip.index_name
WHERE
pi.owner NOT IN ('AUDSYS', 'MDSYS', 'SYS', 'SYSTEM')
ORDER BY
pi.owner, pi.table_name, pi.index_name, ip.partition_name
redolog
sql复制代码
SELECT
l.group# AS "group",
l.member AS filepath,
lg.thread# AS thread,
lg.sequence# AS "sequence",
lg.bytes/1024/1024/1024||'GB' AS "size",
lg.status AS status,
lg.archived AS archived,
TO_CHAR(lg.first_time, 'YYYY-MM-DD HH24:MI:SS') AS firsttime
FROM
v$logfile l
JOIN
v$log lg ON l.group# = lg.group#
ORDER BY
lg.group#, l.member
慢sql
sql复制代码
WITH slow_sql AS (
SELECT
dhs.dbid,
dhs.sql_id AS sqlid,
SUM(nvl(dhs.executions_delta, 0)) AS execcount,
ROUND(SUM(nvl(dhs.elapsed_time_delta, 0))/1000000, 3) AS totaltime,
ROUND(CASE WHEN SUM(nvl(dhs.executions_delta, 0)) = 0 THEN 0 ELSE SUM(nvl(dhs.elapsed_time_delta, 0))/1000000/SUM(nvl(dhs.executions_delta, 0)) END, 3) AS avgtime,
ROUND(SUM(nvl(dhs.cpu_time_delta, 0))/1000000, 3) AS cputime,
ROUND(SUM(nvl(dhs.iowait_delta, 0))/1000000, 3) AS iowait,
SUM(nvl(dhs.disk_reads_delta, 0)) AS reads,
dhs.parsing_schema_name AS username,
COUNT(DISTINCT dhs.instance_number) AS instnum
FROM dba_hist_sqlstat dhs
JOIN dba_hist_snapshot dhsnap
ON dhs.snap_id = dhsnap.snap_id
AND dhs.dbid = dhsnap.dbid
AND dhs.instance_number = dhsnap.instance_number
WHERE
dhsnap.end_interval_time >= SYSDATE - 1
AND dhs.parsing_schema_name NOT IN ('SYS', 'SYSTEM', 'AUDSYS', 'MDSYS')
AND nvl(dhs.elapsed_time_delta, 0) > 0
GROUP BY dhs.dbid, dhs.sql_id, dhs.parsing_schema_name
)
SELECT
a.sqlid,
a.username,
a.instnum,
a.execcount,
a.totaltime,
a.avgtime,
a.cputime,
a.iowait,
a.reads,
t.sql_text AS sqltext
FROM slow_sql a
JOIN dba_hist_sqltext t
ON a.dbid = t.dbid
AND a.sqlid = t.sql_id
WHERE a.execcount>1 and (a.totaltime > 60 OR a.avgtime > 5 )
ORDER BY a.totaltime DESC, a.avgtime DESC
dblink
sql复制代码
SELECT
owner ,
db_link AS dblink ,
username ,
host,
TO_CHAR(created,'YYYY-MM-DD HH24:MI:SS') AS created ,
valid
FROM dba_db_links