home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 February / PCWK0296.iso / po7_win / db / rdbms71 / catdefer.sql < prev    next >
Encoding:
Text File  |  1994-08-07  |  8.0 KB  |  205 lines

  1. rem 
  2. rem $Header: catdefer.sql 7010300.1 94/02/24 18:24:12 snataraj Generic<base> $ 
  3. rem 
  4. Rem  Copyright (c) 1992 by Oracle Corporation 
  5. Rem    NAME
  6. Rem      catdefer.sql - catalog of deferred rpc queues
  7. Rem    DESCRIPTION
  8. Rem      catalog of deferred rpc queues
  9. Rem      This file contains sql which creates the base tables
  10. Rem      used to store deferred remote procedure calls for used in
  11. Rem      transaction replication.
  12. Rem      Tables:
  13. Rem         defError
  14. Rem         defTranDest
  15. Rem         defCallDest
  16. Rem         defDefaultDest
  17. Rem         defTran
  18. Rem         defCall
  19. Rem         defSchedule
  20. Rem    RETURNS
  21. Rem 
  22. Rem    NOTES
  23. Rem      <other useful comments, qualifications, etc.>
  24. Rem    MODIFIED   (MM/DD/YY)
  25. Rem     rjenkins   01/17/94 -  changing jq to job
  26. Rem     rjenkins   12/17/93 -  creating job queue
  27. Rem     dsdaniel   10/28/93 -  deferred rpc dblink security
  28. Rem                         -  also removed table drops, since shouldnt
  29. Rem                         -  loose data on upgrade
  30. Rem     dsdaniel   10/26/93 -  merge changes from branch 1.1.400.1
  31. Rem     dsdaniel   10/10/93 -  Creation from dbmsdefr
  32. rem create base tables
  33.  
  34. DROP VIEW deferror;
  35. DROP VIEW deferrcount;
  36. DROP VIEW deftrandest;
  37. DROP VIEW defcalldest;
  38. DROP VIEW defcall;
  39. DROP VIEW deftran;
  40.  
  41. --  create a table for deferred transactions. This has one row for 
  42. --  each transaction.
  43. --  transaction id size is taken from gendef.h 
  44. CREATE TABLE def$_tran (
  45.   deferred_tran_id VARCHAR2(22),  -- transaction id
  46.   deferred_tran_db VARCHAR2(128), -- creation or copying node
  47.     CONSTRAINT dfrpc$_tran_primary
  48.       PRIMARY KEY(deferred_tran_id, deferred_tran_db),
  49.   origin_tran_id   VARCHAR2(22),  -- original tid (if copied)
  50.   origin_tran_db   VARCHAR2(128), -- origial  node
  51.   origin_user_id   NUMBER,        -- userid deferring tran
  52.   origin_user      VARCHAR2(30),  -- user deferring tran (used at remote)
  53.   delivery_order   NUMBER,        -- order to deliver to destinations
  54.   destination_list CHAR(1),       -- R = RepSchema, D = def$_calldest
  55.   start_time       DATE,          -- time original tid started
  56.   commit_comment VARCHAR2(50));   -- commit comment
  57. /
  58. -- table which defines the execution order for defered transactions
  59.  
  60. --  create the call table.  One row for each deferred call.
  61. CREATE TABLE def$_call  (
  62.   callno            NUMBER,         -- UID of call, orders calls in transaction
  63.   deferred_tran_db VARCHAR2(128),   -- origin
  64.     CONSTRAINT def$_calls_primary
  65.       PRIMARY KEY(callno, buffer_number, deferred_tran_db),
  66.   deferred_tran_id  VARCHAR2(22),   -- transaction id
  67.     CONSTRAINT def$_calls_prnt
  68.        FOREIGN KEY(deferred_tran_id,  deferred_tran_db)
  69.        REFERENCES def$_tran(deferred_tran_id, deferred_tran_db)
  70.        ON DELETE CASCADE,
  71.   schemaname    VARCHAR2(30),      -- schema name
  72.   packagename   VARCHAR2(30),      -- package name
  73.   procname      VARCHAR2(30),      -- procedue name
  74.   argcount      NUMBER,            -- # of args 
  75.   buffer_number NUMBER,            -- parameters buffer number 
  76.   parm_buffer   LONG RAW);         -- parameters buffer    
  77. /
  78. --  create the  table that identifies a call to be executed    
  79. --  at a remote node. One row for each callsXnode.
  80. --  The projection of this table by node is the queue of transactions for 
  81. --  a node.
  82. CREATE TABLE def$_calldest(
  83.   callno           NUMBER,        -- call id 
  84.   deferred_tran_id VARCHAR2(22),  -- deferred transaction
  85.   deferred_tran_db VARCHAR2(128), -- deferred transaction
  86.   dummy_buffer_number NUMBER DEFAULT 1, -- for forign key reference
  87.     CONSTRAINT def$_calldest_call
  88.       FOREIGN KEY(callno, dummy_buffer_number,  deferred_tran_db)
  89.       REFERENCES def$_call(callno, buffer_number, deferred_tran_db),
  90.   dblink           VARCHAR2(128)  -- dblink to destination
  91.     CONSTRAINT def$_call_dblink_null NOT NULL);
  92. /                    
  93. -- create the table that is the queue of transacitons for a destination
  94. CREATE TABLE def$_trandest(
  95.   deferred_tran_id VARCHAR2(22),  -- deferred transaction
  96.   deferred_tran_db VARCHAR2(128), -- deferred transaction
  97.     CONSTRAINT def$_trandest_tran
  98.       FOREIGN KEY(deferred_tran_id, deferred_tran_db)
  99.       REFERENCES def$_tran(deferred_tran_id, deferred_tran_db),
  100.   dblink           VARCHAR2(128)  -- dblink to destination
  101.     CONSTRAINT def$_trandest_dblink_null NOT NULL);
  102. /
  103.  
  104. --  create the table where the exceptions get logged. One row for each
  105. --  transactionXorigin_node when the execution of the transaction at 
  106. --  this  node encountered  an error.
  107. CREATE TABLE def$_error(
  108.   deferred_tran_db VARCHAR2(128),  -- node origination/copying txn
  109.   deferred_tran_id VARCHAR2(22),   -- transaction id
  110.     CONSTRAINT def$_error_tran
  111.       FOREIGN KEY(deferred_tran_id, deferred_tran_db)
  112.       REFERENCES def$_tran(deferred_tran_id, deferred_tran_db),
  113.   callno           NUMBER,           -- UID of call
  114. -- forign key constrain on call not used.  Users can create error transacitons
  115. -- with null or invalid callno - it is for documenation only
  116. --  dummy_buffer_number NUMBER DEFAULT 1,
  117. --    CONSTRAINT def$_error_call
  118. --      FOREIGN KEY(callno, dummy_buffer_number, deferred_tran_db)
  119. --      REFERENCES def$_call(callno, buffer_number, deferred_tran_db),
  120.    destination     VARCHAR2(128),  -- dblink transaciton destined to
  121.      CONSTRAINT def$_error_primary
  122.         PRIMARY KEY(deferred_tran_id, deferred_tran_db, destination),
  123.    error_time      DATE,           -- time at which 
  124.                                    -- conflit occured
  125.    error_number    NUMBER,         -- error 
  126.                                    -- number reported
  127.    error_msg       VARCHAR2(200)); -- error message
  128. /
  129. CREATE VIEW deferror AS
  130.   SELECT deferred_tran_db, deferred_tran_id, callno, destination, 
  131.          error_time, error_number, error_msg 
  132.     FROM def$_error;
  133. /
  134. DROP PUBLIC SYNONYM deferror;
  135. CREATE PUBLIC SYNONYM deferror for deferror;
  136. CREATE VIEW deferrcount AS
  137.   SELECT count(1) errcount, destination 
  138.     FROM deferror GROUP BY destination;
  139. /
  140. DROP PUBLIC SYNONYM deferrcount;
  141. CREATE PUBLIC SYNONYM deferrcount for deferrcount;
  142. GRANT SELECT ON deferrcount TO PUBLIC;
  143. /
  144. CREATE VIEW deftrandest AS
  145.   SELECT * from def$_trandest;
  146. /
  147. DROP PUBLIC SYNONYM deftrandest;
  148. CREATE PUBLIC SYNONYM deftrandest FOR deftrandest;
  149. CREATE VIEW defcalldest AS
  150.   SELECT  callno, deferred_tran_id, deferred_tran_db, dblink
  151.     FROM def$_calldest
  152. /
  153. DROP PUBLIC SYNONYM defcalldest;
  154. CREATE PUBLIC SYNONYM defcalldest for defcalldest;
  155. CREATE VIEW defcall AS
  156.   SELECT  callno, deferred_tran_db, deferred_tran_id, schemaname, packagename,
  157.           procname, argcount 
  158.     FROM def$_call
  159.     WHERE buffer_number = 1;
  160. /
  161. DROP PUBLIC SYNONYM defcall;
  162. CREATE PUBLIC SYNONYM defcall FOR defcall;
  163. CREATE VIEW deftran AS
  164.   SELECT deferred_tran_id, deferred_tran_db, origin_tran_id, origin_tran_db,
  165.          NVL(u.name,t.origin_user) origin_user, delivery_order, 
  166.          destination_list, start_time, commit_comment
  167.     FROM def$_tran t, sys.user$ u
  168.     WHERE u.user# (+)= t.origin_user_id;
  169. /
  170. DROP PUBLIC SYNONYM deftran;
  171. CREATE PUBLIC SYNONYM deftran FOR deftran;
  172. --  Create table of default nodes for replication targets
  173. --  this table is managed by calls in dbms_defer_sys
  174. DROP TABLE def$_defaultdest;
  175. DROP VIEW  defdefaultdest;
  176. CREATE TABLE def$_defaultdest (
  177.   dblink VARCHAR2(128)  -- dblink 
  178.     CONSTRAINT def$_defalutdest_primary
  179.     PRIMARY KEY);
  180. /
  181. CREATE VIEW defdefaultdest AS
  182.   SELECT * from def$_defaultdest;
  183. /
  184. DROP PUBLIC SYNONYM defdefaultdest;
  185. CREATE PUBLIC SYNONYM defdefaultdest for defdefaultdest;
  186.  
  187. DROP TABLE def$_schedule;
  188. DROP VIEW defschedule;
  189. CREATE TABLE def$_schedule(
  190.   dblink         VARCHAR2(128)  -- queue name
  191.     CONSTRAINT def$_schedule_primary PRIMARY KEY,
  192.   job            NUMBER,        -- number of job which does the push
  193.   alert_name     VARCHAR2(30),  -- unused
  194.   last_txn_count NUMBER,        -- number of transacitons executed lat push
  195.   last_error     NUMBER,        -- sqlcode from last push
  196.   last_msg       VARCHAR2(255));-- error message from last push
  197. /
  198.  
  199. CREATE VIEW defschedule  AS
  200.   SELECT s.dblink, s.job, j.interval, next_date, j.last_date
  201.     FROM def$_schedule s, sys.job$ j where s.job = j.job(+);
  202. /
  203. DROP PUBLIC SYNONYM defschedule;
  204. CREATE PUBLIC SYNONYM defschedule FOR defschedule;
  205.