目录
7.1.2 修改dm.ini和dmarch.ini文件开启归档
1 DM8安装与卸载
1.1 DM8版本介绍
1.1.1 开发版
使用时间受到限制,不能作为商用
1.1.2 安全版
增强安全特性,如强制访问控制,环境标记等
1.1.3 企业版
满足大型企业需求,生产应用最多的版本
1.1.4 标准版
不支持集群特性,满足中小企业的需求
1.2 安装前准备
1.2.1 查看操作系统信息
[root@localhost ~]# cat /proc/vercion
1.2.2 查看GLIBC版本
[root@localhost ~]# ldd --version
[root@localhost ~]# rpm -qa|grep glibc
1.2.3 查看CPU信息
[root@localhost ~]# lscpu
1.2.4 查看内存使用情况
[root@localhost ~]# free -m
1.2.5 查看gcc版本
[root@localhost ~]# gcc --version
#若没有gcc,则用如下命令安装
[root@localhost ~]# yum install gcc
1.2.6 查看磁盘容量
[root@localhost ~]# df -h
1.3 安装流程
1.3.1 安装规划
目录 | |
软件安装路径 | /dm8/dmdbms |
数据库目录 | /dm8/data |
归档路径 | /dm8/arch |
备份路径 | /dm8/backup |
1.3.2 创建安装用户和用户组
[root@localhost ~]# groupadd dinstall
[root@localhost ~]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
#修改用户密码
[root@localhost ~]# passwd dmdba
#查看用户是否创建成功
[root@localhost ~]# id dmdba
1.3.3 更改用户权限
[root@localhost ~]# chown dmdba:dinstall /dm8
[root@localhost ~]# chmod -R 755 /dm8
#查看dm8权限
[root@localhost ~]# ll -ld /dm8
1.3.4 修改文件打开数和tmp空间
[root@localhost ~]# vi /etc/security/limits.conf
dmdba soft nofile 102400
dmdba hard nofile 102400
root soft nofile 102400
root hard nofile 102400
#查看是否修改成功
[dmdba@localhost ~]# ulimit -a
#tmp目录根据具体而定
[root@localhost ~]# mount -o remount,size=2G /run/user/0
1.3.5 图形化安装
1)挂载镜像文件
#挂载安装文件
[root@localhost ~]# mount -o loop /opt/dm8.iso /mnt
2)进行安装
[root@localhost ~]# xhost +
[root@localhost ~]# echo $DISPLAY
[root@localhost ~]# su - dmdba
[dmdba@localhost ~]# echo $DISPLAY
[dmdba@localhost ~]# export DISPLAY=:0.0
[dmdba@localhost ~]# cd /mnt
[dmdba@localhost mnt]$ ./DMInstall.bin
3)安装步骤
1.3.6 字符界面安装
[dmdba@localhost mnt]$ ./DMInstall.bin -i
1.4 卸载流程
1.4.1 图形化卸载
[root@localhost dmdbms]# ./uninstall.sh
1.4.2 字符界面卸载
[root@localhost dmdbms]# ./uninstall.sh -i
1.5 数据库实例创建
1.5.1 图形化方式
[dmdba@localhost tool]$ ./dbca.sh
1.5.2 dminit初始化数据库
1)初始化
[dmdba@localhost ~]$ cd /dm8/dmdbms/bin
[dmdba@localhost bin]$ ./dminit path=/dm8/data db_name=DAMENG instance_name=DMSERVER length_in_char=y
2)脚本注册服务
[root@localhost ~]$ cd /dm8/dmdbms/script/root
[root@localhost root]$ ./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /dm8/data/DAMENG/dm.ini
1.5.3 图形化删除数据库服务
1.5.4 字符命令删除服务
[root@localhost bin]# cd /dm8/dmdbms/script/root
[root@localhost root]# ./dm_service_uninstaller.sh -n DmServiceDMSERVER
2 连接数据库
2.1 命令连接
2.1.1 disql连接数据库
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA:5236
2.1.2 conn连接
在数据库已经登录的情况下,进行访问其他数据库。
2.2 图形化连接
2.2.1 DM管理工具连接
2.3 配置连接串
2.3.1 DM网络配置助手
2.3.2 修改dm_svc.conf
[dmdba@localhost ~]$ vi /etc/dm_svc.conf
[dmdba@localhost ~]$ cat /etc/dm_svc.conf
3 参数配置
3.1 参数类型
SQL> select distinct type from v$parameter;
both
:既修改内存中的值,也修改配置文件中的值,重启不重启都一样生效
spfile
:只修改配置文件中的值,重启数据库生效
memory
:只修改内存中的值,重启数据库后恢复设置前的样子
达梦根据参数类型可分为,静态参数和动态参数两种,这两种均支持通过系统函数、SQL命令进行修改。
静态参数:只能修改配置文件中的值,对内存中的值不进行修改,所以静态参数修改后使其生效的话,需要对数据库进行重启
动态参数:既能修改内存中的值,也能修改配置文件中的值,所以动态参数修改后是立即生效的
READ ONLY:
手工参数,不能通过函数或 SQL 修改此类型的参数,只能手工编辑 dm.ini 来修改。
SYS:
系统级动态参数,可以通过系统函数、SQL命令达到修改参数的目的
IN FILE:
静态参数,可以通过函数或 SQL 修改此类型的参数,但不能修改内存中的值(数据库运行期间内存中的数据不能修改),只能修改参数文件中的值(重启数据库生效)。
SESSION:动态参数
(会话级),可以通过系统函数、SQL命令达到修改参数的目的,可针对某个会话进行修改,便于调试(不然要应用到整个线上系统,一旦出错,影响面就广了)
3.2 修改参数
3.2.1 直接修改dm.ini
[dmdba@localhost bin]$ vi /dm8/data/DAMENG/dm.ini
3.2.2 DM控制台工具修改
3.2.3 SQL语句修改
alter system set ‘参数名’=参数值 spfile|memory|both;
1)修改静态参数COMPATIBLE_MODE
ALTER SYSTEM SET 'COMPATIBLE_MODE'=2 SPFILE;
2)修改动态参数UNDO_RETENTION
ALTER SYSTEM SET 'UNDO_RETENTION'=2;
3)修改会话级参数LIST_TABLE
ALTER SESSION SET 'LIST_TABLE'=1;
3.2.4 系统函数修改
#查看有那些系统函数
select name, id from v$ifun t where t.name like 'SP_SET_PARA%';
#SP_SET_PARA_VALUE参数
第一个参数:scope:0:memory;1:both;2:spfile;
第二个参数:参数名称
第三个参数:参数的值
4 数据缓冲区和日志缓冲区
数据缓冲区是从磁盘中读取数据页的镜像,由INI配置中的BUFFER、FAST_POOL_PAGES、RECYCLE、KEEP等确定大小,不同类型的缓冲区主要表现为淘汰机制。
4.1 查看缓冲区信息
#查看缓冲区信息
select * from v$bufferpool;
#查看检查点
select name,value,file_value,sys_value,type,description from v$parameter t where t.name like 'CKPT%';
4.2 修改缓冲区参数
1)修改buffer参数
alter system set 'BUFFER'=500 SPFILE;
4.3 查看日志缓冲区
select name,value,file_value,sys_value,type,description from v$parameter t where t.name like 'RLOG_BUF_SIZE%';
5 表空间管理
5.1 表空间类型
SYSTEM:系统表空间,存放的是数据字典信息,包含表定义、视图定义、用户权限等
ROLL:回滚表空间,存放undo信息。INSERT、UPDATE、DELETE都会产生undo信息
MAIN:用户默认表空间,创建用户时,没有指定表空间,则使用MAIN表空间TEMP:临时表空间,用于存放临时表数据、索引、大量数据排序等产生的数据
HMAN:HUGE表(列存储表)的默认表空间
5.2 操作表空间
5.2.1 命令方式
#查看表空间
select * from v$tablespace;
select * from dba_tablespaces;
select * from dba_data_files;
#创建表空间
create tablespace tbs datafile '/dm8/data/DAMENG/tbs01.DBF' size 16;
注意:数据文件的大小不能低于页大小的 4096 倍,最大不能大于页大小的 2 的 31 次方
倍-1
#修改表空间文件扩展属性
alter tablespace tbs datafile '/dm8/data/DAMENG/tbs01.DBF' autoextend off;
#添加数据文件
alter tablespace tbs add datafile '/dm8/data/DAMENG/tbs02.DBF' size 32 autoextend off;
#修改数据文件
alter tablespace tbs resize datafile '/dm8/data/DAMENG/tbs01.DBF' to 128;
alter tablespace tbs datafile '/dm8/data/DAMENG/tbs01.DBF' autoextend on next 2 maxsize 10240;
#修改表空间名
alter tablespace tbs rename to dmtbs;
#删除表空间
drop tablespace dmtbs;
5.2.2 图形化操作表空间
5.3 表空间的迁移
迁移时注意:新的表空间路径,
必须是由安装数据库的用户进行创建,或者把这个文件夹授予数据库安装用户读写权限
,否则会因权限问题报数据库文件路径错误
#使表空间离线
alter tablespace tbs offline;
#修改表空间名,并迁移
alter tablespace tbs rename datafile 'TBS04.DBF' to '/dm8/data/TBS/TBS04.DBF';
alter tablespace tbs rename datafile 'TBS05.DBF' to '/dm8/data/TBS/TBS05.DBF';
#使表空间上线
alter tablespace tbs online;
5.4 修改temp表空间
#查询temp表空间
select name,value,type from v$parameter where name like 'TEMP%';
# 设置temp表空间初始值
alter system set 'TEMP_SIZE'=64 spfile;
# 查看更改是否生效
cat /dm8/data/DAMENG/dm.ini |grep TEMP_SIZE
6 重做日志
6.1 命令操作重做日志
#查看重做日志
select * from v$rlog;
select * from v$logfile;
#创建重做日志
alter database add logfile 'DAMENG03.log' size 128;
#修改重做日志
alter database resize logfile '/dm8/data/DAMENG/DAMENG03.log' to 256;
6.2 重做日志迁移
# 将数据库状态设置为mount状态
alter database mount;
alter database rename logfile '原日志路径' to '迁移到的日志路径';
# 将数据库状态设置为open状态
alter database open;
alter database mount;
alter database rename logfile '/dm8/data/DAMENG/DAMENG01.log' to '/dm8/data/DAMENG/REDO/DAMENG01.log';
alter database rename logfile '/dm8/data/DAMENG/DAMENG02.log' to '/dm8/data/DAMENG/REDO/DAMENG02.log';
alter database rename logfile '/dm8/data/DAMENG/DAMENG03.log' to '/dm8/data/DAMENG/REDO/DAMENG03.log';
alter database open;
6.3 图形化操作重做日志
7 归档管理
7.1 开归档
7.1.1 命令行开归档
# 将数据库状态设置为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;
7.1.2 修改dm.ini和dmarch.ini文件开启归档
#修改dm.ini参数ARCH_INI
[dmdba@localhost DAMENG]$ vi dm.ini
ARCH_INI = 1
[dmdba@localhost DAMENG]$ vi dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 10240
7.1.3 图形化开归档
7.2 关闭归档
7.2.1 命令行
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.2.2 图形化关归档
8 用户角色权限
8.1 用户管理
8.1.1 用户类型
SYSDBA :系统管理员。具有数据库对象的几乎所有操作权限,但没有审计和强制访问控制等权限。SYSAUDITOR :系统审计管理员,具有审计权限。SYSSSO :安全管理员,具有强制访问控制等安全权限。SYS :内置用户,不允许登录。SYSDBO :对象操作员。
8.1.2 创建用户
1)命令方式
create user 用户名 identified by 密码 default tablespace 表空间名;
create user dm identified by "Dameng123";
#查看密码策略
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,则设置口令策略为 2+4=6 即可
#修改密码策略
alter system set 'PWD_POLICY' = O both;
#用户资源限制
alter user dm limit failed_login_attemps 5 password_lock_time 10;
#锁定用户
alter user dm account lock;
#解锁用户
alter user dm account unlock;
2)图形化方式
8.1.3 查询指定用户所用的权限
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 = '用户名';
select * from DBA_SYS_PRIVS where grantee = 'DMTEST';
select * from dba_tab_privs where grantee = 'DMTEST';
select * from dba_role_privs where grantee = 'DMTEST';
select * from dba_col_privs where grantee = 'DMTEST';
8.2 角色管理
8.2.1 角色类型
DBA :几乎具有所有 DDL 和 DML 权限,但没有审计和强制访问控制权限。RESOURCE: 具有本模式下对象的 DDL 操作权限和 DML 操作权限。PUBLIC: 具有用户模式下表或视图的 DML 数据操作权限,及 user 开头的数据字典的权限。VTI: 具有 V$ 开头动态视图的查询权限SOI: 有 SYS 开头系统数据字典的权限。
#创建用户并授权
create role 角色名;
grant 权限 to 角色名;
create role r1;
grant create table to r1;
#将角色授予用户
grant 角色名 to 用户名;
grant r1 to dmtest;
8.3 权限管理
# 设置用户名为dmtest的用户,最大连接数为3
alter user dmtest limit SESSION_PER_USER 3;
设置可以赋予其他用户在非当前用户模式下创建对象权限
select * from v$parameter where name = 'ENABLE_DDL_ANY_PRIV';
# 开启参数
alter system set 'ENABLE_DDL_ANY_PRIV'=1 both;
# 进行授权
grant create any table to dmtest;
8.3.1 授予查询权限
grant select on 模式名.表名 to 用户名;
grant select on dm.test to dmtest;
8.3.2 授予添加修改权限
grant select on 模式名.表名 to 用户名;
grant update on 模式名.表名 to 用户名;
grant delete on 模式名.表名 to 用户名;
grant select on dm.test to dmtest;
grant update on dm.test to dmtest;
grant delete on dm.test to dmtest;
8.3.3 回收用户权限
revoke 角色名 from 用户名;
revoke 具体权限 from 用户名;
revoke r1 from dmtest;
revoke create table from dmtest;
8.3.4 图形化
9 模式对象管理
9.1 创建模式
# 创建模式前需要授予用户创建模式的权限
# 创建模式
create schema 模式名 authorization 用户名;
/
# 授予用户创建模式权限
grant create schema to 用户名;
create schema t1 authorization dmtest;
select * from SYSOBJECTS where "TYPE$" = 'SCH';
#查询模式和所属用户组
select a.id scheid, a.name schename, b.id userid, b.name username
from SYS.SYSOBJECTS a, SYS.SYSOBJECTS b
where a."TYPE$" = 'SCH' and a.pid = b.id;
#查询当前模式
select sys_context('USERENV','CURRENT_SCHEMA');
#查询当前用户
select user;
select sys_context('USERENV','CURRENT_USER');
10 表管理
10.1 创建表
#创建dmtest.t_testpid表
create table dmtest.t_testpid
(pid int,
pname varchar(20) not null ,
sex bit,
logdate date DEFAULT sysdate,
logtime time DEFAULT sysdate,
logdatetime datetime DEFAULT sysdate) tablespace DMTBS;
#插入数据
insert into dmtest.t_testpid(pid,pname) values(1,'a');
# 添加字段
alter table dmtest.t_testpid add email varchar(50);
# 修改字段
alter table dmtest.t_testpid modify pname VARCHAR(50) not NULL;
# 删除字段
alter table dmtest.t_testpid drop email;
# 只复制表结构(不带约束信息)
create table t_emp03 as select * from dmhr.employee where 1=0;
# 复制表结构+表数据
create table t_emp01 as select * from dmhr.employee;
create table t_emp02 like dmhr.employee;
10.2 约束
10.2.1 约束类型
NOT NULL:非空约束
UNIQUE:唯一约束,可以为空,简写为UK_表名_字段名
PRIMARY KEY:主键约束(唯一约束+非空约束),简写为PK_表名_字段名
FOREIGN KEY:外键引用约束,引用的是另一张表(父表)的主键或唯一键。简写为FK_表名_字段名
CHECK:检验约束,用户校验数据的准确性,简写为CK_表名_字段名主键约束和唯一约束的区别:一张表只能有一个主键,但是可以有多个唯一约束。
10.2.2 添加约束
注意:字段如果为小写需要小写并且加上双引号,字段为大写不需要加双引号
# 添加主键约束
alter table dmtest.t_testpid add CONSTRAINT pk_testpid_pid PRIMARY key(PID);
# 添加外键约束,注意REFERENCES表里的字段必须是主键或者是添加了唯一索引的字段
alter table dmtest.t_testchild add CONSTRAINT fk_testchild_pid FOREIGN key(PID) REFERENCES dmtest.t_testpid(PID);
# 添加校验约束
alter table dmtest.t_testchild add CONSTRAINT ck_testchild_salary CHECK ("salary">=3000);
10.2.3 启用和禁用约束
#禁用约束
alter table 模式名.表名 disable constraint "约束名"
#启用约束
alter table 模式名.表名 enable constraint "约束名"
11 索引视图管理
11.1 创建索引
create index idx_表名_字段名 ON 表名 (字段名,字段名);
create index idx_t_testpid_pid on dmtest.t_testpid(pid,pname);
11.2 视图创建
create or replace view ID as select * from dm.test where id > 3;
12 备份与还原
备份分为物理备份和逻辑备份。物理备份是拷贝有效的数据页,逻辑备份是导出对应对象定义语句,数据插入语句。物理备份分为完全备份和增量备份。完全备份是指一个备份包含指定数据库或表空间的所有数据。增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。物理备份包含冷备(脱机备份,数据库关闭)和热备(联机备份,数据库启动)。
12.1 逻辑导入导出
12.1.1 逻辑导出
数据库迁移、历史数据归档、重新组织表、物理备份的辅助逻辑导出包含四个级别:Full=y 全库导出Owner=XX 按用户导出Schemas=XX 按模式导出Tables=XX 导出指定的表
./dexp userid=sysdba/SYSDBA:5236 directory=/dm8/bakup file=full.dmp log=full.log full=y
#用户级导出
./dexp userid=sysdba/SYSDBA:5236 directory=/dm8/bakup file=dmtest.dmp log=dmtest.log owner=dmtest
12.1.2 逻辑导入
#全库导入
./dimp userid=sysdba/SYSDBA:5236 directory=/dm8/bakup file=full.dmp log=dim_full.log full=y
#用户导入
./dimp userid=sysdba/SYSDBA directory=/dm8/bakup file=dmtest.dmp log=dm_dmtest.log owner=dmtest
12.2 物理备份还原
12.2.1 联机备份
# 全库备份到默认路径下
backup database
# 全库备份到指定路径下(备份目录不带文件名)
backup database full backupset '/dm8/bakup/full_bak/full';
# 基于基础备份集的增量备份,并备份到指定目录
backup database increment to incrbak01 backupset '/dm8/backup/incr_bak/incrbak01';
12.2.3 脱机备份
#脱机备份可以使用 dmrman(命令行)
RMAN> backup database '/dm8/data/DAMENG/dm.ini' to bak_01 backupset '/dm8/bakup/full/bak_01';
12.2.4 库级还原
#恢复数据库
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/bakup/full/bak_01';
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';
#恢复数据库魔数
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
12.3 图形化操作
12.3.1 联机备份
12.3.2 脱机备份
#启动控制台工具
./console
12.3.3 物理还原
13 作业管理
13.1 创建代理环境
#命令式
SP_INIT_JOB_SYS(1);
13.2 创建作业
14 ODBC配置
#解压安装包
tar -zxvf /opt/unixODBC-2.3.0.tar.gz
#进入安装目录,进行安装
cd unixODBC-2.3.0
./configure
make
make install
#修改配置文件
cd /usr/local/etc/
vim odbc.ini
[DM8] # 这个按要求改
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER # 要和下面对应
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
vim odbcinst.ini
[DM8 ODBC DRIVER] # 这块要和上边对应
Drscription = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
#验证是否配置成功
su -dmdba
isql dm8 -v
想了解相关手册信息,请到达梦官方网站:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台