<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      SDE表空間過(guò)大分析(STATES,STATE_LINEAGES表過(guò)大)

      一、環(huán)境

      ArcGIS10.1   Oracle11G

      二、問(wèn)題描述

      在進(jìn)行數(shù)據(jù)庫(kù)巡檢時(shí)候,發(fā)現(xiàn)SDE表空間占用較大(超過(guò)40GB),因我們使用的時(shí)候SDE表空間沒(méi)有存儲(chǔ)任何用戶(hù)數(shù)據(jù),只有SDE系統(tǒng)表,數(shù)據(jù)量這么大有些不正常。

      三、問(wèn)題分析

      1、檢查空間占用情況

      SELECT *
        FROM (SELECT SEGMENT_NAME,
                     SEGMENT_TYPE,
                     ROUND (SUM(BYTES) / 1024 / 1024 ,0) SEGMENT_SIZE
                FROM (SELECT T.TABLESPACE_NAME,
                             T.SEGMENT_NAME,
                             T.SEGMENT_TYPE,
                             T.BYTES
                        FROM USER_SEGMENTS T
                       WHERE 1 = 1
                         AND T.SEGMENT_TYPE NOT IN
                             ('INDEX', 'LOBINDEX', 'LOBSEGMENT')
                      UNION ALL
                      SELECT T.TABLESPACE_NAME,
                             UL.TABLE_NAME AS SEGMENT_NAME,
                             'TABLE' AS SEGMENT_TYPE,
                             T.BYTES
                        FROM USER_SEGMENTS T
                       INNER JOIN USER_LOBS UL
                          ON T.SEGMENT_NAME = UL.SEGMENT_NAME
                       WHERE 1 = 1
                         AND T.SEGMENT_TYPE = 'LOBSEGMENT'
                      UNION ALL
                      SELECT T.TABLESPACE_NAME,
                             UI.TABLE_NAME AS SEGMENT_NAME,
                             'TABLE' AS SEGMENT_TYPE,
                             T.BYTES
                        FROM USER_SEGMENTS T
                       INNER JOIN USER_INDEXES UI
                          ON T.SEGMENT_NAME = UI.INDEX_NAME
                       WHERE 1 = 1
                         AND T.SEGMENT_TYPE IN ('INDEX', 'LOBINDEX')
                         AND 1 = 1) T
               WHERE 1 = 1
               GROUP BY SEGMENT_NAME, SEGMENT_TYPE) T
       WHERE 1 = 1
       ORDER BY SEGMENT_SIZE DESC;

      image

      可以看到占用較大的是STATE_LINEAGES表,采用SQL語(yǔ)句查看其數(shù)據(jù)條數(shù),發(fā)現(xiàn)數(shù)據(jù)量到達(dá)8億多條,這明顯是不正常的。

      注意:當(dāng)時(shí)還發(fā)現(xiàn)部分索引占用空間較大,對(duì)索引進(jìn)行重建即可。

      select t.TABLE_NAME,t.NUM_ROWS from user_tables t where t.NUM_ROWS is not null order by t.NUM_ROWS desc;

      image

      2、對(duì)STATE_LINEAGES表進(jìn)行分析

      經(jīng)過(guò)查閱相關(guān)資料,STATE_LINEAGES表和STATES表主要是負(fù)責(zé)記錄版本編輯的信息(對(duì)于版本編輯不熟悉的可以參見(jiàn)一下ArcGIS官方文檔,其主要是注冊(cè)版本后可以多人同時(shí)在線編輯)。

       

      版本編輯參考:

       

      ArcSDE的版本管理機(jī)制_51CTO博客_arcgis版本管理

       

      ArcGIS Help 10.1 - Versioned tables in a geodatabase in SQL Server

       

      但是我們這邊沒(méi)有用到版本,我的庫(kù)里面也沒(méi)有注冊(cè)任何版本,為了避免遺漏,咨詢(xún)公司DBA通過(guò)SQL進(jìn)行查詢(xún):

      select owner,table_name from table_registry where bitand(object_flags,power(2,3))>0;

      image

      查詢(xún)結(jié)果后發(fā)現(xiàn),只有個(gè)別圖層注冊(cè)了版本,經(jīng)過(guò)檢查,這幾個(gè)圖層所在的表空間已經(jīng)刪除,此些記錄也只是遺留下來(lái)的臟數(shù)據(jù)而已,這樣可以確定沒(méi)有注冊(cè)版本的圖層。

      3、對(duì)STATE_LINEAGES表內(nèi)數(shù)據(jù)進(jìn)行分析

      select t.owner,count(*) from states t group by t.owner order by count(*) desc;

      image

      發(fā)現(xiàn)記錄均集中在特定的幾個(gè)用戶(hù)之中,根據(jù)業(yè)務(wù)分析,這幾個(gè)用戶(hù)都是涉及到數(shù)據(jù)上圖的用戶(hù);

      說(shuō)明:我們這里對(duì)數(shù)據(jù)的處理都是通過(guò)SOE擴(kuò)展地圖服務(wù)功能實(shí)現(xiàn)數(shù)據(jù)增刪改的,一般只是涉及增加和刪除操作。

      4、系統(tǒng)以及表清空測(cè)試(測(cè)試環(huán)境)

      根據(jù)DBA描述,如果沒(méi)有用到版本編輯,相應(yīng)的表是可以清空的,我這里進(jìn)行相關(guān)測(cè)試

      A、通過(guò)系統(tǒng)上圖功能測(cè)試,每次點(diǎn)擊保存界址點(diǎn)的時(shí)候是會(huì)對(duì)數(shù)據(jù)進(jìn)行刪除后再新增(邏輯明顯有問(wèn)題,應(yīng)該只有界址點(diǎn)發(fā)生改變時(shí)才觸發(fā)此操作,測(cè)試),在STATE_LINEAGES表中會(huì)新增記錄;

      B、清空STATE_LINEAGES表(注意表有相關(guān)聯(lián)的索引、主鍵等,為了不破壞相應(yīng)的關(guān)系,建議原表備份刪除后進(jìn)行重建)

      我這里因測(cè)試環(huán)境數(shù)據(jù)量比較小(注意,這僅僅適用于數(shù)據(jù)量不大的情況),采用下面語(yǔ)句進(jìn)行表備份清空:

      CREATE TABLE STATES_1 AS SELECT * FROM STATES;
      CREATE TABLE STATE_LINEAGES_1  AS SELECT * FROM  STATE_LINEAGES;
      DELETE FROM STATES;
      DELETE FROM STATE_LINEAGES;

      如果要恢復(fù)數(shù)據(jù),只要通過(guò)之前備份的語(yǔ)句重建表之后,將記錄插回去即可。

      INSERT INTO  STATES SELECT * FROM STATES_1;
      INSERT INTO  STATE_LINEAGES SELECT * FROM STATE_LINEAGES_1;

      在系統(tǒng)中點(diǎn)擊保存時(shí)候會(huì)報(bào)錯(cuò),通過(guò)跟蹤ArcGIS Server日志,錯(cuò)誤信息如下:

      【DeleteData】:刪除失敗.錯(cuò)誤消息:Underlying DBMS error [Error executing stored procedure sde.version_util.insert_state::ORA-06508: PL/SQL: 無(wú)法找到正在調(diào)用 的程序單元] [SDE.DEFAULT][STATE_ID = 15677]

      5、SOE檢查,原因明確

      通過(guò)上免的測(cè)試可以發(fā)現(xiàn),基本就是通過(guò)SOE進(jìn)行數(shù)據(jù)刪除的方法有問(wèn)題了,讓開(kāi)發(fā)檢查相關(guān)語(yǔ)句,是否有版本編輯相關(guān)的內(nèi)容,結(jié)果發(fā)現(xiàn)在做編輯的時(shí)候使用了以下語(yǔ)句:

      muWorkspaceEdit.StartMultiuserEditing(esriMultiuserEditSessionMode.esriMESMVersioned);

      這明顯是使用了基于版本的方法,修改成下面的方法并重新編譯SOE

      muWorkspaceEdit.StartMultiuserEditing(esriMultiuserEditSessionMode.esriMESMNonVersioned);

      四、問(wèn)題解決與后續(xù)跟蹤

      SOE修改編譯后,將現(xiàn)場(chǎng)地圖服務(wù)所使用的SOE進(jìn)行全部替換(如果有多個(gè)站點(diǎn)使用了此SOE,不要有遺漏);

      在后續(xù)跟蹤STATE_LINEAGES表中數(shù)據(jù)產(chǎn)生情況

      select to_char(t.creation_time,'yyyymmdd'),count(*) from STATES t group by to_char(t.creation_time,'yyyymmdd') order by  to_char(t.creation_time,'yyyymmdd') desc;

      image

      select to_char(t.creation_time,'yyyymmdd'),t.owner,count(*) from STATES t group by t.owner,to_char(t.creation_time,'yyyymmdd') order by  to_char(t.creation_time,'yyyymmdd') desc;

      image

      經(jīng)過(guò)跟蹤測(cè)試,后續(xù)的上圖以及數(shù)據(jù)刪除等不會(huì)再在STATE_LINEAGES表中差生新的記錄。

      在測(cè)試環(huán)境下清空STATE_LINEAGES表之后,刪除以及上圖也不會(huì)再有錯(cuò)誤,同步使用ArcGIS進(jìn)行數(shù)據(jù)編輯、版本注冊(cè)等操作,驗(yàn)證也沒(méi)有任何問(wèn)題,數(shù)據(jù)表增長(zhǎng)的情況得以解決!

      至于現(xiàn)在已有的存量數(shù)據(jù),可以考慮備份后情況或者記錄保留均可以,只要后續(xù)不再增長(zhǎng),問(wèn)題不大!

      最后附上兩個(gè)表的建表語(yǔ)句

      -- Create table
      create table STATE_LINEAGES
      (
        lineage_name INTEGER not null,
        lineage_id   INTEGER not null
      )
      tablespace SDE_TBS
        pctfree 5
        initrans 4
        maxtrans 255
        storage
        (
          initial 7M
          next 1M
          minextents 1
          maxextents unlimited
        );
      -- Create/Recreate indexes 
      create index LINEAGE_ID_IDX2 on STATE_LINEAGES (LINEAGE_ID)
        tablespace SDE_TBS
        pctfree 5
        initrans 4
        maxtrans 255
        storage
        (
          initial 10M
          next 4M
          minextents 1
          maxextents unlimited
        );
      -- Create/Recreate primary, unique and foreign key constraints 
      alter table STATE_LINEAGES
        add constraint LINEAGES_PK primary key (LINEAGE_NAME, LINEAGE_ID)
        using index 
        tablespace SDE_TBS
        pctfree 10
        initrans 2
        maxtrans 255
        storage
        (
          initial 64K
          next 1M
          minextents 1
          maxextents unlimited
        );
      -- Grant/Revoke object privileges 
      grant select on STATE_LINEAGES to PUBLIC;
      -- STATES表的相關(guān)語(yǔ)句
      -- Create table
      create table STATES
      (
        state_id        INTEGER not null,
        owner           NVARCHAR2(32) not null,
        creation_time   DATE not null,
        closing_time    DATE,
        parent_state_id INTEGER not null,
        lineage_name    INTEGER not null
      )
      tablespace SDE_TBS
        pctfree 10
        initrans 4
        maxtrans 255
        storage
        (
          initial 1M
          next 128K
          minextents 1
          maxextents unlimited
        );
      -- Create/Recreate primary, unique and foreign key constraints 
      alter table STATES
        add constraint STATES_PK primary key (STATE_ID)
        using index 
        tablespace SDE_TBS
        pctfree 10
        initrans 5
        maxtrans 255
        storage
        (
          initial 320K
          next 128K
          minextents 1
          maxextents unlimited
        );
      alter table STATES
        add constraint STATES_CUK unique (PARENT_STATE_ID, LINEAGE_NAME)
        using index 
        tablespace SDE_TBS
        pctfree 10
        initrans 5
        maxtrans 255
        storage
        (
          initial 384K
          next 128K
          minextents 1
          maxextents unlimited
        );
      -- Grant/Revoke object privileges 
      grant select on STATES to PUBLIC;
       
       
       

      posted on 2025-10-23 15:10  jingkunliu  閱讀(7)  評(píng)論(0)    收藏  舉報(bào)

      導(dǎo)航

      主站蜘蛛池模板: 中文字幕亚洲精品第一页| 99中文字幕国产精品| 国产在线观看播放av| 久久天天躁狠狠躁夜夜躁2012| 国产成人AV性色在线影院| 中文字幕亚洲精品第一页| 啊灬啊灬啊灬快灬高潮了电影片段 | 女人香蕉久久毛毛片精品| 久久这里只有精品首页 | 安塞县| 青青国产揄拍视频| 亚洲av日韩av中文高清性色| 人人妻人人玩人人澡人人爽| 日韩乱码视频一区二区三区| 国产乱子影视频上线免费观看| 亚洲国产精品高清线久久| 平陆县| jizzjizz日本高潮喷水| 无码中文字幕人妻在线一区| 两个人免费完整高清视频| 九九热在线视频免费观看| 爽爽精品dvd蜜桃成熟时电影院| 久久精品久久黄色片看看| 无码日韩精品一区二区三区免费| 男女xx00上下抽搐动态图| 国产中文字幕在线一区| 欧美精品V欧洲精品| 国产欧美日韩高清在线不卡 | 国产精品爽爽久久久久久竹菊| 当阳市| 欧美野外伦姧在线观看| 亚洲人成亚洲人成在线观看| 国产精品乱码人妻一区二区三区| 又湿又紧又大又爽A视频男| 亚洲国产精品久久久久秋霞影院 | 97午夜理论电影影院| 国产99久久亚洲综合精品西瓜tv| 久久精品国产字幕高潮| 亚洲aⅴ男人的天堂在线观看| 无码精品一区二区三区在线| 少妇人妻真实偷人精品|