-
怎么查看锁定表的会话?
-
使用pl/sql时,使用tools > sessions窗口,点击列表中的会话,查看Locks标签页内容,确认会话锁定的表。
-
使用其他工具时,执行如下sql:
SELECT A.OWNER, --OBJECT所属用户 A.OBJECT_NAME, --OBJECT名称(表名) B.XIDUSN, B.XIDSLOT, B.XIDSQN, B.SESSION_ID, --锁表用户的session B.ORACLE_USERNAME, --锁表用户的Oracle用户名 B.OS_USER_NAME, --锁表用户的操作系统登陆用户名 B.PROCESS, B.LOCKED_MODE, C.MACHINE, --锁表用户的计算机名称(例如:WORKGROUP\UserName) C.STATUS, --锁表状态 C.SERVER, C.SID, C.SERIAL#, C.PROGRAM --锁表用户所用的数据库管理工具(例如:ob9.exe) FROM ALL_OBJECTS A, V$LOCKED_OBJECT B, SYS.GV_$SESSION C WHERE A.OBJECT_ID = B.OBJECT_ID AND B.PROCESS = C.PROCESS;
-
-
怎么关闭会话?
-
直接在pl/sql的sessions窗口执行关闭操作;
-
alter system kill session 'sid, serial#';
-
在上述两种方法无效的情况下,在linux服务器执行:
kill -9 process;
-
-
怎么确定表碎片大小和清理碎片?
-
确定表记录数量和表列数,预估可能占用的空间;
-
执行下列语句:
select sum(bytes)/1024/1024 mb from dba_segments where segment_name ='TABLE_NAME';
-
如查询结果与预估的差距过大,可以执行下列sql:
alter table TABLE_NAME move;
-
-
怎么确定表空间大小?
-
执行下列语句:
SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space FROM dba_data_files ORDER BY tablespace_name;
-
-
怎么确定表空间使用情况?
-
执行下列语句:
SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name FROM dba_free_space GROUP BY tablespace_name; SELECT a.tablespace_name, a.bytes total, b.bytes used, c.bytes free, (b.bytes * 100) / a.bytes "% USED ", (c.bytes * 100) / a.bytes "% FREE " FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c WHERE a.tablespace_name = b.tablespace_name AND a.tablespace_name = c.tablespace_name;
-
-
怎么清理表记录的同时释放表空间?
-
alter table table_name move;
-
drop table table_name drop storage;
-
Oracle 使用总结
最新推荐文章于 2022-06-14 16:47:37 发布