1、部署
1.1、下載
用戶在安裝 DM 數據庫之前需要檢查或修改操作系統的配置,以保證 DM 數據庫能夠正確安裝和運行。
操作系統 | CPU | 數據庫 |
---|---|---|
CentOS7 | x86_64 | dm8_20250506_x86_rh7_64.zip |
1.2、新建 dmdba 用戶
安裝前必須創建 dmdba 用戶,禁止使用 root 用戶安裝數據庫。
創建用戶所在的組,命令如下:
groupadd dinstall -g 2001
創建用戶,命令如下:
useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba
修改用戶密碼,命令如下:
passwd dmdba
1.3、修改文件打開最大數
在 Linux、Solaris、AIX 和 HP-UNIX 等系統中,操作系統默認會對程序使用資源進行限制。如果不取消對應的限制,則數據庫的性能將會受到影響。
永久修改和臨時修改。
重啟服務器后永久生效。
使用 root 用戶打開 /etc/security/limits.conf 文件進行修改,命令如下:
* soft noproc 65536
* hard noproc 65536
* soft nofile 131072
* hard nofile 131072
* hard stack 32768
* soft stack 16384
* hard memlock unlimited
* soft memlock unlimited
切換到 dmdba 用戶,查看是否生效,命令如下:
su - dmdba
ulimit -a
1.4、目錄規劃
1.4.1、創建目錄
- 可根據實際需求規劃安裝目錄,本示例使用默認配置 DM 數據庫安裝在 /home/dmdba 文件夾下。
- 規劃創建實例保存目錄、歸檔保存目錄、備份保存目錄。
##實例保存目錄
mkdir -p /data/dm/data
##歸檔保存目錄
mkdir -p /data/dm/arch
##備份保存目錄
mkdir -p /data/dm/dmbak
1.4.2、修改目錄權限
chown -R dmdba:dinstall /data/dm/data
chown -R dmdba:dinstall /data/dm/arch
chown -R dmdba:dinstall /data/dm/dmbak
1.4.3、設置 755 權限
chmod -R 755 /data/dm/data
chmod -R 755 /data/dm/arch
chmod -R 755 /data/dm/dmbak
1.5、掛載鏡像
1.5.1、解壓安裝包
mkdir -p /opt/apps/dm
unzip -d /opt/apps/dm/ dm8_20250506_x86_rh7_64.zip
1.5.2、鏡像掛載(root)
mkdir -p /mnt/dm
mount dm8_20250506_x86_rh7_64.iso /mnt/dm
1.5.3、命令行安裝(dmdba用戶)
su - dmdba
cd /mnt/dm
##數據庫安裝與配置(dmdba用戶)
./DMInstall.bin -i
- 按需求選擇安裝語言,默認中文;
- 沒有 key 文件選擇 “n”;
- 時區按需求選擇一般選擇 “21”;
- 安裝類型選擇“1”;
- 安裝目錄按實際情況配置,默認安裝位置:/home/dmdba/dm。
數據庫安裝大概 1~2 分鐘,數據庫安裝完成后,顯示如下界面。
#### 1.5.4、創建 DmAPService
數據庫安裝完成后,需要切換至 root 用戶執行上圖中的命令 /home/dmdba/dmdbms/script/root/root_installer.sh 創建 DmAPService,否則會影響數據庫備份。
1.5.5、配置實例(dmdba用戶)
部分參數解釋如下
page_size:數據文件使用的頁大小。取值范圍 4、8、16、32,單位:KB。缺省值為 8。可選參數。選擇的頁大小越大,則 DM 支持的元組長度也越大,但同時空間利用率可能下降。數據庫創建成功后無法再修改頁大小,可通過系統函數 SF_GET_PAGE_SIZE()獲取系統的頁大小。
extent_size:數據文件使用的簇大小,即每次分配新的段空間時連續的頁數。取值范圍 16、32、64。單位:頁數。缺省值為 16。可選參數。數據庫創建成功后無法再修改簇大小,可通過系統函數 SF_GET_EXTENT_SIZE()獲取系統的簇大小。
case_sensitive: 標識符大小寫敏感。當大小寫敏感時,小寫的標識符應用""括起,否則被系統自動轉換為大寫;當大小寫不敏感時,系統不會轉換標識符的大小寫,系統比較函數會將大寫字母全部轉為小寫字母再進行比較。取值:Y、y、1 表示敏感;N、n、0 表示不敏感。缺省值為 Y。可選參數。此參數在數據庫創建成功后無法修改,可通過系統函數 SF_GET_CASE_SENSITIVE_FLAG()或 CASE_SENSITIVE()查詢設置的參數值。
charset:字符集選項。取值范圍 0、1、2。0 代表 GB18030,1 代表 UTF-8,2 代表韓文字符集 EUC-KR。缺省值為 0。可選參數。此參數在數據庫創建成功后無法修改,可通過系統函數 SF_GET_UNICODE_FLAG()或 UNICODE()查詢設置的參數值。
BLANK_PAD_MODE:設置字符串比較時,結尾空格填充模式是否兼容 ORACLE。1:兼容;0:不兼容。缺省值為 0。可選參數。此參數在數據庫創建成功后無法修改,可通過查詢 V$PARAMETER 中的 BLANK_PAD_MODE 參數名查看此參數的設置值。
PAGE_CHECK:PAGE_CHECK 為頁檢查模式。取值范圍 0、1、2、3。0:禁用頁校驗;1:開啟頁校驗并使用 CRC 校驗;2:開啟頁校驗并使用指定的 HASH 算法進行校驗;3:開啟頁校驗并使用快速 CRC 校驗。缺省值為 3。可選參數。在數據庫創建成功后無法修改。
需要注意的是 頁大小 (page_size)、簇大小 (extent_size)、大小寫敏感 (case_sensitive)、字符集 (charset) 、空格填充模式 (BLANK_PAD_MODE) 、頁檢查模式(PAGE CHECK) 等部分參數,一旦確定無法修改,在初始化實例時確認需求后謹慎設置。
/home/dmdba/dm/bin/dminit/dminit path=/data/dm/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DAMENG INSTANCE_NAME=DBSERVER PORT_NUM=5236 SYSDBA_PWD=Dmdb#2025 SYSAUDITOR_PWD=Dmdb#2025
1.5.6、注冊服務(root用戶)
注冊服務(root用戶)
/home/dmdba/dm/script/root/dm_service_installer.sh -t dmserver -dm_ini /data/dm/DAMENG/dm.ini -p DMSERVER
部分參數說明
標志 參數 說明
-t 服務類型 注冊服務類型,支持一下服務類型:dmap、dmamon、dmserver、dmwatcher、dmmonitor、dmasmsvr、dmasmsvrm、dmcss、dmcssm。
-dm_ini INI 文件路徑 指定服務所需要的 dm.ini 文件路徑。
-p 服務名后綴 指定服務名后綴,生成的操作系統服務名為“服務腳本模板名,稱 + 服務名后綴”。此參數只針對 dmserver、dmwatcher、dmmonitor、dmasmsvr、dmasmsvrm、dmcss、dmcssm 服務腳本生效。
1.5.7、啟動、停止數據庫(root用戶)
1、啟停及開機自啟
systemctl start DmServiceDMSERVER.service
systemctl stop DmServiceDMSERVER.service
systemctl restart DmServiceDMSERVER.service
systemctl status DmServiceDMSERVER.servicesystemctl enable DmServiceDMSERVER.service
systemctl is-enabled DmServiceDMSERVER.service
2、配置環境變量
vi /home/dmdba/.bash_profile# DMDB
export DM_HOME=/home/dmdba/dm
export PATH=$PATH:$DM_HOME/binsource /home/dmdba/.bash_profile
1.5.8、數據庫目錄結構
1、數據庫安裝目錄
/home/dmdba/dmdbms/bin 目錄存放 DM 數據庫的可執行文件,例如 disql 命令、dminit 命令、dmrman 工具等。
/home/dmdba/dmdbms/desktop/icons 存放 DM 數據庫各個工具的桌面圖標。
/home/dmdba/dmdbms/doc 存放 DM 數據庫用戶手冊。
/home/dmdba/dmdbms/drivers 存放連接 DM 數據庫的驅動文件。
/home/dmdba/dmdbms/log 存放 DM 數據庫日志,包括工具的日志、數據庫日志、服務日志等。
/home/dmdba/dmdbms/samples 存放 DM 數據庫各類配置文件的示例文件。
/home/dmdba/dmdbms/script/root 存放注冊、注銷 DM 數據庫服務的工具,例如 dm_service_installer.sh 等。
/home/dmdba/dmdbms/tool 存放 DM 數據庫的各個工具,例如 manager 管理工具、dbca 數據庫配置助手等。
/home/dmdba/dmdbms/uninstall 目錄存放卸載 DM 數據庫的腳本。
/home/dmdba/dmdbms/web 目錄存放 DM 數據庫 dem 工具的 web 環境。
2、數據庫實例目錄
/data/dm/data 為數據庫實例目錄,該目錄存放各個實例的文件。
以實例 DAMENG 為例,該目錄下存放 DAMENG 實例的配置文件 *.ini、控制文件 dm.ctl、數據文件 *.DBF、日志文件 *.log 等。
1.6、
2、數據庫操作
2.1、模式名、表空間、用戶
- 表空間其實就相當于mysql的庫概念,達夢是分配表空間,而mysql是新建數據庫。mysql是在數據庫里建表插入數據,達夢是在表空間里建表插入數據。
- 用戶的模式(SCHEMA)指的是用戶賬號擁有的對象集,在概念上可將其看作是包含表、 視圖、索引和權限定義的對象。
- 默認情況模式與用戶相同
2.2、創建表空間,并綁定用戶和表空間
1、登錄
disql SYSDBA/\"Dmdb#2025\"@localhost:5236disql ZHUGE_IO/\"zhugeIO#2025\"@localhost:5236
2、創建表空間,用戶賦權限
-- 創建表空間
CREATE TABLESPACE SDKV DATAFILE '/data/dm/data/DAMENG/SDKV.DBF' SIZE 256 AUTOEXTEND ON NEXT 256 MAXSIZE 512;
--創建用戶綁定表空間
create user "ZHUGE_IO" IDENTIFIED BY "zhugeIO#2025" default tablespace "SDKV" default index tablespace "SDKV";
-- 給用戶賦權限
-- grant "DBA" to "ZHUGE_IO";
grant "PUBLIC", "RESOURCE", "SOI" to ZHUGE_IO;
grant SELECT ANY TABLE,CREATE SESSION ,CREATE TABLE,CREATE VIEW,CREATE INDEX,BACKUP DATABASE, INSERT TABLE, ALTER PROFILE, ALTER TABLE to ZHUGE_IO;
2.3、表空間
1、表空間操作
-- 查詢所有表空間,需DBA權限
DROP TABLESPACE IF EXISTS SDKV;
DROP TABLESPACE 'SDKV';DROP TABLESPACE "SDKV" INCLUDING CONTENTS;
SELECT "SDKV" FROM DBA_TABLESPACES;SELECT TABLESPACE_NAME, STATUS, CONTENTS FROM DBA_TABLESPACES;
SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS WHERE DEFAULT_TABLESPACE = 'SDKV';SELECT TABLE_NAME FROM DBA_TABLES WHERE OWNER = 'ZHUGE_IO'; -- 將 'ZHUGE_IO' 替換為目標模式名
SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE FROM DBA_USERS;
SELECT USERNAME FROM ALL_USERS;ALTER USER "ZHUGE_IO" IDENTIFIED BY "zhgeIO#2025"; -- 修改密碼
DROP USER "ZHUGE_IO" CASCADE; -- CASCADE級聯刪除用戶對象
select * from DBA_USERS; -- 查詢用戶信息
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'ZHUGE_IO'; -- 查看用戶權限
select * from DBA_TABLESPACES; -- 查看所有表空間
select * from DBA_DATA_FILES; -- 查看表空間數據文件信息
select ts.NAME, df.PATH from V$tablespace AS ts, V$DATAFILE AS df where ts.ID = df.GROUP_ID; --查詢表空間與數據文件對應關系
2、用戶操作
-- 查詢當前用戶有權限訪問的表
SELECT TABLE_NAME, TABLESPACE_NAME FROM ALL_TABLES WHERE TABLESPACE_NAME = 'SDKV';
SELECT TABLESPACE_NAME, STATUS, CONTENTS FROM DBA_TABLESPACES;
SELECT SF_GET_UNICODE_FLAG(); -- 返回整數值
select UNICODE (); -- 查看字符集;0 表示 GB18030,1 表示 UTF-8,2 表示 EUC-KR
select SF_GET_PAGE_SIZE(); -- 查看頁大小
2.4、管理表
https://eco.dameng.com/document/dm/zh-cn/pm/management-table.html#9.2.2%20%E6%8C%87%E5%AE%9A%E8%A1%A8%E7%9A%84%E8%81%9A%E9%9B%86%E7%B4%A2%E5%BC%95
2.5、創建表
1、T_ROLE表
CREATE TABLE "T_ROLE"
(
"ROLE_ID" INT IDENTITY(1, 1) NOT NULL,
"ROLE_NAME" VARCHAR(200) NOT NULL,
"ROLE_CODE" VARCHAR(200) NOT NULL,
"COMMENTS" VARCHAR(400),
"DELETED" INT DEFAULT 0 NOT NULL,
"TENANT_ID" INT DEFAULT 1 NOT NULL,
"CREATE_TIME" TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP NOT NULL,
"UPDATE_TIME" TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP NOT NULL,
NOT CLUSTER PRIMARY KEY("ROLE_ID")) ;
COMMENT ON TABLE "T_ROLE" IS '角色表';
COMMENT ON COLUMN "T_ROLE"."COMMENTS" IS '備注';
COMMENT ON COLUMN "T_ROLE"."CREATE_TIME" IS '創建時間';
COMMENT ON COLUMN "T_ROLE"."DELETED" IS '是否刪除, 0否, 1是';
COMMENT ON COLUMN "T_ROLE"."ROLE_CODE" IS '角色標識';
COMMENT ON COLUMN "T_ROLE"."ROLE_ID" IS '角色id';
COMMENT ON COLUMN "T_ROLE"."ROLE_NAME" IS '角色名稱';
COMMENT ON COLUMN "T_ROLE"."TENANT_ID" IS '租戶id';
COMMENT ON COLUMN "T_ROLE"."UPDATE_TIME" IS '修改時間';INSERT INTO T_ROLE(role_name,role_code,comments,deleted,tenant_id,create_time,update_time) VALUES ('管理員', 'admin', '管理員', 0, 1, '2020-02-26 15:18:37', '2020-03-21 15:15:54');
2、EMP表
create table emp (
id int,
name varchar(255) not null,
email varchar(255),
dept_id int,
hire_date date,
-- 定義主鍵
primary key (id),
-- 定義唯一鍵
constraint uk_dept unique (dept_id),
-- 聯合唯一約束
constraint uk_id_dept unique (id,dept_id)
);
comment on table emp is '客戶基本信息表';
comment on column emp.id is '員工id';
comment on column emp.name is '姓名';
comment on column emp.email is '郵箱';
comment on column emp.dept_id is '部門id';
comment on column emp.hire_date is '入職日期';
2.6、查看表
-- 查看當前用戶
SELECT CURRENT_USER;
-- 查看是否存在 SDKV 模式
SELECT * FROM SYSOBJECTS WHERE NAME = 'ZHUGE_IO' AND TYPE$ = 'SCH';
-- 查看你是否有權限訪問該模式下的表
SELECT * FROM ALL_TABLES WHERE OWNER = 'ZHUGE_IO';
-- 如果存在且有權限,切換模式
SET SCHEMA 'SDKV';
-- 查詢建表語句
SP_TABLEDEF('ZHUGE_IO', 'T_ROLE');-- 查看當前用戶模式下的所有表
SELECT TABLE_NAME FROM USER_TABLES;
-- 使用 ALL_TABLES (適用于有權限訪問的情況),將 'ZHUGE_IO' 替換為目標模式名
SELECT TABLESPACE_NAME as 表空間,OWNER as 模式名,TABLE_NAME as 表名,TABLE_LOCK as 是否允許鎖定,STATUS as 表狀態 FROM ALL_TABLES WHERE OWNER = 'ZHUGE_IO';
-- 查看表級別的注釋
SELECT TABLE_NAME, COMMENTS FROM USER_TAB_COMMENTS WHERE TABLE_NAME = 'T_ROLE';
-- 查看列級別的注釋
SELECT COLUMN_NAME, COMMENTS FROM USER_COL_COMMENTS WHERE TABLE_NAME = 'T_ROLE';
-- 獲取列級別的注釋
SELECT T.COLUMN_NAME, T.DATA_TYPE, C.COMMENTS
FROM USER_COL_COMMENTS C
JOIN USER_TAB_COLUMNS T ON C.COLUMN_NAME = T.COLUMN_NAME AND C.TABLE_NAME = T.TABLE_NAME
WHERE C.TABLE_NAME = 'T_ROLE';