Professional Documents
Culture Documents
exec dbms_stats.gather_table_stats(ownname=>'ASPEN',tabname=>'TEST',cascade=>true);
conn / as sysdba
oradebug setmypid
oradebug tracefile_name;
conn / as sysdba
oradebug setmypid
set autotrace on
set lines 300
alter system flush buffer_cache;
select object_id from aspen.test where object_id<50;
exit;
sqlplus / as sysdba
oradebug setmypid
oradebug tracefile_name;
sqlplus / as sysdba
oradebug setmypid
set autotrace on
set lines 300
select object_name from aspen.test where object_id<50;
oradebug tracefile_name;
exit;
sqlplus / as sysdba
alter system flush buffer_cache;
oradebug tracefile_name;
2、如果表的块数小于_small_table_threshold
create table aspen.test3 as select * from dba_objects where object_id<1000;
oradebug setmypid
oradebug tracefile_name;
commit;
commit;
insert into aspen.test select * from dba_objects where rownum<2;
commit;
oradebug tracefile_name;
commit;
oradebug tracefile_name;
commit;
oradebug tracefile_name;
session 1:
select distinct sid from v$mystat;
begin
for i in 1..10000 loop
update aspen.testbbw set vname='BUSY' where vid=1;
commit;
end loop;
end;
/
session 2:
select distinct sid from v$mystat;
begin
for i in 1..10000 loop
update aspen.testbbw set vname='WAIT' where vid=2;
commit;
end loop;
end;
/
1.表热块争用
cat test_cbc.sh
#!/bin/ksh
for ((i=1; i<=50; ))
do
sqlplus aspen/aspen << EOF
alter system flush buffer_cache;
select distinct a.object_name,b.num_rows from aspen.test a ,aspen.test2 b where
a.object_name=b.table_name and a.object_id<50;
exit
EOF
((i++))
done
dbms_workload_repository.create_snapshot();
dbms_workload_repository.create_snapshot();
cat test_sharepool.sh
#!/bin/ksh
for ((i=1; i<=50; ))
do
$id=$1+$i
sqlplus aspen/aspen << EOF
select count(*) from test where object_id=$id;
exit
EOF
((i++))
done
exec dbms_workload_repository.create_snapshot();
sqlplus aspen/aspen
session 1:
DELETE test_tm_pri WHERE pri_id = 1;
session 2:
DELETE test_tm_pri WHERE pri_id = 2;
---查找外键未创建索引
SELECT * FROM (
SELECT c.table_name, cc.column_name, cc.position column_position
FROM user_constraints c, user_cons_columns cc
WHERE c.constraint_name = cc.constraint_name
AND c.constraint_type = 'R'
MINUS
SELECT i.table_name, ic.column_name, ic.column_position
FROM user_indexes i, user_ind_columns ic
WHERE i.index_name = ic.index_name
)
ORDER BY table_name, column_position;
sqlplus aspen/aspen
session 1:
DELETE test WHERE object_id = 50;
session 2:
DELETE test WHERE object_id = 50;
conn aspen/aspen
declare
v_job pls_integer;
begin
for i in 1..100 loop
dbms_job.submit(v_job,what => 'proc_arg;',next_date => to_date('2022-04-28
08:52:00','yyyy-mm-dd hh24:mi:ss'),interval=>'sysdate+1');
commit;
end loop;
end;
/
conn aspen/aspen
create table test_itl (vid int,vname varchar2(2000)) initrans 1 pctfree 0;
insert into test_itl select object_id,lpad(object_name,2000,'x') from dba_objects
where rownum<50;
commit;
并发修改同一个数据库上的数据
session 1:
session 2:
session 3:
session 4:
session 5:
select sql_id, event,p1,p2,p3 from v$session where username='ASPEN' ;
session 1:
declare
nextval int;
begin
for i in 1..1000000 loop
execute immediate 'select seq_id.nextval from dual' into nextval;
end loop;
end;
/
session 2:
declare
nextval int;
begin
for i in 1..1000000 loop
execute immediate 'select seq_id.nextval from dual' into nextval;
end loop;
end;
/
session 3: