1.数据库授权信息查询
SELECT LIC_VERSION AS "许可证版本" ,SERIES_NO AS "序列号" ,CHECK_CODE AS "校验码" ,AUTHORIZED_CUSTOMER AS "最终用户",PROJECT_NAME AS "项目名称" ,PRODUCT_TYPE AS "产品名称" ,CASE SERVER_TYPE WHEN '1' THEN '正式版' WHEN '2' THEN '测试版' WHEN '3' THEN '试用版' WHEN '4' THEN '其他' END AS "产品类型",TO_CHAR(EXPIRED_DATE) AS "有效日期",OS_TYPE AS "授权系统",TO_CHAR(AUTHORIZED_USER_NUMBER) AS "授权用户数",NVL(TO_CHAR(CONCURRENCY_USER_NUMBER),'') AS "授权并发数",NVL(TO_CHAR(MAX_CPU_NUM),'') AS "授权CPU个数",CLUSTER_TYPE AS "授权集群"FROM V$LICENSE
2. 查询数据库的实例信息
SELECT '版本号',(SELECT id_code)FROM v$instanceunion allselect '数据库名',name from v$databaseunion allselect '实例名',instance_name from v$instanceunion allselect '系统状态',status$ from v$instanceunion allselect '实例模式',mode$ from v$instanceunion allselect '是否启用归档',case arch_mode when 'Y' then '是' when 'N' then '否' end from v$databaseunion allSELECT '页大小',cast(PAGE()/1024 as varchar)union allSELECT '大小写敏感',cast(case SF_GET_CASE_SENSITIVE_FLAG()when '1' then '是' when '0' then '否' end as varchar)union allSELECT '字符集',CASE SF_GET_UNICODE_FLAG() WHEN '0' THEN 'GBK18030' WHEN '1' then 'UTF-8' when '2' then 'EUC-KR' endunion allSELECT '以字符为单位',cast(case SF_GET_LENGTH_IN_CHAR()when '1' then '是' when '0' then '否' end as varchar)union allSELECT '空白字符填充模式',cast(case (select BLANK_PAD_MODE()) when '1' then '是' when '0' then '否' end as varchar)union allselect '日志文件个数',to_char(count(*)) from v$rlogfileunion allselect '日志文件大小',cast(RLOG_SIZE/1024/1024 as varchar) from v$rlogfile where rowid =1union allselect '创建时间',to_char(create_time) from v$databaseunion allselect '启动时间',to_char(last_startup_time) from v$database;
3. 查询数据库中语句统计信息
select NAME,STAT_VALfrom v$sysstatwhere name in ('select statements','insert statements','delete statements','update statements','ddl statements','transaction total count')
4. 数据库表空间的状态检查
SELECT NAME AS "NAME",CASE TYPE$ WHEN '1' THEN 'DB类型' WHEN '2' THEN '临时表空间' END AS "TYPE",CASE STATUS$ WHEN '0' THEN '联机' WHEN '1' THEN '脱机' WHEN '2' THEN '脱机' WHEN '3' THEN '损坏'END AS "STATUS",TOTAL_SIZE*PAGE/1024/1024 AS "TOTALSIZE",FILE_NUM AS "FILENUM"FROM V$TABLESPACE
5. 查询数据库表空间的使用情况
SELECTF.TABLESPACE_NAME ,ROUND((T.TOTAL_SPACE - F.FREE_SPACE) / 1024, 2) "USED" ,CASE WHEN H.TOTAL_MAX_SPACE == 0 THEN ROUND(F.FREE_SPACE / 1024, 2) ELSE ROUND((H.TOTAL_MAX_SPACE -(T.TOTAL_SPACE - F.FREE_SPACE)) / 1024, 2) END "FREE_MAX" ,CASE WHEN H.TOTAL_MAX_SPACE == 0 THEN ROUND(T.TOTAL_SPACE / 1024, 2) ELSE ROUND(H.TOTAL_MAX_SPACE / 1024, 2) END "TOTAL_MAX" ,CASE WHEN H.TOTAL_MAX_SPACE == 0 THEN ROUND((F.FREE_SPACE/1024)/(T.TOTAL_SPACE / 1024), 4)*100||'%' ELSE ROUND(((H.TOTAL_MAX_SPACE-(T.TOTAL_SPACE - F.FREE_SPACE))/1024)/(H.TOTAL_MAX_SPACE / 1024), 4)*100||'%' END PER_FREE_MAX,CASE WHEN H.TOTAL_MAX_SPACE == 0 THEN ROUND((((T.TOTAL_SPACE - F.FREE_SPACE))/1024)/(T.TOTAL_SPACE / 1024), 4)*100||'%' ELSE ROUND((((T.TOTAL_SPACE - F.FREE_SPACE))/1024)/(H.TOTAL_MAX_SPACE / 1024), 4)*100||'%' END PER_USED_MAX ,ROUND(F.FREE_SPACE / 1024, 2) "FREE" ,ROUND(T.TOTAL_SPACE / 1024, 2) "TOTAL",CASE WHEN T.TOTAL_SPACE == 0 THEN '' ELSE (ROUND((F.FREE_SPACE / T.TOTAL_SPACE), 4)* 100) || '% ' END PER_FREE,CASE WHEN T.TOTAL_SPACE == 0 THEN '' ELSE (ROUND((T.TOTAL_SPACE - F.FREE_SPACE) / T.TOTAL_SPACE, 4) * 100)||'%' END PER_USEDFROM ( SELECT TABLESPACE_NAME,ROUND(SUM(BLOCKS * ( SELECT PARA_VALUE / 1024FROM V$DM_INIWHERE PARA_NAME = 'GLOBAL_PAGE_SIZE' ) / 1024)) FREE_SPACEFROM DBA_FREE_SPACEGROUP BY TABLESPACE_NAME ) F, ( SELECT TABLESPACE_NAME,ROUND(SUM(BYTES / 1048576)) TOTAL_SPACEFROM DBA_DATA_FILESGROUP BY TABLESPACE_NAME ) T, ( SELECT TABLESPACE_NAME,ROUND(SUM(MAXBYTES / 1048576)) TOTAL_MAX_SPACEFROM DBA_DATA_FILESGROUP BY TABLESPACE_NAME ) HWHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME AND F.TABLESPACE_NAME =H.TABLESPACE_NAME
6. 查询表空间的数据文件使用情况
SELECT PATH,TO_CHAR(TOTAL_SIZE*PAGE/1024/1024) AS TOTAL_SIZE,TO_CHAR(FREE_SIZE*PAGE/1024/1024) AS FREE_SIZE,(TO_CHAR(100-FREE_SIZE*100/TOTAL_SIZE)) AS REM_PER,CASE AUTO_EXTEND WHEN '0' THEN '未开启' WHEN '1' THEN '已开启' END AS AUTO_EXTEND,NEXT_SIZE,MAX_SIZE,b.TABLESPACE_NAMEFROM V$DATAFILE a,dba_data_files b where b.file_name = a.PATH order by GROUP_ID
7. 查询数据库中的用户信息
SELECT A.USERNAME ,CASE B.RN_FLAG WHEN '0' THEN '否' WHEN '1' THEN '是' END AS READ_ONLY,CASE A.ACCOUNT_STATUS WHEN 'LOCKED' THEN '锁定' WHEN 'OPEN' THEN '正常' END AS "状态",TO_CHAR(A.LOCK_DATE,'YYYY-MM-DD HH24:MI:SS') AS "锁定起始时间",TO_CHAR(A.EXPIRY_DATE,'YYYY-MM-DD HH24:MI:SS') AS "密码截止使用时间",TO_CHAR(round(datediff(DAY,TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS'),TO_CHAR(A.EXPIRY_DATE,'YYYY-MM-DD HH24:MI:SS')),2)) AS EXPIRY_DATE_DAY,TO_CHAR(round(datediff(DAY,TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS'),TO_CHAR(A.LOCK_DATE,'YYYY-MM-DD HH24:MI:SS')),2)) AS LOCK_DATE_DAY,A.DEFAULT_TABLESPACE,A.PROFILE,TO_CHAR(A.CREATED,'YYYY-MM-DD HH24:MI:SS') AS CREATE_TIMEFROM DBA_USERS A,SYSUSERS BWHERE A.USER_ID=B.ID
8. 查询数据库中用户权限
SELECT USERNAME AS "用户名",WM_CONCAT(PRIVILEGE) AS "默认权限"FROM(SELECT A.USERNAME ,C.PRIVILEGEFROM DBA_USERS A,SYSUSERS B,(SELECT A.* FROM (SELECT GRANTEE,GRANTED_ROLE PRIVILEGE,'ROLE_PRIVS' PRIVILEGE_TYPE,CASE ADMIN_OPTION WHEN 'Y' THEN 'YES' ELSE 'NO' END ADMIN_OPTION FROM DBA_ROLE_PRIVSUNION SELECT GRANTEE,PRIVILEGE,'SYS_PRIVS' PRIVILEGE_TYPE,ADMIN_OPTION FROM DBA_SYS_PRIVSUNION SELECT GRANTEE,PRIVILEGE||' ON '||OWNER||'.'||TABLE_NAME PRIVILEGE,'TABLE_PRIVS' PRIVILEGE_TYPE,GRANTABLE FROM DBA_TAB_PRIVS) AWHERE GRANTEE IN (SELECT USERNAME FROM ALL_USERS WHERE USERNAME NOT IN ('SYS','SYSDBA','SYSSSO','SYSAUDITOR') )) CWHERE A.USER_ID=B.IDAND A.USERNAME = C.GRANTEE)GROUP BY USERNAME
9. 查询数据库中的对象是否无效(函数、存储过程、包等对象)
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE,TO_CHAR(CREATED,'YYYY-MM-DD HH24:MI:SS'),TO_CHAR(LAST_DDL_TIME,'YYYY-MM-DD HH24:MI:SS')FROM DBA_OBJECTSWHERE OWNER NOT IN('SYS','SYSJOB','SYSAUDITOR','CTISYS','SYSSSO')and STATUS = 'INVALID'
10. 查询数据库中的大表信息
SELECT A.TABLE_NAME,A.TABLESPACE_NAME,B.OWNER ,B.BYTESFROM (SELECT TABLE_NAME,TABLESPACE_NAME FROM ALL_TABLES GROUP BY TABLE_NAME,TABLESPACE_NAME) AS ALEFT JOIN (SELECT OWNER,SEGMENT_NAME,SUM(BYTES) BYTES FROM DBA_SEGMENTS WHERE SEGMENT_TYPE='TABLE'GROUP BY OWNER,SEGMENT_NAME) AS BON A.TABLE_NAME=B.SEGMENT_NAMEWHERE B.OWNER NOT IN ('SYS','SYSDBA','SYSAUDITOR','SYSSSO','CTISYS') ORDER BY BYTES DESC LIMIT 10
11. 查询数据库中的分区大表信息
SELECT A.OWNER,A.TABLE_NAME,A.PARTITIONING_TYPE,TO_CHAR(ROUND(TABLE_USED_SPACE(A.OWNER, A.TABLE_NAME) * PAGE / 1024.0 / 1024, 2)) SIZEMB,A.PARTITION_COUNT as partition_num,table_rowcount(a.owner, a.table_name) as row_numFROM DBA_PART_TABLES a;
12. 查询数据库中会话的使用情况
SELECT *FROM(SELECTSTATE ,CASEWHEN INSTR(CLNT_IP, ':',8) > 0THEN SUBSTR(CLNT_IP, 1, INSTR(CLNT_IP, ':',8) - 1)ELSE CLNT_IPEND AS CLNT_IP ,CLNT_TYPE,CURR_SCH ,USER_NAME,COUNT(*) COUNTSFROMV$SESSIONSGROUP BYSTATE ,CASEWHEN INSTR(CLNT_IP, ':',8) > 0THEN SUBSTR(CLNT_IP, 1, INSTR(CLNT_IP, ':',8) - 1)ELSE CLNT_IPEND ,CLNT_TYPE,CURR_SCH ,USER_NAMEORDER BYSTATE)
13. 长时间空闲会话检查
SELECT SESS_ID,SESS_SEQ,USER_NAME,CREATE_TIME,CLNT_TYPE,CLNT_HOST,CLNT_IP,OSNAME,CONN_TYPE,CLNT_VERFROM SYS.V$SESSIONSWHERE STATE = 'IDLE'AND DATEDIFF(HH, LAST_SEND_TIME, SYSDATE) > 48AND DATEDIFF(HH, CREATE_TIME, SYSDATE) > 48;
14. 查询数据库的redo日志大小
SELECT FILE_ID,PATH,CLIENT_PATH,RLOG_SIZE FROM V$RLOGFILE15. 查询数据库的定时任务信息
SELECT SYSJOB."NAME" ,SCHE."NAME" SCHENAME ,SCHE."JOBID" ,SCHE."TYPE" ,SCHE."FREQ_INTERVAL" ,SCHE."FREQ_SUB_INTERVAL",SCHE."STARTTIME" ,STEPS."NAME" STEPSNAME ,STEPS."SEQNO" STEPSSEQNO,STEPS."TYPE" STEPSTYPE ,STEPS.COMMAND WHAT ,STEPS.SUCC_ACTION ,STEPS.FAIL_ACTIONFROMSYSJOB.SYSJOBSCHEDULES SCHELEFT JOIN SYSJOB.SYSJOBSTEPS STEPSONSCHE.JOBID = STEPS.JOBIDLEFT JOIN SYSJOB.SYSJOBS SYSJOBONSCHE.JOBID = SYSJOB.IDWHERESCHE.VALID == 'Y'ORDER BYSTEPS.JOBID,STEPS.SEQNO ASC
16. 查询定时任务是否有错误
selectNAME ,'' STEPNAME ,MAX(START_TIME) START_TIME,ERRINFOfrom ( SELECT NAME ,MAX(START_TIME) START_TIME,ERRINFOFROM SYSJOB.SYSSTEPHISTORIES2WHERE ERRCODE !=0GROUP BY NAME,ERRINFOunion allselect NAME ,MAX(START_TIME) START_TIME,ERRINFOfrom SYSJOB.SYSJOBHISTORIES2where ERRCODE !=0GROUP BY NAME,ERRINFO )WHERE TO_CHAR(START_TIME,'YYYY-MM-DD HH24:MI:SS') >= TO_CHAR(TRUNC(ADD_DAYS(SYSDATE, -7)),'YYYY-MM-DD HH24:MI:SS')GROUP BY NAME,ERRINFOORDER BY START_TIME DESC LIMIT 10
17. 数据字典的淘汰情况
SELECT ROUND(TOTAL_SIZE/1024.0/1024, 2) TOTALSIZE ,ROUND(USED_SIZE /1024.0/1024, 2) USEDSIZE ,DICT_NUM DICTNUM ,ROUND(SIZE_LRU_DISCARD/1024.0/1024, 2) SIZELRUDISCARD,LRU_DISCARD LRUDISCARD,ROUND((USED_SIZE/1024.0/1024)/(TOTAL_SIZE/1024.0/1024)*100, 2) CACHE_HITFROMV$DB_CACHE
18. 查询数据库中的无效索引
select owner, index_name,table_name,index_type,status from dba_indexeswhere status != 'VALID' and owner not in ('SYS', 'SYSAUDITOR', 'SYSSSO', 'SYSDBA', 'DEM', 'SYSJOB', 'SYSDBO')order by 1,2,3;
19. 查询数据库分区表中的无效索引
SELECT *FROM (SELECT SCH_NAME, INDEX_NAME, PARTITION_NAME, SUBPARTITION_NAME,STATUSFROM DBA_IND_SUBPARTITIONSUNIONSELECT SCH_NAME, INDEX_NAME, PARTITION_NAME, NULL,STATUSFROM DBA_IND_PARTITIONSUNIONSELECT OWNER, INDEX_NAME, NULL, NULL,STATUS FROM DBA_INDEXES) SWHERE S.STATUS = 'UNUSABLE'AND S.SCH_NAME NOT IN('SYS', 'SYSAUDITOR', 'SYSSSO', 'SYSDBA', 'DEM', 'SYSJOB', 'SYSDBO')ORDER BY 1, 2
20. 查询数据库中的大索引信息
SELECT objname AS "对象名",objtype as "对象类型",TABLESPACE_NAME AS "表空间",to_char(round(TOT_BLOCKS/1024.0/1024.0*page(),2)) AS "大小(MB)"from(SELECT objname,objtype,TABLESPACE_NAME,SUM(page_used) TOT_BLOCKSFROM(select * from/*(select owner||'.'||table_name objname,'TABLE/TABLE PART' objtype,TABLESPACE_NAME,TABLE_USED_PAGES(owner,table_name) page_usedfrom dba_tableswhere tablespace_name not in ('TEMP','ROLL','SYSTEM')and owner not in ('SYS','SYSAUDITOR','SYSSSO','SCHEDULER')and temporary='N'and TABLE_USED_PAGES(owner,table_name)> (select sum(TOTAL_SIZE)*0.0001 from v$datafile)order by table_used_space(owner,table_name) desclimit 10)union all*/(select owner||'.'||index_name objname,'INDEX/INDEX PART' objtype,TABLESPACE_NAME,INDEX_USED_PAGES(owner,index_name) page_usedfrom dba_indexeswhere tablespace_name not in ('TEMP','ROLL','SYSTEM')and owner not in ('SYS','SYSAUDITOR','SYSSSO','SCHEDULER')and temporary='N'and INDEX_TYPE != 'CLUSTER'and INDEX_USED_PAGES(owner,index_name)> (select sum(TOTAL_SIZE)* 0 from v$datafile)order by index_used_space(owner,table_name) desc)order by page_used desclimit 10)GROUP BY objname,objtype,TABLESPACE_NAMEorder by TOT_BLOCKS DESC limit 10)
21. 查询监视器信息
selectTO_CHAR(DW_CONN_TIME, 'YYYY-MM-DD HH24:MI:SS') CONN_TIME,MON_CONFIRM,MON_IP,MON_ID,MON_TERMfrom v$dmmonitor
22. 查询实例运行错误的日志
select * from V$INSTANCE_LOG_HISTORY where LEVEL$ not in ('INFO','WARN')23. 查询数据库中是否存在死锁
SELECT TO_CHAR(HAPPEN_TIME,'YYYY-MM-DD HH24:MI:SS') HAPPEN_TIME,SQL_TEXT FROM V$DEADLOCK_HISTORY WHERE HAPPEN_TIME >DATEADD(DAY,-30,SYSDATE)24. 查询数据库中的已经运行后的慢SQL
SELECT SQL_TEXT,EXEC_TIME,FINISH_TIME FROM V$SYSTEM_LONG_EXEC_SQLS ORDER BY EXEC_TIME DESC25. 查询数据库中运行报错的SQL语句
SELECT SQL_TEXT,ECPT_DESC,max(ERR_TIME)ERR_TIME FROM V$RUNTIME_ERR_HISTORY group by SQL_TEXT,ECPT_DESC LIMIT 1026. 查询数据库中正在运行的慢SQL
select * from ( SELECT DATEDIFF(MS,LAST_RECV_TIME,SYSDATE) EXEC_TIME,DBMS_LOB.SUBSTR(SF_GET_SESSION_SQL(SESS_ID)) SLOW_SQL,SESS_ID,CURR_SCH,THRD_ID,LAST_RECV_TIME,SUBSTR(CLNT_IP,8,13) CONN_IPFROM V$SESSIONSWHERE 1=1and STATE='ACTIVE'ORDER BY 1 DESC)where
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




