|
查询锁的表的方法:
(1)
SELECT O.OWNER||'.'||O.OBJECT_NAME||' ('||O.OBJECT_TYPE||')',S.SID SESSION_ID, S.SERIAL#,
DECODE(LMODE, 0, 'NONE', 1, 'NULL', 2, 'ROW-S (SS)', 3, 'ROW-X (SX)', 4, 'SHARE', 5, 'S/ROW-X (SSX)', 6, 'EXCLUSIVE',
TO_CHAR(LMODE)) MODE_HELD,
DECODE(REQUEST, 0, 'NONE', 1, 'NULL', 2, 'ROW-S (SS)', 3,'ROW-X (SX)', 4, 'SHARE', 5, 'S/ROW-X (SSX)', 6, 'EXCLUSIVE',
TO_CHAR(REQUEST)) MODE_REQUESTED,
S.TYPE LOCK_TYPE, L.ID1 LOCK_ID1, L.ID2 LOCK_ID2 FROM V$LOCK L,SYS.DBA_OBJECTS O, V$SESSION S
WHERE L.SID = S.SID AND L.ID1 = O.OBJECT_ID ;
(2)
SELECT OBJECT_NAME AS 对象名称,S.SID,S.SERIAL#,P.SPID AS 系统进程号
FROM V$LOCKED_OBJECT L , DBA_OBJECTS O , V$SESSION S , V$PROCESS P
WHERE L.OBJECT_ID=O.OBJECT_ID AND L.SESSION_ID=S.SID AND S.PADDR=P.ADDR;
耗时SQL追踪:
SELECT T.USERNAME,T.SID,T.OPNAME,
ROUND(T.SOFAR*100 / T.TOTALWORK,0) || '%' AS PROGRESS,
T.TIME_REMAINING,R.SQL_TEXT,T.TARGET,T.START_TIME,T.LAST_UPDATE_TIME
FROM V$SESSION_LONGOPS T, V$SQL R
WHERE T.SQL_ADDRESS = R.ADDRESS
AND T.SQL_HASH_VALUE = R.HASH_VALUE
解锁:
ALTER SYSTEM KILL SESSION 'SID,SERIR#';
获取链接情况:
SELECT * FROM DBA_DB_LINKS;
查看数据库字符状况:
SELECT * FROM NLS_DATABASE_PARAMETERS;
SELECT * FROM V$NLS_PARAMETERS;
查询oracle当前用户下表的字段情况:
select * from all_tables where table_name like ’%’
select * from all_tab_columns where table_name=’??’
计算一个表占用的空间的大小?
select owner,table_name,
NUM_ROWS,
BLOCKS*AAA/1024/1024 "Size M",
EMPTY_BLOCKS,
LAST_ANALYZED
from dba_tables
where table_name=’XXX’;
***Here: AAA is the value of db_block_size ;
XXX is the table name you want to check
如何查看最大会话数?
SELECT * FROM V$PARAMETER WHERE NAME LIKE ’proc%’;
怎幺获取有哪些用户在使用数据库
select username from v$session;
怎样解除PROCEDURE被意外锁定?
alter system kill session ,把那个session给杀掉,不过你要先查出她的session id
or 把该过程重新改个名字就可以了。
监控当前数据库的用户在运行什幺SQL语句:
SELECT OSUSER, USERNAME, SQL_TEXT FROM V$SESSION A, V$SQLTEXT B
WHERE A.SQL_ADDRESS =B.ADDRESS ORDER BY ADDRESS, PIECE;
--耗资源的进程SQL
SELECT USERNAME,SID,OPNAME,
ROUND(SOFAR*100 / TOTALWORK,0) || '%' AS PROGRESS,
TIME_REMAINING,SQL_TEXT,TARGET,START_TIME,LAST_UPDATE_TIME
FROM V$SESSION_LONGOPS , V$SQL
WHERE SQL_ADDRESS = ADDRESS
AND SQL_HASH_VALUE = HASH_VALUE
------------------------------------------------------------
----正在运行的JOB相关信息
SELECT SID, R.JOB, LOG_USER, R.THIS_DATE, R.THIS_SEC FROM DBA_JOBS_RUNNING R, DBA_JOBS J WHERE R.JOB = J.JOB;
----查看还没提交的事务
SELECT * FROM V$LOCKED_OBJECT;
SELECT * FROM V$TRANSACTION;
---/*查看等待(WAIT)情况 */
SELECT V$WAITSTAT.CLASS, V$WAITSTAT.COUNT COUNT, SUM(V$SYSSTAT.VALUE) SUM_VALUE
FROM V$WAITSTAT, V$SYSSTAT WHERE V$SYSSTAT.NAME IN ('DB BLOCK GETS',
'CONSISTENT GETS') GROUP BY V$WAITSTAT.CLASS, V$WAITSTAT.COUNT
--按数据库表文件来查看表数据文件使用情况
SELECT B.FILE_ID 文件ID,
B.TABLESPACE_NAME 表空间,
B.FILE_NAME 物理文件名,
B.BYTES/(1024*1024) 总存储_M,
(B.BYTES-SUM(NVL(A.BYTES,0)))/(1024*1024) 已使用_M,
SUM(NVL(A.BYTES,0))/(1024*1024) 剩余_M,
SUM(NVL(A.BYTES,0))/(B.BYTES)*100 剩余百分比
FROM DBA_FREE_SPACE A,DBA_DATA_FILES B
WHERE A.FILE_ID=B.FILE_ID
GROUP BY B.TABLESPACE_NAME,B.FILE_NAME,B.FILE_ID,B.BYTES
ORDER BY B.TABLESPACE_NAME,B.FILE_NAME
--按数据库表空间名称查看表空间使用情况
SELECT
B.TABLESPACE_NAME 表空间,
sum(B.BYTES)/(1024*1024) 总存储_M,
(sum(B.BYTES)-SUM(NVL(A.BYTES,0)))/(1024*1024) 已使用_M,
SUM(NVL(A.BYTES,0))/(1024*1024) 剩余_M,
SUM(NVL(A.BYTES,0))/(sum(B.BYTES))*100 剩余百分比
FROM DBA_FREE_SPACE A,DBA_DATA_FILES B
WHERE A.FILE_ID=B.FILE_ID
GROUP BY B.TABLESPACE_NAME
ORDER BY B.TABLESPACE_NAME
--查看表空间使用情况
SELECT ROWNUM 序列,A.TABLESPACE_NAME 表空间名称,
ROUND(A.BYTES_ALLOC/1024/1024,2) 总分配容量_M,
ROUND((A.BYTES_ALLOC-NVL(B.BYTES_FREE,0))/1024/1024,2) 使用_M,
ROUND(NVL(B.BYTES_FREE,0) / 1024 / 1024, 2) 现空闲_M,
100-ROUND((NVL(B.BYTES_FREE,0) / A.BYTES_ALLOC)*100,2) 使用率,
TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') 采样时间
FROM (SELECT F.TABLESPACE_NAME,SUM(F.BYTES) BYTES_ALLOC FROM DBA_DATA_FILES F GROUP BY TABLESPACE_NAME) A,
(SELECT F.TABLESPACE_NAME,SUM(F.BYTES) BYTES_FREE FROM DBA_FREE_SPACE F GROUP BY TABLESPACE_NAME) B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME; |
|