日本語

操作手順: 圧縮処理のステータスをチェックする

概要

定期的な圧縮処理の実行は、正常なバージョン対応ジオデータベースを管理および保守するために必要な処理です。 この処理により、バージョンで参照されなくなったステートが削除されて、差分テーブルのレコードが対応するビジネス テーブルに移行されます。 データが編集される頻度が、圧縮処理が完了するまでの時間に影響します。 10.3 および 10.2.1 の Utilities and Telecom Update 1 Patch では、このプロセス全体を通して実行されている処理について説明するために、補足の圧縮ログの機能が導入されています。

手順

この補足の圧縮ログ情報を取得するには、次の手順を実行します。

  1. COMPRESS_LOG テーブルを作成します (まだ存在しない場合)。 このテーブルは、最初の圧縮処理が実行されたときに自動的に作成されます。
  2. COMPRESS_LOG テーブルの COMPRESS_STATUS 列が変更されたときにレコードを挿入する圧縮監査テーブルを作成します。
  3. COMPRESS_STATUS 列に対する変更を記録して圧縮監査テーブルに書き込むために COMPRESS_LOG テーブル上にトリガー (trigger) を作成します。
    • Oracle ジオデータベースの場合:
      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;
      /
      
      圧縮追跡テーブルに対するクエリの実行:
      
      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.
    • SQL Server ジオデータベースの場合:
      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
      
      
      圧縮追跡テーブルに対するクエリの実行:
      
      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)
      注意:
      SQL Server エンタープライズ ジオデータベースが (SDE ではなく) DBO ユーザーによって管理されている場合は、テーブルとトリガーの所有者を SDE から DBO に変更します。
    • 各 COMPRESS_STATUS 処理の説明:
      • IN PROGRESS - 圧縮処理が開始されています。
      • DELETE LEAF STATES - バージョンの系統に属していないステートをすべて削除します。
      • TRIMMING - 候補系統のステートを 1 つのステートにまとめます。
      • MOVE TO BASE - 差分テーブルの行をベース (ビジネス) テーブルに移行します (別のバージョンによってブロックされていない場合)。
      • SUCCESS - 圧縮処理が正常に完了しました。

関連情報