a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 45|回复: 0

[综合] Oracle辅导:oracle写满磁盘空间怎么办

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
oracle的姑且表空间写满磁盘空间,解决改问题的具体轨范,以下的操作是用数据库的sys超级用户操作: Q( _! x. |8 F& {% A/ F* s$ i0 J
    刚起头筹算把姑且表空间的数据文件从头缩小就好了
2 j) V6 U! C* e$ n& L5 L  C" k    执行:- W: e9 E. ]) J3 f" W0 V, @
    SQL> alter database tempfile& A+ B8 K9 Y1 G7 t
    2 '/oracle/oms/oradata/temp/temp01.dbf' resize 10240M;
) A( D5 `9 u/ k  {  W7 l    数据库报错,从头设置的空间巨细不能知足需要。
' g/ j8 J- Y3 d! r    看来需要从头成立新的姑且表空间替代当前的表空间了7 s5 H/ f5 |8 z& A  M/ S" g; z# f/ f) H
    1、首先查看当前的数据库默认表空间:
( a% V' E8 P( u" z6 y    SQL>select * from database_properties
: F$ d) _4 I3 `7 ~# s    where property_name='DEFAULT_TEMP_TABLESPACE';& Z) X% Y0 x/ \  f1 m& t
    确认当前的姑且表空间为TEMP
5 O/ o# ^  R8 }: }& o# x    2、查看今朝姑且表空间的巨细:; m/ ~* f8 t3 _$ L4 L
    SQL>select file_name,tablespace_name,bytes/1024/1024 "MB",autoextensible from dba_temp_files;: h! g4 z8 y1 `3 w2 H2 ^: j. @, M  C
    3、建树新的姑且表空间:(先在其他的磁盘空间借用一下空间)
0 L1 E) J9 x) g7 T5 E    SQL> create temporary tablespace temp02
, z% F: ^% U  z6 T7 p* S0 u* ]/ V( |    2 tempfile '/oracle/oms/oradata/undo/temp02.dbf': P8 L6 v$ I# S) ^% }
    3 size 512M;
# i; ?& J1 Q4 \" q, s    4、把新建的姑且表空间却换成数据库的默认姑且表空间
! C/ i( e( D3 V  |9 v    SQL> alter database default temporary tablespace temp02;0 z6 y: `8 M: k' x9 P
    5、确认今朝数据库的默认姑且表空间
+ K$ h1 L  {+ l- J4 L" R  v8 v    SQL>select * from database_properties
( Y; p0 q9 w3 Q2 b; k& r4 {    where property_name='DEFAULT_TEMP_TABLESPACE';
- q0 r: F. u! J0 A, D9 Q    确认temp02为当前的数据库默认表空间
6 r/ s1 }5 G. T2 ~3 S, s    6、在删除temp姑且表空间之前,先把运行在temp姑且表空间的sql语句kill失踪,这样的sql语句多为排序的语句
7 {' R) k# o* ^, g, ]7 Y! R! ]    SQL>Select se.username,se.sid,se.serial#,su.extents,su.blocks*to_number(rtrim(p.value))as Space,
0 y$ ]1 i7 s. R2 w* N2 U: p2 F! {    tablespace,segtype,sql_text
$ o5 p% }, s* D- S& L$ m6 ]    from v$sort_usage su,v$parameter p,v$session se,v$sql s6 l) V4 F4 _0 L6 p( o
    where p.name='db_block_size' and su.session_addr=se.saddr and s.hashvalue=su.sqlhash, G3 [' ?, j2 Z, S& `, W6 ?
    and s.address=su.sqladdr$ P% p8 X/ a; d( D; R: x; }9 t5 l
    order by se.username,se.sid;, j- O, S; s+ L4 [' Q
    发芽出来之后,kill失踪这些sql语句:
4 d$ A7 a2 P' ]4 J! L" O% h+ D    SQL>alter system kill session '524,778';    (假如某一条运行的sql语句的SID为524,serial#为778), q  C$ {4 ~' |" R2 z$ s6 a" o+ J
    确认在temp姑且表空间中没有运行的sql语句之后,则可以删除temp姑且表空间数据文件了
- K& C5 J8 R: X0 P    7、删除temp姑且表空间$ K% r% o* k) X! F: N" d$ q2 U
    SQL> drop tablespace temp including contents and datafiles;; l) N2 d2 m3 s( W% Y
    这样很快就可以删除了姑且表空间的数据文件
$ L+ @: s' C# v, O: }% x    8、此刻temp02姑且表空寄占有了别人的磁盘空间,需要从头把姑且表空间成立在原本的位置,从头成立temp姑且表空间
9 z8 i- O8 s; [* |8 B0 C    SQL> create temporary tablespace temp
# g8 g. ~8 s1 H/ A, X4 l    2 tempfile '/oracle/oms/oradata/temp/temp01.dbf'
0 t: O7 h4 F/ _6 Y    3 size 512M autoextend class=Apple-style-span>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-15 05:08 , Processed in 0.913313 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表