序言,作为程序员,内容以简明,实用为本,不加修饰。
俄乌战争,美国对饿各方面进行了技术限制。前车之签,我与我所在部门开始着手信息系统的全面信创,国产化之路;不说大方向,什么硬件国产化,软件国产化,直接说痛点。
第一想到CPU,已有龙芯,飞腾,鲲鹏等;第二是操作系统,麒麟,红旗,普华等;第三是数据库,也是这篇主角,达梦数据库。第四,没了。。
经过了了解,达梦数据库已适配了信创CPU,操作系统,且兼容如Intel(x86)硬件,兼容CentOS,完美迁移Orcale/MySql,全都现成的,且已经过生产验证(扎实,很重要)。
更待何时?开学!开发不是DBA,实用的 13个要点(包含DCA认证全部知识点)学会,如有问题可留言讨论。
(以下为个人书写习惯,数据库注释是"--"不是"//"我知道)
文字用注释,代码命令不注释,小标题前加 "-",全篇可复制至txt无特殊符号、格式及图片。
目录
//---一,概述
//---二,安装
//---三,创建数据库
//---四,客户端工具
//---五,DMSQL
//---六,体系结构
//---七,表空间管理
//---八,用户管理
//---九,模式
//---十,数据字典
//---十一,备份还原
//---十二,作业
//---十三,开发
//操作系统:银河麒麟 V10 | 数据库:DM8
//UP使用xshell + winscp进行连接
xrandr -s 1920x1200_60 //修改屏幕分辨率
//-检查
free -m; df -h//查看内存,硬盘
rpm -qa|grep gcc;rpm -qa|grep glibc
getenforce
//用户和组
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
//目录 文件
mkdir /dm8
chown [-R] dmdba:dinstall /dm8
ls -ld /dm8
mkdir /mnt/dm
mount /opt/dm8_20210818_x86_rh6_64_ent_8.4.2.18_pack14.iso /mnt/dm
//-图形化
xhost + 允许其他用户登陆图形化
echo $DISPLAY //查看root的当前值
su - dmdba
export DISPLAY=:0.0 //赋予以上echo出的值
//-安装建议使用命令行
su - dmdba //转换用户
./DMInstall.bin -i
/dm8 //根据需求,选择安装路径
/dm8/script/root/root_installer.sh //最后以root用户执行
//-卸载(非必须)
//DM 安装目录下执行./uninstall.sh -i卸载 DM 数据库
/dm8/script/root/root_uninstaller.sh //最后以root用户执行
//-创建
cd /dm8/tool
./dbca.sh //创建实例,注册数据库服务
//簇大小、页大小、字符集 等创建数据库后无法修改
//按照考试要求,统一或单独设置用户名密码
//设置SYSDBA用户的密码 9位以上 比如111111111
//创建后root执行
mv /dm8/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service
systemctl enable DmServiceDMSERVER.service
systemctl start DmServiceDMSERVER.service
ps -ef |grep dmserver //查看进程
./dmservice.sh //root用户打开图形界面,维护服务状态
//-删除 需要停止服务
systemctl stop DmServiceDMSERVER
cd /dm8/script/root/
./dm_service_uninstaller.sh -n DmServiceDMSERVER //root用户
//-连接数据库
cd /dm8/bin
./disql sysdba/Dameng123:5236
select name from v#database;
select status$ from v$instance
//-启动
./DmServiceDMTESTSVR start | stop | status [mount]
cd /dm8/tool/
manager //管理工具 选项-编辑器-语法检查
console //脱机 备份 还原 工具
nca //网络配置助手
dts//数据迁移工具
monitor//性能监视工具
ps -ef |grep dmserver
ps -T -p 80155 //查看对应pid的线程
//-SQL DML/DDL/DCL/TCL
select a.DEPARTMENT_ID, count(*) as empnum
from dmhr.employee a
group by a.DEPARTMENT_ID
having count(*) >=30;
//create table
create table t_test(id int, name VARCHAR(20)) TABLESPACE tbs;
//insert
insert into t_test(id, name) values(1, 'aaa');
insert into dmhr.DEPARTMENT(DEPARTMENT.DEPARTMENT_ID,
DEPARTMENT.DEPARTMENT_NAME)
values(888888,'Test');
commit;
update dmhr.employee set salary=(select salary from
dmhr.employee where employee_name='金纬') where
employee_name='马学铭';
commit;
//表空间是 DM 数据库的最大存储单元,所有数据都存储在表空间中。
//DM 物理文件包含:配置文件、控制文件、数据文件、联机日志(此四个文件必不可少,缺少一个将无法正常启动)。
bin/dmctlcvt dm.ctl //控制文件
select name from v$parameter //如:COMPATGIBLE_MODE 兼容模式, SVR_LOG 开启sql跟踪, BUFFER普通缓冲区
//console 控制台工具 图形化界面方式修改,需要重启数据库才能生效。
//直接修改 dm.ini 配置文件,需要重启数据库才能生效。
cat dm.ini |grep MEMORY
//系统函数修改(可以用来修改静态和动态参数,但静态参数修改后需要重启数据库才能生效)
select * from SYS."V$PARAMETER" t WHERE name in ('BUFFER','FAST_POOL_PAGES','RECYCLE','KEEP');
alter system set 'BUFFER'= 500 spfile;//修改参数文件中的值
alter system set 'ENABLE_LOCAL_OSAUTH'=1 spfile;//设置启用操作系统认证
BUFFER、FAST_POOL_PAGES、RECYCLE、KEEP//数据缓冲区
VM_POOL_SIZE//虚拟池
RLOG_BUF_SIZE//日志缓冲区
CACHE_POOL_SIZE//SQL缓冲区
DICT_BUF_SIZE//字典缓冲区
SESS%//session pool相关
like 'MEMORY%'//主内存池(共享内存池)
like 'SORT%';like 'HJ%';//运行时的内存池
select * from v$bufferpool|v$mem_pool;//查询缓冲区情况
select * from SYS."V$DYNAMIC_TABLES";//所有动态视图
//-启动顺序
alter database mount;
select status$ from v$instance;
//DM默认预定义 SYSTEM、ROLL、MAIN、TEMP、HMAIN 五个表空间
select * from v$parameter t where name like 'TEMP%';//DM 中临时表空间由参数 TEMP_SIZE 指定
//表空间相关数据字典
select * from dba_tablespaces;
select * from DBA_DATA_FILES;
select * from v$tablespace;
select * from v$datafile;
select * from DBA_FREE_SPACE; --数据文件剩余空间
//-维护表空间
//DM 数据文件大小,最大值不能低于页大小的 4096 倍
create tablespace tbs DATAFILE 'TBS01.DBF' size 32;//单位是M
drop tablespace dmtbs;//DM 只能删除空的表空间
alter TABLESPACE tbs add DATAFILE 'TBS02.DBF' size 128 AUTOEXTEND on NEXT 2 MAXSIZE 20480;//表空间添加数据文件
alter tablespace tbs RESIZE DATAFILE 'TBS01.DBF' TO 128;//修改表空间数据文件大小
select * from dba_data_files;
select * from SYS."V$DATAFILE";
//-表空间文件迁移
alter tablespace tbs offline;//表空间脱机
alter TABLESPACE tbs RENAME DATAFILE 'TBS01.DBF' TO '/dm8/data/DM/TBS/TBS01.DBF';//迁移表空间数据文件
alter tablespace tbs online;
alter database RESIZE LOGFILE '/dm8/data/DM/DM01.log' TO 300;//修改联机日志文件大小
//-开启归档
disql > alter database mount;
alter database archivelog;
alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';
alter database open;
select arch_mode from v$database;
//使用DM管理工具图形界面
//自动扩展属性记得打开,自动offline
//修改联机日志 选择LOCALHOST右键管理服务器->日志文件
//归档界面开启需要mount状态,系统管理里可设置 配置(M)
//-角色
select * from v$parameter t where t.name = 'PWD_POLICY';//口令策略
create user hrtest IDENTIFIED by Dameng123 DEFAULT TABLESPACE TBSTEST;
alter SYSTEM set 'PWD_POLICY' = 15 BOTH;
alter user hr ACCOUNT UNLOCK;//用户锁定的解锁
alter user hr DEFAULT TABLESPACE dmtbs;//修改默认表空间
drop user if EXISTS hr;//删除用户
disql hrtest/'"Dameng@123"'//密码带有特殊字符的登录处理
//-权限
grant create table to hrtest;
grant select on dmhr.employee to hrtest [with grant option];//对象权限 选项转授
revoke select on dmhr.employee from hrtest;//权限回收
//-角色
create role r1;
select * from dba_roles;
grant create table to r1;
grant select on dmhr.department to r1;
grant r1 to hrtest;
sp_set_role('R1',0);//禁用后角色权限将不在生效
//用户和模式是一对多的关系
select * from SYSOBJECTS t where t."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;//查询模式和用户的对应关系
//-模式维护
//模式包含很多对象,比如表
create schema hrtest01 AUTHORIZATION HRTEST;//创建模式
create table hrtest01.t_test(id int, name varchar(20)) tablespace DMTBS;
//VARCHAR(size) CHAR(size) NUMBER(p,s) DATETIME LONG CLOB BLOB
select sys_context('USERENV','CURRENT_SCHEMA');//查看当前模式和当前用户
select sys_context('USERENV','CURRENT_USER');//查看当前模式和当前用户
set SCHEMA dmhr;//切换模式
drop SCHEMA IF EXISTS HRTEST01;//删除模式
//-管理表
select * from v$parameter t where name ='LIST_TABLE';//DM 默认创建的是索引组织表
//DM 创建表时如果指定了主键,则主键为聚簇索引键
//CTAS方式创建表:
create table t_emp01 as select * from dmhr.employee;
create table t_emp02 like dmhr.employee;
create table t_emp03 as select * from dmhr.employee where 1=0;
//使用CREATE table as创建表时,默认0不会复制表的约束信息,由参数CTAB_SEL_WITH_CONS指定
select * from SYS."V$PARAMETER" t where t.name like 'CTAB_SEL_WITH_CONS%';
alter table hrtest.t_testpid add COLUMN email varchar(20);//添加字段
alter table hrtest.t_testpid modify email varchar(50);//修改字段类型
alter table hrtest.t_testpid drop logtime;//删除字段
alter table hrtest.t_testpid add COLUMN logtime datetime DEFAULT sysdate;//对字段添加默认值
select * from dba_tables t where t.owner='HRTEST';//数据字典
select * from dba_tab_columns t where t.owner='HRTEST'//数据字典
//-数据的导入
`/dm8/backup/dts/t_department.sql
commit;
//-约束
alter table hrtest.t_testpid modify pname not null;//非空约束
alter table hrtest.t_testpid add CONSTRAINT uk_testpid_email unique (email);//唯一约束
alter table hrtest.t_testpid ADD CONSTRAINT pk_testpid_pid PRIMARY KEY(pid);//主键约束
alter table hrtest.t_testpid add salary number(10,2);//检验约束
alter table hrtest.t_testpid ADD CONSTRAINT ck_testpid_salary CHECK(salary>=2100);//检验约束
alter table hrtest.t_test add CONSTRAINT fk_test_id FOREIGN KEY(id)
REFERENCES hrtest.t_testpid(pid);//外键约束(外键引用两一张表的主键或者唯一键)
//约束的禁用和启用、删除
alter table hrtest.t_test disable CONSTRAINT fk_test_id;
alter table hrtest.t_test enable CONSTRAINT fk_test_id;
alter table hrtest.t_test drop CONSTRAINT fk_test_id
select * from dba_constraints t where t.owner='HRTEST';//数据字典
select * from DBA_CONS_COLUMNS t where t.owner='HRTEST';//数据字典
//-索引
explain select * from hrtest.t_emp01 t where T.EMPLOYEE_NAME = '马学铭';//explain展示执行计划
create index ix_emp01_employeename ON HRTEST.T_EMP01(EMPLOYEE_NAME);
alter index HRTEST.IX_EMP01_EMPLOYEENAME MONITORING USAGE;//开启索引监控
drop index HRTEST.ix_emp01_employeename;//删除
select * from dba_indexes t where t.OWNER ='HRTEST';//数据字典
//-视图
create or REPLACE view hrtest.v_emp
as
select a.EMPLOYEE_ID, a.EMPLOYEE_NAME, a.EMAIL, a.PHONE_NUM, a.SALARY
from dmhr.employee a
where a.DEPARTMENT_ID = 1001;
//-数据字典
//存储在 SYSTEM 表空间中,包含对象定义、权限、用户角色等信息。
//USER_* 用户所拥有的对象信息 ALL_* 用户能访问的对象信息 DBA_* 整个数据库中的对象信息
//-动态性能视图
select * from sys.sysobjects t where id= 1069; --查询被锁的表
sp_close_session(sess_id); --结束某个会话
//--物理备份
select * from v$parameter t where name in ('BAK_PATH', 'BAK_USE_AP');//默认的备份路径 备份还原策略
//-脱机备份恢复(数据库和表空间的还原需要在关闭状态下)
/dm8/bin/dmrman
show backupset '/dm8/data/DAMENG/bak/DB_'
backup database '/dm8/data/DM/dm.ini';
restore database '/dm8/data/DAMENG/dm.ini' tablespace main from
backupset '/dm8/backup/full/CONSOLEFULLBAK';//表空间的还原
recover database '/dm8/data/DAMENG/dm.ini' tablespace main;//表空间的恢复
restore database '/dm8/data/DM/dm.ini' from backupset '/dm8/backup/full/ONLINEBAK_02';//数据库还原
recover database '/dm8/data/DM/dm.ini' with archivedir '/dm8/arch';//数据库恢复
recover database '/dm8/data/DM/dm.ini' update db_magic;//更新数据库魔术,只有库级还原需要更新魔术
//脱机备份使用console工具
//指定搜索目录,添加备份路径和默认备份路径,点击获取备份
//-联机备份
ps -ef|grep dmap//需打开归档,ap进程必须存在,用于备份辅助
//归档不连续,可以开启归档,重启数据库
select * from SYS."V$BACKUPSET"//查询备份集
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/full/');//添加指定备份集目录才能查到
backup database; //全量备份
backup database increment; //增量备份
backup database full to ONLINEBAK_01 backupset '/dm8/backup/full/ONLINEBAK_01';
backup database increment BASE ON BACKUPSET '/dm8/backup/full/ONLINEBAK_01' to ONLINEBAKINCR_01
backupset '/dm8/backup/incr/ONLINEBAK_01' ;
backup database increment with BACKUPDIR '/dm8/backup/full/' to
ONLINEBAKINCR_02 backupset '/dm8/backup/incr/ONLINEBAK_02';
select * from v$ifun t where t.name like 'SF_BAKSET%';
backup tablespace dmtbs;//表空间备份
backup tablespace dmtbs INCREMENT with BACKUPDIR '/dm8/backup/full/' to
DMTBSINCR_01 backupset '/dm8/backup/incr/DMTBSINCR_01' ;
backup table dmhr.employee; //表的备份
backup ARCHIVELOG all; //归档备份
//库级、表空间的还原和恢复不支持联机恢复,只支持脱机还原恢复。
//联机备份使用manager工具
//右键添加指定工作目录
//--逻辑备份
//-dexp 逻辑导出、dimp 逻辑导入四个级别
//全库(full=y)按用户(owner=XXX)按模式(schemas=XXX)按表(tables=XX)
cd /dm8/bin/
dexp userid=sysdba/Dameng123:5236 directory=/dm8/backup/dexp file=full.dmp log=full.log full=y
dimp userid=sysdba/Dameng123:5238 directory=/dm8/backup/dexp file=full.dmp log=impfull.log full=y
[owner=HRTEST schemas=DMHR tables=DMHR.EMPLOYEE]
//-图形界面操作
//开启代理服务
//代理右键,创建代理环境
//管理工具创建 JOB
select * from dba_jobs;
dbms_job.run(1651096901);//测试运行job
//-ODBC 安装
//解压ODBC的tar包
./configure //默认/usr/local
make
make install
//-ODBC 配置
odbcinst -j
cd /usr/local/etc/
vi odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = 111111111
TCP_PORT = 5236
vi odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
//-ODBC 测试
dmdba> isql dm8 -v
select * from tb
没有结束语。