• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    ArcSDEforOracle怎么恢復誤刪除的要素類和要素

    來源:懂視網 責編:小采 時間:2020-11-09 07:18:00
    文檔

    ArcSDEforOracle怎么恢復誤刪除的要素類和要素

    ArcSDEforOracle怎么恢復誤刪除的要素類和要素:其實并不希望用戶都來瀏覽這篇文章,如果是自己學習還好,如果是出現問題了,可能就比較麻煩了。 經常會有用戶咨詢我們,我不小心刪除了ArcSDE里面的相關表,或者刪除了相關記錄,導致ArcSDE服務、連接、編輯等出現的相關問題,先不說這些問題怎么解決, 對
    推薦度:
    導讀ArcSDEforOracle怎么恢復誤刪除的要素類和要素:其實并不希望用戶都來瀏覽這篇文章,如果是自己學習還好,如果是出現問題了,可能就比較麻煩了。 經常會有用戶咨詢我們,我不小心刪除了ArcSDE里面的相關表,或者刪除了相關記錄,導致ArcSDE服務、連接、編輯等出現的相關問題,先不說這些問題怎么解決, 對

    其實并不希望用戶都來瀏覽這篇文章,如果是自己學習還好,如果是出現問題了,可能就比較麻煩了。 經常會有用戶咨詢我們,我不小心刪除了ArcSDE里面的相關表,或者刪除了相關記錄,導致ArcSDE服務、連接、編輯等出現的相關問題,先不說這些問題怎么解決, 對

    其實并不希望用戶都來瀏覽這篇文章,如果是自己學習還好,如果是出現問題了,可能就比較麻煩了。


    經常會有用戶咨詢我們,我不小心刪除了ArcSDE里面的相關表,或者刪除了相關記錄,導致ArcSDE服務、連接、編輯等出現的相關問題,先不說這些問題怎么解決,對出現這種現象就應該堅決杜絕,老有許多用戶屬于那種不知道事大事小,什么都敢親身實踐,雖然他們知道“實踐是檢驗真理的唯一途徑”,但是如果你不了解數據庫或者ArcSDE的相關原理,你就自認為的操作,出現問題負責任的肯定是自己。之所以說這些還是希望用戶不要擅自操作,數據庫一旦掛了,前端再高效再炫的客戶端也是白搭啊。


    雖然這篇文章的題目是恢復ArcSDE的要素類和要素,但是我并沒有真正的在ArcSDE里面做例子,或者但是我以oracle的刪除表和刪除記錄為例作測試,至于ArcSDE,那么就需要用戶了解ArcSDE的表結構之后,做相關的解決了,我也會給用戶進行相關的說明。


    刪除記錄的恢復

    測試場景:我刪除sde用戶下table_locks里面的若干記錄,然后恢復


    操作步驟:

    需要用戶以管理員身份登錄

    1:查看table_locks,然后刪除,提交

    SQL> select * from sde.table_locks;
    
     SDE_ID REGISTRATION_ID LO
    ---------- --------------- --
     2031 179 S
     2031 192 S
     2010 179 S
     2010 192 S
    
    
    SQL> delete from sde.table_locks where sde_id=2010;
    
    已刪除2行。
    
    SQL> commit;
    
    提交完成。
    
    SQL> select * from sde.table_locks;
    
     SDE_ID REGISTRATION_ID LO
    ---------- --------------- --
     2031 179 S
     2031 192 S
    相關原理:SCN

    SCN: System Change Number
    SCN是順序遞增的一個數字,在Oracle 中用來標識數據庫的每一次改動,及其先后順序。SCN的最大值是0xffff.ffffffff。

    Oracle對SCN的管理(RAC環境就由DBA來管理吧)
    單節點的instance中,SCN值存在SGA區,由system commit number latch保護。任何進程要得到當前的SCN值,都要先得到這個latch。


    SCN的機制
    數據庫運行時的SCN
    我們先看下oracle事務中的數據變化是如何寫入數據文件的:
    1、 事務開始;
    2、 在buffer cache中找到需要的數據塊,如果沒有找到,則從數據文件中載入buffer cache中;
    3、 事務修改buffer cache的數據塊,該數據被標識為“臟數據”,并被寫入log buffer中;
    4、 事務提交,LGWR進程將log buffer中的“臟數據”寫入redo log file中;
    5、 當發生checkpoint,CKPT進程更新所有數據文件的文件頭中的信息,DBWr進程則負責將Buffer Cache中的臟數據寫入到數據文件中。
    Redo log中的high scn和low scn
    Oracle的Redo log會順序紀錄數據庫的各個變化。一組redo log文件寫滿后,會自動切換到下一組redo log文件。則上一組redo log的high scn就是下一組redo log的low scn。在current log中high scn為無窮大。
    可通過查詢v$log_history查看 low scn和 high scn。


    更多了解:

    http://czmmiao.iteye.com/blog/1010267

    http://www.cnblogs.com/daduxiong/archive/2010/08/19/1803764.html

    2:通過SCN的方法來恢復

    --獲得當前的SCN
    SQL> select current_scn from v$database;
    
    CURRENT_SCN
    -----------
     19078853
    
    --select * from sde.table_locks as of scn 19078843;
    --確定刪除的數據是否存在,如果存在,則恢復數據;如果不是,則繼續縮小scn號
    
    SQL> select * from sde.table_locks as of scn 19078830;
    
     SDE_ID REGISTRATION_ID LO
    ---------- --------------- --
     2031 179 S
     2031 192 S
     2010 179 S
     2010 192 S
    
    --將table_locks閃回到前面的scn
    SQL> flashback table sde.table_locks to scn 19078830;
    flashback table sde.table_locks to scn 19078830
     *
    第 1 行出現錯誤:
    ORA-08189: cannot flashback the table because row movement is not enabled
    
    --這個命令的作用是,允許Oracle 修改分配給行的rowid。在Oracle 中,插入一行時就會為它分配一個rowid,而且這一行永遠擁有這個rowid。閃回表處理會對EMP 完成DELETE,并且重新插入行,這樣就會為這些行分配一個新的rowid。要支持閃回就必須允許Oracle 執行這個操作
    SQL> alter table sde.table_locks enable row movement;
    
    表已更改。
    
    
    
    SQL> flashback table sde.table_locks to scn 19078830;
    
    閃回完成。
    
    SQL> select * from sde.table_locks;
    
     SDE_ID REGISTRATION_ID LO
    ---------- --------------- --
     2031 179 S
     2031 192 S
     2010 179 S
     2010 192 S
    

    3:使用時間恢復刪除數據

    以下信息僅供參考

    1、查詢當前系統時間
     
        select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
     
      2、查詢刪除數據的時間點的數據
     
        select * from 表名 as of timestamp to_timestamp('2013-05-29 15:29:00','yyyy-mm-dd hh24:mi:ss'); (如果不是,則繼續縮小范圍)
     
      3、恢復刪除且已提交的數據
     
        flashback table 表名 to timestamp to_timestamp('2013-05-29 15:29:00','yyyy-mm-dd hh24:mi:ss');


    ArcSDE的建議:

    我們上面演示的只針對單個表的記錄刪除的恢復,那么對ArcSDE來說

    1:如果是非版本數據的編輯,就可以完全結合上面的例子直接恢復

    2:如果是版本編輯的話,這個就需要用戶去了解ArcSDE的版本表了。

    至少用戶需要對:基表、增量表、版本表(States、State_lineages、Versions等)進行閃回,而且如果是多用戶并發編輯的話,狀態表里面的數據就不僅僅是一個版本的信息,所以這個就比較麻煩。


    可能有用戶來說,其實版本編輯,誤刪除了,大不了重新編輯,或者不要這個版本的信息,反正我的default版本的數據并沒有變化,恭喜你,如果你想到這一點,說明你對版本原理比較了解。


    刪除表的恢復

    測試場景:drop一個數據庫中的表對象,然后進行恢復


    操作步驟:

    對誤刪的表,只要沒有使用PURGE永久刪除選項,那么從flash back區恢復回來希望是挺大的。

    1:刪除一個表對象

    SQL> select count(*) from test.a;
    
     COUNT(*)
    ----------
     33769
    
    SQL> drop table test.a;
    
    表已刪除。
    
    SQL> commit;
    
    提交完成。
    
    SQL> select count(*) from test.a;
    select count(*) from test.a
     *
    第 1 行出現錯誤:
    ORA-00942: ???????
    2:使用閃回方法來恢復

    原理:在Oracle數據庫,用戶刪除的對象會存儲在一個類似回收站的表里面,這些信息會在這個表里面進行存儲,但是如果用戶的刪除操作比較多,這個表里面的信息會類似非歸檔日志,重新寫入新的信息,如果那樣的話就不好恢復了,所以出現問題,趕緊解決才是正道。

    用戶需要連接test用戶,因為刪除的表a屬于該用戶,查看回收表信息

    SQL> select original_name,operation,type from recyclebin;
    
    ORIGINAL_NAME OPERATION TYPE
    ---------------------------------------------------------------- ------------------ --------------
    D138 DROP TABLE
    D138_IDX1 DROP INDEX
    D138_PK DROP INDEX
    KEYSET_1247 DROP TABLE
    KEYSET_1300 DROP TABLE
    KEYSET_1301 DROP TABLE
    KEYSET_1316 DROP TABLE
    ARCGIS_SECURITY_USER_ROLE DROP TABLE
    SYS_C0018056 DROP INDEX
    ARCGIS_SECURITY_ROLES DROP TABLE
    SYS_C0018067 DROP INDEX
    
    ORIGINAL_NAME OPERATION TYPE
    ---------------------------------------------------------------- ------------------ --------------
    ARCGIS_SECURITY_USER_ROLE DROP TABLE
    SYS_C0018070 DROP INDEX
    ARCGIS_SECURITY_ROLES DROP TABLE
    SYS_C0018074 DROP INDEX
    ARCGIS_SECURITY_USER_ROLE DROP TABLE
    SYS_C0018077 DROP INDEX
    A DROP TABLE
    BIN$3fw3ulkOXtPgQKjApdwLHg==$0 DROP INDEX
    SYS_LOB0000094656C00018$$ DROP LOB
    SYS_IL0000094656C00018$$ DROP LOB INDEX
    
    我們可以看到有A名稱的表,然后進行恢復即可
    SQL> flashback table test.a to before drop;
    
    閃回完成。
    
    SQL> select count(*) from test.a;
    
     COUNT(*)
    ----------
     33769


    但注意oracle( Release 10.2.0.1.0)回收站不支持系統表空間,如果刪除的這個在系統表空間,這個表是不能閃回的


    對表數據更新一段時間后,只有在初始化參數UNDO_RETENTION設置的時間內才可以查詢到表flashback_transaction_query的數據更改記錄。而且,只有初始化參數UNDO_MANAGEMENT設置為AUTO后才能使用閃回查詢。


    ArcSDE的建議:對ArcSDE來說也是一樣

    1:如果沒有注冊版本,如果使用ArcGIS客戶端對要素類進行刪除,我們可以看到數據庫里面有

    SQL> select original_name,operation,type from recyclebin where droptime='2013-05-31:12:25:41';
    
    ORIGINAL_NAME OPERATION TYPE
    ---------------------------------------------------------------- ------------------ --------------
    A DROP TABLE
    SYS_LOB0000094656C00018$$ DROP LOB
    SYS_IL0000094656C00018$$ DROP LOB INDEX
    BIN$3fxefjQC5+rgQKjApdwUEQ==$2 DROP INDEX
    所以說,使用ArcMap刪除不僅僅是要素類,還包含相關的索引對象還有其他,所以使用上面的方法可以只恢復同名表A,對ArcGIS10.1是沒有問題的,完全可以通過桌面進行注冊即可,對10版本之前的可能就有點小問題了,但是最主要的同名表恢復過來,我們可以通過sdelayer -o register方法注冊也可以。


    2:如果是注冊版本

    還是老樣子,基表、增量表,ArcSDE的其他表的管理信息需要恢復記錄(比如sde用戶下table_regisertry會注冊SDE庫里面存儲的要素類),那么使用數據庫的方法閃回刪除的要素類的同名表,類似這些注冊信息的表的記錄也需要進行操作。

    也就是說,需要用戶考慮基本和增量表的回復,其他的可以通過sdetable -o register將數據注冊到ArcSDE中,通過Register as geodatabase將數據注冊到Geodatabase中。


    以上方法都是根據數據庫的方式對ArcSDE的誤操作進行一些簡單的補救措施,僅供參考!


    -------------------------------------------------------------------------------------------------------

    -------------------------------------------------------------------------------------------------------


    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    ArcSDEforOracle怎么恢復誤刪除的要素類和要素

    ArcSDEforOracle怎么恢復誤刪除的要素類和要素:其實并不希望用戶都來瀏覽這篇文章,如果是自己學習還好,如果是出現問題了,可能就比較麻煩了。 經常會有用戶咨詢我們,我不小心刪除了ArcSDE里面的相關表,或者刪除了相關記錄,導致ArcSDE服務、連接、編輯等出現的相關問題,先不說這些問題怎么解決, 對
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产成人精品视频一区二区不卡| 久久777国产线看观看精品| 55夜色66夜色国产精品视频| 国产高清在线精品一本大道| 四虎国产精品永久在线观看| 国产精品亚洲精品日韩已方| 91视频精品全国免费观看| 亚洲av午夜国产精品无码中文字| 青青草国产精品久久| 欧美成人精品高清在线观看| 久久久久国产精品嫩草影院| 四虎国产精品免费入口| 国产精品成熟老女人视频| 中文字幕日韩精品无码内射| 国产一区二区精品久久岳| 亚洲国产成人久久精品动漫| 精品久久久噜噜噜久久久| 无夜精品久久久久久| 精品欧美一区二区在线看片 | 欧美精品www| 国产高清日韩精品欧美激情| 久久精品成人国产午夜| 国产精品无码专区| 久久精品人成免费| 麻豆亚洲AV永久无码精品久久| 伊人久久精品影院| 亚洲国产精品自在拍在线播放| 欧美日韩精品久久久免费观看| 精品国产污污免费网站入口| 国产精品片在线观看手机版| 98精品国产自产在线XXXX| 久久九九亚洲精品| 国产在视频线精品视频二代| 97在线精品视频| 精品综合久久久久久888蜜芽| 人妻精品久久无码专区精东影业| 中文字幕精品无码一区二区三区| 午夜精品久久久久成人| 亚洲国产精品碰碰| 最新精品国偷自产在线| 亚洲欧美精品AAAAAA片|