Disclaimer

Saturday, 24 October 2020

Demo tables for practice - Oracle

 

Demo tables for practice:

create user samik identified by samik;

grant connect, resource to samik;

create tablespace sam_ts datafile '/data1/samik/sam1.dbf' size 200M;

alter user samik quota unlimited on sam_ts;

 

CREATE TABLE LOCATIONS( 
  LOCATION_ID VARCHAR2(15) NOT NULL ENABLE, 
  WAREHOUSE_ID VARCHAR2(15) NOT NULL ENABLE, 
  DESCRIPTION VARCHAR2(80), 
  LOCATION_TYPE CHAR(1) NOT NULL ENABLE, 
  CONSTRAINT "CHK_LOCATIONS" CHECK ( 
    (LOCATION_TYPE = 'T' Or LOCATION_TYPE = 'R' Or 
LOCATION_TYPE = 'F')) ENABLE, 
  PRIMARY KEY (WAREHOUSE_ID, LOCATION_ID)); 
CREATE INDEX IND_LOCATIONS_1 ON LOCATIONS (LOCATION_ID); 
SELECT 'CREATING UMS' FROM DUAL; 
CREATE TABLE UMS ( 
  UNIT_OF_MEASURE VARCHAR2(15) NOT NULL ENABLE, 
  DESCRIPTION VARCHAR2(40), 
  UOM_SCALE NUMBER NOT NULL ENABLE, 
  CONSTRAINT "CHK_UOM_SCALE" CHECK ( 
    (UOM_SCALE >= 0 And UOM_SCALE <= 4)) ENABLE, 
  PRIMARY KEY ("UNIT_OF_MEASURE")); 

SELECT 'CREATING VENDORS' FROM DUAL;

CREATE TABLE VENDORS ( 
  VENDOR_ID VARCHAR2(15) NOT NULL ENABLE, 
  VENDOR_NAME VARCHAR2(50), 
  ADDR_1 VARCHAR2(50), 
  ADDR_2 VARCHAR2(50), 
  ADDR_3 VARCHAR2(50), 
  CITY VARCHAR2(30), 
  STATE VARCHAR2(10), 
  ZIPCODE VARCHAR2(10), 
  COUNTRY VARCHAR2(50), 
  CONTACT_FIRST_NAME VARCHAR2(30), 
  CONTACT_LAST_NAME VARCHAR2(30), 
  CONTACT_INITIAL VARCHAR2(2), 
  CONTACT_POSITION VARCHAR2(20), 
  CONTACT_HONORIFIC VARCHAR2(4), 
  CONTACT_SALUTATION VARCHAR2(60), 
  CONTACT_PHONE VARCHAR2(20), 
  CONTACT_FAX VARCHAR2(20), 
  REMIT_TO_NAME VARCHAR2(50), 
  REMIT_TO_ADDR_1 VARCHAR2(50), 
  REMIT_TO_ADDR_2 VARCHAR2(50), 
  REMIT_TO_ADDR_3 VARCHAR2(50), 
  REMIT_TO_CITY VARCHAR2(30), 
  REMIT_TO_STATE VARCHAR2(10), 
  REMIT_TO_ZIPCODE VARCHAR2(10), 
  REMIT_TO_COUNTRY VARCHAR2(50), 
  FREE_ON_BOARD VARCHAR2(25), 
  SHIP_VIA VARCHAR2(40), 
  BUYER VARCHAR2(15), 
  REPORT_1099_MISC CHAR(1) DEFAULT 'N' NOT NULL ENABLE, 
  TERMS_NET_TYPE CHAR(1) DEFAULT ' ' NOT NULL ENABLE, 
  TERMS_NET_DAYS NUMBER, 
  TERMS_NET_DATE DATE, 
  TERMS_DISC_TYPE CHAR(1) DEFAULT ' ' NOT NULL ENABLE, 
  TERMS_DISC_DAYS NUMBER, 
  TERMS_DISC_DATE DATE, 
  TERMS_DISC_PERCENT NUMBER(5,3), 
  TERMS_DESCRIPTION VARCHAR2(50), 
  USER_1 VARCHAR2(80), 
  USER_2 VARCHAR2(80), 
  USER_3 VARCHAR2(80), 
  USER_4 VARCHAR2(80), 
  USER_5 VARCHAR2(80), 
  USER_6 VARCHAR2(80), 
  USER_7 VARCHAR2(80), 
  USER_8 VARCHAR2(80), 
  USER_9 VARCHAR2(80), 
  USER_10 VARCHAR2(80), 
  CONSTRAINT "CHK_VENDORS" CHECK ( 
    (REPORT_1099_MISC = 'Y' Or REPORT_1099_MISC = 'N') 
    AND (TERMS_NET_TYPE = 'A' 
      Or TERMS_NET_TYPE = 'M' 
      Or TERMS_NET_TYPE = 'D' 
      Or TERMS_NET_TYPE = 'N' 
      Or TERMS_NET_TYPE = 'E') 
    AND (TERMS_DISC_TYPE = 'A' 
      Or TERMS_DISC_TYPE = 'M' 
      Or TERMS_DISC_TYPE = 'D' 
      Or TERMS_DISC_TYPE = 'N' 
      Or TERMS_DISC_TYPE = 'E')) ENABLE, 
  PRIMARY KEY (VENDOR_ID)); 

CREATE TABLE VENDORS_TEMP AS 
SELECT 
  * 
FROM 
  VENDORS; 

https://hoopercharles.wordpress.com/2010/08/25/oracle-logging-trigger-creator/
SELECT 'CREATING PARTS' FROM DUAL; 

CREATE TABLE PARTS ( 
  PART_ID VARCHAR2(30) NOT NULL ENABLE, 
  DESCRIPTION VARCHAR2(40), 
  STOCK_UM VARCHAR2(15) NOT NULL ENABLE, 
  PLANNING_LEADTIME NUMBER DEFAULT 0 NOT NULL ENABLE, 
  ORDER_POLICY CHAR(1) DEFAULT 'M' NOT NULL ENABLE,
  ORDER_POINT NUMBER(14,4), 
  SAFETY_STOCK_QTY NUMBER(14,4), 
  FIXED_ORDER_QTY NUMBER(14,4), 
  DAYS_OF_SUPPLY NUMBER, 
  MINIMUM_ORDER_QTY NUMBER(14,4), 
  MAXIMUM_ORDER_QTY NUMBER(14,4), 
  ENGINEERING_MSTR VARCHAR2(3), 
  PRODUCT_CODE VARCHAR2(15), 
  COMMODITY_CODE VARCHAR2(15), 
  MFG_NAME VARCHAR2(30), 
  MFG_PART_ID VARCHAR2(30), 
  FABRICATED CHAR(1) DEFAULT 'N' NOT NULL ENABLE, 
  PURCHASED CHAR(1) DEFAULT 'Y' NOT NULL ENABLE, 
  STOCKED CHAR(1) DEFAULT 'N' NOT NULL ENABLE, 
  DETAIL_ONLY CHAR(1) DEFAULT 'N' NOT NULL ENABLE, 
  DEMAND_HISTORY CHAR(1) DEFAULT 'N' NOT NULL ENABLE, 
  TOOL_OR_FIXTURE CHAR(1) DEFAULT 'N' NOT NULL ENABLE, 
  INSPECTION_REQD CHAR(1) DEFAULT 'N' NOT NULL ENABLE, 
  WEIGHT NUMBER(14,4), 
  WEIGHT_UM VARCHAR2(15), 
  DRAWING_ID VARCHAR2(15), 
  DRAWING_REV_NO VARCHAR2(8), 
  PREF_VENDOR_ID VARCHAR2(15), 
  PRIMARY_WHS_ID VARCHAR2(15), 
  PRIMARY_LOC_ID VARCHAR2(15), 
  BACKFLUSH_WHS_ID VARCHAR2(15), 
  BACKFLUSH_LOC_ID VARCHAR2(15), 
  INSPECT_WHS_ID VARCHAR2(15), 
  INSPECT_LOC_ID VARCHAR2(15), 
  MRP_REQUIRED CHAR(1) DEFAULT 'N', 
  MRP_EXCEPTIONS CHAR(1) DEFAULT 'N', 
  PRIVATE_UM_CONV CHAR(1) DEFAULT 'N', 
  AUTO_BACKFLUSH CHAR(1) DEFAULT 'Y', 
  PLANNER_USER_ID VARCHAR2(20), 
  BUYER_USER_ID VARCHAR2(20), 
  ABC_CODE CHAR(1), 
  ANNUAL_USAGE_QTY NUMBER(15,4), 
  INVENTORY_LOCKED CHAR(1) DEFAULT 'N' NOT NULL ENABLE, 
  UNIT_MATERIAL_COST NUMBER(20,6) DEFAULT 0 NOT NULL ENABLE, 
  UNIT_LABOR_COST NUMBER(20,6) DEFAULT 0 NOT NULL ENABLE, 
  UNIT_BURDEN_COST NUMBER(20,6) DEFAULT 0 NOT NULL ENABLE, 
  UNIT_SERVICE_COST NUMBER(20,6) DEFAULT 0 NOT NULL ENABLE, 
  BURDEN_PERCENT NUMBER(5,2) DEFAULT 0 NOT NULL ENABLE, 
  BURDEN_PER_UNIT NUMBER(20,6) DEFAULT 0 NOT NULL ENABLE, 
  PURC_BUR_PERCENT NUMBER(6,3) DEFAULT 0 NOT NULL ENABLE, 
  PURC_BUR_PER_UNIT NUMBER(20,6) DEFAULT 0 NOT NULL  ENABLE, 
  FIXED_COST NUMBER(15,2) DEFAULT 0 NOT NULL ENABLE, 
  UNIT_PRICE NUMBER(20,6), 
  NEW_MATERIAL_COST NUMBER(14,4) DEFAULT 0 NOT NULL  ENABLE, 
  NEW_LABOR_COST NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  NEW_BURDEN_COST NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  NEW_SERVICE_COST NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  NEW_BURDEN_PERCENT NUMBER(5,2) DEFAULT 0 NOT NULL  ENABLE, 
  NEW_BURDEN_PERUNIT NUMBER(20,6) DEFAULT 0 NOT NULL ENABLE, 
  NEW_FIXED_COST NUMBER(15,2) DEFAULT 0 NOT NULL ENABLE, 
  MAT_GL_ACCT_ID VARCHAR2(30), 
  LAB_GL_ACCT_ID VARCHAR2(30), 
  BUR_GL_ACCT_ID VARCHAR2(30), 
  SER_GL_ACCT_ID VARCHAR2(30), 
  QTY_ON_HAND NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  QTY_AVAILABLE_ISS NUMBER(14,4) DEFAULT 0 NOT NULL  ENABLE, 
  QTY_AVAILABLE_MRP NUMBER(14,4) DEFAULT 0 NOT NULL  ENABLE, 
  QTY_ON_ORDER NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  QTY_IN_DEMAND NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  USER_1 VARCHAR2(80), 
  USER_2 VARCHAR2(80), 
  USER_3 VARCHAR2(80), 
  USER_4 VARCHAR2(80), 
  USER_5 VARCHAR2(80), 
  USER_6 VARCHAR2(80), 
  USER_7 VARCHAR2(80), 
  USER_8 VARCHAR2(80), 
  USER_9 VARCHAR2(80), 
  USER_10 VARCHAR2(80), 
  LT_PLUS_DAYS NUMBER, 
  LT_MINUS_DAYS NUMBER, 
  STATUS CHAR(1), 
  USE_SUPPLY_BEF_LT CHAR(1), 
  QTY_COMMITTED NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  PRT_CREATE_USER_ID VARCHAR2(30) DEFAULT USER, 
  PRT_CREATE_DATE DATE DEFAULT SYSDATE, 
  CONSTRAINT "CHK_PART1" CHECK ( 
    (PLANNING_LEADTIME >= 0) 
    AND (ORDER_POLICY = 'N' 
      Or ORDER_POLICY = 'M' 
      Or ORDER_POLICY = 'F' 
      Or ORDER_POLICY = 'E' 
      Or ORDER_POLICY = 'D' 
      Or ORDER_POLICY = 'P') 
    AND (ORDER_POINT >= 0) 
    AND (SAFETY_STOCK_QTY >= 0) 
    AND (FIXED_ORDER_QTY >= 0) 
    AND (DAYS_OF_SUPPLY >= 0) 
    AND (MINIMUM_ORDER_QTY >= 0) 
    AND (MAXIMUM_ORDER_QTY >= 0) 
    AND (FABRICATED = 'Y' Or FABRICATED = 'N') 
    AND (PURCHASED = 'Y' Or PURCHASED = 'N') 
    AND (STOCKED = 'Y' Or STOCKED = 'N') 
    AND (DETAIL_ONLY = 'Y' Or DETAIL_ONLY = 'N') 
    AND (DEMAND_HISTORY = 'Y' Or DEMAND_HISTORY = 'N') 
    AND (TOOL_OR_FIXTURE = 'Y' Or TOOL_OR_FIXTURE = 'N') 
    AND (MRP_REQUIRED = 'Y' Or MRP_REQUIRED = 'N') 
    AND (MRP_EXCEPTIONS = 'Y' Or MRP_EXCEPTIONS = 'N') 
    AND (PRIVATE_UM_CONV = 'Y' Or PRIVATE_UM_CONV = 'N') 
    AND (INVENTORY_LOCKED = 'Y' Or INVENTORY_LOCKED = 'N') 
    AND (INSPECTION_REQD = 'Y' Or INSPECTION_REQD = 'N')) ENABLE, 
  PRIMARY KEY (PART_ID), 
  CONSTRAINT "FKEY_INSP" FOREIGN KEY (INSPECT_WHS_ID, INSPECT_LOC_ID) 
    REFERENCES LOCATIONS (WAREHOUSE_ID, LOCATION_ID) ENABLE, 
  CONSTRAINT "FKEY_PREF_VENDOR" FOREIGN KEY (PREF_VENDOR_ID) 
    REFERENCES VENDORS (VENDOR_ID) ENABLE, 
  CONSTRAINT "FKEY_UM" FOREIGN KEY (WEIGHT_UM) 
    REFERENCES UMS (UNIT_OF_MEASURE) ENABLE, 
  CONSTRAINT "FKEY_STOCK_UM" FOREIGN KEY (STOCK_UM)
    REFERENCES UMS (UNIT_OF_MEASURE) ENABLE); 

CREATE INDEX IND_PARTS_1 ON PARTS (MRP_EXCEPTIONS);
CREATE INDEX IND_PARTS_2 ON PARTS (MFG_NAME, MFG_PART_ID); 
CREATE INDEX IND_PARTS_3 ON PARTS (WEIGHT_UM); 
CREATE INDEX IND_PARTS_4 ON PARTS (MRP_REQUIRED); 
CREATE INDEX IND_PARTS_5 ON PARTS (PREF_VENDOR_ID);
CREATE INDEX IND_PARTS_6 ON PARTS (STOCK_UM); 
CREATE INDEX IND_PARTS_7 ON PARTS (ORDER_POINT); 

CREATE TABLE PARTS_TEMP AS 
SELECT 
  * 
FROM 
  PARTS; 

SELECT 'CREATING PO_HEADER' FROM DUAL; 

CREATE TABLE PO_HEADER ( 
  PURC_ORDER_ID VARCHAR2(15) NOT NULL ENABLE, 
  VENDOR_ID VARCHAR2(15) NOT NULL ENABLE, 
  CONTACT_FIRST_NAME VARCHAR2(30), 
  CONTACT_LAST_NAME VARCHAR2(30), 
  CONTACT_INITIAL VARCHAR2(2), 
  CONTACT_POSITION VARCHAR2(20), 
  CONTACT_HONORIFIC VARCHAR2(4), 
  CONTACT_SALUTATION VARCHAR2(60), 
  CONTACT_PHONE VARCHAR2(20), 
  CONTACT_FAX VARCHAR2(20), 
  PURC_ORD_ADDR_NO NUMBER, 
  SHIPTO_ADDR_NO NUMBER, 
  ORDER_DATE DATE DEFAULT SYSDATE NOT NULL ENABLE, 
  DESIRED_RECV_DATE DATE DEFAULT TRUNC(SYSDATE), 
  BUYER VARCHAR2(15), 
  FREE_ON_BOARD VARCHAR2(25), 
  SHIP_VIA VARCHAR2(40), 
  SALES_TAX_GROUP_ID VARCHAR2(15), 
  PO_STATUS CHAR(1) DEFAULT ' ' NOT NULL ENABLE, 
  BACK_ORDER CHAR(1) DEFAULT ' ' NOT NULL ENABLE, 
  SELL_RATE NUMBER(15,8) NOT NULL ENABLE, 
  BUY_RATE NUMBER(15,8) NOT NULL ENABLE, 
  ENTITY_ID VARCHAR2(5) NOT NULL ENABLE, 
  POSTING_CANDIDATE CHAR(1) DEFAULT 'Y' NOT NULL ENABLE, 
  LAST_RECEIVED_DATE DATE, 
  TOTAL_AMT_ORDERED NUMBER(15,2) DEFAULT 0 NOT NULL  ENABLE, 
  TOTAL_AMT_RECVD NUMBER(15,2) DEFAULT 0 NOT NULL ENABLE, 
  MARKED_FOR_PURGE CHAR(1) DEFAULT 'N' NOT NULL ENABLE, 
  EXCH_RATE_FIXED CHAR(1) DEFAULT 'N' NOT NULL ENABLE, 
  PROMISE_DATE DATE, 
  PRINTED_DATE DATE, 
  TERMS_DISC_TYPE CHAR(1), 
  EDI_BLANKET_FLAG CHAR(1), 
  EDI_BLANKET_PO_NO VARCHAR2(30), 
  CONTRACT_ID VARCHAR2(30), 
  SHIPTO_ID VARCHAR2(20), 
  TERMS_NET_TYPE CHAR(1) DEFAULT ' ' NOT NULL ENABLE, 
  TERMS_NET_DAYS NUMBER, 
  TERMS_NET_DATE DATE, 
  TERMS_DISC_DAYS NUMBER, 
  TERMS_DISC_DATE DATE, 
  TERMS_DISC_PERCENT NUMBER(5,3), 
  TERMS_DESCRIPTION VARCHAR2(50), 
  CURRENCY_ID VARCHAR2(15), 
  WAREHOUSE_ID VARCHAR2(15), 
  CREATE_DATE DATE DEFAULT SYSDATE NOT NULL ENABLE,
  CONTACT_MOBILE VARCHAR2(20), 
  CONTACT_EMAIL VARCHAR2(50), 
  USER_1 VARCHAR2(80), 
  USER_2 VARCHAR2(80), 
  USER_3 VARCHAR2(80), 
  USER_4 VARCHAR2(80), 
  USER_5 VARCHAR2(80), 
  USER_6 VARCHAR2(80), 
  USER_7 VARCHAR2(80), 
  USER_8 VARCHAR2(80), 
  USER_9 VARCHAR2(80), 
  USER_10 VARCHAR2(80), 
  UDF_LAYOUT_ID VARCHAR2(15), 
  PO_CREATE_USER_ID VARCHAR2(30) DEFAULT USER, 
  CONSTRAINT "CHK_PO" CHECK ( 
    (PO_STATUS = 'F' Or PO_STATUS = 'R' Or PO_STATUS = 'C' Or PO_STATUS = 'X') 
    AND (BACK_ORDER = 'Y' Or BACK_ORDER = 'N') 
    AND (POSTING_CANDIDATE = 'Y' Or POSTING_CANDIDATE = 'N') 
    AND (MARKED_FOR_PURGE = 'Y' Or MARKED_FOR_PURGE = 'N') 
    AND (TERMS_DISC_TYPE = 'A' Or TERMS_DISC_TYPE = 'M' Or TERMS_DISC_TYPE = 'D' Or TERMS_DISC_TYPE = 'N' Or TERMS_DISC_TYPE = 'E')
    AND (TERMS_NET_TYPE = 'A' Or TERMS_NET_TYPE = 'M' Or TERMS_NET_TYPE = 'D' Or TERMS_NET_TYPE = 'N' Or TERMS_NET_TYPE = 'E')) ENABLE, 
  PRIMARY KEY (PURC_ORDER_ID)); 

CREATE INDEX IND_PO_HEADER_1 ON PO_HEADER (VENDOR_ID, PURC_ORD_ADDR_NO); 
CREATE INDEX IND_PO_HEADER_2 ON PO_HEADER (VENDOR_ID); 
CREATE INDEX IND_PO_HEADER_3 ON PO_HEADER (SHIPTO_ADDR_NO); 
CREATE INDEX IND_PO_HEADER_4 ON PO_HEADER (POSTING_CANDIDATE); 

CREATE TABLE PO_HEADER_TEMP AS 
SELECT 
  * 
FROM 
  PO_HEADER; 

SELECT 'CREATING PO_LINE' FROM DUAL; 
CREATE TABLE PO_LINE ( 
  PURC_ORDER_ID VARCHAR2(15) NOT NULL ENABLE, 
  LINE_NO NUMBER NOT NULL ENABLE, 
  PART_ID VARCHAR2(30), 
  VENDOR_PART_ID VARCHAR2(30), 
  SERVICE_ID VARCHAR2(15), 
  USER_ORDER_QTY NUMBER(14,4) NOT NULL ENABLE, 
  ORDER_QTY NUMBER(14,4) NOT NULL ENABLE, 
  PURCHASE_UM VARCHAR2(15), 
  UNIT_PRICE NUMBER(20,6) NOT NULL ENABLE, 
  TRADE_DISC_PERCENT NUMBER(6,3) DEFAULT 0 NOT NULL ENABLE, 
  FIXED_CHARGE NUMBER(15,2), 
  EST_FREIGHT NUMBER(15,2) DEFAULT 0 NOT NULL ENABLE, 
  GL_EXPENSE_ACCT_ID VARCHAR2(30), 
  SALES_TAX_GROUP_ID VARCHAR2(15), 
  PRODUCT_CODE VARCHAR2(15), 
  COMMODITY_CODE VARCHAR2(15), 
  DESIRED_RECV_DATE DATE, 
  LINE_STATUS CHAR(1) DEFAULT ' ' NOT NULL ENABLE, 
  LAST_RECEIVED_DATE DATE, 
  TOTAL_ACT_FREIGHT NUMBER(15,2) DEFAULT 0 NOT NULL  ENABLE, 
  TOTAL_USR_RECD_QTY NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  TOTAL_RECEIVED_QTY NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  TOTAL_AMT_RECVD NUMBER(15,2) DEFAULT 0 NOT NULL ENABLE, 
  TOTAL_AMT_ORDERED NUMBER(15,2) DEFAULT 0 NOT NULL  ENABLE, 
  MFG_NAME VARCHAR2(30), 
  MFG_PART_ID VARCHAR2(30), 
  PROMISE_DATE DATE, 
  PIECE_COUNT NUMBER(14,4), 
  LENGTH NUMBER(14,4), 
  WIDTH NUMBER(14,4), 
  HEIGHT NUMBER(14,4), 
  DIMENSIONS_UM VARCHAR2(15), 
  VAT_CODE VARCHAR2(15), 
  TOTAL_DISPATCH_QTY NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  TOTAL_USR_DISP_QTY NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  MINIMUM_CHARGE NUMBER(15,2), 
  LAST_DISPATCH_DATE DATE, 
  EDI_BLANKET_QTY NUMBER(14,4), 
  EDI_BLANKET_USRQTY NUMBER(14,4), 
  EDI_ACCUM_QTY_REL NUMBER(14,4), 
  EDI_ACCUM_USR_REL NUMBER(14,4), 
  EDI_ACCUM_QTY_REC NUMBER(14,4), 
  EDI_ACCUM_USR_REC NUMBER(14,4), 
  EDI_LAST_REC_DATE DATE, 
  EDI_RELEASE_NO VARCHAR2(3), 
  EDI_RELEASE_DATE DATE, 
  EDI_QTY_RELEASED NUMBER(14,4), 
  EDI_USR_QTY_REL NUMBER(14,4), 
  EDI_REQ_REL_DATE DATE, 
  SHIPTO_ID VARCHAR2(20), 
  WAREHOUSE_ID VARCHAR2(15), 
  WIP_VAS_REQUIRED CHAR(1), 
  ALLOCATED_QTY NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  FULFILLED_QTY NUMBER(14,4) DEFAULT 0 NOT NULL ENABLE, 
  HTS_CODE VARCHAR2(20), 
  ORIG_COUNTRY_ID VARCHAR2(15), 
  USER_1 VARCHAR2(80), 
  USER_2 VARCHAR2(80), 
  USER_3 VARCHAR2(80), 
  USER_4 VARCHAR2(80), 
  USER_5 VARCHAR2(80), 
  USER_6 VARCHAR2(80), 
  USER_7 VARCHAR2(80), 
  USER_8 VARCHAR2(80), 
  USER_9 VARCHAR2(80), 
  USER_10 VARCHAR2(80), 
  UDF_LAYOUT_ID VARCHAR2(15), 
  POL_CREATE_USER_ID VARCHAR2(30) DEFAULT USER, 
  POL_CREATE_DATE DATE DEFAULT SYSDATE, 
  CONSTRAINT "CHK_PO_LINE" CHECK ((LINE_STATUS = 'A' Or LINE_STATUS = 'C')) ENABLE, 
  PRIMARY KEY (PURC_ORDER_ID, LINE_NO), 
  CONSTRAINT "FKEY_PO_HEADER" FOREIGN KEY (PURC_ORDER_ID)  REFERENCES PO_HEADER (PURC_ORDER_ID) ON DELETE CASCADE ENABLE, 
  CONSTRAINT "FKEY_PART_ID" FOREIGN KEY (PART_ID) REFERENCES PARTS (PART_ID) ENABLE, 
  CONSTRAINT "FKEY_PURC_UM" FOREIGN KEY (PURCHASE_UM) 
   REFERENCES UMS (UNIT_OF_MEASURE) ENABLE); 


CREATE INDEX IND_PO_LINE_1 ON PO_LINE (WAREHOUSE_ID); 
CREATE INDEX IND_PO_LINE_2 ON PO_LINE (SERVICE_ID);
CREATE INDEX IND_PO_LINE_3 ON PO_LINE (PART_ID); 
CREATE INDEX IND_PO_LINE_4 ON PO_LINE (VENDOR_PART_ID); 

CREATE TABLE PO_LINE_TEMP AS 
SELECT 
  * 
FROM 
  PO_LINE; 
CREATE TABLE NARROW ( 
  C1 NUMBER, 
  C2 NUMBER); 
SELECT 'INSERTING INTO LOCATIONS' FROM DUAL; 
ALTER SESSION SET TRACEFILE_IDENTIFIER = 'INSERT_LOCATIONS_UMS'; 
INSERT INTO 
  LOCATIONS 
SELECT /*+ ORDERED */ 
  LOC.LOCATION_ID, 
  WH.WAREHOUSE_ID, 
  RPAD(WH.WAREHOUSE_ID||'-'||LOC.LOCATION_ID,60), 
  DECODE(MOD(ROWNUM,5),0,'T',1,'R','F') 
FROM 
  (SELECT 
    TRIM(TO_CHAR(ABS(ROUND(COS(ROWNUM*3.1415/180*1.2)*1000000,0))))||'LOC' LOCATION_ID, 
    ROWNUM RN 
  FROM 
    DUAL 
  CONNECT BY 
    LEVEL<=200) LOC, 
  (SELECT 
    TRIM(TO_CHAR(ABS(ROUND(SIN(ROWNUM*3.1415/180*10.1)*1000000,0))))||'WH' WAREHOUSE_ID, 
    ROWNUM RN 
  FROM 
    DUAL 
  CONNECT BY 
    LEVEL<=20) WH 
WHERE 
  (MOD(WH.RN,10)*20+1) <= LOC.RN; 

COMMIT; 
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>USER,TABNAME=>'LOCATIONS',CASCADE=>TRUE); 

INSERT INTO 
  UMS 
SELECT 
  DECODE(ROWNUM,1,'EA',2,'PC',3,'FT',4,'METER',5,'KG',6,'CASE',7,'LBS',8,'DOZEN'), 
  NULL,  4 
FROM 
  DUAL 
CONNECT BY 
  LEVEL<=8; 

COMMIT; 
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>USER,TABNAME=>'UMS',CASCADE=>TRUE); 
SELECT 'INSERTING INTO VENDORS' FROM DUAL; 
ALTER SESSION SET TRACEFILE_IDENTIFIER = 'INSERT_VENDORS'; 

INSERT INTO 
  VENDORS_TEMP 
SELECT 
  TRIM(TO_CHAR(ABS(ROUND(COS(ROWNUM*3.14159265/180*51.491976)*10000000,0))))||'VEN' VENDOR_ID, 
  TRIM(TO_CHAR(ABS(ROUND(COS(ROWNUM*3.1415/180*.49)*1000000,0))))||'VENDOR NAME' VENDOR_NAME, 
  RPAD('ADDR_1',40) ADDR_1, 
  RPAD('ADDR_2',35) ADDR_2, 
  NULL ADDR_3, 
  RPAD('CITY',20) CITY, 
  'CA' STATE, 
  LPAD(TO_CHAR(ROWNUM),6) ZIPCODE, 
  'NONE' COUNTRY, 
  NULL CONTACT_FIRST_NAME, 
  NULL CONTACT_LAST_NAME, 
  NULL CONTACT_INITIAL, 
  NULL CONTACT_POSITION, 
  NULL CONTACT_HONORIFIC, 
  NULL CONTACT_SALUTATION, 
  NULL CONTACT_PHONE, 
  NULL CONTACT_FAX, 
  TRIM(TO_CHAR(ABS(ROUND(COS(ROWNUM*3.1415/180*4.491976)*1000000,0))))||'VENDOR NAME' REMIT_TO_NAME, 
  RPAD('ADDR_1',40) REMIT_TO_ADDR_1, 
  RPAD('ADDR_2',35) REMIT_TO_ADDR_2, 
  NULL REMIT_TO_ADDR_3, 
  RPAD('CITY',20) REMIT_TO_CITY, 
  'CA' REMIT_TO_STATE, 
  LPAD(TO_CHAR(ROWNUM),6) REMIT_TO_ZIPCODE, 
  'NONE' REMIT_TO_COUNTRY, 
  'NONE' FREE_ON_BOARD, 
  'SPECIAL DEL' SHIP_VIA, 
  'UNKNOWN' BUYER, 
  'N' REPORT_1099_MISC, 
  DECODE(MOD(ROWNUM,6),0,'A',1,'M',2,'D',3,'N','E') TERMS_NET_TYPE, 
  ROWNUM TERMS_NET_DAYS, 
  NULL TERMS_NET_DATE, 
  DECODE(MOD(ROWNUM,6),0,'A',1,'M',2,'D',3,'N','E') TERMS_DISC_TYPE, 
  MOD(ROWNUM,100)+10 TERMS_DISC_DAYS, 
  NULL TERMS_DISC_DATE, 
  3.5 TERMS_DISC_PERCENT, 
  'STANDARD' TERMS_DESCRIPTION, 
  'X' USER_1, 
  TO_CHAR(TRUNC(SYSDATE,'YYYY'),'MON DD, YYYY') USER_2, 
  NULL USER_3, 
  NULL USER_4, 
  NULL USER_5, 
  NULL USER_6, 
  NULL USER_7, 
  NULL USER_8, 
  NULL USER_9, 
  NULL USER_10 
FROM 
  DUAL 
CONNECT BY 
  LEVEL<=50000; 

SELECT 'ELIMINATING DUP V' FROM DUAL; 
DELETE FROM 
  VENDORS_TEMP 
WHERE 
  (VENDOR_ID,TERMS_NET_DAYS) IN 
    (SELECT 
      V.VENDOR_ID, 
      V.TERMS_NET_DAYS 
    FROM 
      VENDORS_TEMP V, 
      (SELECT 
        VENDOR_ID, 
        MIN(TERMS_NET_DAYS) TERMS_NET_DAYS 
      FROM 
        VENDORS_TEMP 
      GROUP BY 
        VENDOR_ID 
      HAVING 
        COUNT(*)>1) M 
    WHERE 
      V.VENDOR_ID=M.VENDOR_ID 
      AND V.TERMS_NET_DAYS>M.TERMS_NET_DAYS); 

INSERT INTO 
  VENDORS 
SELECT 
  * 
FROM 
  VENDORS_TEMP; 

COMMIT; 

EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>USER,TABNAME=>'VENDORS',CASCADE=>TRUE); 

SELECT 'INSERTING INTO PARTS' FROM DUAL; 
ALTER SESSION SET TRACEFILE_IDENTIFIER = 'INSERT_PARTS'; 


INSERT INTO 
  PARTS_TEMP 
SELECT 
  TRIM(TO_CHAR(ABS(ROUND(SIN(ROWNUM*3.14159265/180*10.191976)*10000000,0))))||'PART' PART_ID, 
  TRIM(TO_CHAR(ABS(ROUND(SIN(ROWNUM*3.14159265/180*10.191976)*10000000,0))))||'DESCRIPTION' DESCRIPTION, 
  DECODE(MOD(ROWNUM,20),2,'PC',3,'FT',4,'METER',5,'KG',6,'CASE',7,'LBS',8,'DOZEN','EA') STOCK_UM,   1 PLANNING_LEADTIME, 
  'M' ORDER_POLICY, 
  ROWNUM ORDER_POINT, 
  1 SAFETY_STOCK_QTY, 
  1 FIXED_ORDER_QTY, 
  1 DAYS_OF_SUPPLY, 
  1 MINIMUM_ORDER_QTY, 
  9999 MAXIMUM_ORDER_QTY, 
  '0' ENGINEERING_MSTR, 
  DECODE(MOD(ROWNUM,20),1,'SHOP',2,'OFFICE',3,'JANITOR',4,'INVENTORY',5,'INVENTORY','FG') PRODUCT_CODE, 
  DECODE(MOD(ROWNUM,7),1,'SHOP',2,'OFFICE',3,'JANITOR',4,'INVENTORY',5,'INVENTORY','FG') COMMODITY_CODE, 
  'UNKNOWN' MFG_NAME, 
  'UNKNOWN' MFG_PART_ID, 
  DECODE(MOD(ROWNUM,3),1,'Y','N') FABRICATED, 
  DECODE(MOD(ROWNUM,3),1,'N','Y') PURCHASED, 
  'N' STOCKED, 
  'N' DETAIL_ONLY, 
  'N' DEMAND_HISTORY, 
  'N' TOOL_OR_FIXTURE, 
  'N' INSPECTION_REQD, 
  0 WEIGHT, 
  DECODE(MOD(ROWNUM,20),2,'PC',3,'FT',4,'METER',5,'KG',6,'CASE',7,'LBS',8,'DOZEN','EA') WEIGHT_UM, 
  NULL DRAWING_ID, 
  NULL DRAWING_REV_NO, 
  NULL PREF_VENDOR_ID, 
  NULL PRIMARY_WHS_ID, 
  NULL PRIMARY_LOC_ID, 
  NULL BACKFLUSH_WHS_ID, 
  NULL BACKFLUSH_LOC_ID, 
  NULL INSPECT_WHS_ID, 
  NULL INSPECT_LOC_ID, 
  'Y' MRP_REQUIRED, 
  'N' MRP_EXCEPTIONS, 
  'N' PRIVATE_UM_CONV, 
  'Y' AUTO_BACKFLUSH, 
  NULL PLANNER_USER_ID, 
  NULL BUYER_USER_ID, 
  DECODE(MOD(ROWNUM,7),1,'A',2,'B',3,'B','C') ABC_CODE, 
  ROWNUM-100000 ANNUAL_USAGE_QTY, 
  'N' INVENTORY_LOCKED, 
  0 UNIT_MATERIAL_COST, 
  0 UNIT_LABOR_COST, 
  0 UNIT_BURDEN_COST, 
  0 UNIT_SERVICE_COST, 
  0 BURDEN_PERCENT, 
  0 BURDEN_PER_UNIT, 
  0 PURC_BUR_PERCENT, 
  0 PURC_BUR_PER_UNIT, 
  0 FIXED_COST, 
  0 UNIT_PRICE, 
  0 NEW_MATERIAL_COST, 
  0 NEW_LABOR_COST, 
  0 NEW_BURDEN_COST, 
  0 NEW_SERVICE_COST, 
  0 NEW_BURDEN_PERCENT, 
  0 NEW_BURDEN_PERUNIT, 
  0 NEW_FIXED_COST, 
  '1111111' MAT_GL_ACCT_ID, 
  '2222222' LAB_GL_ACCT_ID, 
  '3333333' BUR_GL_ACCT_ID, 
  '4444444' SER_GL_ACCT_ID, 
  ABS(ROUND(SIN(ROWNUM*3.14159265/180*2)*100000,3)) QTY_ON_HAND, 
  ABS(ROUND(SIN(ROWNUM*3.14159265/180*2)*100000,3)) QTY_AVAILABLE_ISS, 
  ABS(ROUND(SIN(ROWNUM*3.14159265/180*2)*100000,3)) QTY_AVAILABLE_MRP, 
  0 QTY_ON_ORDER, 
  0 QTY_IN_DEMAND, 
  RPAD('USER_1',30) USER_1, 
  RPAD('USER_2',30) USER_2, 
  RPAD('USER_3',30) USER_3, 
  NULL USER_4, 
  NULL USER_5, 
  NULL USER_6, 
  NULL USER_7, 
  NULL USER_8, 
  NULL USER_9, 
  NULL USER_10, 
  0 LT_PLUS_DAYS, 
  0 LT_MINUS_DAYS, 
  'A' STATUS, 
  'Y' USE_SUPPLY_BEF_LT, 
  0 QTY_COMMITTED, 
  'TESTING' PRT_CREATE_USER_ID, 
  SYSDATE PRT_CREATE_DATE 
FROM 
  DUAL 
CONNECT BY 
  LEVEL<=100000; 



SELECT 'REMOVING DUPLICATE PARTS' FROM DUAL; 

DELETE FROM 
  PARTS_TEMP 
WHERE 
  (PART_ID,ORDER_POINT) IN 
    (SELECT 
      V.PART_ID, 
      V.ORDER_POINT 
    FROM 
      PARTS_TEMP V, 
      (SELECT 
        PART_ID, 
        MIN(ORDER_POINT) ORDER_POINT 
      FROM 
        PARTS_TEMP 
      GROUP BY 
        PART_ID 
      HAVING 
        COUNT(*)>1) M 
    WHERE 
      V.PART_ID=M.PART_ID 
      AND V.ORDER_POINT>M.ORDER_POINT); 


INSERT INTO 
  PARTS 
SELECT 
  * 
FROM 
  PARTS_TEMP; 

UPDATE 
  PARTS P 
SET 
  (PRIMARY_WHS_ID,PRIMARY_LOC_ID)=( 
    SELECT 
      WAREHOUSE_ID, 
      LOCATION_ID 
    FROM 
      (SELECT 
        WAREHOUSE_ID, 
        LOCATION_ID, 
        ROWNUM RN 
      FROM  
        LOCATIONS) 
    WHERE 
      MOD(P.ORDER_POINT,2000)=RN); 

UPDATE 
  PARTS 
SET 
  PREF_VENDOR_ID=TRIM(TO_CHAR(ABS(ROUND(COS((MOD(ROWNUM,9000)*2+1)*3.14159265/180*51.491976)*10000000,0))))||'VEN' 
WHERE 
  PURCHASED='Y'; 
COMMIT; 
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>USER,TABNAME=>'PARTS',CASCADE=>TRUE); 

SELECT 'INSERTING INTO PO_HEADER' FROM DUAL; 

ALTER SESSION SET TRACEFILE_IDENTIFIER = 'INSERT_PO_HEADER'; 

INSERT INTO 
  PO_HEADER_TEMP 
SELECT 
  'PO'||TO_CHAR(ROWNUM) PURC_ORDER_ID, 
  TRIM(TO_CHAR(ABS(ROUND(COS((MOD(ROWNUM,9000)*2+1)*3.14159265/180*51.491976)*10000000,0))))||'VEN' VENDOR_ID, 
  NULL CONTACT_FIRST_NAME, 
  NULL CONTACT_LAST_NAME, 
  NULL CONTACT_INITIAL, 
  NULL CONTACT_POSITION, 
  NULL CONTACT_HONORIFIC, 
  NULL CONTACT_SALUTATION, 
  NULL CONTACT_PHONE, 
  NULL CONTACT_FAX, 
  1 PURC_ORD_ADDR_NO, 
  1 SHIPTO_ADDR_NO, 
  TRUNC(SYSDATE-(COS(ROWNUM*3.14159265/180)*1000)) ORDER_DATE, 
  TRUNC(SYSDATE-(COS(ROWNUM*3.14159265/180)*1000))+10 DESIRED_RECV_DATE, 
  'MY_BUYER' BUYER, 
  NULL FREE_ON_BOARD, 
  'BEST WAY' SHIP_VIA, 
  'REGULAR' SALES_TAX_GROUP_ID, 
  DECODE(MOD(ROWNUM,6),1,'F',2,'R',3,'X','C') PO_STATUS, 
  'N' BACK_ORDER, 
  1 SELL_RATE, 
  1 BUY_RATE, 
  '1' ENTITY_ID, 
  DECODE(MOD(ROWNUM,3),1,'Y','N') POSTING_CANDIDATE, 
  NULL LAST_RECEIVED_DATE, 
  0 TOTAL_AMT_ORDERED, 
  0 TOTAL_AMT_RECVD, 
  'N' MARKED_FOR_PURGE, 
  'Y' EXCH_RATE_FIXED, 
  TRUNC(SYSDATE-(COS(ROWNUM*3.14159265/180)*1000))+10 PROMISE_DATE, 
  SYSDATE PRINTED_DATE, 
  DECODE(MOD(ROWNUM,6),0,'A',1,'M',2,'D',3,'N','E') TERMS_DISC_TYPE, 
  NULL EDI_BLANKET_FLAG, 
  NULL EDI_BLANKET_PO_NO, 
  1 CONTRACT_ID, 
  1 SHIPTO_ID, 
  DECODE(MOD(ROWNUM,6),0,'A',1,'M',2,'D',3,'N','E')
 TERMS_NET_TYPE, 
  1 TERMS_NET_DAYS, 
  NULL TERMS_NET_DATE, 
  1 TERMS_DISC_DAYS, 
  NULL TERMS_DISC_DATE, 
  3 TERMS_DISC_PERCENT, 
  'ON TIME' TERMS_DESCRIPTION, 
  'USD' CURRENCY_ID, 
  NULL WAREHOUSE_ID, 
  SYSDATE CREATE_DATE, 
  NULL CONTACT_MOBILE, 
  NULL CONTACT_EMAIL, 
  NULL USER_1, 
  NULL USER_2, 
  NULL USER_3, 
  NULL USER_4, 
  NULL USER_5, 
  NULL USER_6, 
  NULL USER_7, 
  NULL USER_8, 
  NULL USER_9, 
  NULL USER_10, 
  'DEFAULT' UDF_LAYOUT_ID, 
  'TESTING' PO_CREATE_USER_ID 
FROM 
  DUAL 
CONNECT BY 
  LEVEL<=500000; 



INSERT INTO 
  PO_HEADER 
SELECT 
  * 
FROM 
  PO_HEADER_TEMP; 
COMMIT; 
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>USER,TABNAME=>'PO_HEADER',CASCADE=>TRUE); 
SELECT 'INSERTING INTO PO_LINES' FROM DUAL; 
ALTER SESSION SET TRACEFILE_IDENTIFIER = 'INSERT_PO_LINES'; 

INSERT INTO PO_LINE_TEMP ( 
  PURC_ORDER_ID, 
  LINE_NO, 
  PART_ID, 
  VENDOR_PART_ID, 
  SERVICE_ID, 
  USER_ORDER_QTY, 
  ORDER_QTY, 
  PURCHASE_UM, 
  UNIT_PRICE, 
  FIXED_CHARGE, 
  GL_EXPENSE_ACCT_ID, 
  SALES_TAX_GROUP_ID, 
  PRODUCT_CODE, 
  COMMODITY_CODE, 
  DESIRED_RECV_DATE, 
  TRADE_DISC_PERCENT, 
  EST_FREIGHT, 
  LINE_STATUS, 
  TOTAL_ACT_FREIGHT, 
  TOTAL_USR_RECD_QTY, 
  TOTAL_RECEIVED_QTY, 
  TOTAL_AMT_RECVD, 
  TOTAL_AMT_ORDERED, 
  TOTAL_DISPATCH_QTY, 
  TOTAL_USR_DISP_QTY, 
  ALLOCATED_QTY, 
  FULFILLED_QTY) 
SELECT /*+ ORDERED */ 
  PURC_ORDER_ID, 
  ORDER_POINT-START_LINE+1, 
  PART_ID, 
  PART_ID, 
  NULL, 
  10, 
  10, 
  DECODE(MOD(ROWNUM,20),2,'PC',3,'FT',4,'METER',5,'KG',6,'CASE',7,'LBS',8,'DOZEN','EA'), 
  1099.99, 
  0, 
  NULL, 
  NULL, 
  PRODUCT_CODE, 
  COMMODITY_CODE, 
  TRUNC(SYSDATE-1000+ROWNUM/1000), 
  0, 
  0, 
  'A', 
  0, 
  0, 
  0, 
  0, 
  0, 
  0, 
  0, 
  0, 
  0 
FROM 
  (SELECT 
    'PO'||TO_CHAR(ROWNUM) PURC_ORDER_ID, 
    ROWNUM RN, 
    ABS(SIN(ROWNUM*3.14159265/180))*90000 START_LINE, 
    MOD(ROWNUM,50)+1 LINES 
  FROM 
    DUAL 
  CONNECT BY 
    LEVEL<=500000) POL, 
  PARTS P 
WHERE 
  P.ORDER_POINT BETWEEN START_LINE AND (START_LINE+LINES-1); 

INSERT INTO 
  PO_LINE 
SELECT 
  * 
FROM 
  PO_LINE_TEMP; 


COMMIT; 


EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>USER,TABNAME=>'PO_LINE',CASCADE=>TRUE); 

SELECT 'UPDATE-ROLLBACK TEST' FROM DUAL; 
ALTER SESSION SET TRACEFILE_IDENTIFIER = 'ROLLBACK_TEST'; 

UPDATE 
  PO_LINE 
SET 
  PART_ID='8729425PART' 
WHERE 
  PART_ID BETWEEN '3000000PART' AND '6576035PART'; 
ROLLBACK; 
SELECT 'INSERT-NARROW-TABLE' FROM DUAL;
 
ALTER SESSION SET TRACEFILE_IDENTIFIER = 'NARROW_TABLE'; 

INSERT INTO 
  NARROW 
SELECT 
  ROWNUM, 
  NULL 
FROM 
  DUAL 
CONNECT BY 
  LEVEL<=900000; 


COMMIT; 

SELECT 
  SUBSTR(SN.NAME,1,25) STAT_NAME, 
  MS.VALUE 
FROM 
  V$STATNAME SN, 
  V$MYSTAT MS 
WHERE 
  SN.NAME IN ('table fetch by rowid','table scan ro
ws gotten','table fetch continued row','table scan blocks gotten','consistent gets') AND SN.STATISTIC#=MS.STATISTIC# 
ORDER BY 
  SN.NAME; 

UPDATE 
  NARROW 
SET 
  C1=ROUND(SIN(C1*3.14159265/180),2), 
  C2=C1; 
SELECT 
  SUBSTR(SN.NAME,1,25) STAT_NAME, 
  MS.VALUE 
FROM 
  V$STATNAME SN, 
  V$MYSTAT MS 
WHERE 
  SN.NAME IN ('table fetch by rowid','table scan rows gotten','table fetch continued row','table scan blocks gotten','consistent gets') 
  AND SN.STATISTIC#=MS.STATISTIC# 
ORDER BY 
  SN.NAME; 

UPDATE 
  NARROW 
SET 
  C1=ROUND(SIN(C2*3.14159265/180),10); 

UPDATE 
  NARROW 
SET 
  C2=C1; 

SELECT 
  SUBSTR(SN.NAME,1,25) STAT_NAME, 
  MS.VALUE 
FROM 
  V$STATNAME SN, 
  V$MYSTAT MS 
WHERE 
  SN.NAME IN ('table fetch by rowid','table scan rows gotten','table fetch continued row','table scan blocks gotten','consistent gets') 
  AND SN.STATISTIC#=MS.STATISTIC# 
ORDER BY 
  SN.NAME; 

SELECT 
  * 
FROM 
  NARROW; 

SELECT 
  SUBSTR(SN.NAME,1,25) STAT_NAME, 
  MS.VALUE 
FROM 
  V$STATNAME SN, 
  V$MYSTAT MS 
WHERE 
  SN.NAME IN ('table fetch by rowid','table scan rows gotten','table fetch continued row','table scan blocks gotten','consistent gets') 
  AND SN.STATISTIC#=MS.STATISTIC# 
ORDER BY 
  SN.NAME; 
DELETE FROM 
  NARROW 
WHERE 
  C1<0; 
COMMIT; 

SELECT 'TABLE AND INDEX STATS' FROM DUAL; 

ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXTOFF' 
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>USER,TABNAME=>'NARROW',CASCADE=>TRUE); 

 

SELECT 
  SUBSTR(SN.NAME,1,25) STAT_NAME, 
  MS.VALUE 
FROM 
  V$STATNAME SN, 
  V$MYSTAT MS 
WHERE 
  SN.NAME IN ('table fetch by rowid','table scan ro
ws gotten','table fetch continued row','table scan blocks gotten','consistent gets') AND SN.STATISTIC#=MS.STATISTIC# 
ORDER BY 
  SN.NAME; 
SELECT 
  SUBSTR(TABLE_NAME,1,10) TABLE_NAME, 
  SUBSTR(INDEX_NAME,1,15) INDEX_NAME, 
  BLEVEL, 
  LEAF_BLOCKS, 
  DISTINCT_KEYS, 
  AVG_LEAF_BLOCKS_PER_KEY, 
  AVG_DATA_BLOCKS_PER_KEY, 
  CLUSTERING_FACTOR 
FROM 
  USER_INDEXES 
WHERE 
  TABLE_NAME IN ('PO_HEADER','PO_LINE','PARTS','VEN
DORS','LOCATIONS','UMS','NARROW') 
ORDER BY 
  TABLE_NAME, 
  INDEX_NAME; 

ALTER SYSTEM FLUSH BUFFER_CACHE; 
ALTER SYSTEM FLUSH BUFFER_CACHE; 
ALTER SESSION SET TRACEFILE_IDENTIFIER = 'SELECT_TEST'; 
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 8'; 

 Select statements


SELECT 
  PO.VENDOR_ID, 
  P.PRODUCT_CODE, 
  P.STOCK_UM, 
  SUM(POL.ORDER_QTY) ORDER_QTY 
FROM 
  PO_HEADER PO, 
  PO_LINE POL, 
  PARTS P 
WHERE 
  PO.ORDER_DATE BETWEEN TRUNC(SYSDATE-90) AND TRUNC(SYSDATE) 
  AND PO.PURC_ORDER_ID=POL.PURC_ORDER_ID 
  AND POL.PART_ID=P.ID 
GROUP BY 
  PO.VENDOR_ID, 
  P.PRODUCT_CODE, 
  P.STOCK_UM; 

SELECT 
  POL.PART_ID, 
  P.DESCRIPTION, 
  MAX(DESIRED_RECV_DATE) LAST_RECEIVE_DATE 
FROM 
  PO_LINE POL, 
  PARTS P 
WHERE 
  P.PRODUCT_CODE='FG' 
  AND P.ABC_CODE='C' 
  AND P.PART_ID=POL.PART_ID 
GROUP BY 
  POL.PART_ID, 
  P.DESCIPTION; 

SELECT 
  COUNT(*) LOCATIONS 
FROM 
  LOCATIONS; 

SELECT 
  PRODUCT_CODE, 
  COUNT(*) PARTS_LARGE_WH 
FROM  
  (SELECT 
    WAREHOUSE_ID 
  FROM 
    LOCATIONS 
  GROUP BY 
    WAREHOUSE_ID 
  HAVING 
    COUNT(*)>160) W, 
  PARTS P 
WHERE 
  W.WAREHOUSE_ID=P.PRIMARY_WHS_ID 
GROUP BY 
  PRODUCT_CODE 
ORDER BY 
  PRODUCT_CODE; 
SELECT 
  COUNT(*) 
FROM 
  PARTS 
WHERE 
  QTY_ON_HAND>1000; 

SELECT 
  COUNT(*) 
FROM 
  VENDORS 
WHERE 
  ZIPCODE>' 44444'; 

SELECT 
  COUNT(*) 
FROM 
  PO_LINE POL, 
  PARTS P 
WHERE 
  POL.PURC_ORDER_ID BETWEEN '10000' AND '20000' 
  AND POL.PART_ID=P.PART_ID; 

SELECT 
  PART_ID, 
  ABC_CODE, 
  PRODUCT_CODE, 
  MAX(QTY_ON_HAND) OVER (PARTITION BY PRODUCT_CODE,
ABC_CODE) MAX_QTY_PRD_ABC, 
  MIN(QTY_ON_HAND) OVER (PARTITION BY PRODUCT_CODE,
ABC_CODE) MIN_QTY_PRD_ABC, 
  DENSE_RANK() OVER (PARTITION BY PRODUCT_CODE,ABC_CODE ORDER BY QTY_ON_HAND) DR_QTY_PRD_ABC, 
  DENSE_RANK() OVER (PARTITION BY PREF_VENDOR_ID ORDER BY ORDER_POINT) DR_OP_VEND 
FROM 
  PARTS 
ORDER BY 
  PART_ID; 

SELECT 
  V.VENDOR_ID, 
  V.VENDOR_NAME 
FROM 
  VENDORS V, 
  (SELECT DISTINCT 
    PO.VENDOR_ID 
  FROM 
    PO_HEADER PO, 
    PO_LINE POL, 
    PARTS P 
  WHERE 
    PO.PURC_ORDER_ID=POL.PURC_ORDER_ID 
    AND POL.PART_ID=P.PART_ID 
    AND P.PRODUCT_CODE='FG') PV 
WHERE 
  V.VENDOR_ID=PV.VENDOR_ID(+) 
  AND PV.VENDOR_ID IS NULL 
ORDER BY 
  V.VENDOR_ID; 

SELECT 
  PART_ID, 
  DESCRIPTION, 
  QTY_ON_HAND, 
  RANK() OVER (PARTITION BY PRODUCT_CODE ORDER BY QTY_ON_HAND DESC NULLS LAST) RANK_PC_QTY, 
  AVG(QTY_ON_HAND) OVER (PARTITION BY PRODUCT_CODE ORDER BY QTY_ON_HAND) AVG_PC_QTY, 
  MIN(QTY_ON_HAND) OVER (PARTITION BY PRODUCT_CODE ORDER BY QTY_ON_HAND) MIN_PC_QTY, 
  MAX(QTY_ON_HAND) OVER (PARTITION BY PRODUCT_CODE ORDER BY QTY_ON_HAND) MAX_PC_QTY, 
  COUNT(UNIT_MATERIAL_COST) OVER (PARTITION BY PRODUCT_CODE ORDER BY UNIT_MATERIAL_COST) COUNT_PC, 
  RANK() OVER (PARTITION BY COMMODITY_CODE ORDER BY  QTY_ON_HAND DESC NULLS LAST) RANK_CC_QTY, 
  AVG(QTY_ON_HAND) OVER (PARTITION BY COMMODITY_CODE ORDER BY QTY_ON_HAND) AVG_CC_QTY, 
  MIN(QTY_ON_HAND) OVER (PARTITION BY COMMODITY_CODE ORDER BY QTY_ON_HAND) MIN_CC_QTY, 
  MAX(QTY_ON_HAND) OVER (PARTITION BY COMMODITY_CODE ORDER BY QTY_ON_HAND) MAX_CC_QTY, 
  COUNT(QTY_ON_HAND) OVER (PARTITION BY COMMODITY_CODE ORDER BY QTY_ON_HAND) COUNT_CC, 
  RANK() OVER (PARTITION BY NVL(PREF_VENDOR_ID,'IN_HOUSE_FAB') ORDER BY QTY_ON_HAND DESC NULLS LAST) RANK_VENDOR_QTY, 
  AVG(QTY_ON_HAND) OVER (PARTITION BY NVL(PREF_VENDOR_ID,'IN_HOUSE_FAB') ORDER BY QTY_ON_HAND) AVG_VENDOR_QTY, 
  MIN(QTY_ON_HAND) OVER (PARTITION BY NVL(PREF_VENDOR_ID,'IN_HOUSE_FAB') ORDER BY QTY_ON_HAND) MIN_VENDOR_QTY, 
  MAX(QTY_ON_HAND) OVER (PARTITION BY NVL(PREF_VENDOR_ID,'IN_HOUSE_FAB') ORDER BY QTY_ON_HAND) MAX_VENDOR_QTY, 
  COUNT(QTY_ON_HAND) OVER (PARTITION BY PREF_VENDOR_ID ORDER BY QTY_ON_HAND) COUNT_VENDOR 
FROM 
  PARTS 
ORDER BY 
  PART_ID; 
SELECT 
  PRODUCT_CODE, 
  RANK(1) WITHIN GROUP (ORDER BY QTY_ON_HAND DESC NULLS LAST) UNIT_PRICE, 
  RANK(2) WITHIN GROUP (ORDER BY QTY_ON_HAND DESC NULLS LAST) UNIT_PRICE, 
  RANK(3) WITHIN GROUP (ORDER BY QTY_ON_HAND DESC NULLS LAST) UNIT_PRICE, 
  RANK(4) WITHIN GROUP (ORDER BY QTY_ON_HAND DESC NULLS LAST) UNIT_PRICE, 
  RANK(5) WITHIN GROUP (ORDER BY QTY_ON_HAND DESC NULLS LAST) UNIT_PRICE 
FROM 
  PARTS 
GROUP BY 
  PRODUCT_CODE 
ORDER BY 
  PRODUCT_CODE; 

SELECT 
  PO.PART_ID, 
  P.DESCRIPTION, 
  PO.VENDOR_ID, 
  PO.CREATE_DATE, 
  PO.UNIT_PRICE, 
  PO.LAST_VENDOR_ID, 
  PO.LAST_CREATE_DATE, 
  PO.LAST_UNIT_PRICE, 
  P.PRODUCT_CODE, 
  P.COMMODITY_CODE 
FROM 
  (SELECT 
    POL.PART_ID, 
    PO.VENDOR_ID, 
    TRUNC(NVL(POL.POL_CREATE_DATE,PO.CREATE_DATE)) 
CREATE_DATE, 
    POL.UNIT_PRICE, 
    LEAD(PO.VENDOR_ID,1,NULL) OVER (PARTITION BY PART_ID ORDER BY NVL(POL.POL_CREATE_DATE,PO.CREATE_DATE) DESC) LAST_VENDOR_ID, 
    TRUNC(LEAD(NVL(POL.POL_CREATE_DATE,PO.CREATE_DATE),1,NULL) OVER (PARTITION BY PART_ID ORDER BY 
NVL(POL.POL_CREATE_DATE,PO.CREATE_DATE) DESC))  LAST_CREATE_DATE, 
    LEAD(POL.UNIT_PRICE,1,NULL) OVER (PARTITION BY 
PART_ID ORDER BY NVL(POL.POL_CREATE_DATE,PO.CREATE_DATE) DESC) LAST_UNIT_PRICE 
  FROM 
    PO_HEADER PO, 
    PO_LINE POL 
  WHERE 
    PO.ID=POL.PURC_ORDER_ID 
    AND PO.CREATE_DATE>TRUNC(SYSDATE-720) 
  ORDER BY 
    POL.PART_ID, 
    NVL(POL.POL_CREATE_DATE,PO.CREATE_DATE) DESC) PO, 
  PARTS P 
WHERE 
  PO.PART_ID=P.PART_ID 
  AND PO.CREATE_DATE>TRUNC(SYSDATE-90) 
  AND (PO.VENDOR_ID<>NVL(PO.LAST_VENDOR_ID,'-') 
    OR PO.CREATE_DATE>(NVL(PO.LAST_CREATE_DATE,SYSDATE-1024)+180) 
    OR PO.UNIT_PRICE<>NVL(PO.LAST_UNIT_PRICE,-1)); 
SELECT 'FINISHED' FROM DUAL; 
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF' 
SPOOL OFF 


No comments:

Post a Comment

Understanding SQL Plan Baselines in Oracle Database

  Understanding SQL Plan Baselines in Oracle Database SQL Plan Baseline is the feature in Oracle started from Database 11g that helps to pre...