CREATE_PLAN
    (plan                       IN VARCHAR2,
     comment                    IN VARCHAR2,
     cpu_mth                    IN VARCHAR2 DEFAULT 'EMPHASIS',
     active_sess_pool_mth       IN VARCHAR2 DEFAULT
'ACTIVE_SESS_POOL_ABSOLUTE',
     parallel_degree_limit_mth  IN VARCHAR2 DEFAULT
            'PARALLEL_DEGREE_LIMIT_ABSOLUTE',
     queueing_mth               IN VARCHAR2 DEFAULT 'FIFO_TIMEOUT')


execute DBMS_RESOURCE_MANAGER.CREATE_PLAN -
(Plan => 'PROGRAMISCI', -
Comment => 'Programici, w rozwojowej bazie danych');



execute DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SYSTEM_PRIVILEGE -
  (grantee_name => 'Marta', -
   privilege_name => 'ADMINISTER_RESOURCE_MANAGER', -
   admin_option => TRUE);


CREATE_CONSUMER_GROUP
(consumer_group IN VARCHAR2,
comment         IN VARCHAR2,
cpu_mth         IN VARCHAR2 DEFAULT 'ROUND-ROBIN')


execute DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP -
  (Consumer_Group => 'Programisci_Online', -
   Comment => 'Programici online');

execute DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP -
  (Consumer_Group => 'Programisci_Wsadowi', -
   Comment => 'Programici wsadowi');


CREATE_PLAN_DIRECTIVE
    (plan                     IN VARCHAR2,
     group_or_subplan         IN VARCHAR2,
     comment                  IN VARCHAR2,
     cpu_p1                   IN NUMBER DEFAULT NULL,
     cpu_p2                   IN NUMBER DEFAULT NULL,
     cpu_p3                   IN NUMBER DEFAULT NULL,
     cpu_p4                   IN NUMBER DEFAULT NULL,
     cpu_p5                   IN NUMBER DEFAULT NULL,
     cpu_p6                   IN NUMBER DEFAULT NULL,
     cpu_p7                   IN NUMBER DEFAULT NULL,
     cpu_p8                   IN NUMBER DEFAULT NULL,
     active_sess_pool_p1      IN NUMBER DEFAULT UNLIMITED,
     queueing_p1              IN NUMBER DEFAULT UNLIMITED,
     parallel_degree_limit_p1 IN NUMBER DEFAULT NULL,
     switch_group             IN VARCHAR2 DEFAULT NULL,
     switch_time              IN NUMBER DEFAULT UNLIMITED,
     switch_estimate          IN BOOLEAN DEFAULT FALSE,
     max_est_exec_time        IN NUMBER DEFAULT UNLIMITED,
     undo_pool                IN NUMBER DEFAULT UNLIMITED,
     max_idle_time            IN NUMBER DEFAULT NULL,
     max_idle_time_blocker    IN NUMBER DEFAULT NULL,
     switch_time_in_call      IN NUMBER DEFAULT NULL);


execute DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE -
  (Plan => 'PROGRAMISCI', -
   Group_or_subplan => 'PROGRAMISCI_ONLINE', -
   Comment => 'programici online', -
   Cpu_p1 => 75, -
   Cpu_p2=> 0, -
   Parallel_degree_limit_p1 => 12);

execute DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE -
  (Plan => 'PROGRAMISCI', -
   Group_or_subplan => 'PROGRAMISCI_WSADOWI', -
   Comment => 'programici wsadowi', -
   Cpu_p1 => 25, -
   Cpu_p2 => 0, -
   Parallel_degree_limit_p1 => 6);


SET_INITIAL_CONSUMER_GROUP
  (user IN VARCHAR2,
   consumer_group IN VARCHAR2)


alter system set initial_consumer_group = 'UZYTKOWNICY_DZIENNI';

alter system set initial_consumer_group = 'UZYTKOWNICY_WSADOWI';

execute DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
execute DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();


create outline YTD_SALES
for category DEVELOPMENT
on
select Year_to_Date_Sales
from SALES
where region = 'SOUTH'
and period = 1;


alter outline YTD_SALES rebuild;

alter outline YTD_SALES rename to YTD_SALES_REGION;

alter outline YTD_SALES_REGION change category to DEFAULT;

execute DBMS_OUTLN.DROP_UNUSED;

execute DBMS_OUTLN.CLEAR_USED('YTD_SALES_REGION');

execute DBMS_OUTLN.DROP_BY_CAT('DEVELOPMENT');

create tablespace users12
   datafile '+DATA' size 100m
   extent management local autoallocate;


declare
    calc_used_bytes NUMBER;
    calc_alloc_bytes NUMBER;
begin
    DBMS_SPACE.CREATE_TABLE_COST (
        tablespace_name => 'USERS',
        avg_row_size => 100,
        row_count => 5000,
        pct_free => 10,
        used_bytes => calc_used_bytes,
        alloc_bytes => calc_alloc_bytes
    );
    DBMS_OUTPUT.PUT_LINE('Liczba uywanych bajtw: '||calc_used_bytes);
    DBMS_OUTPUT.PUT_LINE('Liczba alokowanych bajtw: '||calc_alloc_bytes);
end;
/


declare
    calc_used_bytes NUMBER;
    calc_alloc_bytes NUMBER;
begin
   DBMS_SPACE.CREATE_INDEX_COST (
      ddl => 'create index EMP_FN on EMPLOYEES '||
        '(FIRST_NAME) tablespace USERS',
       used_bytes => calc_used_bytes,
      alloc_bytes => calc_alloc_bytes
   );
   DBMS_OUTPUT.PUT_LINE('Used bytes = '||calc_used_bytes);
   DBMS_OUTPUT.PUT_LINE('Allocated bytes = '||calc_alloc_bytes);
end;
/


analyze table employees list chained rows;

create global temporary table MY_TEMP_TABLE
  (Name VARCHAR2(25),
   Street VARCHAR2(25),
   City VARCHAR2(25))
on commit delete rows;


create type ADDRESS_TY as object
(Street VARCHAR2(50),
City VARCHAR2(25),
State CHAR(2),
Zip NUMBER);
/


create table CUSTOMER
(Name VARCHAR2(25),
Address ADDRESS_TY);


insert into CUSTOMER values
('Jan',ADDRESS_TY('Moja ulica', 'Moje miasto', 'ST', 10001));


create table CUSTOMER
(Name VARCHAR2(25),
Address ADDRESS_TY);


select Address.Street from CUSTOMER;

select C.Address.Street from CUSTOMER C;

create table CUSTOMER
(Name VARCHAR2(25) primary key,
 Street VARCHAR2(50),
 City VARCHAR2(25),
 State CHAR(2),
 Zip NUMBER);


create view CUSTOMER_OV (Name, Address) as
select Name,
       ADDRESS_TY(Street, City, State, Zip)
from CUSTOMER;


create or replace type CUSTOMER_TY as object
(Name VARCHAR2(25),
 Street VARCHAR2(50),
 City VARCHAR2(25),
 State CHAR(2),
 Zip NUMBER);


create view CUSTOMER_OV of CUSTOMER_TY
  with object identifier (Name) as
select Name, Street, City, State, Zip
  from CUSTOMER;


create table CUSTOMER_CALL
(Name VARCHAR2(25),
 Call_Number NUMBER,
 Call_Date DATE,
 constraint CUSTOMER_CALL_PK
    primary key (Name, Call_Number),
 constraint CUSTOMER_CALL_FK foreign key (Name)
   references CUSTOMER(Name));


create view CUSTOMER_CALL_OV as
select MAKE_REF(CUSTOMER_OV, Name) Name,
       Call_Number,
       Call_Date
from CUSTOMER_CALL;


select DEREF(CCOV.Name)
  from CUSTOMER_CALL_OV CCOV
 where Call_Date = TRUNC(SysDate);


create type PERSON_TY as object
(Name VARCHAR2(25),
 Address ADDRESS_TY);
/


grant EXECUTE on ADDRESS_TY to Jerzy;

create or replace type PERSON_TY as object
(Name VARCHAR2(25),
 Address Dora.ADDRESS_TY);
/


create table JERZY_CUSTOMERS
(Customer_ID NUMBER,
 Person PERSON_TY);


insert into JERZY_CUSTOMERS values
(1,PERSON_TY('Jan Kowalski', 
              ADDRESS_TY('Polna 10','Zakopane','MA',30502)));


insert into JERZY_CUSTOMERS values
(1,PERSON_TY('Jan Kowalski',
   Dora.ADDRESS_TY('Polna 10','Zakopane','MA',30502)));


create public synonym pub_address_ty for address_ty;
grant execute on address_ty to public;


create or replace type person_ty as object
     (name     varchar2(25),
      address  pub_address_ty);


create table JERZY_CUSTOMERS
(Customer_ID NUMBER,
 Person PERSON_TY);


select C.Customer_ID, C.Person.Name
  from JERZY_CUSTOMERS C;


select C.Person.Name,
       C.Person.Address.City
  from JERZY_CUSTOMERS C
where C.Person.Address.City like 'C%';


create index I_JERZY_CUSTOMERS_CITY
on JERZY_CUSTOMERS(Person.Address.City);


alter system quiesce restricted;

select Active_State from V$INSTANCE;

alter system unquiesce;

alter system suspend;

select Database_Status from V$INSTANCE;

alter system resume;

alter table TABLE1 drop column Col2;

alter table TABLE1 set unused column Col3;

alter table TABLE1 drop unused columns;

alter table TABLE1 drop (Col4, Col5);

