ArcGIs建立企業級資料庫

kiba518發表於2022-03-21

本文主要描述ArcGIs建立企業級資料庫。

目標:建立企業級地理資料庫,使用ArcMap通過SDE引擎 與Oracle互動資料,建立完成後將本地的mdb資料庫中資料遷移到Oracle的地理資料庫當中。

一,安裝Oracle客戶端

因為ArcMap也是通過Oracle客戶端來連線Oracle的,所以我們要先安裝Oracle客戶端。

需要注意的是,安裝後的oracle程式檔案根目錄是沒有network資料夾的,需要手動建立。

然後在network下建立admin資料夾。

然後建立tnsnames.ora。

然後編輯tnsnames.ora,把我們要可以連線的Oracle資料都寫在裡面。

ORCL@11 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
  
ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )
​
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.7.81)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
​
ORCL@192.168.1.111 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
)

安裝完Oracle客戶端後可以安裝一個PLSQL來測試安裝的Oracle客戶端是否正常執行。

二,建立企業級地理資料庫

1,測試連線

首先開啟ArcMap測試本機與Oracle是否可以正常連線,如下圖,在右側找到資料庫連線,然後點選新增資料庫連線。

選擇Oracle資料,輸入例項名和資料庫使用者的賬戶密碼。

例項名是我們編輯tnsnames.ora時,等號前的名稱,如下圖:

2,建立企業級地理資料庫

因為企業級資料庫是建立在Oracle例項上的,而不是建立在表空間上的,即一旦企業級地理資料庫建立成功,資料庫內所有表空間都可以儲存空間資料,所以一個資料庫只能建立一個企業級資料庫,簡單來說就是把某個Oracle資料庫設定成企業級資料庫。

下面我們點選ArcToolBox—資料庫管理工具—建立企業級資料庫。

然後輸入資料庫例項,資料庫管理員密碼(sys預設密碼是sys),然後建立一個地理資料庫管理員(即資料庫使用者),然後設定使用者的表空間,然後選擇安裝Desktop時使用的許可檔案。

建立時會彈出提示框顯示建立進度(資料庫管理員和表空間不為sde的情況下,建立會提示失敗)。

建立成功後提示框資訊如下:

檢視企業級資料庫

建立完成後,我們新增資料庫連線檢視,會出現一個.sde字尾的資料庫,然後點選,會發現可以看到資料庫全部的表。

這是由於在建立SDE使用者時賦予了SELECT ANY TABLE許可權,因此可以訪問其他使用者的表,這對於資料管理來說是不安全的,而且也增加了尋找要素表的難度。

為了安全,我們刪除使用者許可權。

開啟PLSQL,隨便一個使用者登入後,輸入查詢。

select privilege from dba_sys_privs where grantee='SDE' 

如下圖:

刪除SELECT ANY TABLE許可權

revoke SELECT ANY TABLE from SDE

再去連線空間庫後會發現其他使用者的表不見了。

然後我們再找到資料庫連線,然後右鍵,會發現新建下面多了一個要素類和要素資料集,這代表我們可以直接在資料庫中建立空間資料了。

三,刪除企業級使用者

刪除企業級使用者執行如下程式碼:

drop  user  SDE  cascade
DROP  TABLESPACE SDE INCLUDING CONTENTS  CASCADE  CONSTRAINTS;

window使用者,物理刪除sde資料夾

D:\app\Administrator\product\11.2.0\dbhome_1\database\sde

Linux使用者執行命令刪除

# cd/u01/app/oracle/product/11.2.0/dbhome_1/dbs/
# rm -rf sde

如果使用者處於連線狀態,可以先查詢當前連線,如下。

select username,sid,serial# from v$session 

如下結果:

usernamesidserial#
NETBNEW 513 22974
NETBNEW 514 18183
NETBNEW 531 9

然後執行下面程式碼,刪除當前使用者連線。

alter system kill session '531,9' 

三,轉移空間資料

首先在右側資料夾連線中,連線一個資料夾,然後把地圖的mdb放進去,然後選擇一個圖層右鍵匯出,選擇轉出至地理資料庫(單個),如下圖:

在[要素類至要素類]頁面的輸出位置中選擇剛剛我們建立的資料庫連線,然後在輸出要素類中輸入匯入至Oracle後的要素類名稱。

點選確定後,需多等待一會,資料匯入成功後,可以右鍵重新整理資料庫連線,然後就可以看到剛剛匯入的要素類了。

完成後右下角會提示,如下圖:

然後就可以基於oracle的資料進行共享服務了。

點選檔案—共享為—服務,如下圖:

然後輸入響應的資訊,就可以釋出服務了。

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

注:此文章為原創,任何形式的轉載都請聯絡作者獲得授權並註明出處!
若您覺得這篇文章還不錯,請點選下方的推薦】,非常感謝!

https://www.cnblogs.com/kiba/p/16035784.html

 

 

相關文章