天天看點

達夢資料庫初學心得前言2.安裝篇3.使用篇4.總結

達夢資料庫初學心得

  • 前言
  • 2.安裝篇
    • 2.1.達夢資料庫安裝
    • 2.2.配置odbc
    • 2.3.善用使用手冊
  • 3.使用篇
    • 3.1.DM8體系結構相關
    • 3.2.維護表空間
    • 3.3.使用者權限管理
    • 3.4.模式對象管理
    • 3.5.備份還原
  • 4.總結

前言

  前不久,我很幸運地獲得了為期3天的達夢DCA認證教育訓練的機會。本文介紹了學習中遇到的一些問題是怎麼解決的,記錄了從老師那裡學到的完整的操作流程,希望能對讀者有一些幫助。

  本文内容在VMWare15+中标麒麟進階伺服器系統軟體V7.0+DM8親測有效。

2.安裝篇

2.1.達夢資料庫安裝

詳細的安裝步驟請參考連結: DM8資料庫安裝步驟于建立資料庫.

這裡補充一些老師強調的注意事項:

1)資料庫要遠端通路,應該要關閉防火牆或者是開放對應的端口号

[[email protected] ~]# systemctl stop firewalld 
[[email protected] ~]# systemctl disable firewalld 
[[email protected] ~]# systemctl status firewalld
           

2)應設定檔案最大打開數

  • 重新開機伺服器生效
[[email protected] Packages]# vi /etc/security/limits.conf 
dmdba soft nofile 4096 
dmdba hard nofile 65536 
           
  • 臨時生效

3)不建議用root使用者安裝,我們學習中全程使用dmdba使用者安裝

4)一個資料庫軟體是可以建立多個執行個體,通過端口号差別,達夢預設端口号是 5236

2.2.配置odbc

1)檢查,确認已安裝gcc。以gcc-4.8.x開頭,

[[email protected] unixODBC-2.3.0]$ rpm -qa | grep gcc
gcc-4.8.5-36.el7.ns7.01.x86_64
gcc-gfortran-4.8.5-36.el7.ns7.01.x86_64
gcc-c++-4.8.5-36.el7.ns7.01.x86_64
libgcc-4.8.5-36.el7.ns7.01.x86_64
           

2)解壓/配置/編譯/安裝

cd /home/dmdba/
tar -xzvf unixODBC-2.3.0.tar.gz
cd /home/dmdba/unixODBC-2.3.0
./configure
make
make install
           

3)安裝後檢查版本:

[[email protected] unixODBC-2.3.0]# odbcinst -j
unixODBC 2.3.0
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
           

4)修改配置檔案

vi /usr/local/etc/odbcinst.ini
[DM8 ODBC DRIVER ]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
           
vi /usr/local/etc/odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
Server = localhost
UID = SYSDBA
PWD = e2008jlpl #填真實的資料庫使用者SYSDBA的密碼
TCP_PORT = 5236
           

5)測試連接配接DM8:

[[email protected] dm8]$ which isql
/usr/local/bin/isql
[[email protected] dm8]$ isql dm8
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 
           

2.3.善用使用手冊

  在成功安裝DM8資料庫後,在安裝目錄/dm8/doc有豐富的使用手冊,幾乎大部分使用DM8的問題都可以從這些手冊中找到答案。

達夢資料庫初學心得前言2.安裝篇3.使用篇4.總結

3.使用篇

3.1.DM8體系結構相關

1)可使用console修改參數,修改後需要重新開機資料庫服務生效

2)控制檔案隻有一個,會自動備份,預設10個備份

3)為了緩解日志頻繁切換造成的性能問題,需要調整重做日志檔案的大小,要麼擴大大小/要麼增加數量

4)重做日志是循環寫、可覆寫的

5)用一個SQL的執行過程來描述對線程和緩沖區的應用:

  • A用戶端發起請求(監聽線程監聽到請求,交給工作線程)

    執行SQL語句時,

  • B會做文法分析【關鍵字正不正确, 用到字典緩沖區和SQL緩沖區】、
  • C再做語義分析【在不在表裡面,用到字典緩沖區】
  • D在做權限分析【使用者有沒有權限通路表,用到字典緩沖區】
  • E查詢SQL是否在buffer中,在内測邏輯讀;不在在磁盤中實體讀,并放到緩沖區 【SQL緩沖區、資料緩沖區、IO線程】
  • F資料發生變更(日志緩沖區、日志重新整理線程、資料緩沖區、IO線程、工作線程)
  • G是否有可用的執行計劃,有就按執行計劃執行,沒有就生成執行計劃,執行SQL,結果集傳回用戶端。(字典緩沖區,排序區,hash區,工作線程,IO線程,SQL緩沖區)

3.2.維護表空間

1)表空間資料檔案初始大小是4096*頁(8192)=32M

2)表空間不足時

  • 可擴充資料檔案
  • 也可添加資料檔案

3)更換資料檔案路徑

  • 表空間脫機
  • 更換路徑
  • 表空間聯機

4)注意

  • 表空間隻能改大不能改小
  • system,roll,temp表空間不允許脫機,temp表空間不能被删除。

3.3.使用者權限管理

1)給使用者權限可以精确到列

grant SELECT("SALARY") on "DMHR"."EMPLOYEE" to "TBS"; 
grant SELECT("EMPLOYEE_NAME") on "DMHR"."EMPLOYEE" to "TBS";
           

2)不能對單個列的權限進行撤回,權限撤回是針對表級

revoke UPDATE("SALARY") on "DMHR"."EMPLOYEE" from "TBS" cascade;
錯誤号:   -5658
錯誤消息: 第1 行附近出現錯誤:
隻能從整個表或視圖而不能按列 REVOKE
           

正确的語句:

3.4.模式對象管理

1)模式與使用者的關系

一個使用者可以對應多個模式/一個模式隻能屬于一個使用者;建立使用者時,會自動建立同名模式

2)ABC模式存在,則不允許建立同名ABC使用者

3)建立模式,要加/

SQL> CREATE SCHEMA BCD;
2   /
操作已執行
           

4)删除被外鍵限制依賴的表時,要先删除依賴的表,才能删除本表

建立表TEST4,依賴TEST3的ID列
create table "SYSDBA"."TEST4" 
( 
"ID" INT 
);
alter table "SYSDBA"."TEST4" add constraint foreign key("ID") references "SYSDBA"."TEST3"("ID"); 
删除表test3失敗:
SQL> drop table test3; 
drop table test3; 
第1 行附近出現錯誤[-2639]:試圖删除被依賴對象[TEST3]
先删除表test4,再删除表test3,成功:
SQL> drop table test4; 
SQL> drop table test3; 
           

5)索引

  • 作用:加快查詢速度,對更新少量資料時,可以提高更新速度;insert時會有延遲;

    資料庫會自動維護索引,索引會占用存儲空間的。

  • 建索引基本要求:經常查詢的列/where條件中出現的列/連接配接列/傳回少量或小部分資料
  • 不适合建索引:列上有大量的空值/列上有大量的重複值/結果集傳回大量的資料
  • 檢視索引有沒有用到

3.5.備份還原

1)冷備:DmAP服務需要開啟,不需要開啟歸檔,需要關閉資料庫執行個體。是針對整庫的備份。

2)熱備:需要開啟歸檔,需要開啟資料庫執行個體。

3)開啟歸檔:隻有當在配置狀态才能開歸檔;可以在DM管理工具->管理伺服器->系統管理圖形界面開啟歸檔。下面是開啟歸檔的sql語句:

alter database mount;
alter database add archivelog 'type=local,dest=/opt/dmdbms/data/arch,file_size=100,space_limit=0';
select name, arch_mode from v$database;
alter database open;
           

4)dmrman整庫備份/檢查/還原:

  • 先關閉服務
[[email protected] bin]$ ./DmServiceDMSERVER stop
           
  • 備份
  • 檢查備份
  • 還原
  • 恢複
  • 更新magic
  • 最後開啟服務
[[email protected] bin]$ ./DmServiceDMSERVER start
           

5)整庫備份,還原單個表空間:

RMAN>backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup';
RMAN>restore database '/dm8/data/DAMENG/dm.ini' tablespace main from backupset '/dm8/backup';
RMAN> recover database '/dm8/data/DAMENG/dm.ini' tablespace main;
           

還原表空間不需要更新magic。

6)邏輯備份還原:

  • 全庫導出
[[email protected] bin]$ ./dexp sysdba/e2008jlpl file=full.dmp log=full.log directory=/dm8/backup
           
  • 使用者導出
[[email protected] bin]$ ./dexp sysdba/e2008jlpl file=test.dmp log=test.log directory=/dm8/backup owner=test
           
  • 表導出
[[email protected] bin]$ ./dexp sysdba/e2008jlpl file=employee.dmp log=employee.log directory=/dm8/backup tables=dmhr.employee
           
  • 全庫導入:
[[email protected] bin]$./dimp sysdba/e2008jlpl file=full.dmp log=imp_full.log directory=/dm8/backup full=y
           

注意:執行使用者導入時,如果使用者不存在,應先建立使用者,否則導入失敗。

4.總結

1)盡量使用dmdba使用者操作,不使用root使用者操作

2)可以盡量使用DM管理工具、DM控制台工具對資料庫進行管理,但也要熟練使用sql語句來處理

3)本人還隻是對達夢資料庫有了一些粗淺的認識,歡迎讀者指正。