注册
达梦数据库DCA实操笔记
培训园地/ 文章详情 /

达梦数据库DCA实操笔记

DM_483630 2022/12/21 1571 0 0

安装步骤

安装前准备

#检查系统位数: getconf LONG_BIT #查看系统信息: uname -a 或者 uname -r #查看CPU信息: cat /proc/cpuinfo #查看内存信息: free -m #查看磁盘目录信息: df -h fdisk -l

关闭安全策略

#关闭防火墙 systemctl stop firewalld #关闭selinux,改为disable vim /etc/selinux/config SELINUX=disabled
#tmp目录空间需要2G,所以,需要修改一下tmp的大小 vim /etc/fstab #新增下面一条语句 #tmpfs /tmp tmpfs nodev,nosuid,size=2G 0 0 #之后需要重启系统才能生效 #修改临时目录/tmp的大小,这样不需要重启 mount -t tmpfs -o size=4G none /tmp

创建用户和组

#1. 创建安装用户组 dinstall。 groupadd dinstall #2. 创建安装用户 dmdba。 useradd -g dinstall dmdba #3. 初始化用户密码。 passwd dmdba mkdir /opt/dm8 chown dmdba:dinstall /dm8 #账号切换 su - dmdba #这样切账号能把环境变量带过来 #修改配置文件 vim .bash_profile #新增达梦数据库安装位置 export DM_HOME="/home/dmdba/dmdbms" export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH #生效 source .bash_profile

检查操作系统限制

ulimit -a

3N`V~8ZE6Q10PN997.png
参数使用限制:
data seg size data seg size (kbytes, -d)
建议用户设置为 1048576(即 1GB)以上或 unlimited(无限制),此参数过小将导 致数据库启动失败。

file size file size(blocks, -f)
建议用户设置为 unlimited(无限制),此参数过小将导致数据库安装或初始化失败。

open files open files(-n)
建议用户设置为 65536 以上或 unlimited(无限制)。

virtual memory virtual memory (kbytes, -v)
建议用户设置为 1048576(即 1GB)以上或 unlimited(无限制),此参数过小将导 致数据库启动失败。 如 果 用 户 需 要 为 当 前 安 装 用 户 更 改 ulimit 的 资 源 限 制 , 请 修 改 文 件 /etc/security/limits.conf。

#修改/etc/security/limits.conf vim /etc/security/limits.conf #增加2条语句 dmdba soft nofile 102400 dmdba hard nofile 102400 #若还有其它限制的情况,也需要进行修改

挂载安装镜像到/mnt目录

mount -o loop dm8_20220525_x86_rh6_64.iso /mnt/

之后开始安装达梦数据库

图形化安装

#把图形界面输出到本地 #export DISPLAY=192.168.193.1:0.0 #使用dmdba用户进入/mnt目录 ./DMInstall.bin #开始按照指引安装数据库 #若提示图形化界面初始化失败,可能是因为你没有用dmdba用户登录,而是通过root用户跳过去的原因。

查看进程

ps -ef |grep dmserver netstat -nlp |grep 5236

登录数据库管理系统

#进入达梦数据库安装目录 #进入bin目录 ./disql sysdba/密码 #按照提示输入用户名和密码 #使用默认系统用户sysdba #在tool目录也可以登录sql,需要连接操作 ./disql sysdba/密码 conn #如果更改了数据库的端口,则需要带上端口号 ./disql sysdba/密码@localhost:端口 #也可以使用manager图形化工具管理数据库,在tool目录下。 ./manager

命令行初始化数据库实例

#bin目录 ./dminit path=/dm8/data DB_NAME=DM02 INSTANCE_NAME=DM02 PORT_NUM=5239 #注册实例 cd /dmy/script/root #以root账号执行 ./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DM02/dm.ini -p DM02

sql命令

#查看数据库实例信息 select * from v$instance; #查看数据库实例状态,默认是open状态【mount | open | shutdown】 #open状态才能进行数据的读写操作 select status$ from v$instance; #修改数据库实例状态 alter database mount; #创建用户 create user "TEST" identified by "dameng123"; #增加连接日志文件 alter database add logfile '/opt/dm8/data/DAMENG/DAMENG04.log' size 256; #查看连接日志信息 select * from v$rlogfile; select PATH, RLOG_SIZE/1024/1024 from v$rlogfile; #修改日志文件大小 alter database resize logfile '/opt/dm8/data/DAMENG/DAMENG04.log' to 1024; #查询是否开启归档模式 select arch_mode from v$database; #修改参数,1静,2动(通过控制台工具也可以修改) SP_SET_PARA_VALUES(SCOPE,PARA_NAME,PARA_VALUE); #查看表空间的状态,0代表在线 select tablespace_name, status from SYS.USER_TABLESPACES; #表空间脱机 alter tablespace test offline #表空间改名 alter tablespace TEST rename datafile '/opt/dm8/DAMENG/TEST_01.DBF' to '/opt/dm8/DAMENG/TEST_02.DBF'; #查看临时表空间 select para_name, para_value from v$dm_ini where para_name like '%TEMP%'; #创建视图 create view v1 as select job_id, job_title from dmhr.job; select * from sysdba.v1; #授权 grant select on sysdba.v1 to 用户; #修改视图 create or replace view v1 as select job_id, job_title, max_salary from dmhr.job; #删除视图 drop view v1; #创建索引 create index ind_job on dmhr.job(max_salary) tablespace dmhr; #注意:索引的统计信息是否采样 dbms_stats.index_stats_show('DMHR', 'IND_JOB'); #收集一下统计信息 dbms_stats.gather_index_stats('DMHR', 'IND_JOB');

在root用户下调用dmdba用户的图形界面

su - dmdba export DISPLAY=:0.0 xhost +

服务查看器

cd /opt/dm8/tool ./dmservice.sh

7e63bc2855d10d5158a646c99a580625.png

数据库实例创建以后,可以在bin目录找到这个实例,且可以直接通过./实例名的方式操作实例

#查看实例状态,假如实例名称是DMService02 ./DMService02 status #关闭实例 ./DMService02 stop #启动实例 ./DMService02 start #重启实例 ./DMService02 restart #也可以使用操作系统的命令查看 systemctl status DMService02 systemctl stop DMService02 systemctl start DMService02 systemctl restart DMService02

tool下面的常用工具

实例管理:dbca.sh
连接sql:disql
服务查看器:dmservice.sh
图形化管理界面:manager
数据迁移工具:dts
控制台工具:console
监控工具:monitor

日志写入

redo -> 归档

归档文件记录的是CURD操作

函数

#字符串连接 select concat('hello ', 'world'); #转小写 select LOWER('ABC'); #首字母大写 select INITCAP("hello world"); #求余 select mod (100, 3);

a131f3ea2df0b6bc8904cdcf4a5e456b.png

往表中插入数据

新建一个文件:testSQL.txt

insert into test.t40 values(1, '张三'); insert into test.t40 values(1, '李四'); commit;
#sql start /opt/dm8/testSQL.txt

也可以通过数据迁移工具来插入数据:/tool/dts
1.创建工程
2.创建迁移
3.按提示操作

问题

#有时候,通过远程连接数据库,无法查询表,会报错 select * from "TEST"."T4"; 执行失败(<u>语句1</u>) -2106: 第1 行附近出现错误: 无效的表或视图名[T4] 在数据库服务器上面访问又正常。 ------------------------------- #本机这样输入sql命令也会报错 select * from test.t4; -2106: 第1 行附近出现错误:

远程连接报错6001

原因:

  • 网络不通
  • 防火墙、selinux
  • 服务未启动
  • 达到最大会话连接数(MAX_SESSIONS)

关于视图的增删改问题(都是为了保护基表)

不能删除的情况delete

  • 当视图语句包含distinct,删除会报错2650
  • 包含group by
  • 包含分组函数

不能修改的情况update

  • 创建视图的语句包含 distinct
  • 创建视图的语句包 group by
  • 创建视图的语句包含分组函数(max min…)
  • 创建视图的语句包含表达式(salary+ 100)
    SQL> create view v3 as select salary+100 as sal from emp;
    SQL> update v3 set sal=1;
    第 1 行附近出现错误[-2832]:此处不允许虚拟列.

不能增加的情况insert

  • 创建视图的语句包含 distinct
  • 创建视图的语句包 group by
  • 创建视图的语句包含分组函数(max min…)
  • 创建视图的语句包含表达式(salary+ 100)
  • 创建视图的语句,没有把非空列包含进来

索引(书籍的目录)

  • 存储要占存储空间
  • 数据是有序
  • 倒树
  • 对表做 DML 操作,数据库自动维护索引

创建索引规则(结合应用)

  • 经常查询的列
  • 连接条件的列上
  • Where 条件经常出现的列上
  • 返回表的小部分(10%)
  • NULL 不是适合创建索引

备份

逻辑备份

要求:数据是打开,备份数据库,表,模式,用户
[dmdba@node4 bin]$ ./dexp help #备份库: [dmdba@node4bin]$./dexp sysdba/SYSDBA(用户名/密码) file=/home/dmdba/full.dmp log=/home/dmdba/full.log full=y #备份模式 [dmdba@node4bin]$./dexp sysdba/SYSDBA file=/home/dmdba/dmhr.dmp log=/home/dmdba/dmhr.log schemas=dmhr #备份用户: [dmdba@node4bin]$./dexp sysdba/SYSDBA file=/home/dmdba/abc.dmp log=/home/dmdba/abc.log owner=abc #备份表: [dmdba@node4bin]$./dexp sysdba/SYSDBA file=/home/dmdba/emp.dmp log=/home/dmdba/emp.log tables=emp #缺点: 可能造成数据丢失

还原

[dmdba@node4 bin]$ ./dimp help [dmdba@node4bin]$./dimp sysdba/SYSDBA file=/home/dmdba/emp.dmp tables=emp 注意:字符集要一致 SQL> select unicode; 0 gb18030 1 utf8

物理备份(脱机,联机) 备份的文件(datafile)

脱机备份:

  • 数据库关闭
  • Dmap 服务是打开
  • 控制台 dmraman
./DmServiceDMSERVER stop ./DmAPService status ./DmAPService start ./dmrman RMAN> backup database '/dm8/data/DAMENG/dm.ini' 问题:备份到哪里去了 #查看配置文件 more /opt/dm8/data/DAMENG/dm.ini BAK_PATH=/opt/dmdbms/data/DAMENG/bak #指定备份路径: RMAN> backup database '/opt/dm8/data/DAMENG/dm.ini' backupset '/opt/dm8/back' #可能会报错 #[-10002]:[错误码:-103]创建备份文件[/dm8/back/back.bak]失败 #原因:权限 磁盘空间 mkdir /opt/dm8/back chown dmdba:dinstall -R /opt/dm8/back

还原

#还原: 数据关闭, #dmap 服务是打开 #Restore(把备份文件从备份集拷贝到指定路径) RMAN> restore database '/opt/dm8/data/DAMENG/dm.ini' from backupset '/opt/dm8/back' #Recover (恢复数据) RMAN> recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/back/' #Update(备份和当前的数据库的魔数一致) RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服