ITPub博客

首页 > Linux操作系统 > Linux操作系统 > undo表空间管理

undo表空间管理

原创 Linux操作系统 作者:xccfeng 时间:2013-11-12 08:42:53 0 删除 编辑
--1 查看undo的表空间大小和最大值
select   t.file_name,t.tablespace_name,
t.bytes/1024/1024/1024 "GB",  t.maxbytes/1024/1024/1024   "Max GB"
 from     dba_data_files     t     where    t.tablespace_name='UNDOTBS1'
 
 --数据文件为:/u01/oracle/oradata/gcdb/undotbs01.dbf
 
 --2 创建一个新的undo表空间,用来替换原来的undo表空间
create      undo     tablespace    UNDOTBS2
datafile     '/u01/oracle/oradata/gcdb/undotbs02.dbf'
size    500M    autoextend     on    maxsize    unlimited;
--3 把新的undo表空间设置成数据库的undo表空间
alter database datafile '/u01/oracle/oradata/gcdb/undotbs01.dbf' resize 3000M
alter     system     set undo_tablespace=UNDOTBS2     scope=both;
--4 再次验证数据库的undo表空间
 show     parameter     undo_tablespace
--5 等待原UNDO表空间UNDOTBS1 is OFFLINE;
 
 SELECT    r.status    "Status",
r.segment_name    "Name",
r.tablespace_name     "Tablespace",
s.extents     "Extents",
TO_CHAR((s.bytes/1024/1024),'99999990.000')     "Size"
FROM     sys.dba_rollback_segs      r, sys.dba_segments    s
WHERE        r.segment_name = s.segment_name
AND       s.segment_type IN ('ROLLBACK', 'TYPE2 UNDO')
and       r.tablespace_name='UNDOTBS2'      and       status='ONLINE'


--如果上面有状态online的对象,可以查询具体对象的sid,serial#
--5.1 查看当前是什么在使用这个回滚段
 SELECT     r.NAME,s.sid,s.serial# Serial,
s.username ,s.machine ,
t.start_time,t.status ,
t.used_ublk ,
substr(s.program, 1, 15)    "operate"
FROM      v$session    s, v$transaction    t, v$rollname    r,v$rollstat    g
WHERE      t.addr = s.taddr
AND      t.xidusn = r.usn
AND     r.usn = g.usn
ORDER     BY     t.used_ublk desc;
--比如:对象为:sid  474,serial  6794
--5.2 根据sid查出具体的sql
_SYSSMU3$ 432 55049 YC2 ibm03
_SYSSMU7$ 460 24311 YC2 ibm002
_SYSSMU15$ 403 17688 YC2 WORKGROUP\IBM01
_SYSSMU22$ 516 30224 YC2 ibm03
_SYSSMU9$ 500 2681 YC2 ibm03


select object_name,machine,s.sid,s.serial# 
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid; 




select s.SID,spid, osuser, s.program 
from v$session s,v$process p
where s.paddr=p.addr and s.sid
 in (432,460,500,403,516)


500 23821 tzgc JDBC Thin Client
432 23789 tzgc JDBC Thin Client
516 7876 tzgc JDBC Thin Client
460 7886 tzgc JDBC Thin Client
403 26303 NETWORK?SERVICE w3wp.exe




select     sql_text    from     v$session a,v$sqltext_with_newlines     b
  where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value)=b.hash_value
  and      a.sid=&sid    order     by     piece
如果该sql不重要,可以直接kill该会话。
 
 在OS上杀死这个进程(线程):
1)在unix上,用root身份执行命令: 
#kill -9 12345(即第3步查询出的spid)
2)在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:
orakill sid thread
其中:
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即第3步查询出的spid。
例:c:>orakill orcl 12345 


--5.3  kill session
alter system kill session '403,17688';
alter system kill session '460,24311';
alter system kill session '516,30224';
alter system kill session '500,2681';
alter system kill session '463,28426';
alter system kill session '552,55240';
alter system kill session '488,31712';
 --5.4  删除原undo表空间及其系统的数据问题
drop tablespace UNDOTBS1 including contents and datafiles;


(在AIX系统中,虽然已经删除了系统所对应的undo表空间的数据文件,但用df -g查看,该系统空间不能释放。
主要是由于Oracle的一个进程在访问该文件。可以kill Oracle访问进程,或者重启数据库后,即可释放系统的空间。)
 
 
 --6新建立UNDOTBS1表空间
create   undo   tablespace    UNDOTBS1
datafile  '/u01/oracle/oradata/gcdb/undotbs01.dbf' 
size 3000M  REUSE autoextend  on  maxsize unlimited ;
 
--7切换回UNTOTBS1
alter system set undo_tablespace=UNDOTBS1 scope=both;
--8 等待UNDO表空间UNDOTBS2 is OFFLINE;
 SELECT r.status "Status",
r.segment_name "Name",
r.tablespace_name "Tablespace",
s.extents "Extents",
TO_CHAR((s.bytes/1024/1024),'99999990.000') "Size"
FROM sys.dba_rollback_segs r, sys.dba_segments s
WHERE r.segment_name = s.segment_name
AND s.segment_type IN ('ROLLBACK', 'TYPE2 UNDO')
and r.tablespace_name='UNDOTBS2'
ORDER BY 5 DESC;
--9 删除
drop    tablespace     UNDOTBS2    including    contents    and     datafiles;






来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28588485/viewspace-776355/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-02-25

  • 博文量
    56
  • 访问量
    231933