You are on page 1of 4

------------------------------------------------------------------------

View Segment and Create Table in this Segments

-------------------------------------------------------------------------

show parameter def


desc dba_segments;

select segment_name,segment_type,bytes/1024 "KB"


from dba_segments
where owner='HR';

select segment_name,segment_type,bytes/1024 "KB"


from dba_segments
where owner='HR' and segment_type='TABLE';

create table hr.test


( id number(20),
ename varchar2(20));

select table_name from dba_tables


where owner='HR';

------------------------------------------------------------------

Index Segment Space Unusable Practice


-------------------------------------------------------------------

select segment_name,segment_type,bytes/1024 "KB"


from dba_segments
where owner='HR' and segment_type='INDEX';

alter index hr.LOC_COUNTRY_IX UNUSABLE;

select segment_name,segment_type,bytes/1024 "KB"


from dba_segments
where owner='HR' and segment_type='INDEX';

alter index hr.LOC_COUNTRY_IX rebuild;

select segment_name,segment_type,bytes/1024 "KB"


from dba_segments
where owner ='HR' and segment_type = 'INDEX';

---------------------------------------------------------------------
TABLESPACE AND DATAFILE Creation
---------------------------------------------------------------------
create smallfile tablespace TESTTABLE
datafile '/u01/app/oracle/oradata/ORCL/datafile/test01.dbf'
size 512M autoextend on
next 100M logging
default nocompress inmemory
online extent management local
autoallocate segment space management auto;

-----------------------------------------------------------------------
TABLESPACE SHRINK COMMAND
-----------------------------------------------------------------------
alter table hr.employees enable row movement;
ALTER TABLE hr.employees SHRINK SPACE COMPACT;
alter table hr.employees shrink space cascade;
alter table hr.employees disable row movement;

alter table hr.employees enable row movement;


alter table hr.employees modify partition prt_name shrink space cascade;
alter table hr.employees disable row movement;

alter table hr.employees enable row movement;


alter index hr.employees_idx shrink space cascade;
alter table hr.employees disable row movement;

----------------------------------------------------------------------------
PERFORMING TABLESPACE ADVISOR
----------------------------------------------------------------------------

create table hr.demo_table


as
select d.* from dba_objects d,
( select 1 from dual connect by level <= 100 ) ;

select * from hr.demo_table;

delete from hr.demo_table where mod(object_id,2) = 0;

SQL> declare
l_object_id number;
l_task_name varchar2(50) := 'TEST_TASK_1';
l_object_type varchar2(50) := upper('TABLE');
l_attr1 varchar2(50) := upper('HR');
l_attr2 varchar2(50) := upper('DEMO_TABLE');
begin
begin
DBMS_ADVISOR.delete_task(task_name => l_task_name);
exception when others then null;
end;
dbms_advisor.create_task (
advisor_name => 'Segment Advisor',
task_name => l_task_name);
dbms_advisor.create_object (
task_name => l_task_name,
object_type => l_object_type,
attr1 => l_attr1,
attr2 => l_attr2,
attr3 => NULL,
attr4 => 'null',
attr5 => NULL,
object_id => l_object_id);

dbms_advisor.set_task_parameter (
task_name => l_task_name,
parameter => 'RECOMMEND_ALL',
value => 'TRUE');

dbms_advisor.execute_task(task_name => l_task_name);


for cur_rec in (select f.impact,
o.type,
o.attr1,
o.attr2,
f.message,
f.more_info
from dba_advisor_findings f
join dba_advisor_objects o on f.object_id = o.object_
id and f.task_name = o.task_name
where f.task_name = l_task_name
order by f.impact desc)
loop
dbms_output.put_line('..');
dbms_output.put_line('Type : ' || cur_rec.type);
dbms_output.put_line('Attr1 : ' || cur_rec.attr1);
dbms_output.put_line('Attr2 : ' || cur_rec.attr2);
dbms_output.put_line('Message : ' || cur_rec.message);
dbms_output.put_line('More info : ' || cur_rec.more_info);
end loop;

dbms_advisor.delete_task(task_name => l_task_name);


end;
/

alter table hr.demo_table enable row movement;

alter table hr.demo_table shrink space cascade;

alter table hr.demo_table disable row movement;

col segment_name format a20;


select segment_name,segment_type,bytes/1024 "KB"
from dba_segments
where owner = 'HR' and segment_type = 'TABLE';

---------------------------------------------------------------
UNDO Tablespace
---------------------------------------------------------------

show parameter undo;

select * from dba_undo_extents; <-----run in in sqldeveloper and see the status of


undo tablespace

select tablespace_name,bytes/1024 " SIZE IN MB",Blocks,status


from dba_undo_extents;

You might also like