-- Move regular indexes:
select 'alter index '||owner||'.'||index_name||' rebuild tablespace &index_tbs;' from dba_indexes where owner=upper('&owner');
-- Move LOB indexes
select 'alter table '||table_name||' move LOB ('||column_name||') store as '||segment_name||' (tablespace &index_tbs);'from dba_lobs where owner=upper('&owner');
Dúvidas e procedimentos do dia a dia de um DBA. Desde anotações bem simples até procedimentos complexos.
terça-feira, 24 de julho de 2012
segunda-feira, 16 de julho de 2012
Snapshots - last refresh
Lista a data do último refresh das tabelas que são origem para uma materialized view.
A partir da origem:
select d1.mview_id,d1.owner,d1.master,d1.mview_last_refresh_time,d2.snapshot_site from dba_base_table_mviews d1,dba_registered_snapshots d2 where d1.mview_id=d2.snapshot_id;
Note que a query acima relaciona a dba_registered_snapshots, ou seja, caso o snapshot não esteja registrado, você não consegue essa informação.
Para identificar todos os snapshots não registrados da base:
A partir da origem:
select * from
(
select distinct d.log_owner, d.log_table, d.master snapname, snapid,
nvl(r.snapshot_site, 'not registered') snapsite,
snaptime,
(select count(*) from
sys.slog$ s1, dba_registered_snapshots r1, dba_snapshot_logs d1
where
d1.log_owner = s1.mowner (+)
and d1.master = s1.master (+)
and s1.snapid=r1.snapshot_id(+)
and (snaptime <= trunc(sysdate - 7) or snaptime is null)
and d.log_owner = d1.log_owner
and d.master = d1.master
and s.snapid = s1.snapid
) as total
from sys.slog$ s, dba_registered_snapshots r, dba_snapshot_logs d
where
d.log_owner = s.mowner (+)
and d.master = s.master (+)
and s.snapid=r.snapshot_id(+)
and (snaptime <= trunc(sysdate - 7) or snaptime is null)
) where total < 1;
A partir da origem:
select d1.mview_id,d1.owner,d1.master,d1.mview_last_refresh_time,d2.snapshot_site from dba_base_table_mviews d1,dba_registered_snapshots d2 where d1.mview_id=d2.snapshot_id;
Note que a query acima relaciona a dba_registered_snapshots, ou seja, caso o snapshot não esteja registrado, você não consegue essa informação.
Para identificar todos os snapshots não registrados da base:
A partir da origem:
select * from
(
select distinct d.log_owner, d.log_table, d.master snapname, snapid,
nvl(r.snapshot_site, 'not registered') snapsite,
snaptime,
(select count(*) from
sys.slog$ s1, dba_registered_snapshots r1, dba_snapshot_logs d1
where
d1.log_owner = s1.mowner (+)
and d1.master = s1.master (+)
and s1.snapid=r1.snapshot_id(+)
and (snaptime <= trunc(sysdate - 7) or snaptime is null)
and d.log_owner = d1.log_owner
and d.master = d1.master
and s.snapid = s1.snapid
) as total
from sys.slog$ s, dba_registered_snapshots r, dba_snapshot_logs d
where
d.log_owner = s.mowner (+)
and d.master = s.master (+)
and s.snapid=r.snapshot_id(+)
and (snaptime <= trunc(sysdate - 7) or snaptime is null)
) where total < 1;
Assinar:
Comentários (Atom)