Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Empty Tablespaces / 10 сообщений из 10, страница 1 из 1
05.02.2003, 16:12
    #32101697
Bardis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Empty Tablespaces
Vot uzh ne dumal, chto opredelit pustyje TS v bolshoj base budet tak slozhno.

elementarnyj Statement:

select tablespace_name from dba_tablespaces
where tablespace_name not in
(select distinct tablespace_name
from dba_segments);

imejet Plan na 1000 Strok i dlitsya na BD s 17000 Segmentov bolshe 20 Min,
prichinyaja 16000000 consistent gets.

Peredelal na PL/SQL:

declare
v_tsname varchar2(30);
v_tssize integer;
v_tsfree integer;
v_tsfpct integer;
v_tsstot integer := 0;
v_tsftot integer := 0;
v_string varchar2(79);
v_empty integer;
cursor c1 is
select tablespace_name,round(sum(bytes)/1024/1024,2) tssize
from dba_data_files
group by tablespace_name;
cursor c2 is
select distinct name
from ts$ t,seg$ s
where t.ts#=s.ts#;
cursor c3 is
select round(sum(bytes)/1024/1024,2) tsfree
from dba_free_space
where tablespace_name = v_tsname;
begin
dbms_output.enable(50000);
v_string := rpad('Tablespace',30)||lpad('Size (Mb)',12)||lpad('Free (Mb)',12)||lpad('Pct free',10);
dbms_output.put_line(v_string);
for i1 in c1 loop
v_tsname:=i1.tablespace_name;
v_tssize := i1.tssize;
v_empty:=1;
for i2 in c2 loop
if i2.name=v_tsname then
v_empty:=0;
end if;
end loop;
if v_empty=1 then
v_tsstot := v_tsstot + v_tssize;
for i3 in c3 loop
v_tsfree := i3.tsfree;
v_tsftot := v_tsftot + v_tsfree;
v_tsfpct := round(v_tsfree * 100 / v_tssize,0);
v_string := rpad(v_tsname,30)||lpad(v_tssize,12)||lpad(v_tsfree,12)||lpad(v_tsfpct,10);
dbms_output.put_line(v_string);
end loop;
end if;
end loop;
v_string := rpad('-',30,'-')||' '||lpad('-',11,'-')||' '||lpad('-',11,'-')||' '||lpad('-',9,'-');
dbms_output.put_line(v_string);
v_tsfpct := round(v_tsftot * 100 / v_tsstot,0);
v_string := rpad('Total',30)||lpad(v_tsstot,12)||lpad(v_tsftot,12)||lpad(v_tsfpct,10);
dbms_output.put_line(v_string);
v_string := chr(10);
dbms_output.put_line(v_string);
end;
effekt totzhe.

Hotel chtoby bylo krasivo, a poluchilos kak vsegda!:((

Mozh pomozhet kto, lyudi dobryje!!!
...
Рейтинг: 0 / 0
05.02.2003, 16:49
    #32101744
D_A
D_A
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Empty Tablespaces
так вроде быстрее:
Код: plaintext
1.
2.
3.
4.
5.
6.
select tablespace_name from dba_tablespaces
minus
select tablespace_name from dba_tablespaces t
 where exists (
     select  1  from dba_segments s
     where s.tablespace_name = t.tablespace_name )
...
Рейтинг: 0 / 0
05.02.2003, 18:10
    #32101837
Bardis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Empty Tablespaces
k sozhaleniju i

select tablespace_name from dba_tablespaces t
2 where not exists (
3 select 1 from dba_segments s
4* where s.tablespace_name = t.tablespace_name )

dlitsya bolshe 15 minut.

Dolzhen byt gde-to drugoj vychod.
...
Рейтинг: 0 / 0
05.02.2003, 18:40
    #32101861
ShgGena
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Empty Tablespaces
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> select t.tablespace_name
from dba_tablespaces t
minus
select distinct tablespace_name
from dba_segments s
/

TABLESPACE_NAME
 ------------------------------
 
OEM_REPOZITARY
...
Рейтинг: 0 / 0
05.02.2003, 20:20
    #32101903
.dba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Empty Tablespaces
ну, кто лучше?

вот мой вариант:
Код: plaintext
1.
2.
3.
4.
select  /*+ rule */  t.NAME
from sys.ts$ t
where not exists (select  1  
	  	from sys.seg$ s 
		where t.TS# = s.TS#)
...
Рейтинг: 0 / 0
06.02.2003, 13:05
    #32102218
Bardis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Empty Tablespaces
Variant konechmo luchshij, no resultaty zaprosov ne sovpadajut.
...
Рейтинг: 0 / 0
06.02.2003, 13:19
    #32102226
Bardis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Empty Tablespaces
obschem rodil krokodila :-).
Kto zhelajet polzujtes. Spasibo za pomosch.

set pause off
set echo off
set termout on
prompt
prompt sel_ts_empty.sql
prompt
prompt Script lists the empty tablespaces.
prompt
define spoolfile = sel_ts_empty.lst
set pages 50000
set linesize 79
set heading on
set verify off
set feedback off
set serveroutput on
spool &&spoolfile
declare
v_tsname varchar2(30);
v_tssize integer;
v_tsfree integer;
v_tsfpct integer;
v_tsstot integer := 0;
v_tsftot integer := 0;
v_string varchar2(79);
cursor c1 is
select tablespace_name,round(sum(bytes)/1024/1024,2) tssize
from dba_data_files
where tablespace_name in (
select tablespace_name from dba_tablespaces
minus
select tablespace_name from dba_tablespaces t
where exists (
select 1 from dba_segments s
where s.tablespace_name = t.tablespace_name )
)
group by tablespace_name;
cursor c2 is
select round(sum(bytes)/1024/1024,2) tsfree
from dba_free_space
where tablespace_name = v_tsname;
begin
dbms_output.enable(50000);
v_string := rpad('Tablespace',30)||lpad('Size (Mb)',12)||lpad('Free (Mb)',12)||lpad('Pct

free',10);
dbms_output.put_line(v_string);
v_string := rpad('-',30,'-')||' '||lpad('-',11,'-')||' '||lpad('-',11,'-')||' '||lpad('-',9,'-');
dbms_output.put_line(v_string);
for i1 in c1 loop
v_tsname := i1.tablespace_name;
v_tssize := i1.tssize;
v_tsstot := v_tsstot + v_tssize;
for i2 in c2 loop
v_tsfree := i2.tsfree;
v_tsftot := v_tsftot + v_tsfree;
v_tsfpct := round(v_tsfree * 100 / v_tssize,0);
v_string := rpad(v_tsname,30)||lpad(v_tssize,12)||lpad(v_tsfree,12)||lpad(v_tsfpct,10);
dbms_output.put_line(v_string);
end loop;
end loop;
v_string := rpad('-',30,'-')||' '||lpad('-',11,'-')||' '||lpad('-',11,'-')||' '||lpad('-',9,'-');
dbms_output.put_line(v_string);
v_tsfpct := round(v_tsftot * 100 / v_tsstot,0);
v_string := rpad('Total',30)||lpad(v_tsstot,12)||lpad(v_tsftot,12)||lpad(v_tsfpct,10);
dbms_output.put_line(v_string);
v_string := chr(10);
dbms_output.put_line(v_string);
end;
/
spool off
clear breaks
clear computes
set pages 60
set verify on
set feedback on
prompt
prompt Output is spooled to &&spoolfile
prompt
undef spoolfile
...
Рейтинг: 0 / 0
06.02.2003, 14:28
    #32102303
.dba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Empty Tablespaces
>Variant konechmo luchshij, no resultaty zaprosov ne sovpadajut.

А что именно не совпадает?
...
Рейтинг: 0 / 0
06.02.2003, 18:18
    #32102592
Bardis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Empty Tablespaces
ne sovpadajet kollichestbo empty tablespaces. Pochozhe chto seg$ mozhet soderzhat segmenty allokirovanyje v uzhe ne suschstvujuschich tablespasah.
...
Рейтинг: 0 / 0
06.02.2003, 18:24
    #32102597
ShgGena
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Empty Tablespaces
Nesovpadaut iz-za znacheniya polya online$ = 3 v TS$ --> ono oznachaet, cho TS udalena

dlya sovpadeniya nuzno:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select  /*+ rule */  t.NAME
from sys.ts$ t
where not exists (select  1  
                           from sys.seg$ s 
                           where t.TS# = s.TS#)
and
t.online$ <>  3 ;

raznica megdu 2 zaprosami:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
SQL> select  /*+ rule */  t.NAME
from sys.ts$ t
where not exists (select  1 
                           from sys.seg$ s
                           where t.TS# = s.TS#)
and
t.online$ <>  3 ;

NAME
 ------------------------------
 
TOOLS
BERNIES_TEMP
TBERNIES_TEMP
TEMP

Elapsed:  00 : 00 : 00 . 16 
SQL> select  /*+ rule */  t.NAME
from sys.ts$ t
where not exists (select  1 
                           from sys.seg$ s
                           where t.TS# = s.TS#)
;
NAME
 ------------------------------
 
TOOLS
bernies_index
BERNIES_TEMP
tbernies_data
tbernies_index
tbernies_temp
TBERNIES_TEMP
TEMP

 8  rows selected.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Empty Tablespaces / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]