HOW TO
Die regelmäßige Ausführung einer Komprimierung ist eine notwendige Operation zum Verwalten und Pflegen einer ordnungsgemäß versionierten Geodatabase. Bei dieser Operation werden Zustände, die nicht mehr durch eine Version referenziert werden, entfernt und Datensätze in den Delta-Tabellen in die entsprechenden Business-Tabellen verschoben. Die Dauer der Komprimierungsoperation hängt auch davon ab, wie oft die Daten bearbeitet wurden. Bei 10.3 und 10.2.1 Utility and Telco Patch 1 wurde die Protokollierung der Komprimierung erweitert, um zu erläutern, was in diesem gesamten Prozess geschehen ist.
CREATE TABLE SDE.COMPRESS_LOG ( "SDE_ID" NUMBER(*,0) NOT NULL ENABLE, "SERVER_ID" NUMBER(*,0) NOT NULL ENABLE, "DIRECT_CONNECT" VARCHAR2(1) NOT NULL ENABLE, "COMPRESS_START" DATE NOT NULL ENABLE, "START_STATE_COUNT" NUMBER(*,0) NOT NULL ENABLE, "COMPRESS_END" DATE, "END_STATE_COUNT" NUMBER(*,0), "COMPRESS_STATUS" VARCHAR2(20) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE SDE; CREATE TABLE SDE.COMPRESS_LOG_TRACKER_TAB (SDE_ID NUMBER(*,0), SERVER_ID NUMBER(*,0), LOG_DATE DATE, COMPRESS_END DATE, COMPRESS_STATUS VARCHAR2(20), START_STATE_COUNT NUMBER(*,0), END_STATE_COUNT NUMBER(*,0)) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 131072 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE SDE; CREATE OR REPLACE TRIGGER SDE.COMPRESS_LOG_TRACKER_TRIG AFTER INSERT OR UPDATE OF COMPRESS_STATUS ON SDE.COMPRESS_LOG REFERENCING NEW AS new FOR EACH ROW DECLARE BEGIN INSERT INTO SDE.COMPRESS_LOG_TRACKER_TAB (SDE_ID, SERVER_ID, LOG_DATE, COMPRESS_END, COMPRESS_STATUS, START_STATE_COUNT, END_STATE_COUNT) VALUES (:new.SDE_ID, :new.SERVER_ID, sysdate, :new.COMPRESS_END, :new.COMPRESS_STATUS, :new.START_STATE_COUNT, :new.END_STATE_COUNT); EXCEPTION WHEN OTHERS THEN RAISE; END; / Abfragen der Komprimierungs-Tracker-Tabelle: SQL> select * from sde.compress_log_tracker_tab; SDE_ID SERVER_ID LOG_DATE COMPRESS_END COMPRESS_STATUS START_STATE_COUNT END_STATE_COUNT ---------- ---------- ------------------------ ------------------------ -------------------- ----------------- --------------- 51 5896 Tue 07-Jul-2015 10:55:16 IN PROGRESS 15 51 5896 Tue 07-Jul-2015 10:55:16 DELETE LEAF STATES 15 15 51 5896 Tue 07-Jul-2015 10:55:17 TRIMMING 15 13 51 5896 Tue 07-Jul-2015 10:55:17 MOVE TO BASE 15 13 51 5896 Tue 07-Jul-2015 10:55:17 Tue 07-Jul-2015 10:55:17 SUCCESS 15 1 5 rows selected.
CREATE TABLE [sde].[SDE_compress_log]( [compress_id] [int] IDENTITY(1,1) NOT NULL, [sde_id] [int] NOT NULL, [server_id] [int] NOT NULL, [direct_connect] [varchar](1) NOT NULL, [compress_start] [datetime] NOT NULL, [start_state_count] [int] NOT NULL, [compress_end] [datetime] NULL, [end_state_count] [int] NULL, [compress_status] [varchar](20) NULL, CONSTRAINT [compress_log_pk] PRIMARY KEY CLUSTERED ( [compress_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO CREATE TABLE [sde].[SDE_COMPRESS_LOG_TRACKER_TAB] ( [SDE_ID] int NULL, [SERVER_ID] int NULL, [LOG_DATE] datetime NULL, [COMPRESS_END] [datetime], [COMPRESS_STATUS] varchar(20), [START_STATE_COUNT] [int], [END_STATE_COUNT] [int] ) GO CREATE TRIGGER sde.SDE_COMPRESS_LOG_TRACKER_TRIG ON sde.SDE_COMPRESS_LOG AFTER INSERT, UPDATE AS BEGIN SET NOCOUNT ON /* column variables declaration*/ DECLARE @new$SDE_ID int, @new$SERVER_ID int, @new$LOG_DATE datetime, @new$COMPRESS_END datetime, @new$COMPRESS_STATUS varchar(20), @new$START_STATE_COUNT int, @new$END_STATE_COUNT int DECLARE ForEachInsertedRowTriggerCursor CURSOR LOCAL FORWARD_ONLY READ_ONLY FOR SELECT SDE_ID, SERVER_ID, sysdatetime(), COMPRESS_END, COMPRESS_STATUS, START_STATE_COUNT, END_STATE_COUNT FROM inserted OPEN ForEachInsertedRowTriggerCursor FETCH ForEachInsertedRowTriggerCursor INTO @new$SDE_ID, @new$SERVER_ID, @new$LOG_DATE, @new$COMPRESS_END, @new$COMPRESS_STATUS, @new$START_STATE_COUNT, @new$END_STATE_COUNT WHILE @@fetch_status = 0 BEGIN /* trigger implementation: begin*/ BEGIN IF (UPDATE(COMPRESS_STATUS)) BEGIN INSERT sde.SDE_COMPRESS_LOG_TRACKER_TAB(SDE_ID, SERVER_ID, LOG_DATE, COMPRESS_END, COMPRESS_STATUS, START_STATE_COUNT, END_STATE_COUNT) VALUES (@new$SDE_ID, @new$SERVER_ID, sysdatetime(), @new$COMPRESS_END, @new$COMPRESS_STATUS, @new$START_STATE_COUNT, @new$END_STATE_COUNT) END END /* trigger implementation: end*/ FETCH ForEachInsertedRowTriggerCursor INTO @new$SDE_ID, @new$SERVER_ID, @new$LOG_DATE, @new$COMPRESS_END, @new$COMPRESS_STATUS, @new$START_STATE_COUNT, @new$END_STATE_COUNT END CLOSE ForEachInsertedRowTriggerCursor DEALLOCATE ForEachInsertedRowTriggerCursor END GO Abfragen der Komprimierungs-Tracker-Tabelle: select * from sde.SDE_COMPRESS_LOG_TRACKER_TAB go SDE_ID SERVER_ID LOG_DATE COMPRESS_END COMPRESS_STATUS START_STATE_COUNT END_STATE_COUNT ----------- ----------- ----------------------- ----------------------- -------------------- ----------------- --------------- 3035 9016 2015-07-02 12:36:07.690 NULL IN PROGRESS 8154 NULL 3035 9016 2015-07-02 12:36:07.720 NULL DELETE LEAF STATES 8154 8154 3035 9016 2015-07-02 12:52:03.113 NULL TRIMMING 8154 6308 3035 9016 2015-07-02 12:53:44.770 NULL MOVE TO BASE 8154 6306 3035 9016 2015-07-02 12:56:12.637 2015-07-02 12:56:12.623 SUCCESS 8154 6094 (5 rows affected)
Hinweis: Wenn die SQL Server-Enterprise-Geodatabase von einem DBO-Benutzer verwaltet wird (und nicht von einem SDE-Benutzer), ändern Sie den Besitzer der Tabellen und Trigger von SDE in DBO.
Unterstützung durch ArcGIS-Experten anfordern
Esri Support App herunterladen