--
--	Script to create CRUSH tables in Oracle
--  Uses schema CRUSHFTP with TABLESPACE(s) of CRUSHFTPDATA, CRUSHFTPINDX
--
--
--	Oracle Create USERS
--
CREATE TABLE CRUSHFTP.USERS (
	USERID        NUMBER(8) NOT NULL,
	USERNAME      VARCHAR2(255) NOT NULL,
	PASSWORD      VARCHAR2(255),
	SERVER_GROUP  VARCHAR2(50))
	PCTFREE 10 INITRANS 1 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPDATA;

ALTER TABLE CRUSHFTP.USERS ADD (
	CONSTRAINT CRUSH_USERS_PK PRIMARY KEY (USERID)
		USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
		STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
		TABLESPACE CRUSHFTPINDX);

--
--	CREATE USER_PROPERTIES
--
CREATE TABLE CRUSHFTP.USER_PROPERTIES (
	USERID      NUMBER(8) NOT NULL,
	PROP_NAME   VARCHAR2(255) NOT NULL,
	PROP_VALUE  VARCHAR2(2000))
	PCTFREE 10 INITRANS 1 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPDATA;

ALTER TABLE CRUSHFTP.USER_PROPERTIES ADD (
	CONSTRAINT CRUSH_USER_PROPERTIES_PK PRIMARY KEY (USERID, PROP_NAME)
		USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
		STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
		TABLESPACE CRUSHFTPINDX,
	CONSTRAINT CRUSH_USER_PROP_USER_FK FOREIGN KEY (USERID) REFERENCES CRUSHFTP.USERS (USERID) ON DELETE CASCADE);

--
--	Create DOMAIN_ROOT_LIST
--
CREATE TABLE CRUSHFTP.DOMAIN_ROOT_LIST (
	USERID  NUMBER(8) NOT NULL,
	DOMAIN  VARCHAR2(255),
	PATH    VARCHAR2(255))
	PCTFREE 10 INITRANS 1 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPDATA;

ALTER TABLE CRUSHFTP.DOMAIN_ROOT_LIST ADD (
	CONSTRAINT CRUSH_DOMAIN_ROOT_LIST_PK PRIMARY KEY (USERID, DOMAIN, PATH)
		USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
		STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
		TABLESPACE CRUSHFTPINDX,
	CONSTRAINT CRUSH_DOMAIN_ROOT_LIST_USER_FK FOREIGN KEY (USERID) REFERENCES CRUSHFTP.USERS (USERID) ON DELETE CASCADE);

--
--	CREATE EVENTS5
--	
CREATE TABLE CRUSHFTP.EVENTS5 (
	USERID      NUMBER(8) NOT NULL,
	EVENT_NAME  VARCHAR2(255) NOT NULL,
	PROP_NAME   VARCHAR2(255) NOT NULL,
	PROP_VALUE  VARCHAR2(2000))
	PCTFREE 10 INITRANS 1 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPDATA;

ALTER TABLE CRUSHFTP.EVENTS5 ADD (
	CONSTRAINT CRUSH_EVENTS5_PK PRIMARY KEY (USERID, EVENT_NAME, PROP_NAME)
		USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
		STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
		TABLESPACE CRUSHFTPINDX,
	CONSTRAINT CRUSH_EVENTS5_USER_FK FOREIGN KEY (USERID) REFERENCES CRUSHFTP.USERS (USERID) ON DELETE CASCADE);

--
--	CREATE TABLE GROUPS
--
CREATE TABLE CRUSHFTP.GROUPS (
	GROUPNAME     VARCHAR2(255) NOT NULL,
	USERID        NUMBER(8) NOT NULL,
	SERVER_GROUP  VARCHAR2(50))
	PCTFREE 10 INITRANS 1 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPDATA;

ALTER TABLE CRUSHFTP.GROUPS ADD (
	CONSTRAINT CRUSH_GROUP_PK PRIMARY KEY (GROUPNAME, USERID)
		USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
		STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
		TABLESPACE CRUSHFTPINDX,
	CONSTRAINT CRUSH_GROUP_USER_FK FOREIGN KEY (USERID) REFERENCES CRUSHFTP.USERS (USERID) ON DELETE CASCADE);

--
--	CREATE TABLE INHERITANCE
--
CREATE TABLE CRUSHFTP.INHERITANCE (
	USERID            NUMBER(8) NOT NULL,
	INHERIT_USERNAME  VARCHAR2(255) NOT NULL,
	SORT_ORDER        NUMBER(3))
	PCTFREE 10 INITRANS 1 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPDATA;

ALTER TABLE CRUSHFTP.INHERITANCE ADD (
	CONSTRAINT CRUSH_INHERITANCE_PK PRIMARY KEY (USERID, INHERIT_USERNAME)
		USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
		STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
		TABLESPACE CRUSHFTPINDX,
	CONSTRAINT CRUSH_INHERITANCE_USER_FK FOREIGN KEY (USERID) REFERENCES CRUSHFTP.USERS (USERID) ON DELETE CASCADE);

CREATE UNIQUE INDEX CRUSHFTP.IDX_CRUSH_INHERITANCE_USRID_SO ON CRUSHFTP.INHERITANCE (USERID, SORT_ORDER)
	PCTFREE 10 INITRANS 2 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPINDX;

--
--	CREATE TABLE IP_RESTRICTIONS
--
CREATE TABLE CRUSHFTP.IP_RESTRICTIONS (
	USERID      NUMBER(8) NOT NULL,
	START_IP    VARCHAR2(255) NOT NULL,
	TYPE        VARCHAR2(1),
	STOP_IP     VARCHAR2(255) NOT NULL,
	SORT_ORDER  NUMBER(3) NOT NULL)
	PCTFREE 10 INITRANS 1 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPDATA;

ALTER TABLE CRUSHFTP.IP_RESTRICTIONS ADD (
	CONSTRAINT CRUSH_IP_RESTR_PK PRIMARY KEY (USERID, START_IP)
		USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
		STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
		TABLESPACE CRUSHFTPINDX,
	CONSTRAINT CRUSH_IP_RESTR_TYPE_C CHECK (TYPE IN ('A','D')),
	CONSTRAINT CRUSH_IP_RESTR_USER_FK FOREIGN KEY (USERID) REFERENCES CRUSHFTP.USERS (USERID) ON DELETE CASCADE);

CREATE UNIQUE INDEX CRUSHFTP.IDX_CRUSH_IP_RESTR_USERID_SO ON CRUSHFTP.IP_RESTRICTIONS (USERID, SORT_ORDER)
	PCTFREE 10 INITRANS 2 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPINDX;

--
--	CREATE TABLE VFS (Virtual File System)
--
CREATE TABLE CRUSHFTP.VFS (
	USERID      NUMBER(8) NOT NULL,
	URL         VARCHAR2(255),
	TYPE        VARCHAR2(50),
	PATH        VARCHAR2(255),
	SORT_ORDER  NUMBER(3) NOT NULL)
	PCTFREE 10 INITRANS 1 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPDATA;

ALTER TABLE CRUSHFTP.VFS ADD (
	CONSTRAINT CRUSH_VFS_PK PRIMARY KEY (USERID, PATH)
		USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
		STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
		TABLESPACE CRUSHFTPINDX,
	CONSTRAINT CRUSH_VFS_USER_FK FOREIGN KEY (USERID) REFERENCES CRUSHFTP.USERS (USERID) ON DELETE CASCADE);

CREATE UNIQUE INDEX CRUSHFTP.IDX_CRUSH_VFS_USERID_SO ON CRUSHFTP.VFS (USERID, SORT_ORDER)
	PCTFREE 10 INITRANS 2 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPINDX;

--
--	CREATE TABLE VFS_PERMISSIONS
--
CREATE TABLE CRUSHFTP.VFS_PERMISSIONS (
	USERID  NUMBER(8) NOT NULL,
	PATH    VARCHAR2(255) NOT NULL,
	PRIVS   VARCHAR2(255) NOT NULL)
	PCTFREE 10 INITRANS 1 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPDATA;

ALTER TABLE CRUSHFTP.VFS_PERMISSIONS ADD (
	CONSTRAINT CRUSH_VFS_PERMISSIONS_PK PRIMARY KEY (USERID, PATH)
		USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
		STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
		TABLESPACE CRUSHFTPINDX,
	CONSTRAINT CRUSH_VFS_PERMISSIONS_FK FOREIGN KEY (USERID) REFERENCES CRUSHFTP.USERS (USERID) ON DELETE CASCADE);

--
--	CREATE TABLE WEB_BUTTONS
--
CREATE TABLE CRUSHFTP.WEB_BUTTONS (
	USERID           NUMBER(8) NOT NULL,
	SQL_FIELD_KEY    VARCHAR2(255) NOT NULL,
	SQL_FIELD_VALUE  VARCHAR2(255),
	FOR_MENU         VARCHAR2(10),
	FOR_CONTEXT_MENU VARCHAR2(10),
	SORT_ORDER       NUMBER(3) NOT NULL)
	PCTFREE 10 INITRANS 1 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPDATA;

ALTER TABLE CRUSHFTP.WEB_BUTTONS ADD (
	CONSTRAINT CRUSH_WEB_BUTTONS_PK PRIMARY KEY (USERID, SQL_FIELD_KEY)
		USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
		STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
		TABLESPACE CRUSHFTPINDX,
	CONSTRAINT CRUSH_WEB_BUTTONS_USER_FK FOREIGN KEY (USERID) REFERENCES CRUSHFTP.USERS (USERID) ON DELETE CASCADE);

CREATE UNIQUE INDEX CRUSHFTP.IDX_CRUSH_WEB_BUTTONS_USRID_SO ON CRUSHFTP.WEB_BUTTONS (USERID, SORT_ORDER)
	PCTFREE 10 INITRANS 2 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPINDX;

--
--	CREATE TABLE WEB_CUSTOMIZATIONS
--
CREATE TABLE CRUSHFTP.WEB_CUSTOMIZATIONS (
	USERID           NUMBER(8) NOT NULL,
	SQL_FIELD_KEY    VARCHAR2(255) NOT NULL,
	SQL_FIELD_VALUE  VARCHAR2(255),
	SORT_ORDER       NUMBER(3) NOT NULL)
	PCTFREE 10 INITRANS 1 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPDATA;

ALTER TABLE CRUSHFTP.WEB_CUSTOMIZATIONS ADD (
	CONSTRAINT CRUSH_WEB_CUSTOMIZATIONS_PK PRIMARY KEY (USERID, SQL_FIELD_KEY)
		USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
		STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
		TABLESPACE CRUSHFTPINDX,
	CONSTRAINT CRUSH_WEB_CUSTOM_USER_FK FOREIGN KEY (USERID) REFERENCES CRUSHFTP.USERS (USERID) ON DELETE CASCADE);

CREATE UNIQUE INDEX CRUSHFTP.IDX_CRUSH_WEB_CUSTOM_USERID_SO ON CRUSHFTP.WEB_CUSTOMIZATIONS (USERID, SORT_ORDER)
	PCTFREE 10 INITRANS 2 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPINDX;

CREATE TABLE CRUSHFTP.MODIFIED_TIMES ( 
  SERVER_GROUP VARCHAR2(50), 
  PROP_NAME VARCHAR2(255), 
  PROP_VALUE VARCHAR2(255) 
  ) 
  TABLESPACE CRUSHFTPDATA 
; 

--
--	CREATE USER_PROPERTIES
--
CREATE TABLE CRUSHFTP.VFS_PROPERTIES (
	USERID      NUMBER(8) NOT NULL,
	PATH   VARCHAR2(1024),
	PROP_NAME   VARCHAR2(255) NOT NULL,
	PROP_VALUE  VARCHAR2(2000))
	PCTFREE 10 INITRANS 1 MAXTRANS 255
	STORAGE (INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 BUFFER_POOL DEFAULT)
	TABLESPACE CRUSHFTPDATA;


CREATE SEQUENCE CRUSHFTP.USERS_SEQ 
INCREMENT BY 1 
NOMAXVALUE 
START WITH 1 
MINVALUE 1 
NOCACHE 
NOCYCLE 
ORDER; 

-- trigger to get the next sequence-value for userid 
CREATE OR REPLACE TRIGGER CRUSHFTP.USERS_TRG BEFORE INSERT OR UPDATE ON CRUSHFTP.USERS 
FOR EACH ROW 
DECLARE 
v_newVal NUMBER(12) := 0; 
v_incval NUMBER(12) := 0; 
BEGIN 
  IF INSERTING AND :new.USERID IS NULL THEN 
    SELECT USERS_SEQ.NEXTVAL INTO v_newVal FROM DUAL; 
    IF v_newVal = 1 THEN 
      SELECT NVL(max(USERID),0) INTO v_newVal FROM USERS; 
      v_newVal := v_newVal + 1; 
      LOOP 
           EXIT WHEN v_incval>=v_newVal; 
           SELECT USERS_SEQ.nextval INTO v_incval FROM dual; 
      END LOOP; 
    END IF; 
   :new.USERID := v_newVal; 
  END IF; 
END; 

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-4) was last changed on 09-Oct-2016 18:14 by Ben Spink
G’day (anonymous guest)

Referenced by
LeftMenu

JSPWiki v2.8.2