注册
DCP备考对DCA相关实操命令的回顾与整理(含避坑点提示)
培训园地/ 文章详情 /

DCP备考对DCA相关实操命令的回顾与整理(含避坑点提示)

日知录 2025/06/03 51 0 0

DCP备考对DCA相关实操命令的回顾与整理(含避坑点提示)

1、建立用户相关:
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba(简化:useradd -g dinstall dmdba)
test:useradd -g dinstall -m -d /home/dmdbatest -s /bin/bash dmdbatest ……OK
passwd dmdba ——Dameng123

2、在根目录下创建dm8目录:
cd /
mkdir dm8
chown -R dmdba:dinstall /dm8 (R参数指分配dm8目录及其下级目录和文件到dmdba用户和dinstall用户组下)

附加说明:
避免使用root运行控制台
达梦工具(如 console、manager)需始终以 dmdba 用户运行,否则会导致文件权限混乱。——所以默认进虚拟机应该使用dmdba用户,再根据使用情况切换root用户。

3、切换用户到dmdba
su - dmdba
cd /home/dmdba
ll
chmod +x DMInstall.bin --添加安装文件的执行权限,ll查询时该文件应该显示为绿色,需要root用户来操作!

4、解决图形安装DM8时临时文件夹小了的处理:
[dmdba@s2 ~]$ ./DMInstall.bin
安装程序临时目录(/tmp)可用空间为980M。安装程序需要至少2G的临时空间,请调整临时目录的空间或设置环境变量DM_INSTALL_TMPDIR来指定安装程序的临时目录。

cd --返回到用户的主目录下(跟进入终端的用户相关),等价于cd ~或cd $HOME
mkdir tmp
export DM_INSTALL_TMPDIR=/home/dmdba/tmp

5、设置DISPLAY值:
xhost + --使用root用户执行xhost +
echo $DISPLAY --查看root用户的显示器的值,查到的结果应该是:0.0
su - dmdba --切换到dmdba用户
echo $DISPLAY --查看dmdba用户的显示器的值,应该返回空值
export DISPLAY=:0.0

6、使用dmdba用户,执行DM8安装:进入图形安装界面
./DMInstall.bin

7、图形安装界面过程中,要使用root用户手动执行的相关命令记录:——安装过程中初始化创建数据库的过程中涉及。且如果不是直接在安装过程中直接创建实例时也是不涉及的!! ——这个是因为直接使用了root用户安装导致的!需要注意避免这一点!!
/dm8/script/root/root_installer.sh ——以root 用户的权限执行一系列系统级的配置和初始化操作,以确保达梦数据库能够顺利集成到操作系统中,并具备必要的服务支持和权限设置,还会创建并启动达梦数据库相关的系统服务,如DmAPService,并将其添加到系统启动项中,以便在系统启动时自动运行。
[root@s2 ~]# cd /dm8/script/root
[root@s2 root]# ./dm_service_installer.sh -t dmserver -p DMTESTSVR -dm_ini
/dm8/data/DMTEST/dm.ini
Created symlink /etc/systemd/system/multiuser.target.wants/DmServiceDMTESTSVR.service →
/usr/lib/systemd/system/DmServiceDMTESTSVR.service.
创建服务(DmServiceDMTESTSVR)完成
systemctl restart DmServiceDMSERVER.service ——是root用户重启数据库服务。

8、Disql命令行工具在/dm8/bin目录下:
./disql sysdba/SYSDBA@s2:5236 ——如果考试时端口号不是默认端口号,一定要注意要加上@后面的内容,自己踏过这个坑,导致DCA考试过程中一直在使用MANAGER图形工具,因为里面有显式的端口录入项而不会忘记!!!
su - ——表示切换到root用户去关闭防火墙
systemctl stop firewalld.service ——可能需要关闭防火墙
systemctl start firewalld
systemctl status firewalld
systemctl disable firewalld ——永久关闭防火墙

启动命令:./disql sysdba/Dameng123@s2:5238或简化为:./disql sysdba/Dameng123:5238

9、启动和停止数据库:
9.1、使用root用户
cd /dm8
cd tool
./dmservice.sh
9.2、没有 root 密码如何启动停止,如dmdba用户
cd /dm8/bin
./DmServiceDMSERVER stop
./DmServiceDMSERVER start

10、其他数据库启动方式:
--命令行方式启动:前台启动方式,输入exit或者CTRL+C就会关闭数据库
./DMSERVER/dm8/data/DAMENG/dm.ini
./DMSERVER/dm8/data/DAMENG/dm.ini mount

--后台启动方式:非root用户
cd /dm8/bin
ll Dm*
./DmServiceDMSERVER start
./DmServiceDMSERVER stop
./DmServiceDMSERVER start mount ——启动数据库到配置状态
./DmServiceDMSERVER status ——查看数据库状态
./DmServiceDMSERVER restart

通过系统服务方式启动:前提是
systemctl start DmServiceDMSERVER

11、迁移自定义表空间的数据文件:
alter tablespace tbs1 offline;
alter tablespace tbs1 rename datafile 'TBS01.DBF' to '/dm8/data/DAMENG/bak/TBS01.DBF';
alter tablespace tbs1 online;

12、备份与还原:
备份的两个重要参数查看命令:
select * from v$parameter t where name in ('BAK_PATH', 'BAK_USE_AP');

查看AP服务是否启动
ps -ef|grep dmap
启动DmAPService:
[root@s2 bin]# ./DmAPService status
DmAPService dead but pid file exists
[root@s2 bin]# ./DmAPService start
Starting DmAPService: 上一次登录: 三 3月 19 20:14:40 CST 2025 pts/2 上
[ OK ]
[root@s2 bin]# ./DmAPService status
DmAPService (pid 14054) is running.
[root@s2 bin]#

13、开启归档相关操作:
SQL 开启归档
归档开启:
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;
select * from v$dm_arch_ini;

修改归档的配置(修改归档空间上限):
alter database modify archivelog 'type=local, dest=/dm8/arch, SPACE_LIMIT=20480';
SQL 关闭归档
SQL> alter database mount;
操作已执行
已用时间: 438.355(毫秒). 执行号:0.
SQL> alter database noarchivelog;
操作已执行
已用时间: 41.445(毫秒). 执行号:0.
SQL> alter database delete archivelog 'type=local,dest=/dm8/arch';
操作已执行
已用时间: 0.519(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 322.559(毫秒). 执行号:0.
SQL> select arch_mode from v$database;
行号 ARCH_MODE
---------- ---------
1 N
已用时间: 0.654(毫秒). 执行号:714.
SQL> select * from v$dm_arch_ini;

14、脱机备份:
一、使用dmrman的全库冷备:
[dmdba@s2 ~]$ cd /dm8/bin
[dmdba@s2 bin]$ ll dmr*
-r-xr-xr-x 1 dmdba dinstall 419928 9月 25 14:49 dmrachk
-r-xr-xr-x 1 dmdba dinstall 75600 9月 25 14:49 dmrdc
-r-xr-xr-x 1 dmdba dinstall 32736 9月 25 14:49 dmrman ——就是这个dmrman!它是脱机冷备份工具!!
-r-xr-xr-x 1 dmdba dinstall 53848 9月 25 14:49 dmrslcvt
[dmdba@s2 bin]$ ./dmrman
dmrman V8
RMAN> backup database '/dm8/data/DAMENG/dm.ini';
backup database '/dm8/data/DAMENG/dm.ini';
file dm.key not found, use default license!
[-137]:服务器正在运行或者存在其他进程正在操作同一个库 ——需要先关闭库!!

[root@s2 bin]# ./DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]
[root@s2 bin]# ./DmServiceDMSERVER status
DmServiceDMSERVER is stopped
[root@s2 bin]#

RMAN> backup database '/dm8/data/DAMENG/dm.ini';
backup database '/dm8/data/DAMENG/dm.ini';
Processing backupset /dm8/data/DAMENG/bak/DB_DAMENG_FULL_20250319_205241_524901

[Percent:100.00%][Speed:0.00M/s][Cost:00:00:04][Remaining:00:00:00]
backup successfully!
time used: 00:00:05.568

补充全库冷备还原命令:——DCP考试时备库还原时会用到。
三部曲:restore+recover+recover update db_magic
[dmdba@s2 bin]$ ./dmrman
RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup';
RMAN> recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup';
RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
RMAN> exit

二、表空间级的还原和恢复:restore+recover
restore database '/dm8/data/DAMENG/dm.ini 'tablespace main from backupset'

15、其他命令整理:
dmdbae用户安装DM8过程需要额外执行的系统注册脚本及效果:
systemctl enable DmServiceDMSERVER.service
Created symlink /ect/systemd/system/multi-user.target.wants/DmAPService.service ->/usr/lib/systemd/system/DmAPService.service
ls -l /etc/systemd/system/multi-user.target.wants/DmAPService.service
systemctl start DmServiceDMSERVER.service

远程连接数据时涉及防火墙打开端口问题:
sudo firewall-cmd --add-port=5236/tcp --permanent --zone=public
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
sudo systemctl restart NetworkManager

启动SQLark工具的方法,在SQLark解压安装目录下执行:./sqlark --no-sandbox
使用参考DM官方使用手册即可。

修改表空间大小:
alter tablespace "TEMP" resize datafile 'TEMP.DBF' to 80;
创建表空间:
create tablespace "TBS" datafile '/dm/data/DAMENG/TBS01.DBF' size 64 autoextend on next 1 maxsize 2048 CACHE = NORMAL;
alter tablespace "TBS" datafile '/dm/data/DAMENG/TBS01.DBF' autoextend on next 2;
alter tablespace "TBS" datafile '/dm/data/DAMENG/TBS01.DBF' autoextend on next 4 maxsize 4096;——必须同时使用autoextend on next和maxsize
alter tablespace "TBS" datafile '/dm/data/DAMENG/TBS01.DBF' autoextend on next 2 maxsize 4096;
ALTER TABLESPACE TBS DATAFILE '/dm/data/DAMENG/TBS01.DBF' AUTOEXTEND OFF;——关闭自动扩展

创建视图:
create view hrtest.v_salarytop as
select emp.EMPLOYEE_name,
dept.department_name,
emp.salary,
RANK()over (order by salary desc) rank,
DENSE_RANK()over(order by salary desc) dense_rank,
ROW_NUMBER()over(order by salary desc)
from dmhr.employee emp,dmhr.department dept
where emp.department_id=dept.department_id(+)

select * from SYS.SYSOBJECTS t where t."TYPE$"='SCH';--查看模式
select * from SYS.SYSOBJECTS t where t."SUBTYPE$"='USER';--查看用户
select a.id schid,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;--查看用户跟模式的对应关系

删除模式:
drop schema "hrtest01" restrict;——要加双引号!
create schema "hrtest01" authorization "hrtest";
create schema hrtest02 authorization hrtest;——创建的模式名是大写的!

查询当前模式:
select sys_context('USERENV','CURRENT_SCHEMA');

在当前模式下建表:
create table hrtest.t_testpid(pid int,pname varchar(20),sex bit,logtime datetime) tablespace tbs1;
create table t_emp02 as select * from dmhr.employee WHERE 1=0;
create table t_emp03 as select * from dmhr.employee WHERE 1=0;
create table t_emp04 as select * from dmhr.employee WHERE 1=0;

ODBC配置:
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so

odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = s2
UID = SYSDBA
PWD = SYSDBA ——考试时是Dameng123
TCP_PORT = 5236 ——考试时是5238

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服