execute DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();

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');

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);

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');

execute OUTLN_PKG.UPDATE_BY_CAT -
  (oldcat => 'DEVELOPMENT', -
   newcat => 'TEST');

create tablespace DATA_1M
datafile '/u01/oracle/VLDB/data_1m.dbf'
size 100M
extent management local uniform size 1M;

create tablespace DATA_4M
datafile '/u01/oracle/VLDB/data_4m.dbf'
size 400M
extent management local uniform size 4M;

create tablespace DATA_16M
datafile '/u01/oracle/VLDB/data_16m.dbf'
size 16000M
extent management local uniform size 16M;

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 BOOK_CAT on BOOKSHELF '||
          '(CategoryName) tablespace BOOKS_INDEX',
        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;
/

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 Address.Street from CUSTOMER;

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('Nazwisko', 
              ADDRESS_TY('Ulica','Miasto','ST',11111)));

insert into JERZY_CUSTOMERS values
(1,PERSON_TY('Nazwisko',
   Dora.ADDRESS_TY('Ulica','Miasto','ST',11111)));

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);

