达梦数据库-常用SQl整理笔记

1、查询版本号
SELECT
BANNER
FROM
V V E R S I O N W H E R E B A N N E R L I K E ′ D M D a t a b a s e ∗ ∗ 2 、查询实例信息 ∗ ∗ s e l e c t ′ 版 本 ′ a s 名称 , S V R V E R S I O N a s 信息 f r o m v VERSION WHERE BANNER LIKE 'DM Database%' **2、查询实例信息** select '版本' as 名称,SVR_VERSION as 信息 from v VERSIONWHEREBANNERLIKEDMDatabase2、查询实例信息selectas名称,SVRVERSIONas信息fromvinstance union all
select ‘数据库名’ as 名称,CUR_DATABASE() union all
select ‘实例名’,INSTANCE_NAME from v i n s t a n c e u n i o n a l l s e l e c t ′ 永久魔术 值 ′ , t o c h a r ( P E R M A N E N T M A G I C ( ) ) u n i o n a l l s e l e c t ′ 簇大 小 ′ , S F G E T E X T E N T S I Z E ( ) ∣ ∣ ′ 页 ′ u n i o n a l l s e l e c t ′ 页大 小 ′ , P A G E ( ) / 1024 ∣ ∣ ′ K ′ u n i o n a l l s e l e c t ′ 字符 集 ′ , D E C O D E ( U N I C O D E , ′ 0 ′ , ′ G B 1803 0 ′ , ′ 1 ′ , ′ U T F − 8 ′ , ′ 2 ′ , ′ E U C − K R ′ ) u n i o n a l l s e l e c t ′ 大小 写 ′ , D E C O D E ( S F G E T C A S E S E N S I T I V E F L A G , ′ 0 ′ , ′ 不敏 感 ′ , ′ 1 ′ , ′ 敏 感 ′ ) u n i o n a l l s e l e c t ′ 空格填 充 ′ , D E C O D E ( B L A N K P A D M O D E , ′ 0 ′ , ′ 否 ′ , ′ 1 ′ , ′ 是 ′ ) u n i o n a l l s e l e c t ′ 日志大 小 ′ , M A X ( R L O G S I Z E / 1024 / 1024 ) ∣ ∣ ′ M B ′ f r o m v instance union all select '永久魔术值',to_char(PERMANENT_MAGIC()) union all select '簇大小',SF_GET_EXTENT_SIZE ()||'页' union all select '页大小',PAGE()/1024||'K' union all select '字符集',DECODE(UNICODE,'0','GB18030','1','UTF-8','2','EUC-KR') union all select '大小写',DECODE(SF_GET_CASE_SENSITIVE_FLAG,'0','不敏感','1','敏感') union all select '空格填充',DECODE(BLANK_PAD_MODE,'0','否','1','是') union all select '日志大小',MAX(RLOG_SIZE/1024/1024)||'MB' from v instanceunionallselect永久魔术,tochar(PERMANENTMAGIC())unionallselect簇大,SFGETEXTENTSIZE()unionallselect页大,PAGE()/1024∣Kunionallselect字符,DECODE(UNICODE,0,GB18030,1,UTF8,2,EUCKR)unionallselect大小,DECODE(SFGETCASESENSITIVEFLAG,0,不敏,1,)unionallselect空格填,DECODE(BLANKPADMODE,0,,1,)unionallselect日志大,MAX(RLOGSIZE/1024/1024)MBfromvrlogfile union all
select ‘归档状态’,DECODE(ARCH_MODE,‘Y’,‘启用’,‘N’,‘未启用’) from v d a t a b a s e u n i o n a l l s e l e c t ′ 创建时 间 ′ , c a s t ( C R E A T E T I M E a s v a r c h a r ( 50 ) ) f r o m v database union all select '创建时间', cast(CREATE_TIME as varchar(50)) from v databaseunionallselect创建时,cast(CREATETIMEasvarchar(50))fromvdatabase;
3、查询当前会话 id
SELECT SESSID ();
查询当前登录用户 id
SELECT UID();
4、查询会话信息
SELECT
SESS_ID AS “会话ID”,
DECODE(STATE,
‘CREATE’,
‘创建’,
‘STARTUP’,
‘启动’,
‘IDLE’,
‘空闲’,
‘ACTIVE’,
‘活动’,
‘WAIT’,
‘等待’,
‘UNKNOWN’,
‘未知’) AS “会话状态”,
CREATE_TIME AS “会话创建时间”,
TRX_ID AS “事务ID”,
SQL_TEXT AS “SQL”,
USER_NAME AS “当前用户”,
CURR_SCH AS “当前模式”,
CLNT_TYPE AS “连接类型”,
DECODE(AUTO_CMT,
‘Y’,
‘是’,
‘N’,
‘否’) AS “是否自动提交”,
DECODE(DDL_AUTOCMT,
‘Y’,
‘是’,
‘N’,
‘否’) AS “DDL是否自动提交”,
APPNAME AS “连接程序名”,
CLNT_IP AS “客户机IP”,
CLNT_HOST AS “客户机名”,
OSNAME AS “客户机系统”
FROM
V S E S S I O N S ; 杀掉会话 − − 根据 S E S S I D 杀掉会话 S P C L O S E S E S S I O N ( 157792223 ) ; ∗ ∗ 5 、统计会话信息 ∗ ∗ S E L E C T S T A T E A S 状态 , C L N T I P A S 连接 I P , C O U N T ( ∗ ) A S 数量 F R O M V SESSIONS; 杀掉会话 --根据SESS_ID杀掉会话 SP_CLOSE_SESSION(157792223); **5、统计会话信息** SELECT STATE AS 状态, CLNT_IP AS 连接IP, COUNT(*)AS 数量 FROM V SESSIONS;杀掉会话根据SESSID杀掉会话SPCLOSESESSION(157792223);5、统计会话信息SELECTSTATEAS状态,CLNTIPAS连接IP,COUNT()AS数量FROMVSESSIONS
GROUP BY
STATE,
CLNT_IP
6、查询锁信息
SELECT
ADDR AS “锁地址”,
TRX_ID AS “所属事务ID”,
LTYPE AS “锁类型”,
LMODE AS “锁模式”,
DECODE(BLOCKED,
‘1’,
‘是’,
‘0’,
‘否’) AS “是否阻塞”,
TABLE_ID AS “对应表锁ID”,
ROW_IDX AS “TID锁事务ID”
FROM
V L O C K ; 7 、查询发生死锁的历史记录 S E L E C T S E S S I D A S " 会话 I D " , T R X I D A S " 事务 I D " , S Q L T E X T A S " 产生死锁的 S Q L " , H A P P E N T I M E A S " 死锁发生时间 " F R O M V LOCK; 7、查询发生死锁的历史记录 SELECT SESS_ID AS "会话ID", TRX_ID AS "事务ID", SQL_TEXT AS "产生死锁的SQL", HAPPEN_TIME AS "死锁发生时间" FROM V LOCK;7、查询发生死锁的历史记录SELECTSESSIDAS"会话ID",TRXIDAS"事务ID",SQLTEXTAS"产生死锁的SQL",HAPPENTIMEAS"死锁发生时间"FROMVDEADLOCK_HISTORY;
查询用户列表
SELECT
TABLESPACE_NAME,
TABLE_NAME
FROM
USER_TABLES
查询系统所有表
SELECT
OWNER,
TABLE_NAME
FROM
ALL_TABLES;
8、查询是否开启归档日志
SELECT
ARCH_MODE
FROM
VKaTeX parse error: Expected 'EOF', got '#' at position 61: …IN(FIRST_CHANGE#̲) FROM …ARCHIVED_LOG
WHERE
ARCHIVED = ‘YES’
AND DELETED = ‘NO’
AND STATUS = ‘A’
9、查询有效归档日志中最大的更改编号
SELECT
MAX(NEXT_CHANGE#)
FROM
VKaTeX parse error: Expected 'EOF', got '#' at position 160: … A.FIRST_CHANGE#̲ FIRST_CHANGE, …ARCHIVED_LOG A
WHERE
A.NAME IS NOT NULL
AND A.ARCHIVED = ‘YES’
AND A.STATUS = ‘A’
AND A.NEXT_CHANGE# > 618083584
ORDER BY
7
这边sql 中过滤掉了 SCN 小于的 618083584 的记录

10、删除归档日志
–保留30天归档
SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE - 30);
11、查询归档日志详情
SELECT
*
FROM
SYS."V A R C H I V E D L O G " ; ∗ ∗ 12 、查询下一个 r e d o 日志序列号 ∗ ∗ S E L E C T N E X T S E Q F R O M V ARCHIVED_LOG"; **12、查询下一个redo日志序列号** SELECT NEXT_SEQ FROM V ARCHIVEDLOG";12、查询下一个redo日志序列号SELECTNEXTSEQFROMVRLOG;
查询当前redo 日志序列号
SELECT
NEXT_SEQ -1
FROM
V$RLOG;
如何判断 redo 日志发生切换
两次查询当前的 redo日志序列号,如果两次结果不一样,则说明redo日志发生了切换。

13、查询redo文件信息
SELECT
CLIENT_PATH AS “日志名”,
PATH AS “路径”,
(RLOG_SIZE / 1024 / 1024) AS “文件大小M”,
CREATE_TIME AS “创建时间”
FROM
VKaTeX parse error: Double subscript at position 441: …AGIC, CKPT_N_̲PRIMAY_EP, C…RLOG
查询所有表行数
SELECT
TABLE_NAME AS 表名,
OWNER AS 所属用户,
TABLESPACE_NAME AS 所属表空间,
NUM_ROWS AS 行数
FROM
DBA_TABLES
WHERE
OWNER NOT IN (‘SYS’, ‘SYSTEM’, ‘SYSAUDITOR’, ‘SYSJOB’, ‘SYSSSO’, ‘CTISYS’)
AND TABLESPACE_NAME != ‘TEMP’;
15、查询模式下所有表行数
SELECT
OWNER,
TABLE_NAME,
NUM_ROWS,
TABLESPACE_NAME
FROM
DBA_TABLES T
WHERE
T.OWNER = UPPER(‘TEST’);
16、统计各个模式下表数据量
SELECT
OWNER,
SUM(NUM_ROWS)
FROM
DBA_TABLES
GROUP BY
OWNER;
17、查询模式下各个表索引
SELECT
TABLE_OWNER AS “表归属”,
TABLE_NAME AS “表名”,
OWNER AS “索引归属”,
INDEX_NAME AS “索引名”,
INDEX_TYPE AS “索引类型”,
TABLESPACE_NAME AS “索引所在表空间”,
JOIN_INDEX AS “是否组合索引”,
DECODE(VISIBILITY,
‘VISIBLE’,
‘可见’,
‘INVISIBLE’,
‘不可见’) AS “索引是否可见”
FROM
DBA_INDEXES
WHERE
OWNER = ‘TEST’
其中 TEST是具体的模式名称

18、查询模式下有哪些表
SELECT
NAME AS “表名”
FROM
SYSOBJECTS
WHERE
SUBTYPE$ = ‘UTAB’
AND SCHID IN (
SELECT
A.ID
FROM
SYSOBJECTS A,
ALL_USERS B
WHERE
A.TYPE$ = ‘SCH’
AND A.PID = B.USER_ID
AND A.NAME = ‘TEST’);
其中 TEST是具体的模式名称

19、查询模式下表的总数量
SELECT
count(*)
FROM
all_all_tables
WHERE
owner = ‘TEST’;
其中 TEST是具体的模式名称

20、查询当前用户下有哪些模式
SELECT
A.NAME AS “模式名”,
A.ID AS “模式ID”
FROM
SYSOBJECTS A,
ALL_USERS B
WHERE
A.TYPE$ = ‘SCH’
AND A.PID = B.USER_ID;
21、查询所有用户信息
SELECT
USER_ID AS “用户ID”,
USERNAME AS “用户名”,
ACCOUNT_STATUS AS “状态”,
DEFAULT_TABLESPACE AS “默认表空间”,
CREATED AS “创建时间”,
LOCK_DATE AS “锁定开始时间”,
EXPIRY_DATE AS “密码有效期截止”
FROM
DBA_USERS;
22、查询表结构信息
– 查看TEST模式下TEST_TABLE表的结构
SELECT
TABLEDEF(‘TEST’, ‘TEST_TABLE’)
FROM
DUAL;
23、查询数据库实例信息
SELECT
B.SVR_VERSION AS “数据库版本”,
C.DB_MAGIC AS “数据库MAGIC”,
A.NAME AS “数据库名”,
B.INSTANCE_NAME AS “实例名”,
B.STATUS$ AS “系统状态”,
B.MODE$ AS “模式”,
DECODE(A.ARCH_MODE,
‘Y’,
‘是’,
‘N’,
‘否’) AS “是否归档”,
B.START_TIME AS “服务启动时间”
FROM
V D A T A B A S E A , V DATABASE A, V DATABASEA,VINSTANCE B,
V R L O G C ; 24 、查询表空间信息 S E L E C T N A M E A S 名称 , D E C O D E ( T Y P E RLOG C; 24、查询表空间信息 SELECT NAME AS 名称, DECODE(TYPE RLOGC;24、查询表空间信息SELECTNAMEAS名称,DECODE(TYPE,
‘1’,
‘DB类型’,
‘2’,
‘临时表空间’)AS 类型,
DECODE(STATUS , ′ 0 ′ , ′ 联 机 ′ , ′ 1 ′ , ′ 脱 机 ′ , ′ 2 ′ , ′ R E S O F F L I N E ′ , ′ 3 ′ , ′ C O R R U P T ′ ) A S 状态 , T O T A L S I Z E ∗ P A G E / 1024 / 1024 A S 总大小 M B , F I L E N U M A S 包含文件数 F R O M V , '0', '联机', '1', '脱机', '2', 'RES_OFFLINE', '3', 'CORRUPT')AS 状态, TOTAL_SIZE * PAGE / 1024 / 1024 AS 总大小MB, FILE_NUM AS 包含文件数 FROM V ,0,,1,,2,RESOFFLINE,3,CORRUPT)AS状态,TOTALSIZEPAGE/1024/1024AS总大小MB,FILENUMAS包含文件数FROMVTABLESPACE;
25、查询数据文件信息
SELECT
PATH AS 文件路径,
(TOTAL_SIZE * PAGE / 1024 / 1024)AS 文件大小MB,
(FREE_SIZE * PAGE / 1024 / 1024)AS 剩余大小MB,
(CAST((TOTAL_SIZE-FREE_SIZE)* 100 / TOTAL_SIZE AS NUMERIC(2,
0))|| ‘%’) AS 使用比例,
DECODE(AUTO_EXTEND,
‘0’,
‘关闭’,
‘1’,
‘打开’) AS 自动扩展,
NEXT_SIZE AS 扩充尺寸MB,
MAX_SIZE AS 扩充上限MB,
CREATE_TIME AS 创建时间,
MODIFY_TIME AS 修改时间
FROM
V D A T A F I L E ; 26 、查询阻塞信息 d m 8 W I T H T R X T A B A S ( S E L E C T D I S T I N C T O 1. N A M E , L 1. T R X I D F R O M V DATAFILE; 26、查询阻塞信息 dm8 WITH TRX_TAB AS( SELECT DISTINCT O1.NAME, L1.TRX_ID FROM V DATAFILE;26、查询阻塞信息dm8WITHTRXTABAS(SELECTDISTINCTO1.NAME,L1.TRXIDFROMVLOCK L1,
SYSOBJECTS O1
WHERE
L1.TABLE_ID = O1.ID
AND O1.ID <> 0),
TRX_SESS AS (
SELECT
L.TRX_ID WT_TRXID,
L.TID BLK_TRXID,
L.BLOCKED,
(
SELECT
NAME TABLE_NAME
FROM
TRX_TAB A
WHERE
A.TRX_ID = L.TRX_ID) WT_TABLE,
S1.SESS_ID WT_SESS,
S2.SESS_ID BLK_SESS,
S1.USER_NAME WT_USER_NAME,
S2.USER_NAME BLK_USER_NAME,
S1.SQL_TEXT,
S1.CLNT_IP,
DATEDIFF(SS, S1.LAST_SEND_TIME, SYSDATE) SS
FROM
V L O C K L , V LOCK L, V LOCKL,VSESSIONS S1,
V S E S S I O N S S 2 W H E R E L . T R X I D = S 1. T R X I D A N D L . T I D = S 2. T R X I D ) S E L E C T S Y S D A T E S T A T T I M E , ∗ F R O M T R X S E S S W H E R E B L O C K E D = 1 ; d m 7 W I T H L O C K S A S ( S E L E C T O . N A M E , L . ∗ , S . S E S S I D , S . S Q L T E X T , S . C L N T I P , S . L A S T S E N D T I M E F R O M V SESSIONS S2 WHERE L.TRX_ID = S1.TRX_ID AND L.TID = S2.TRX_ID )SELECT SYSDATE STATTIME, * FROM TRX_SESS WHERE BLOCKED = 1; dm7 WITH LOCKS AS( SELECT O.NAME, L.*, S.SESS_ID, S.SQL_TEXT, S.CLNT_IP, S.LAST_SEND_TIME FROM V SESSIONSS2WHEREL.TRXID=S1.TRXIDANDL.TID=S2.TRXID)SELECTSYSDATESTATTIME,FROMTRXSESSWHEREBLOCKED=1;dm7WITHLOCKSAS(SELECTO.NAME,L.,S.SESSID,S.SQLTEXT,S.CLNTIP,S.LASTSENDTIMEFROMVLOCK L,
SYSOBJECTS O,
V S E S S I O N S S W H E R E L . T A B L E I D = O . I D A N D L . T R X I D = S . T R X I D ) , L O C K T R A S ( S E L E C T T R X I D W T T R X I D , R O W I D X B L K T R X I D F R O M L O C K S W H E R E B L O C K E D = 1 ) , R E S A S ( S E L E C T S Y S D A T E S T A T T I M E , T 1. N A M E , T 1. S E S S I D W T S E S S I D , S . W T T R X I D , T 2. S E S S I D B L K S E S S I D , S . B L K T R X I D , T 2. C L N T I P , S F G E T S E S S I O N S Q L ( T 1. S E S S I D ) F U L S Q L , D A T E D I F F ( S S , T 1. L A S T S E N D T I M E , S Y S D A T E ) S S , T 1. S Q L T E X T W T S Q L F R O M L O C K T R S , L O C K S T 1 , L O C K S T 2 W H E R E T 1. L T Y P E = ′ O B J E C T ′ A N D T 1. T A B L E I D < > 0 A N D T 2. L T Y P E = ′ O B J E C T ′ A N D T 2. T A B L E I D < > 0 A N D S . W T T R X I D = T 1. T R X I D A N D S . B L K T R X I D = T 2. T R X I D ) S E L E C T D I S T I N C T W T S Q L , C L N T I P , S S , W T T R X I D , B L K T R X I D F R O M R E S ; 26 、查询等待事件 S E L E C T T H R E A D I D A S " 线程 I D " , T R X I D A S " 事务 I D " , W A I T C L A S S A S " 等待类型号 " , W A I T O B J E C T A S " 等待对象 " , W A I T S T A R T A S " 等待开始时间 " , T R U N C ( W A I T T I M E , 6 ) / 1000000 A S " 等待时间 " F R O M V SESSIONS S WHERE L.TABLE_ID = O.ID AND L.TRX_ID = S.TRX_ID), LOCK_TR AS( SELECT TRX_ID WT_TRXID, ROW_IDX BLK_TRXID FROM LOCKS WHERE BLOCKED = 1), RES AS( SELECT SYSDATE STATTIME, T1.NAME, T1.SESS_ID WT_SESSID, S.WT_TRXID, T2.SESS_ID BLK_SESSID, S.BLK_TRXID, T2.CLNT_IP, SF_GET_SESSION_SQL(T1.SESS_ID)FULSQL, DATEDIFF(SS, T1.LAST_SEND_TIME, SYSDATE)SS, T1.SQL_TEXT WT_SQL FROM LOCK_TR S, LOCKS T1, LOCKS T2 WHERE T1.LTYPE = 'OBJECT' AND T1.TABLE_ID <> 0 AND T2.LTYPE = 'OBJECT' AND T2.TABLE_ID <> 0 AND S.WT_TRXID = T1.TRX_ID AND S.BLK_TRXID = T2.TRX_ID) SELECT DISTINCT WT_SQL, CLNT_IP, SS, WT_TRXID, BLK_TRXID FROM RES; 26、查询等待事件 SELECT THREAD_ID AS "线程ID", TRX_ID AS "事务ID", WAIT_CLASS AS "等待类型号", WAIT_OBJECT AS "等待对象", WAIT_START AS "等待开始时间", TRUNC(WAIT_TIME, 6)/ 1000000 AS "等待时间" FROM V SESSIONSSWHEREL.TABLEID=O.IDANDL.TRXID=S.TRXID),LOCKTRAS(SELECTTRXIDWTTRXID,ROWIDXBLKTRXIDFROMLOCKSWHEREBLOCKED=1),RESAS(SELECTSYSDATESTATTIME,T1.NAME,T1.SESSIDWTSESSID,S.WTTRXID,T2.SESSIDBLKSESSID,S.BLKTRXID,T2.CLNTIP,SFGETSESSIONSQL(T1.SESSID)FULSQL,DATEDIFF(SS,T1.LASTSENDTIME,SYSDATE)SS,T1.SQLTEXTWTSQLFROMLOCKTRS,LOCKST1,LOCKST2WHERET1.LTYPE=OBJECTANDT1.TABLEID<>0ANDT2.LTYPE=OBJECTANDT2.TABLEID<>0ANDS.WTTRXID=T1.TRXIDANDS.BLKTRXID=T2.TRXID)SELECTDISTINCTWTSQL,CLNTIP,SS,WTTRXID,BLKTRXIDFROMRES;26、查询等待事件SELECTTHREADIDAS"线程ID",TRXIDAS"事务ID",WAITCLASSAS"等待类型号",WAITOBJECTAS"等待对象",WAITSTARTAS"等待开始时间",TRUNC(WAITTIME,6)/1000000AS"等待时间"FROMVWAIT_HISTORY;
27、查询历史错误信息
SELECT
SESS_ID AS “会话ID”,
TRX_ID AS “事务ID”,
DECODE(SU_FLAG,
‘U’,
‘用户异常’,
‘S’,
‘系统异常’,
‘P’,
‘语法异常’) AS “错误类型”,
SQL_TEXT AS “错误的SQL”,
ECPT_CODE AS “错误提示”,
ERR_TIME AS “产生时间”
FROM
V$RUNTIME_ERR_HISTORY;
28、清除当日之前的空闲会话
DECLARE
vsessid varchar(50);

venddate varchar(8);

isessioncnt int;

CURSOR c1;
BEGIN
vsessid := ‘’;

SELECT
to_char(sysdate , ‘yyyymmdd’)
INTO
venddate
FROM
dual;
–获取指定日期
SELECT
count(1)
INTO
isessioncnt
FROM
v s e s s i o n s W H E R E s t a t e = ′ I D L E ′ A N D t o c h a r ( l a s t r e c v t i m e , ′ y y y y m m d d ′ ) < v e n d d a t e ; 29 、 − − 查看会话数 O P E N c 1 F O R S E L E C T s e s s i d F R O M v sessions WHERE state = 'IDLE' AND to_char(last_recv_time, 'yyyymmdd') < venddate; 29、--查看会话数 OPEN c1 FOR SELECT sess_id FROM v sessionsWHEREstate=IDLEANDtochar(lastrecvtime,yyyymmdd)<venddate;29查看会话数OPENc1FORSELECTsessidFROMvsessions
WHERE
state = ‘IDLE’
AND to_char(create_time, ‘yyyymmdd’) < venddate;
–打开游标
loop
–循环获取会话ID
IF c1%NOTFOUND THEN EXIT;
END IF;

FETCH c1
INTO
vsessid;

sp_close_session(vsessid);
–删除会话
END loop;
–关闭游标
CLOSE c1;
END;
清除大于1800的空闲会话
DECLARE
vsessid varchar(50);

venddate varchar(8);

isessioncnt int;

CURSOR c1;
BEGIN
vsessid := ‘’;

SELECT
to_char(sysdate + 1 , ‘yyyymmdd’)
INTO
venddate
FROM
dual;
–获取指定日期
SELECT
count(1)
INTO
isessioncnt
FROM
v s e s s i o n s W H E R E s t a t e = ′ I D L E ′ A N D t o c h a r ( l a s t r e c v t i m e , ′ y y y y m m d d ′ ) < v e n d d a t e ; − − 查看会话数 I F i s e s s i o n c n t > 1800 T H E N O P E N c 1 F O R S E L E C T s e s s i d F R O M v sessions WHERE state = 'IDLE' AND to_char(last_recv_time, 'yyyymmdd') < venddate; --查看会话数 IF isessioncnt > 1800 THEN OPEN c1 FOR SELECT sess_id FROM v sessionsWHEREstate=IDLEANDtochar(lastrecvtime,yyyymmdd)<venddate;查看会话数IFisessioncnt>1800THENOPENc1FORSELECTsessidFROMvsessions
WHERE
state = ‘IDLE’
AND to_char(create_time, ‘yyyymmdd’) < venddate;
–打开游标
loop
–循环获取会话ID
IF c1%NOTFOUND THEN EXIT;
END IF;

FETCH c1
INTO
vsessid;

sp_close_session(vsessid);
–删除会话
END loop;

CLOSE c1;
–关闭游标
END IF;
END;
缩小TEMP表空间
–缩小TEMP表空间大小为32M
SP_TRUNC_TS_FILE(3,0,32);
清理执行计划缓存
SP_CLEAR_PLAN_CACHE();
查询备份文件类型
SELECT
DECODE(SF_BAK_GET_TYPE(‘/opt/bak/all.bak’),
‘0’,
‘全量’,
‘1’,
‘增量’,
‘2’,
‘B树’);
查询备份文件方式
SELECT
DECODE(SF_BAK_GET_LEVEL(‘/opt/bak/all.bak’),
‘0’,
‘联机备份’,
‘1’,
‘脱机备份’);
查询备份文件时间
SELECT
SF_BAK_GET_TIME(‘/opt/bak/all.bak’);
查询备份文件簇大小
SELECT
SF_BAK_GET_EXTENT_SIZE(‘/opt/bak/all.bak’)|| ‘页’;
查询备份文件页大小
SELECT
SF_BAK_GET_PAGE_SIZE(‘/opt/bak/all.bak’)/ 1024 || ‘K’;
查询备份文件大小写
SELECT
DECODE(SF_BAK_GET_CASE_SENSITIVE(‘/opt/bak/all.bak’),
‘0’,
‘不敏感’,
‘1’,
‘敏感’);
查询备份文件数据库版本
SELECT
SF_BAK_GET_GLOBAL_VERSION(‘/opt/bak/all.bak’);
查询备份文件是否有归档
SELECT
DECODE(SF_BAK_GET_ARCH_FLAG(‘/opt/bak/all.bak’,
‘0’,
‘未归档’,
‘1’,
‘归档’);
查询备份文件是否加密
SELECT
DECODE(SF_BAK_GET_ENCRYPT_TYPE (‘/opt/bak/all.bak’),
‘0’,
‘未加密’,
‘1’,
‘加密’);
查询备份文件是压缩
SELECT
DECODE(SF_BAK_GET_COMPRESSED(‘/opt/bak/all.bak’),
‘0’,
‘未压缩’,
‘1’,
‘压缩’);
监控数据库内存
–创建基础表
CREATE TABLE MEM_POOL(“CONTTIME” TIMESTAMP(0),
“SUM(ORG)” VARCHAR2(20),
“SUM(TOTAL)” VARCHAR2(20));

–插入当前内存信息
INSERT
INTO
MEM_POOL
VALUES (SYSDATE(),
(
SELECT
sum(ORG_SIZE)/ 1024 / 1024
FROM
v m e m p o o l ) , ( S E L E C T s u m ( T O T A L S I Z E ) / 1024 / 1024 F R O M v mem_pool), ( SELECT sum(TOTAL_SIZE)/ 1024 / 1024 FROM v mempool),(SELECTsum(TOTALSIZE)/1024/1024FROMvmem_pool));

COMMIT;
监控指定索引是否使用
CREATE TABLE T1(“C1” CHAR(10)); --创建测试表
CREATE INDEX IDX_T1_C1 ON T1(“C1” ASC); --创建IDX_T1_C1索引
ALTER INDEX SYSDBA.“IDX_T1_C1” MONITORING USAGE; --监控IDX_T1_C1索引
SELECT * FROM T1 WHERE T1.C1 = ‘1’; --使用IDX_T1_C1索引
ALTER INDEX SYSDBA.“IDX_T1_C1” NOMONITORING USAGE; --取消监控INDEX_T1_C1索引
SELECT SCH_NAME AS “所属模式”,TABLE_NAME AS “所属表”,INDEX_NAME AS “索引名称”, MONITORING AS “是否监控”,USED AS “是否使用”,START_MONITORING AS “开始监控时间”,END_MONITORING AS “停止监控时间” FROM V O B J E C T U S A G E ; − − 查看监控结果监控指定模式下索引是否使用监控 S Y S D B A 模式下的索引 S E L E C T ′ A L T E R I N D E X ′ ∣ ∣ O W N E R ∣ ∣ ′ . " ′ ∣ ∣ O B J E C T N A M E ∣ ∣ ′ " ′ ∣ ∣ ′ M O N I T O R I N G U S A G E ; ′ F R O M D B A O B J E C T S W H E R E O B J E C T T Y P E = ′ I N D E X ′ A N D G E N E R A T E D = ′ N ′ A N D O W N E R = ′ S Y S D B A ′ ; 取消监控 S Y S D B A 模式下的索引 S E L E C T ′ A L T E R I N D E X ′ ∣ ∣ O W N E R ∣ ∣ ′ . " ′ ∣ ∣ O B J E C T N A M E ∣ ∣ ′ " ′ ∣ ∣ ′ N O M O N I T O R I N G U S A G E ; ′ F R O M D B A O B J E C T S W H E R E O B J E C T T Y P E = ′ I N D E X ′ A N D G E N E R A T E D = ′ N ′ A N D O W N E R = ′ S Y S D B A ′ ; 查看监控结果 S E L E C T S C H N A M E A S " 所属模式 " , T A B L E N A M E A S " 所属表 " , I N D E X N A M E A S " 索引名称 " , M O N I T O R I N G A S " 是否监控 " , U S E D A S " 是否使用 " , S T A R T M O N I T O R I N G A S " 开始监控时间 " , E N D M O N I T O R I N G A S " 停止监控时间 " F R O M V OBJECT_USAGE; --查看监控结果 监控指定模式下索引是否使用 监控SYSDBA模式下的索引 SELECT 'ALTER INDEX ' || OWNER || '."' || OBJECT_NAME || '" ' || 'MONITORING USAGE;' FROM DBA_OBJECTS WHERE OBJECT_TYPE = 'INDEX' AND GENERATED = 'N' AND OWNER = 'SYSDBA'; 取消监控SYSDBA模式下的索引 SELECT 'ALTER INDEX ' || OWNER || '."' || OBJECT_NAME || '" ' || 'NOMONITORING USAGE;' FROM DBA_OBJECTS WHERE OBJECT_TYPE = 'INDEX' AND GENERATED = 'N' AND OWNER = 'SYSDBA'; 查看监控结果 SELECT SCH_NAME AS "所属模式", TABLE_NAME AS "所属表", INDEX_NAME AS "索引名称", MONITORING AS "是否监控", USED AS "是否使用", START_MONITORING AS "开始监控时间", END_MONITORING AS "停止监控时间" FROM V OBJECTUSAGE;查看监控结果监控指定模式下索引是否使用监控SYSDBA模式下的索引SELECTALTERINDEX∣∣OWNER."∣∣OBJECTNAME"MONITORINGUSAGE;FROMDBAOBJECTSWHEREOBJECTTYPE=INDEXANDGENERATED=NANDOWNER=SYSDBA;取消监控SYSDBA模式下的索引SELECTALTERINDEX∣∣OWNER."∣∣OBJECTNAME"NOMONITORINGUSAGE;FROMDBAOBJECTSWHEREOBJECTTYPE=INDEXANDGENERATED=NANDOWNER=SYSDBA;查看监控结果SELECTSCHNAMEAS"所属模式",TABLENAMEAS"所属表",INDEXNAMEAS"索引名称",MONITORINGAS"是否监控",USEDAS"是否使用",STARTMONITORINGAS"开始监控时间",ENDMONITORINGAS"停止监控时间"FROMVOBJECT_USAGE;

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值