forked from xtender/xt_scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdump_table_block_by_predicates.sql
44 lines (37 loc) · 1.11 KB
/
dump_table_block_by_predicates.sql
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
37
38
39
40
41
42
43
accept TABLE_NAME prompt "Table name: ";
accept PREDICATES prompt "Predicates[1=1]: " default '1=1';
set head off;
spool dump.tmp
with blocks as (
select distinct
dbms_rowid.rowid_relative_fno(t.rowid) file_id
, dbms_rowid.rowid_block_number(t.rowid) block
from &TABLE_NAME t
where &PREDICATES
)
select
'alter system dump datafile '||to_char(b.file_id,'TM9')
||' block '||to_char(b.block)||';' cmd
from blocks b;
spool off;
prompt Dump commands were saved to dump.tmp;
accept _tmp prompt "Do you want to execute it? [Y/n]: " default 'n';
col scr new_val _scr noprint;
select case when upper('&_tmp')='Y' then 'dump.tmp' else 'inc/null.sql' end as scr
from dual;
@&_scr;
col tracefile_name for a120;
select
'Now you have to reconnect. Dump saved into: '||chr(10)
||(SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File')
as tracefile_name
from dual
where upper('&_tmp')='Y';
col scr clear;
col tracefile_name clear;
undef _scr;
undef TABLE_NAME;
undef PREDICATES;
alter session set tracefile_identifier=CLEANUP;
alter session set tracefile_identifier=new;
set head on;