达梦DBA日常运维
1.生成AWR数据库运行报告。
1、启用AWR包:
call SP_INIT_AWR_SYS(1);
2、查询AWR快照:
SELECT * FROM SYS.WRM$_SNAPSHOT;
3、设置快照间隔,如果不设置快照间隔,手动执行快照后SYS.WRM$_SNAPSHOT视图中没有记录:
CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(50);
--该间隔为50分钟生成一次
4、在两个时间点分别手动创建快照,或者等待系统自动生成:
10:00时创建第一快照:
call DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
30分钟后再创建一个,10:30,
call DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
5、查询AWR快照:
SELECT * FROM SYS.WRM$_SNAPSHOT;
6、创建AWR报告,SYS.AWR_REPORT_HTML(快照ID1,快照ID2,'AWR报告存放路径','AWR报告名称.HTLM');:
SYS.AWR_REPORT_HTML(1,2,'C:\','AWR1.HTML');
7、关闭AWR包:
call SP_INIT_AWR_SYS(0);
--由于AWR报告主要用于分析一定周期内的数据库运行情况,在使用完后建议选择关闭;
2.查看当前数据库环境下慢于5秒的SQL;
select * from (
SELECT sess_id,sql_text,datediff(ss,last_send_time,sysdate) ss,
SF_GET_SESSION_SQL(SESS_ID) fullsql
FROM V$SESSIONS WHERE STATE='ACTIVE' and sess_id <> sessid())
where ss>=1;
--ss>=1表示1秒及以上的慢SQL,可以替换成其他时间;
3.当出现死锁的情况,可以通过执行一下SQL;
select O.OBJECT_NAME ,S.SESS_ID,S.SQL_TEXT,L.ADDR,L.TRX_ID,L.LTYPE,L.LMODE,L.BLOCKED,L.TABLE_ID,L.ROW_IDX
FROM V$LOCK L,DBA_OBJECTS O,V$SESSIONS S
WHERE L.TABLE_ID=O.OBJECT_ID AND L.TRX_ID=S.TRX_ID AND L.BLOCKED=1;
--清除阻塞SQL;
SP_CLOSE_SESSION(上述查到的SESS_ID);
select * from v$instance;
SELECT * FROM (
SELECT SESS_ID,SQL_TEXT,DATEDIFF(SS,LAST_SEND_TIME,SYSDATE) SS,
SF_GET_SESSION_SQL(SESS_ID) FULLSQL
FROM V$SESSIONS WHERE STATE='ACTIVE')
WHERE SS>=100;
select user_name from v$Sessions where SESS_ID='139558996491000';
select * from v$sessions;
select 'SP_CLOSE_SESSION('''||SESS_ID||''');' from v$Sessions where state='ACTIVE';
select * from v$lock where blocked=1;
SELECT
s.sess_id sid,
s.sess_seq,
l.lmode 锁模式,
s.user_name 登录用户,
s.osname 机器名,
s.clnt_host 终端用户名,
o.object_name 被锁对象名,
s.create_time 登录数据库时间
FROM sys.v$lock l, sys.all_objects o, sys.v$sessions s
WHERE l.table_id = o.object_id
AND l.trx_id = s.trx_id
ORDER BY l.trx_id, s.sess_seq
SELECT 'SP_CLOSE_SESSION('''||SESS_ID||''');' FROM V$SESSIONS WHERE TRX_ID IN (SELECT WAIT_FOR_ID FROM V$TRXWAIT);
select * from v$sessions where state ='ACTIVE';
SELECT 'SP_CLOSE_SESSION('''||SESS_ID||''');' FROM V$SESSIONS WHERE TRX_ID IN (SELECT TRX_ID FROM V$LOCK WHERE BLOCKED=1);
select * from v$sessions where trx_id in (select wait_for_id from v$trxwait);
select * from v$trxwait;
select * from v$deadlock_history;
select O.OBJECT_NAME ,S.SESS_ID,S.SQL_TEXT,L.ADDR,L.TRX_ID,L.LTYPE,L.LMODE,L.BLOCKED,L.TABLE_ID,L.ROW_IDX
FROM V$LOCK L,DBA_OBJECTS O,V$SESSIONS S
WHERE L.TABLE_ID=O.OBJECT_ID AND L.TRX_ID=S.TRX_ID AND L.BLOCKED=1;
select user_name from v$sessions where sess_id=139547382082088;
select count(*) from v$trx;
SP_CLOSE_SESSION('139546978331000');
select 'SP_CLOSE_SESSION(`'||S.SESS_ID ||'`)'
FROM V$LOCK L,DBA_OBJECTS O,V$SESSIONS S
WHERE L.TABLE_ID=O.OBJECT_ID AND L.TRX_ID=S.TRX_ID AND L.BLOCKED=1;
select * from (
SELECT sess_id,sql_text,datediff(ss,last_send_time,sysdate) ss,
SF_GET_SESSION_SQL(SESS_ID) fullsql
FROM V$SESSIONS WHERE STATE='ACTIVE' and sess_id <> sessid())
where ss>=100;
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 wt_sql,clnt_ip,ss,wt_trxid,blk_trxid from res order by ss desc;
select name,total_size from v$database;
select
total.tablespace_name ,
round(total.MB, 2) as Total_MB,
round(total.MB - free.MB, 2) as Used_MB ,
(round((total.MB-free.MB)/total.MB, 2))*100 ||'%'"USED_RATE" ,
100-((round((total.MB-free.MB)/total.MB, 2))*100)||'%' "FREE_RATE"
from
(
select
tablespace_name,
sum(bytes) / 1024 / 1024 as MB
from
dba_free_space
group by
tablespace_name
)
free,
(
select
tablespace_name,
sum(bytes) / 1024 / 1024 as MB
from
dba_data_files
group by
tablespace_name
)
total
where
free.tablespace_name = total.tablespace_name;
alter tablespace BASE_DATA add datafile '/dmdata/DAMENG/base_data14.dbf' size 77727 autoextend on maxsize 33554431
select file_lsn,cur_lsn from v$rlog;
文章
阅读量
获赞