达梦数据基础学习

1.安装达梦8

1.1 达梦8版本介绍

开发版 : 开发版与企业版功能相同,平时工作使用开发版即可,授权期限为一年

企业版:支持集群特性,需要购买授权码

标准版: 不支持集群特性

安全版: 增加了访问控制等安全特性,用于SM机上

1.2 安装前环境检查

查看操作系统信息

cat /etc/system-release

cat /proc/version

注意:内核版本需要在2.6以上,否则在安装过程中会报错

uname -a

查看CPU信息

lscpu
cat /proc/cpuinfo

glibc版本

ldd --version
rpm -qa|grep glibc

glibc需要在2.3以上,否则在安装过程中会报错

查看gcc版本

gcc --version
rpm -qa|grep gcc
安装odbc的时候,需要gcc包依赖,没有安装的话需要进行安装
查看磁盘容量
df -h
tmp 容量不能小于1G. 用户可以可以扩展/tmp目录或者通过设置环境变量 DM_INSTALL_TMPDIR 指定安装程序的临时目录:
#直接扩展
mount -o remount,size=2G /tmp
#以 BASH 为例:
mkdir -p /mount_point/dir_name
DM_INSTALL_TMPDIR=/mount_point/dir_name
export DM_INSTALL_TMPDIR
查看内存
free -h
为了保证 DM 的正确安装和运行,要尽量保证操作系统至少 1GB 的可用内存(RAM)

1.3 安装规划

创建用户组和用户

groupadd -g 12349 dinstall
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
echo "Dameng@123" | passwd --stdin dmdba
创建安装目录
mkdir /dm8
chown -R dmdba:dinstall /dm8

设置最大可打开文件数

echo "
#dm
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 10240
dmdba hard nproc 10240
#dm " >> /etc/security/limits.conf

1.4 挂载镜像文件

mount -o loop dm8_20220720_x86_rh7_64_ent_8.1.2.114_pack11.iso /mnt

1.5 开始安装

1.5.1 图形化界面安装

设置DISPLAY值

# 登陆到服务器上后,打开命令行(root用户)
xhost +
# 查看DISPLAY值
echo $DISPLAY
# 切换到dmdba用户
su - dmdba
#添加环境变量
echo "export DISPLAY=:0.0" >> .bash_profile
#应用环境变量
source .bash_profile
# 查看DISPLAY值
echo $DISPLAY
# 设置DISPLAY值
export DISPLAY=:0.0

执行安装程序

##dmdba用户
cd /mnt
./DMInstall.bin
点击"安装".
使用root用户,执行脚本
数据库软件安装完毕.

1.5.2 命令行形式安装

使用dmdba
./DMInstall.bin -i

使用root用户执行脚本

1.6 创建数据库

1.6.1 图像化方式

# 进入到dm工具包目录
cd /dm8/tool
# 打开数据库配置助手
./dbca.sh
增加日志文件
使用root用户,执行脚本

1.6.2 命令行方式

# 进入到目录
cd /dm8/bin
# 初始化数据库
dminit PATH=/dm8/data DB_NAME=DMDB INSTANCE_NAME=DMDB PORT_NUM=5236 EXTENT_SIZE=32 PAGE_SIZE=16 CASE_SENSITIVE=1 CHARSET=0
[dmdba@dmdb ~]$ dminit help   -- 查看帮助
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2023-07-20
version: 03134283890-20220720-165295-10045 Pack11
格式: ./dminit     KEYWORD=value
例程: ./dminit     PATH=/public/dmdb/dmData PAGE_SIZE=16
注册服务
su - root
cd /dm8/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DMDB/dm.ini -p DMDB
启动服务
systemctl start  DmServiceDMDB

2.数据库连接(

2.1 使用命令行连接

# 进入到bin目录
cd /dm8/bin
# 使用disql连接,本地连接可省略ip
./disql SYSDBA/SYSDBA:5236
# 连接远程服务器需要加上ip
./disql SYSDBA/SYSDBA@192.168.2.181:5236

2.2 使用图形化工具连接

2.2.1 图形化界面开启语法提示

manager &

3.参数配置

3.1 参数类型

达梦根据参数类型可分为,静态参数和动态参数两种,这两种均支持通过系统函数、SQL命令进行修改
静态参数:只能修改配置文件中的值,对内存中的值不进行修改,所以静态参数修改后使其生效的话,需要对数据库进行重启
动态参数:既能修改内存中的值,也能修改配置文件中的值,所以动态参数修改后是立即生效的

READ ONLY: 只读参数,不能通过系统函数、SQL命令达到修改参数的目的,只能从dm.ini配置文件中进行修改

SYS: 静态参数,可以通过系统函数、SQL命令达到修改参数的目的

IN FILE: 动态参数(系统级),可以通过系统函数、SQL命令达到修改参数的目的

SESSION: 动态参数(会话级),可以通过系统函数、SQL命令达到修改参数的目的,可针对某个会话进行修改,便于调试(不然要应用到整个线上系统,一旦出错,影响面就广了)

3.2 参数修改方式

3.2.1 使用dm.ini修改

# 直接编辑文件修改即可
vim /dm8/data/服务名称 dm.ini
#重启服务
DmServiceDMDB restart

3.2.2 使用图形化修改

cd /dm8/tool
./console  &
#修改完成后,需要重启数据库
DmServiceDMDB restart

3.2.3 SQL语句修改

# 后面跟的是参数范围
alter system set '参数名'='参数值' both | spfile | memory;
修改兼容参数
# 查询兼容参数类型
select name,value,sys_value,file_value,type,description from v$parameter where name = 'COMPATIBLE_MODE';
# 修改兼容参数类型
alter system set 'COMPATIBLE_MODE'=2 spfile;
修改UNDO_RETENTION
select name, value,type ,t.DESCRIPTION from v$parameter t where t.name like   'UNDO_RETENTION%';
alter SYSTEM set 'UNDO_RETENTION' = 180 both ;
select name, value,type ,t.DESCRIPTION from v$parameter t where t.name like   'UNDO_RETENTION%';  -- 修改后要查证

修改LIST_TABLE

select name, value,type ,t.DESCRIPTION from v$parameter t where t.name like   'LIST_TABLE%';

alter session set 'LIST_TABLE' = 1  ;

select name, value,type ,t.DESCRIPTION from v$parameter t where t.name like 'BUFFER%';
alter system set 'BUFFER'=2000 spfile;

4.表空间管理(必考)

4.1 表空间类型

  • SYSTEM:系统表空间,存放的是数据字典信息,包含表定义、视图定义、用户权限等
  • ROLL:回滚表空间,存放undo信息。INSERT、UPDATE、DELETE都会产生undo信息
  • MAIN:用户默认表空间,创建用户时,没有指定表空间,则使用MAIN表空间
  • TEMP:临时表空间,用于存放临时表数据、索引、大量数据排序等产生的数据
  • HMAN:HUGE表(列存储表)的默认表空间  
修改temp表空间大小,需要修改temp_size
select name, value,type ,t.DESCRIPTION from v$parameter t where t.name like  'TEMP_SIZE%';
alter system set 'TEMP_SIZE'=64 spfile;
4.2 操作表空间
4.2.1 命令行方式
查看表空间
select * from dba_tablespaces;
select * from dba_data_files;
创建表空间
create tablespace 表空间名 datafile '数据文件路径' SIZE 数据文件大小(单位为mb);
create tablespace dbtbs datafile 'DMTBS01.DBF' SIZE 32;
# 查询页大小的4096倍,并换算成MB
select page*4096/1024/1024 ;
修改表空间大小
# 修改表空间大小
alter tablespace 表空间名 resize datafile '数据文件路径' to 数据文件大小(单位为mb);
alter tablespace dmtbs resize datafile 'DMTBS01.DBF' to 64;
# 修改表空间开启自动增长,增长步长,最大表空间
alter tablespace 表空间名 datafile '数据文件路径' autoextend on next 增长步长 maxsize 文件最大值
alter tablespace dmtbs datafile 'DMTBS01.DBF' autoextend on next 2 maxsize 10240;
删除表空间
drop tablesapce 表空间名; 
drop tablespace dmtest;
表空间添加数据文件
alter tablespace 表空间名 add datafile '数据文件路径' size 数据文件大小(单位为mb); 
alter tablespace dmtbs add datafile 'DMTBS02.DBF' size 64;
修改表空间名称
alter tablespace 修改前表空间名 rename to 修改后表空间名; 
alter tablespace dmtbs rename to dmtest;

5.重做日志文件

重做日志:用于记录redo信息,重做日志默认为256M,数据库中的增、删、改操作都会记录redo和undo信息
redo信息写入联机日志文件,undo写入roll表空间对应的数据文件中
达梦的联机日志只支持系统自动切换,不支持手动切换(oracle支持)

5.1 重做日志命令行方式

查看联机日志
## 当前正在使用的联机日志 
select * from v$rlog; 
select * from v$logfile;
创建连接日志、修改连接日志大小
alter database add logfile '日志名称' size 日志大小(单位MB);
alter database add logfile 'DAMENG03.log' size  128
alter database resize logfile '日志路径' to 日志大小(单位MB);
alter database resize logfile '/dm8/data/DMDB/DAMENG03.log' to 256;

5.2 重做日志迁移

# 将数据库状态设置为mount状态
alter database mount;
alter database rename logfile '原日志路径' to '迁移到的日志路径';
# 将数据库状态设置为open状态
alter database open;
alter database mount;
alter database rename logfile '/dm8/data/DMDB/DAMENG01.log' to '/dm8/data/DMDB/REDO/DAMENG01.log';
alter database rename logfile '/dm8/data/DMDB/DAMENG02.log' to '/dm8/data/DMDB/REDO/DAMENG02.log';
alter database rename logfile '/dm8/data/DMDB/DAMENG03.log' to '/dm8/data/DMDB/REDO/DAMENG03.log';
alter database open;

6.归档管理

归档是对REDO的归档,备份归档是为了防止数据丢失,利用归档文件可以恢复数据库里的数据
归档开启
# 将数据库状态设置为mount
alter database mount;
# 打开归档
alter database archivelog;
# 归档配置,配置归档路径,归档文件大小(超过就新建一个文件),归档文件总的大小(超过限制,就会删除老的)
alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';
# 将数据库状态设置为open
alter database open;
# 查询归档状态
select arch_mode from v$database;
# 查看归档文件
select * from SYS."V$ARCH_FILE";
# 查询归档配置
select * from v$dm_arch_ini;
归档关闭
alter database mount;
# 关闭归档
alter database noarchivelog;
# 删除归档文件
alter database delete archivelog 'type=local,dest=/dm8/arch';
# 将数据库状态设置为open
alter database open;
# 查询归档状态
select arch_mode from v$database;

7.用户管理

创建用户
create user 用户名 identified by 密码 default tablespace 表空间名; 
create user hrtest identified by "Dmeng123";
#查询下密码策略
select * from v$parameter where name = 'PWD_POLICY';
#修改密码策略
0 无限制。但总长度不得超过 48 个字节
1 禁止与用户名相同
2 口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值
4 至少包含一个大写字母(A-Z)
8 至少包含一个数字(0-9)
16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
2+4+8
select * from SYS."V$PARAMETER" t where name ='PWD_POLICY';
alter system set 'PWD_POLICY' = 14 BOTH;
修改用户配置
# 将密码输错锁定次数改为3次,锁定时间为5分钟 
alter user 用户名 limit FAILED_LOGIN_ATTEMPS 3,PASSWORD_LOCK_TIME 5;
用户的锁定和解锁
# 手动解锁 alter user 用户名 account unlock; 
# 手动锁定 alter user 用户名 account lock;
用户授权
查询权限
select * from DBA_SYS_PRIVS where grantee = '用户名';
select * from dba_tab_privs where grantee = '用户名';
select * from dba_role_privs where grantee = '用户名';
select * from dba_col_privs where grantee = '用户名';
授权:
grant  角色名 to 用户名;
grant 具体权限 to 用户名;
grant public ,resource, soi,svi ,vti to 'app' ;
回收:
revoke 角色名 from 用户名; 
revoke 具体权限 from 用户名; 
资源限制
# 设置用户名为hrtest的用户,最大连接数为5
alter user app limit SESSION_PER_USER 5 ;

8. 角色管理

创建角色,并授予角色权限
create role 角色名; 
grant 权限 to 角色名; 
create role r1; 
grant 角色名 to 用户.
9.表管理
表名是区分大小写的
创建表
create table app.test( id int, name varchar(10), logtime datetime DEFAULT sysdate, sex bit ) tablespace PROD_TBS;
create app.test as  select * from hr.emp where 1=2 ;
字段调整
# 添加字段
alter table app.test add email varchar(20);
# 修改字段
alter table app.test modify email varchar(30);
# 删除字段
alter table app.test drop email;
删除表
drop table 表名 ;
drop table app.test
添加约束
#添加主键约束
alter table t_testpid add CONSTRAINT pk_testpid PRIMARY KEY(pid);
#添加唯一约束
alter table t_testpid add CONSTRAINT uk_testpid_pname UNIQUE(pname);
alter table t_testpid add CONSTRAINT uk_testpid_email UNIQUE(email,sex);
#添加非空约束
alter table "APP"."DEPT" alter column "DEPARTMENTID" set not null;
#添加外键约束
alter table "DMTEST"."T_TESTCHILD" add constraint "FK_TESTCHILD_PID"
foreign key("PID") references "DMTEST"."T_TESTPID"("PID");
#添加检查约束
alter table t_testpid add CONSTRAINT ck_testpid_logdatetime  CHECK(logdatetime >= '2020-01-01');
#查询指定表上的约束
select * from SYS.DBA_CONSTRAINTS a where a.OWNER = 'APP' and a.TABLE_NAME = 'EMP' ;
禁用和启用约束
#禁用
alter table 模式名.表名 disable constraint "约束名"
#启用
alter table 模式名.表名 enable constraint "约束名"
创建索引
create index 索引名 ON 表名 (字段名,字段名);
删除索引
drop index  索引名 ;

10.视图管理

创建视图
create or replace view 视图名称 as 查询语句 ;
删除视图
drop view 视图名 ;
查询视图
select * from SYS.DBA_VIEWS a where a.OWNER = 'app' ;

11.备份与还原

逻辑导出,导入
#库逻辑导出
./dexp userid=sysdba/SYSDBA:5236 directory=/dm8/backup  file=full.dmp log=full.log full=y
#用户逻辑导出
./dexp userid=sysdba/SYSDBA:5236 directory=/dm8/backup file=app.dmp log=app.log owner=app
#库逻辑导入
./imp userid=sysdba/SYSDBA:523 directory=/dm8/backup file=app.dmp FULL=Y  LOG=imp.log  
#用户逻辑导入
./imp userid=sysdba/SYSDBA:5236 directory=/dm8/backup file=app.dmp log=app.log
联机备份
# 全库备份到默认路径下
backup database ;
# 全库备份到指定路径下(备份目录不带文件名)
backup database full backupset '备份目录';
# 基于基础备份集的增量备份,并备份到指定目录
backup database increment to incrbak01 backupset '/dm8/backup/';
# 基于指定备份集的增量备份,并备份到指定目录 
backup database increment with BACKUPDIR '/dm8/backup/full' to incrbak02 backupset '/dm8/backup/incr/incrbak02';
数据库恢复
#数据库为关闭状态,使用dmrman 恢复数据库
#数据库转储
restore database '<数据库目录>/dm.ini' from backupset '备份集';
#数据库恢复
recover database '<数据库目录>/dm.ini' from database '备份集' ;
#数据库更新
recover database '<数据库目录>/dm.ini' update db_magic ;

 

12 .作业管理
作业步骤
作业调度
13.odbc配置
#解压ODBC
tar -zxvf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0 
./configure --enable-gui=no && make  && make install
#配置
odbc_config -j
vim /usr/local/etc/odbc.ini
[dm8]
description=dm8
driver=odbc dm8
server=192.168.2.181
uid=sysdba
pwd=EnmoEdu123
tcp_port=5236
vim /usr/local/etc/odbcinst.ini
[odbc dm8]
description=odbc dm8
driver=/opt/dm8/drivers/odbc/libdodbc.so
#测试
[dmdba@enmoedu1 ~]$ isql dm8
https://eco.dameng.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值