一.掌握了达梦数据库管理软在window及linux平台下的安装部署.
1. window平台安装,主要是图形化安装:
(1)根据window系统的版本,下载正确的安装包.并解压缩到文件系统中,如果有光驱,也可以直接把安装光盘,通过光驱加载.
(2)点击setup.exe,进行图形安装.
(3)根据安装界面要求,选择相应语言,时区,需要安装的组件.安装目录等信息.(安装路径里的目录,不建议使用包含空格,中文)
注意: 安装用户对安装路径要有相应的权限, 安装路径要有足够的磁盘空间.
(4)数据库管理软件安装完毕可以直接初始化数据库,也可以使用DM数据库配置助手初始数据库.
(5)创建数据库实例时,需要指定数据库模板: 一般用途/联机分析处理/联机事务处理 .
(6)选择数据库目录.(需要注意,目录权限和目录的存储空间大小)
(7)输入数据库名称, 实例名,端口号,(实际安装, 应安装前和客户确认)
(8)根据实际情况,确认控制文件,数据文件,日志文件位置.
(9)输入数据库相关参数,入簇大小,页大小,日志文件大小,(初始化日志大小建议应修改为2048),字符串比较大小写敏感,字符集等信息.
(10)输入密码口令.
(11)选择是否创建示例库.
(12)核对摘要,点击"完成"进行数据实例的初始化工作.
2.linux平台安装,有图形化和命令行.
(1) 核对系统信息,下载合适的安装包, 创建安装用户:
#groupadd -g 12349 dinstall
#useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
#echo "dmdba123" | passwd --stdin dmdba -- 设置密码: dmdba123
(2) 检查linux系统下的操作系统限制
#ulimit -a
#ulimit -n 65536 --open files 建议用户设置为 65536 以上或 unlimited(无限制)。
#cp /etc/security/limits.conf /etc/security/limits.conf.bak --备份
#vim /etc/security/limits.conf
添加:
dmdba soft nofile 65536
dmdba hard nofile 65536
(3)检查系统内存和存储空间
#grep MemTotal /proc/meminfo / free -m -- 内存至少1G
#df -h -- 查看存储空间(/tmp 至少1G)
图形安装:
(1) root用户: xhost + , 挂载安装软件 ,创建数据库管理软件安装目录
#mount -o loop dm8_20220525_x86_rh6_64.iso /mnt
#mkdir /opt/dm8 && chown dmdba:dinstall /opt/dm8 -- 创建安装目录,并修改宿主
(2) 切换到dmdba用户,并设置DISPLAY环境变量
#su - dmdba
$export DISPLAY=192.168.2.99:0.0
(3) 启动图形安装界面
$ cd /mnt
$ ./DMInstall.bin
(4)图形安装和window图形安装级别一致.(注意: 执行脚本,需要使用root用户)
命令行安装:
(1) root用户: xhost + , 挂载安装软件 ,创建数据库管理软件安装目录
#mount -o loop dm8_20220525_x86_rh6_64.iso /mnt
#mkdir /opt/dm8 && chown dmdba:dinstall /opt/dm8 -- 创建安装目录,并修改宿主
(2) 切换到dmdba用户,使用命令行安装
#su - dmdba
$cd /mnt
$./DMInstall.bin -i
(3) 选择相应的安装语言,默认中文.验证相应的key文件.选择相应的时区.选择安装类型等,选项与图形安装一样.
(4) 需要使用root执行提升的命令.
(5) 使用dminit 初始化数据库. ./dminit help 查看帮助
./dminit path=/opt/dm8/data DB_NAME=DAMENG instance_name=DMSERVER EXTENT_SIZE=16 PAGE_SIZE=8 PORT_NUM=5236 LOG_SIZE=2048 SYSDBA_PWD=dameng123 SYSAUDITOR_PWD=dameng123
PATH 初始数据库存放的路径
EXTENT_SIZE 数据文件使用的簇大小(16),可选值:16, 32, 64,单位:页
PAGE_SIZE 数据页大小(8),可选值:4, 8, 16, 32,单位:K
LOG_SIZE 日志文件大小(256),单位为:M,范围为:256M ~ 2G
CASE_SENSITIVE 大小敏感(Y),可选值:Y/N,1/0
(6) 使用 dm_service_installer.sh 注册数据库服务 (script/root/) (root用户执行)
./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /opt/dm8/data/DAMENG/dm.ini
-t 服务类型 注册服务类型,支持服务类型:dmap、 dmamon、dmserver 、dmwatcher、dmmonitor 、dmasmsvr 、dmcss 、dmcssm、dmdrs、dmdras、dmdcs、dmdss
-p 服务名后缀 指定服务名后缀,生成的操作系统服务名为“服务脚本模板名称+服务名后缀”。此参数只针对 5~14 服务脚本生效
-dm_ini INI文件路径 指定服务所需要的 dm.ini 文件路径。
二.掌握数据库实例的启动和停止
1.图形界面
(1) window系统,使用"DM服务查看器",点击启动DmAPService和DmServiceDMSERVER 服务.
(2) liinux系统(root用户), tools/dmservice.sh ,启动图形界面,配置和window使用相同.
2.命令行
(1)linux 系统查看当前服务状态:
# ps -ef | grep dm.ini -- 直接查看进程
(2)root用户操作:
# systemctl start DmServiceDMSERVER.service --启动
# systemctl status DmServiceDMSERVER.service --查看
(3)dm用户操作
$ DmServiceDMSERVER start | status | stop | restart
三.掌握数据库工具的级别操作
1.disql
(1)配置用户环境变量:
$ vim .bash_profile
添加:
export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH
$ source .bash_profile
(2)disql 登录:
disql <用户名>/<密码>@[<ip>:<端口>] | <服务名>
-- 服务名 应在 本地的/etc/dm_svc.conf 文件中配置
$disql SYSDBA/SYSDBA@192.168.2.100:5236 -- 使用 netstat -lanutp | grep dmserver 来查看端口
(3)运行脚本
disql SYSDBA/SYSDBA@192.168.2.100:5236 '`"test.sql"' --disql内使用 start 命令执行脚本
2.dmfldr
dmfldr 工具能够把按照一定格式排序的文本数据以简单、快速、高效的方式载入到 DM 数据库中,或把 DM 数据库中的数据按照一定格式写入文本文件。
(1)命令示例 dmfldr help 查看帮助
./dmfldr SYSDBA/SYSDBA CONTROL='/opt/data/fldr.ctl'
USERID 必须是命令行中的第一个参数
CONTROL 必须是命令行中的第二个参数
3.dminit
(1)查看帮助
$dminit help
4.dexp和dimp
(1)查看帮助
$ dexp help
$ dimp help
(2) 备份全库语句
dexp USERID=SYSDBA/SYSDBA@192.168.2.100:5236 FILE=db_str.dmp DIRECTORY=./ LOG=db_str.log FULL=Y
or
dexp USERID=SYSDBA/SYSDBA@192.168.2.100:5236 FILE=/home/dmdba/db_str.dmp LOG=db_str.log FULL=Y
(3) 设置备份文件大小
./dexp USERID=SYSDBA/SYSDBA FILE=db_str%U.dmp LOG=db_str.log FULL=YDIRECTORY=/mnt/data/dexp FILESIZE=128m
(4) owner 用户(USER01)级别的导出
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dexp
(5) schemas 方式导出
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dexp
(6) table 表级别的导出
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dexp
(7) 全库导入
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dimp
(8) 用户级别导入
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dimp
(9) 模式级别导入
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dimp
(10) 表级别导入
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.logTABLES=table1,table2 DIRECTORY=/mnt/data/dimp
四.DM 基础数据库管理
1.表管理 -- 使用disql或者使用manager(DM管理工具)连接数据库
(1)创建表
--创建表示例语句:
create table PERSON.test(
persionid int IDENTITY(1,1) CLUSTER PRIMARY key ,
sex CHAR(1) not null ,
name VARCHAR(50) not null ,
email varchar(50),
phone VARCHAR(25)
) STORAGE (
INITIAL 5 ,MINEXTENTS 5, NEXT 2 , ON MAIN ,FILLFACTOR 85
) ;
(2) 查看表
查看用户占用的空间
SELECT USER_USED_SPACE('TEST_USER')* page/1024 as size_KB;
查看表占用的空间
SELECT TABLE_USED_SPACE('SYSDBA', 'TEST') * PAGE SIZE_KB;
查看索引占用的空间
select * from dba_objects where object_name ='INDEX33555439' ;
SELECT INDEX_USED_SPACE(33555463);
查看索引使用的页数
SELECT INDEX_USED_PAGES(33555463);
查看表定义
CALL SP_TABLEDEF('SYSDBA', 'EMPLOYEE'); -- 用户名,表名要大写.
(3)删除表
DROP TABLE employee;
(4)清空表
--使用 DELETE 语句;
--使用 DROP 和 CREATE 语句;
create table...as select * from .. where 1=2;
drop table ...;
alter table... rename to ... ;
--使用 TRUNCATE 语句。
TRUNCATE 语句为我们提供了一种快速、有效地删除表所有行的方法。并且 TRUNCATE是一个 DDL 语句,不会产生任何回滚信息。
2.索引管理
(1)创建
-- 创建索引
CREATE INDEX emp_ename ON emp(ename)
STORAGE (
INITIAL 50,
NEXT
50,
ON
USERS);
(2)重建索引
SP_REBUILD_INDEX(SCHEMA_NAME varchar(256), INDEX_ID int); -- SCHEAM_NAME 为索引所在的模式名,INDEX_ID 为索引 ID。
(3)索引删除
--如下面的语句删除 emp_ename 索引。
DROP INDEX emp_ename;
--删除不存在的索引会报错。若指定 IF EXISTS 关键字,删除不存在的索引,不会报错,如:
DROP INDEX IF EXISTS emp_ename;
(4)查看索引
查看索引信息
select * from dba_objects where object_name ='INDEX33555439'
INDEXDEF(INDEX_ID int, PREFLAG int);
3.视图管理
-- 创建
create [or replace ] view as select ...
例如:
CREATE VIEW normal_view AS SELECT name FROM person;
CREATE VIEW special_view AS SELECT name, sex, email, phone FROM person;
-- 查看
select * from DBA_VIEWS ;
SELECT b.* FROM SYS.SYSOBJECTS a, SYS.SYSTEXTS b WHERE a.ID = b.ID and a.NAMELIKE '<name>';
-- 查看视图定义
CALL SP_VIEWDEF('SYSDBA', 'VIEW1');
-- 视图编译
ALTER VIEW [<模式名>.]<视图名> COMPILE;
-- 删除
DROP VIEW [IF EXISTS] [<模式名>.]<视图名> [RESTRICT | CASCADE];