Advertisement
Guest User

Untitled

a guest
May 17th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.16 KB | None | 0 0
  1.  
  2.  
  3. Zadanie. 1
  4. Na DB1
  5.  
  6. CREATE SHARED PUBLIC DATABASE LINK db2
  7. CONNECT TO c##rbd IDENTIFIED BY ORA12iiuph
  8. AUTHENTICATED BY c##rbd IDENTIFIED BY ORA12iiuph
  9. USING 'ORA01';
  10.  
  11. CREATE SHARED PUBLIC DATABASE LINK db3
  12. CONNECT TO c##rbd IDENTIFIED BY ORA12iiuph
  13. AUTHENTICATED BY c##rbd IDENTIFIED BY ORA12iiuph
  14. USING 'ORA02';
  15.  
  16. Na DB1 (globalny)
  17. ALTER SYSTEM SET COMMIT_POINT_STRENGTH=30 SCOPE=SPFILE;
  18.  
  19. Na DB2 (zatiwerdzania)
  20. ALTER SYSTEM SET COMMIT_POINT_STRENGTH=50 SCOPE=SPFILE;
  21.  
  22. Na DB3 (lokalny)
  23. ALTER SYSTEM SET COMMIT_POINT_STRENGTH=10 SCOPE=SPFILE;
  24.  
  25. Zadanie. 2
  26. Na wszystkich
  27. CREATE TABLE etaty(
  28. et_nazwa varchar2(20) constraint etaty_pk primary key,
  29. et_max_pensja number(8,2)
  30. );
  31.  
  32. CREATE TABLE pracownicy(
  33. pr_numer number(4) constraint pracownicy_pk primary key,
  34. pr_nazwisko varchar2(20),
  35. pr_imie varchar2(20),
  36. pr_et_nazwa varchar2(20) constraint prac_etaty_fk references etaty(et_nazwa),
  37. pr_pensja number(8,2) default 0
  38. );
  39.  
  40. CREATE INDEX prac_etaty_fk_idx ON pracownicy(pr_et_nazwa);
  41.  
  42. Na DB1
  43. CREATE TABLE oddzialy(
  44. od_numer number(4) constraint oddzialy_pk primary key,
  45. od_nazwa varchar2(50)
  46. );
  47.  
  48. Na DB2
  49. CREATE TABLE oddzialy(
  50. od_numer number(4) constraint oddzialy_pk primary key,
  51. od_nazwa varchar2(50)
  52. )
  53. PARTITION BY LIST(od_nazwa)
  54. (
  55. PARTITION odzial_prod VALUES ('Pola', 'Sady', 'Fabryki'),
  56. PARTITION odzial_sprzedaz VALUES ('Marketing', 'Handel'),
  57. PARTITION odzial_inne VALUES (DEFAULT)
  58. );
  59.  
  60. Na DB3
  61. CREATE TABLESPACE d1
  62. DATAFILE 'd1.dbf'
  63. SIZE 100M AUTOEXTEND ON NEXT 10M;
  64. CREATE TABLESPACE d2
  65. DATAFILE 'd2.dbf'
  66. SIZE 100M AUTOEXTEND ON NEXT 10M;
  67. CREATE TABLESPACE d3
  68. DATAFILE 'd3.dbf'
  69. SIZE 100M AUTOEXTEND ON NEXT 10M;
  70. CREATE TABLESPACE d4
  71. DATAFILE 'd4.dbf'
  72. SIZE 100M AUTOEXTEND ON NEXT 10M;
  73.  
  74. CREATE TABLE oddzialy(
  75. od_numer number(4) constraint oddzialy_pk primary key,
  76. od_nazwa varchar2(50)
  77. )
  78. PARTITION BY HASH(od_nazwa)
  79. (
  80. PARTITION p1 TABLESPACE d1,
  81. PARTITION p2 TABLESPACE d2,
  82. PARTITION p3 TABLESPACE d3,
  83. PARTITION p4 TABLESPACE d4
  84. );
  85.  
  86. Na wszystkich:
  87. INSERT INTO etaty VALUES ('sklepikarz', 3500);
  88. INSERT INTO etaty VALUES ('piekarz', 5000);
  89. INSERT INTO etaty VALUES ('dozorca', 3000);
  90. INSERT INTO etaty VALUES ('dyrektor', 8000);
  91. INSERT INTO etaty VALUES ('kierowca', 4000);
  92.  
  93. INSERT INTO oddzialy VALUES (1, 'Pola');
  94. INSERT INTO oddzialy VALUES (2, 'Magazyn');
  95. INSERT INTO oddzialy VALUES (3, 'Sklep');
  96. INSERT INTO oddzialy VALUES (4, 'Sady');
  97. INSERT INTO oddzialy VALUES (5, 'Fabryki');
  98. INSERT INTO oddzialy VALUES (6, 'Handel');
  99. INSERT INTO oddzialy VALUES (7, 'Marketing');
  100.  
  101.  
  102. INSERT INTO pracownicy VALUES (1, 'Kowalski', 'Jan', 'dozorca', 2000);
  103. INSERT INTO pracownicy VALUES (2, 'Gram', 'Arek', 'dyrektor', 5000);
  104. INSERT INTO pracownicy VALUES (3, 'Arbuz', 'Darek', 'kierowca', 3000);
  105. INSERT INTO pracownicy VALUES (4, 'Jablko', 'Marek', 'sklepikarz', 2500);
  106. INSERT INTO pracownicy VALUES (5, 'Ogorek', 'Czarek', 'piekarz', 4000);
  107.  
  108.  
  109. Na DB1;
  110.  
  111. DROP SYNONYM etaty_db1;
  112. DROP SYNONYM pracownicy_db1;
  113. DROP SYNONYM oddzialy_db1;
  114. DROP SYNONYM etaty_db2;
  115. DROP SYNONYM pracownicy_db2;
  116. DROP SYNONYM oddzialy_db2;
  117. DROP SYNONYM etaty_db3;
  118. DROP SYNONYM pracownicy_db3;
  119. DROP SYNONYM oddzialy_db3;
  120.  
  121. CREATE SYNONYM etaty_db1 FOR etaty;
  122. CREATE SYNONYM pracownicy_db1 FOR pracownicy;
  123. CREATE SYNONYM oddzialy_db1 FOR odzialy;
  124. CREATE SYNONYM etaty_db2 FOR etaty@db2;
  125. CREATE SYNONYM pracownicy_db2 FOR pracownicy@db2;
  126. CREATE SYNONYM oddzialy_db2 FOR odzialy@db2;
  127. CREATE SYNONYM etaty_db3 FOR etaty@db3;
  128. CREATE SYNONYM pracownicy_db3 FOR pracownicy@db3;
  129. CREATE SYNONYM oddzialy_db3 FOR odzialy@db3;
  130.  
  131.  
  132. INSERT INTO etaty_db3 VALUES ('analityk', 18210);
  133. INSERT INTO pracownicy_db3 VALUES (6, 'Dobrawy', 'Adam', 'analityk', 3000);
  134. INSERT INTO pracownicy_db3 VALUES (7, 'Dobrawy', 'Adam', 'analityk', 3000);
  135. SAVEPOINT sp_etaty;
  136. INSERT INTO oddzialy_db3 VALUES (8, 'Warszawa');
  137. INSERT INTO etaty_db2 VALUES ('programista', 13100.10);
  138. UPDATE pracownicy@db2 SET pr_pensja = pr_pensja + 350 WHERE 'pr_et_nazwa' = 'pracownicy';
  139.  
  140. COMMIT;
  141.  
  142. Grupy odświerzania można sprawdzić poprzez
  143. SELECT * FROM USER_REFRESH;
  144. Informacje o obiektach w migawkach
  145. SELECT * FROM USER_REFRESH_CHILDREN;
  146.  
  147.  
  148. Tworzenie grupy
  149. CREATE MATERIALIZED VIEW mv_etaty_db3
  150. BUILD IMMEDIATE
  151. REFRESH ON DEMAND
  152. AS
  153. SELECT * FROM etaty@db3;
  154.  
  155. CREATE MATERIALIZED VIEW mv_pracownicy_db3
  156. BUILD IMMEDIATE
  157. REFRESH ON DEMAND
  158. AS
  159. SELECT * FROM pracownicy@db3;
  160.  
  161. EXEC DBMS_REFRESH.MAKE(name => 'rg_firma2', list => 'mv_etaty_db3,mv_pracownicy_db3', next_date => sysdate + (5 / (24 * 60)), interval => 'sysdate + ( 20 / ( 24 * 60 ) )', implicit_destroy => FALSE);
  162.  
  163. CREATE MATERIALIZED VIEW mv_pracownicy_db2
  164. BUILD IMMEDIATE
  165. REFRESH ON DEMAND
  166. AS
  167. SELECT * FROM pracownicy@db2;
  168.  
  169. EXEC DBMS_REFRESH.ADD ('rg_firma2', mv_pracownicy_db2);
  170. EXEC DBMS_REFRESH.REFRESH('rg_firma2');
  171.  
  172.  
  173. INSERT INTO etaty_db3 VALUES ('Kierownik wdrozen', 18210);
  174.  
  175. CREATE VIEW v_pracownicy
  176. AS
  177. SELECT * FROM pracownicy@db3
  178. WHERE pr_et_nazwa NOT LIKE 'Kierownik wdrozen'
  179. WITH CHECK OPTION;
  180.  
  181. INSERT INTO v_pracownicy VALUES (20, 'Jarek', 'Jarek', 'analityk', 3000);
  182. INSERT INTO v_pracownicy VALUES (21, 'Jarek', 'Jarek', 'Kierownik wdrozen', 3000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement