本文主要记录自己DCA培训学习实况,同时也给想要学习达梦数据库v8的小伙伴们带来一次技术入门分享。
学习环境:操作系统 银河麒麟V10
数据库:DM8开发版
虚拟机:VMware workstation 15 Pro
查看系统信息
查看CPU
根据CPU 类型,国产 CPU 飞腾、鲲鹏(ARM 架构), 龙芯等下载对应的 CPU 架构的安装包,一般个人电脑是x86 架构。
或
根据cpu的架构下载对应的版本 网址:https://www.dameng.com/list_103.html
查看内存
或
查看磁盘空间
查看/tmp空间,/tmp建议至少2.0G以上
调整/tmp空间
vi /etc/fstab,追加tmpfs /tmp tmpfs nodev,nosuid,size=2G 0 0,重启shutdown -r
查看glibc、gcc版本
设置文件打开数
DM 安装目录下执行./uninstall.sh 卸载 DM 数据库:
./uninstall.sh
dminit 是 DM 初始化数据库的命令行工具,位于 DM 安装目录 bin 下
DM 数据库参数的类型:
READ ONLY:手动参数,不能通过 SQL 命令或函数修改;只能通过修改 dm.ini 文本文件修改
此参数(需要重启数据库才能生效)。
SYS:动态(系统级)参数。数据库运行中可以直接修改,可以即可以修改内存中的值,也
可以修改参数文件中的值。可以通过 SQL 命令或系统函数修改。
SESSION:动态(会话级)参数,数据库运行中可以直接修改,可以即可以修改内存中的值,
也可以修改参数文件中的值,还可以只修改当前会话的值。可以通过 SQL 命令或函数修改,
且可以只针对当前会话生效。
IN FILE:静态参数,不能修改内存中的值,只能修改参数文件中的值,可以通过 SQL 命令
或函数修改,但需要重启数据库才能生效。
静态参数在数据库运行期间不能修改内存中的值,动态参数在数据库运行期间可以修改内存
中的值(修改后立即生效)。
图形化界面方式修改,不管修改什么类型参数都需要重启数据库才能生效。
不管修改什么类型参数都需要重启数据库才能生效
(可以用来修改静态和动态参数,但静态参数修改后需要重启数据库
才能生效)。
参数说明:
SCOPE:修改范围(0:memory;1:both;2:spfile)
修改静态参数:
修改动态参数:
(可以用来修改静态和动态参数,但静态参数修改
后需要重启数据库才能生效)。
表空间是 DM数据库的最大逻辑存储单元,表中的数据在逻辑上都是存放在表空间中,
在物理上存放在表空间对应的物理数据文件。表空间由数据文件组成,表空间采用段、簇、
页的方式进行管理。
DM 默认预定义 SYSTEM、ROLL、MAIN、TEMP、HMAIN 五个表空间。
SYSTEM:系统表空间,存放数据字典等信息(表、字段、视图等对象的定义、用户角
色权限信息等,部分隐含参数写入 SYSTEM 表空间),SYSTEM 表空间自动扩展不允许关
闭。
ROLL:回滚表空间,存放回滚页,数据库中的 DML 操作对应都会生成 redo 和 undo,
undo 信息放入 ROLL 表空间对应的数据文件中,redo 信息写入联机日志文件,用于保证数
据的一致性。
MAIN:用户默认表空间,当创建用户时,如果为指定用户的默认表空间,则 MAIN 为
用户的默认表空间。相当于 Oracle 的 USERS 表空间。
TEMP:临时表空间,存放临时表数据、临时结果集等,当大量的数据排序或创建索引
等占用临时表空间。DM 中临时表空间由参数 TEMP_SIZE 指定。
达梦 TEMP 表空间,数据库启动时会按照如下参数重建 TEMP 表空间。
select name, value, type from v$parameter t where name like ‘TEMP%’;
修改临时表空间的初始大小:
alter system set ‘TEMP_SIZE’=100 spfile;
使用 create tablespace 语句创建表空间:
create tablespace tbs DATAFILE ‘TBS01.DBF’ size 32;
SYSTEM、ROLL、TEMP 表空间不能脱机。
表空间脱机后,该表空间中的数据将不能读写。
DM 预定义表空间不支持重命名,自定义表空间支持重命名。
alter tablespace tbs RENAME TO dmtbs;
系统预定义的表空间不能删除;DM 只能删除空的表空间:
drop tablespace dmtbs;
修改表空间添加数据文件:
alter TABLESPACE tbs add DATAFILE ‘TBS02.DBF’ size 128 AUTOEXTEND on NEXT 2
MAXSIZE 20480;
修改表空间数据文件的扩展属性(SYSTEM、TEMP 表空间不允许关闭自动扩展,且不允许
限制空间大小):
alter tablespace tbs DATAFILE ‘TBS01.DBF’ AUTOEXTEND on NEXT 2 MAXSIZE
20480;
alter tablespace tbs DATAFILE ‘TBS01.DBF’ AUTOEXTEND off;
修改表空间数据文件的大小:
alter tablespace tbs RESIZE DATAFILE ‘TBS01.DBF’ TO 128;
alter tablespace tbs offline;
alter TABLESPACE tbs RENAME DATAFILE ‘TBS01.DBF’ TO
‘/dm8/data/DM/TBS/TBS01.DBF’;
alter TABLESPACE tbs RENAME DATAFILE ‘TBS02.DBF’ TO
‘/dm8/data/DM/TBS/TBS02.DBF’;
alter tablespace tbs online;
重做日志包含联机日志和归档日志(数据库在归档模式下才会产生归档日志文件)。
联机重做日志:存放 redo 信息,循环使用,不断覆盖。
联机日志 v$rlog 中记录有日志序列号(LSN: Log Sequence Number)
DM 数据库联机日志自动切换,不能手工切换。DM 联机日志没有日志组。
归档开启:
查看归档配置:
修改归档的配置(修改归档空间上限):
SQL>alter database modify archivelog ‘type=local, dest=/dm8/arch, SPACE_LIMIT=20480’;
DM 支持手工切换归档;
alter SYSTEM ARCHIVE LOG CURRENT;
alter SYSTEM SWITCH LOGFILE;
alter DATABASE ARCHIVELOG CURRENT;
select * from v$ifun t where name like ‘SF_ARCHIVELOG_%’;
SF_ARCHIVELOG_DELETE_BEFORE_LSN
SF_ARCHIVELOG_DELETE_BEFORE_TIME
Select SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-10); --删除10天前的归档日志。
DM 默认的预定义用户:
SYS:系统内置用户,不允许登录。
SYSDBA:系统管理员,拥有几乎所有权限(除审计和强制访问控制)
SYSAUDITOR:系统审计管理员,具有审计相关权限。
SYSSSO:系统安全管理员,具有强制访问控制等权限;
SYSDBO:安全版本才有的用户,安全操作员。
PWD_POLICY(隐含参数,不在 dm.ini 中)参数指定系统的口令策略,默认为 2;
系统支持的口令策略有:
⚫ 0 无策略
⚫ 1 禁止与用户名相同
⚫ 2 口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值
⚫ 4 至少包含一个大写字母(A-Z)
⚫ 8 至少包含一个数字(0-9)
⚫ 16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置口
令策略为 2+4=6 即可。
PWD_POLICY 是隐含参数,PWD_POLICY,只能通过函数或 SQL 语句修改。
select * from v$parameter t where t.name = ‘PWD_POLICY’;
create user hr IDENTIFIED by dameng123;
修改系统口令策略:
alter SYSTEM set ‘PWD_POLICY’ = 15 BOTH;
create user hrtest IDENTIFIED by Dameng123 DEFAULT TABLESPACE TBSTEST;
alter user hr ACCOUNT UNLOCK;
alter user hr ACCOUNT LOCK;
alter user hr DEFAULT TABLESPACE dmtbs;
alter user hrtest IDENTIFIED by “Dameng@123”;
drop user if EXISTS hr;
drop user if EXISTS hr CASCADE ; --生产环境慎用
用户资源限制设置(可以直接使用 limit 子句,也可以使用 profile 来管理用户的资源限制):
alter user hr LIMIT FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3;
达梦中密码带有特殊字符需要双引号括起来,在 linux 系统下可以使用单引号‘转义。
#用户权限有两类:数据库权限和对象权限。
#DM 中有一个较特殊的数据库权限“CREATE SESSSION”,表示创建会话连接数据库的权限。系统预设的管理员用户都具备此权限,新建用户缺省也具备此权限,管理员可根据实际需要回收指定用户的 CREATE SESSION 权限以限制该用户连接数据库。
赋予数据库权限(系统权限):
SQL> grant create table to hrtest;
查看当前用户拥有的权限:
SQL>select * from session_privs;
权限的回收:
SQL> revoke create table from hrtest;
赋予查询对象权限,精确到列
SQL> grant select (employee_id, employee_name) on dmhr.employee to hrtest;
DM 预定义角色有:
DBA:最高权限集合,可以创建数据库结构;
RESOURCE:创建数据库对象;
PUBLIC:不可以创建数据库对象,只能对有权限的数据库对象进行数据操纵;
VTI:系统动态视图的查询权限;SOI:系统表的查询权限;
SVI:基础 V 视图的查询权限角色是权限的集合,角色使权限管理更加方便。
DB_AUDIT_开头的角色是审计相关角色,具有审计相关权限,默认赋给 SYSAUDITOR。
DB_POLICY_开头的角色是安全相关角色,具有强制访问控制等权限,默认赋给 SYSSSO。
SQL>create role r1;
SQL>grant create table to r1;
SQL>grant select on dmhr.department to r1;
SQL>grant r1 to hrtest;
角色禁用和启用,禁用后角色权限将不在生效。
SQL>sp_set_role(‘R1’,0)
模式与用户之间的关系:
模式定义:模式是一个特定的对象集合,在概念上可将其看作是包含表、视图、索引等若干
对象的对象集
模式对象: 表、视图、约束、索引、序列、触发器、存储过程/函数、包、同
义词、类、域
模式与用户之间的关系:
当系统建立一个用户时,会自动生成一个同名的模式
用户还可以建立其他模式,DM 中用户和模式是一对多的关系,一个用户可以拥有多个模式,
一个模式仅能归属于一个用户。Oracle 中用户和模式是一对一的关系。
-查看模式
select * from SYSOBJECTS t where t.“TYPE$” =‘SCH’;
–查看用户
select * from SYSOBJECTS t where t.“SUBTYPE$” =‘USER’;
–查询模式和用户的对应关系:
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;
–创建模式
create schema hrtest01 AUTHORIZATION HRTEST;
–查看当前模式和当前用户
select sys_context(‘USERENV’,‘CURRENT_SCHEMA’);
select sys_context(‘USERENV’,‘CURRENT_USER’); 或 select user;
–切换模式(仅对当前会话生效)
set SCHEMA dmhr;
–删除模式
drop SCHEMA IF EXISTS HRTEST01;
drop SCHEMA IF EXISTS HRTEST01 CASCADE; - -级联删除模式下对象,生产环境慎
用。
表包含:索引组织表、堆表、分区表、HUGE 列存储表、外部表、临时表。
DM 默认创建的是索引组织表,Oracle 默认创建的是堆表。
索引组织表和堆表的区别:
索引组织表:有且仅有一个聚簇索引键,表数据按照聚簇索引键排序(数据是有序的,插入
有序),如果在创建表时未指定聚簇索引键,默认使用 rowid 为聚簇索引键。rowid 是逻辑
rowid,占用存储空间,所以索引组织表比堆表占用较多空间。
堆表:数据是无序的,插入无序,堆表插入效率较高,rowid 是物理 rowid,不占用存储空
间。所以堆表比索引组织表节约空间。
对聚簇索引键的范围查询,索引组织表更高效。
创建表:
create table hrtest.t_testpid(
pid int,
pname varchar(20),
sex bit,
logtime datetime)
TABLESPACE dmtbs;
CTAS方式创建表:
create table t_emp01 as select * from dmhr.employee;
数据的导入
DM 在 DISQL 下用 start 或都可以, Oracle 用@: SQL> start /dm8/backup/dts/t_department.sql SQL>
/dm8/backup/dts/t_department.sql
非空约束
alter table hrtest.t_testpid modify pname not null;
唯一约束
alter table hrtest.t_testpid add CONSTRAINT uk_testpid_email unique (email);
主键约束
86 / 119
alter table hrtest.t_testpid ADD CONSTRAINT pk_testpid_pid PRIMARY KEY(pid);
检验约束
alter table hrtest.t_testpid add salary number(10,2);
创建表
create table t_EMP like DMHR.EMPLOYEE;
创建索引
create index ix_emp_employeename ON T_EMP(EMPLOYEE_NAME);
删除索引:
drop index ix_emp_employeename ;
普通视图(物化视图除外)中不包含数据,数据来源于基表。视图提供一个查询窗口。
92 / 119
从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据
从数据库系统内部来看,一个视图是由 SELECT 语句组成的查询定义的虚拟表
简单视图:单表查询,不包含聚合函数、group by 等。一般可以支持 DML 操作,对视图的
DML 操作都会转化为对基表的 DML 操作,DML 操作要满足基表的约束条件。
复杂视图:多表连接,包含聚合函数、group by 等。一般不支持增删改操作。
create view hrtest.v_emp
as
select a.EMPLOYEE_ID, a.EMPLOYEE_NAME, a.EMAIL, a.PHONE_NUM
from dmhr.employee a
where a.DEPARTMENT_ID = 1001;
存储在 SYSTEM 表空间中,包含对象定义、权限、用户角色等信息。
USER_* 用户所拥有的对象信息
ALL_* 用户能访问的对象信息
DBA_* 整个数据库中的对象信息
94 / 119
系统中所有对象的信息
SELECT * FROM SYSOBJECTS;
系统中所有索引定义信息
SELECT * FROM SYSINDEXES;
系统中所有列定义的信息
SELECT * FROM SYSCOLUMNS
select * from sysstats;
select * from SYSOBJECTS t where id = 1058;
select * from SYSCONS;
动态性能视图是从内存中或控制文件中读取的数据
SELECT * FROM V$BUFFERpool; --数据缓冲区
SELECT * FROM V$mem_pool;
显示数据文件、表空间信息
SELECT * FROM V$DATAFILE;
SELECT * FROM V$tablespace;
显示当前进程、线程信息
SELECT * FROM V$PROCESS;
SELECT * FROM V$threads;
备份包含物理备份和逻辑备份。
物理备份是拷贝有效的数据页。逻辑备份是导出数据库中逻辑数据。
物理备份分为完全备份、增量备份;联机备份(热备)和脱机备份(冷备)。
完全备份是指一个备份包含指定数据库或表空间的所有数据;
增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增
加或者被修改的文件;
增量备份包含差异增量备份和累积增量备份,默认是差异增量备份。
差异增量备份的基础备份集可以是全量备份,也可以是增量备份;
累计增量备份的基备份集只能是全量备份。
热备:指数据库启动状态下的备份
冷备:指数据库关闭状态下的备份。
96 / 119
备份级别:全库备份、表空间级备份、表级备份、归档备份。
物理还原是备份的逆过程;
恢复是使用归档将数据库恢复到最新状态或指定时间点;或使用备份集中的 redo 信息将数
据库恢复至一致性状态。
DMRMAN工具脱机备份
3)更新数据库魔数
3、联机备份与还原数据库
联机备份要确保为归档模式
注意:库级、表空间的还原和恢复不支持联机恢复,只支持脱机还原恢复。
创建代理成功环境后会创建 sysjob 模式
查看JOB
运行JOB
查看job运行日志
注意:checkpoint(100); --执行完全检查点,解决刚开归档备份,报错归档日志不连续的问题
DM8 JDBC 编程注意事项
// 定义 DM JDBC 驱动串
String jdbcString = “dm.jdbc.driver.DmDriver”;
// 定义 DM URL 连接串
String urlString = “jdbc:dm://localhost:5236”;
解压
[root@localhost ~]# tar -zxvf unixODBC-2.3.0.tar.gz
源码安装三部曲(配置、编译、安装)
[root@localhost ~]# cd unixODBC-2.3.0
[root@localhost unixODBC-2.3.0]# ./configure
[root@localhost unixODBC-2.3.0]# make
[root@localhost unixODBC-2.3.0]# make install
配置驱动信息 odbcinst.ini 和数据源信息 odbc.ini
[root@localhost 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
[root@localhost unixODBC-2.3.0]# cd /usr/local/etc/
[root@localhost etc]# ll
总用量 0
drwxr-xr-x 2 root root 6 11月 15 21:13 ODBCDataSources
-rw-r–r-- 1 root root 0 11月 15 21:13 odbc.ini
-rw-r–r-- 1 root root 0 11月 15 21:13 odbcinst.ini
[root@localhost etc]# vi odbcinst.ini
[root@localhost etc]# vi odbc.ini
[root@localhost etc]# cat odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
[root@localhost etc]# cat odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
[root@localhost etc]# su - dmdba
上一次登录: 二 11月 15 20:50:03 CST 2022 pts/5 上
[dmdba@localhost ~]$ isql dm8 -v
±--------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
±--------------------------------------+
SQL>
由于笔者初次学习DM8,能力有限,疏漏之处在所难免,欢迎读者批评指正。
文章
阅读量
获赞