explain for update fa_log set ts=to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),redep_flag = 'Y' where log_type = '1' and pk_accbook = '1001A110000000000JCB' and accyear = '2019' and period = '01' and pk_org = '0001A11000000000969Z';
2、查看表当前的索引
select * from user_ind_columns where table_name = upper('fa_log');
3、删除已有的索引,例如要新加入一个log_type字段
drop index I_FA_LOG_2;
4、创建新索引
CREATE INDEX I_FA_LOG_2 ON FA_LOG(ACCYEAR,PERIOD,PK_ACCBOOK,PK_ORG,LOG_TYPE);
SELECT O.NAME,L.* FROM V$LOCK L,SYSOBJECTS O WHERE L.TABLE_ID=O.ID AND BLOCKED=1;
2、查询阻塞事务及被阻塞事务ID
WITH LOCKS AS
(
SELECT O.NAME,L.*,S.SESS_ID,S.SQL_TEXT,S.CLNT_IP,S.LAST_SEND_TIME
FROM V$LOCK L,SYSOBJECTS O,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 SYSDATE STAT_TIME, '0X'||TRIM(TO_CHAR(WT_SESSID,RPAD('X',15,'X'))) WT_SESSID,
'0X'||TRIM(TO_CHAR(BLK_SESSID,RPAD('X',15,'X'))) BLK_SESSID,
CLNT_IP,WT_TRXID,BLK_TRXID,SS,WT_SQL
FROM RES ORDER BY SS DESC;
--返回执行耗时大于2秒的语句 select * from (SELECT sess_id,sql_text,state,datediff(ss, last_send_time, sysdate) Y_EXETIME,SF_GET_SESSION_SQL(SESS_ID) fullsql,clnt_ip FROM V$SESSIONS WHERE STATE='ACTIVE') where Y_EXETIME>=2;
select * from v$trxwait connect by id = prior wait_for_id;
查看阻塞会话及相关信息:
SELECT * FROM(select thrd_id,trx_id,sf_get_session_sql(sess_id),datediff(ss,sysdate,last_recv_time) ss,sql_text from v$sessions where state = 'ACTIVE' order by ss)S,(select * from v$lock where lmode like '%X%') LWHERE S.TRX_ID = L.TRX_ID ORDER BY SS DESC;select datediff(ss,sysdate,last_send_time) a, SF_GET_SESSION_SQL(SESS_ID) ,
--获取完整sql sess_id ,sess_seq ,sql_text , state ,seq_no , user_name ,trx_id ,create_time, clnt_ip from v$sessions where state='ACTIVE' and sess_id != sessid order by a;
--未提交查询
select b.object_name,c.sess_id,a.* from v$lock a,dba_objects b,v$sessions cwhere a.table_id=b.object_idand ltype='OBJECT'and a.trx_id=c.trx_id;
查看被锁会话相关情况:
select * from v$lock where trx_id in (select trx_id from v$sessions where state = 'ACTIVE' order by ss) and blocked = 1 order by lmode desc;
和用户确认后,关闭严重影响性能的会话:
sp_close_session()
清空执行缓存信息CALL SP_CLEAR_PLAN_CACHE();
收集模式的统计信息
DBMS_STATS.GATHER_SCHEMA_STATS('模式名',100,TRUE,'FOR ALL COLUMNS SIZE AUTO');
注:如果数据量较大,该过程可能较慢,请耐心等待。
收集表的统计信息
DBMS_STATS.GATHER_TABLE_STATS('模式名','表名',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');
检查内存RECYCLE使用情况
select sum(free) from v$bufferpool where name = 'RECYCLE'
8 个回复
nccloud
1、查看当前的等待,wait_for_id就是大家在等着的ID
2、查看被等待的ID正在做什么
综合以上2个sql
3、如果有阻塞或死锁的session可以通过查询他的sess_id,然后杀掉
nccloud
1、查看慢sql的执行计划
2、查看表当前的索引
3、删除已有的索引,例如要新加入一个log_type字段
4、创建新索引
nccloud
1、查看被block线程
2、查询阻塞事务及被阻塞事务ID
nccloud
1、启、停SQL日志:
sp_set_para_value(1,'SVR_LOG',1); ---开启SQL日志
sp_set_para_value(1,'SVR_LOG',0); ---关闭SQL日志
--返回执行耗时大于2秒的语句
select * from (SELECT sess_id,sql_text,state,datediff(ss, last_send_time, sysdate) Y_EXETIME,SF_GET_SESSION_SQL(SESS_ID) fullsql,clnt_ip FROM V$SESSIONS
WHERE STATE='ACTIVE') where Y_EXETIME>=2;
nccloud
达梦数据库统计信息的使用
1、更新统计信息
----更新统计信息(模式T11下的所有对象)
dbms_stats.GATHER_SCHEMA_stats ('T11');
----更新统计信息(模式T11下的表T11)
dbms_stats.GATHER_TABLE_STATS ('T11','T11');
DBMS_STATS.GATHER_TABLE_STATS('JG_BJLS_1121','BD_ACCASOA',null,100,TRUE,'FOR ALL COLUMNS SIZE 1')
----更新统计信息(模式T11下的索引IDX_T11_ID)
dbms_stats.GATHER_INDEX_STATS('T11','IDX_T11_ID');
2、查看统计信息
----查看统计信息(模式T11下的表T11)
dbms_stats.TABLE_STATS_SHOW('T11','T11');
----查看统计信息(模式T11下的索引IDX_T11_ID)
dbms_stats.INDEX_STATS_SHOW('T11','IDX_T11_ID');
----查看统计信息(模式T11下的表T11下的列ID)
dbms_stats.COLUMN_STATS_SHOW('T11','T11','ID');
3、删除统计信息
----删除统计信息(模式T11下)
dbms_stats.DELETE_SCHEMA_STATS('T11','T11');
----删除统计信息(模式T11下的表T11)
dbms_stats.DELETE_TABLE_STATS('T11','T11');
----删除统计信息(模式T11下的索引IDX_T11_ID)
dbms_stats.DDELETE_INDEX_STATS('T11','IDX_T11_ID');
----删除统计信息(模式T11下的表T11下的列ID)
dbms_stats.DELETE_COLUMN_STATS('T11','T11','ID');
4、更新统计信息
----更新已有的统计信息
dbms_stats.UPDATE_ALL_STATS()
nccloud
查看是否有资源等待:
select * from v$trxwait connect by id = prior wait_for_id;
查看阻塞会话及相关信息:
SELECT * FROM(select thrd_id,trx_id,sf_get_session_sql(sess_id),datediff(ss,sysdate,last_recv_time) ss,sql_text from v$sessions where state = 'ACTIVE' order by ss)S,(select * from v$lock where lmode like '%X%') LWHERE S.TRX_ID = L.TRX_ID ORDER BY SS DESC;select datediff(ss,sysdate,last_send_time) a, SF_GET_SESSION_SQL(SESS_ID) ,
--获取完整sql sess_id ,sess_seq ,sql_text , state ,seq_no , user_name ,trx_id ,create_time, clnt_ip from v$sessions where state='ACTIVE' and sess_id != sessid order by a;
--未提交查询
select b.object_name,c.sess_id,a.* from v$lock a,dba_objects b,v$sessions cwhere a.table_id=b.object_idand ltype='OBJECT'and a.trx_id=c.trx_id;
查看被锁会话相关情况:
select * from v$lock where trx_id in (select trx_id from v$sessions where state = 'ACTIVE' order by ss) and blocked = 1 order by lmode desc;
和用户确认后,关闭严重影响性能的会话:
sp_close_session()
清空执行缓存信息CALL SP_CLEAR_PLAN_CACHE();
收集模式的统计信息
DBMS_STATS.GATHER_SCHEMA_STATS('模式名',100,TRUE,'FOR ALL COLUMNS SIZE AUTO');
注:如果数据量较大,该过程可能较慢,请耐心等待。
收集表的统计信息
DBMS_STATS.GATHER_TABLE_STATS('模式名','表名',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');
检查内存RECYCLE使用情况
select sum(free) from v$bufferpool where name = 'RECYCLE'
nccloud
http://eco.dameng.com/docs/zh-cn/start/ 云适配中心网址,可以先了解一下,有技术材料和资源申请,也有论坛答疑
nccloud
SP_CREATE_SYSTEM_PACKAGES(1);
--收集模式下所有列统计信息,以AAAAAAA模式为例
DBMS_STATS.GATHER_SCHEMA_STATS('AAAAAAA',100,FALSE, 'FOR ALL COLUMNS SIZE AUTO');
--收集模式下所有索引统计信息,以AAAAAAA模式为例
DBMS_STATS.GATHER_SCHEMA_STATS('AAAAAAA',100,FALSE, 'FOR ALL INDEXED SIZE AUTO');
#如果是当前用户登录,那就直接执行如下即可:
SP_CREATE_SYSTEM_PACKAGES(1);DBMS_STATS.GATHER_SCHEMA_STATS(user,100,FALSE, 'FOR ALL COLUMNS SIZE AUTO');DBMS_STATS.GATHER_SCHEMA_STATS(user,100,FALSE, 'FOR ALL INDEXED SIZE AUTO');