当前位置: 首页 > news >正文

linux达梦数据库操作

一,可以通过这种方式进行启动,和停止

步骤1:停止数据库服务
bash

停止数据库

cd /home/dmdba/dm/bin
./DmServiceDMSERVER stop

确认已停止

./DmServiceDMSERVER status
步骤2:以维护模式启动数据库
bash

以维护模式启动(允许修改系统数据)

./dmserver /dm8/data/DAMENG/dm.ini mount

二,登录数据库,进行创建用户账号和密码,达梦一般有默认的密码Dameng@123(命令行安装时,没让输入密码)

1,使用 DISQL 命令行工具创建用户
连接数据库
# 切换到 dmdba 用户
su - dmdba# 使用 DISQL 连接
cd /home/dmdba/dm/bin
./disql SYSDBA/你的密码@localhost:5236  ##如果是本地,也可以改为./disql SYSDBA/你的密码
创建用户并设置密码
-- 创建用户的基本语法
CREATE USER 用户名 IDENTIFIED BY 密码;-- 示例:创建用户 test_user,密码为 Test123456
CREATE USER test_user IDENTIFIED BY "Test123456";-- 创建用户并指定默认表空间
CREATE USER sales_user IDENTIFIED BY "Sales123456"
DEFAULT TABLESPACE MAIN;-- 创建带密码复杂度要求的用户
CREATE USER secure_user IDENTIFIED BY "Secure@123456"
DEFAULT TABLESPACE MAIN
PASSWORD POLICY 1;
完整的用户创建和权限配置,

创建用户并赋予权限

-- 1. 创建用户
CREATE USER knowledge_user IDENTIFIED BY "Knowledge@123456";-- 2. 授予基本权限
GRANT CREATE SESSION TO knowledge_user;                    -- 连接权限
GRANT CREATE TABLE TO knowledge_user;                      -- 创建表权限
GRANT CREATE VIEW TO knowledge_user;                       -- 创建视图权限
GRANT CREATE PROCEDURE TO knowledge_user;                  -- 创建存储过程权限-- 3. 授予资源权限(允许使用表空间)
GRANT RESOURCE TO myuser;-- 4. 授予特定表空间的配额
ALTER USER myuser QUOTA UNLIMITED ON MAIN;         -- 在MAIN表空间无限制
ALTER USER myuser QUOTA 100M ON "TEMP";            -- 在TEMP表空间100M限额-- 5. 授予对象权限(如果需要访问其他用户的表)
GRANT SELECT ON SYSDBA.其他表名 TO myuser;
GRANT INSERT, UPDATE, DELETE ON SYSDBA.其他表名 TO myuser;

修改用户密码

-- 修改用户密码
ALTER USER test_user IDENTIFIED BY "NewPassword123";

删除用户

-- 删除用户(如果用户没有对象)
DROP USER test_user;-- 删除用户及其所有对象
DROP USER test_user CASCADE;

验证用户是否创建成功

# 使用新创建的用户连接测试
./disql test_user/Test123456@localhost:5236

三、导入数据

1,创建数据文件目录
# 创建数据导入目录
sudo mkdir -p /home/dmdba/dm/data/
sudo chown dmdba:dinstall /home/dmdba/dm/data/
sudo chmod 755 /home/dmdba/dm/data/# 将你的数据文件(SQL, DMP等)放到这个目录
2,导入数据库数据
方法1:使用disql导入SQL文件

sql文件例子:

-- 设置当前用户
ALTER SESSION SET CURRENT_USER = KNOWLEDGE_USER;-- 创建表
CREATE TABLE users (id NUMBER PRIMARY KEY,username VARCHAR2(50),email VARCHAR2(100),created_date DATE DEFAULT SYSDATE
);CREATE TABLE documents (doc_id NUMBER PRIMARY KEY,title VARCHAR2(200),content CLOB,user_id NUMBER,created_time TIMESTAMP DEFAULT SYSTIMESTAMP
);-- 插入数据
INSERT INTO users VALUES (1, 'admin', 'admin@example.com', SYSDATE);
INSERT INTO users VALUES (2, 'user1', 'user1@example.com', SYSDATE);INSERT INTO documents VALUES (1, '文档标题1', '文档内容1', 1, SYSTIMESTAMP);
INSERT INTO documents VALUES (2, '文档标题2', '文档内容2', 2, SYSTIMESTAMP);-- 提交事务
COMMIT;
# 使用disql执行SQL文件
./disql KNOWLEDGE_USER/Knowledge@123456@localhost:5236 \`/home/dmdba/dm/data/import.sql
方法2:使用dexp和dimp工具(达梦专用)(推荐)

导入数据(在目标数据库执行):

# 切换到dmdba用户
su - dmdba
cd /home/dmdba/dm/bin# 导入整个数据库
./dimp KNOWLEDGE_USER/Knowledge@123456@localhost:5236 FILE=/home/dmdba/import_data/knowledge_export.dmp LOG=import.log FROMUSER=KNOWLEDGE_USER TOUSER=KNOWLEDGE_USER# 或者导入特定表
./dimp KNOWLEDGE_USER/Knowledge@123456@localhost:5236 FILE=/home/dmdba/import_data/knowledge_export.dmp LOG=import.log TABLES=users,documents
方法3:使用达梦图型化管理工具(如果服务器允许)
# 启动管理工具(如果有图形界面)
cd /home/dmdba/dm/tool
./manager
3,验证导入的数据
-- 连接验证
./disql KNOWLEDGE_USER/Knowledge@123456@localhost:5236-- 查看导入的表
SELECT table_name FROM user_tables;-- 查看数据
SELECT * FROM users;
SELECT * FROM documents;-- 查看表空间使用情况
SELECT tablespace_name, bytes/1024/1024 AS size_mb
FROM user_segments
GROUP BY tablespace_name;-- 退出
exit;
下面是一个项目的流程,创建新的数据库,并导入数据(此项目使用)
1、使用dminit创建数据库
# 切换到dmdba用户
su - dmdba# 创建新的数据库实例
cd /dm8/bin
./dminit path=/home/dmdba/dm/data/knowledge_data db_name=KNOWLEDGE instance_name=KNOWLEDGE_SERVER port_num=5237 page_size=16 case_sensitive=n charset=1

参数说明:

path:数据文件存放路径

db_name:数据库名

instance_name:实例名

port_num:端口号(不能与现有实例冲突)

page_size:页大小(16K)

case_sensitive:大小写敏感(n-不敏感)

charset:字符集(1-UTF-8)

2、配置新数据库服务

创建新的服务脚本

# 复制服务模板
sudo cp /home/dmdba/dm/bin/DmServiceTemplate home/dmdba/dm/bin/DmServiceKNOWLEDGE# 编辑服务脚本
sudo vi /home/dmdba/dm/bin/DmServiceKNOWLEDGE

修改关键参数:

# 修改数据库实例路径
DISTRIBUTED_PATH=/home/dmdba/dm/data/knowledge_data/dm.ini

注册系统服务

# 给服务脚本执行权限
sudo chmod +x /home/dmdba/dm/bin/DmServiceKNOWLEDGE# 创建systemd服务文件
sudo vi /etc/systemd/system/DmServiceKNOWLEDGE.service

添加如下内容

[Unit]
Description=DM Knowledge Database Service
After=network.target[Service]
Type=forking
User=dmdba
Group=dinstall
Environment=LD_LIBRARY_PATH=/home/dmdba/dm/bin:/home/dmdba/dm/lib
ExecStart=/home/dmdba/dm/bin/DmServiceKNOWLEDGE start
ExecStop=/home/dmdba/dm/bin/DmServiceKNOWLEDGE stop
ExecReload=/home/dmdba/dm/bin/DmServiceKNOWLEDGE restart[Install]
WantedBy=multi-user.target

启动数据库

# 重新加载systemd
sudo systemctl daemon-reload# 启动新数据库服务
sudo systemctl start DmServiceKNOWLEDGE# 设置开机自启
sudo systemctl enable DmServiceKNOWLEDGE# 检查状态
sudo systemctl status DmServiceKNOWLEDGE
3,准备DMP数据文件
# 创建数据导入目录
sudo mkdir -p /home/dmdba/dm/import_dmp
sudo chown dmdba:dinstall /home/dmdba/dm/import_dmp
sudo chmod 755 /home/dmdba/dm/import_dmp# 将DMP文件上传到该目录
# 假设你的DMP文件名为: knowledge_data.dmp

检查DMP文件信息

# 查看DMP文件信息(在源数据库执行)
./dimp SYSDBA/密码@源数据库 PARAMETER_ONLY=Y FILE=/path/to/knowledge_data.dmp

导入数据到新数据库
使用dimp工具全量导入

#切换到dmdba用户
su - dmdba进入bin目录
cd /dm8/bin#全库导入(如果DMP是全库导出)
./dimp KNOWLEDGE/Know123456@localhost:5237 FILE=/home/dmdba/dm/import_dmp/knowledge_data.dmp LOG=/home/dmdba/dm/import.log FULL=Y#按用户导入(如果DMP是按用户导出)
./dimp KNOWLEDGE/Know123456@localhost:5237 FILE=/home/dmdba/dm/import_dmp/knowledge_data.dmp LOG=/home/dmdba/dm/import_dmp/import.log FROMUSER=原用户 TOUSER=新用户#按表导入
./dimp KNOWLEDGE/Know123456@localhost:5237 FILE=/home/dmdba/dm/import_dmp/knowledge_data.dmp LOG=/home/dmdba/dm/import_dmp/import.log TABLES=表1,表2,表3```

参数:
FULL=Y:导入整个数据库

FROMUSER:源数据库用户

TOUSER:目标数据库用户

TABLES:指定要导入的表

ROWS=Y:导入数据行(默认Y)

CONSTRAINTS=Y:导入约束(默认Y)

INDEXES=Y:导入索引(默认Y)

TRIGGERS=Y:导入触发器(默认Y)

GRANTS=Y:导入权限(默认Y)

COMMIT=Y:每次提交的行数

FEEDBACK=1000:每1000行显示进度

BUFFER=10240000:缓冲区大小

4,验证导入结果
# 连接新创建的数据库
cd /home/dmdba/dm/bin
./disql KNOWLEDGE/Know123456@localhost:5237

在DISQL中执行验证命令:

-- 查看数据库信息
SELECT name, status$ FROM v$database;-- 查看所有表
SELECT table_name FROM dba_tables;-- 查看表数据量
SELECT table_name, num_rows FROM dba_tables WHERE owner = 'SYSDBA';-- 查看表空间使用情况
SELECT tablespace_name, sum(bytes)/1024/1024 as size_mb 
FROM dba_segments 
GROUP BY tablespace_name;-- 查看导入日志表中的数据(如果有)
SELECT COUNT(*) FROM 你的主要表名;-- 退出
exit;

修改表

SELECT TABLE_NAME FROM USER_TABLES;UPDATE T_SOFTWARE SET LINK = REPLACE(LINK, '/media/jing/HDD/dd/', '/date/zsk/');UPDATE T_SOFTWARE SET ICON = REPLACE(ICON, '192.168.1.111', '10.10.0.16');
http://www.dtcms.com/a/466122.html

相关文章:

  • [自荐]一款mac电脑历史剪切板工具,类似著名的Paste
  • 二级域名可以做不同的网站吗网站建设网络推广广告语
  • MapReduce简介
  • FreeType 2.7 – 卓越的 Linux 字体质量
  • 龙江建站技术wordpress 管理 主题
  • 企业网站建设 制作网站建设基本流程流程图
  • 【Homebrew安装 MySQL 】macOS 用 Homebrew 安装 MySQL 完整教程
  • 【图像处理基石】暗光增强算法入门:从原理到实战(Python+OpenCV)
  • Asp.net core Kestrel服务器详解
  • OpenFeign使用
  • 如何在鸿蒙中实现毫秒级数据检索?哈希表与二分查找的双引擎优化方案
  • 实现支持链式调用的 JavaScript 类
  • 中文wordpress模板免费seo教程分享
  • 如何用ps做网站顺德网站建设7starry
  • 京东agent之joyagent解读
  • 【第五章:计算机视觉-项目实战之生成式算法实战:扩散模型】3.生成式算法实战:扩散模型-(2)DDPM数据读取
  • UCC21530-Q1 隔离栅极驱动器完全解析:从原理到实战应用
  • 企业网站的网络营销功能wordpress 发视频
  • 创作纪念日
  • 直接找高校研究生做网站行吗公众号开发单位
  • 怎么看网站开发语言是哪种律所网站建设建议
  • Docker:公有仓库和私有仓库的搭建
  • 有专门做牙膏的网站吗网站footer设计
  • 零基础从头教学Linux(Day 47)
  • libevent输出缓存区的数据
  • 宋红康 JVM 笔记 Day18|class文件结构
  • 网站源代码购买荆州 网站建设
  • ws2_32.dll文件丢失或损坏怎么办?4种有效修复方案分享
  • Rust程序语言设计(5-8)
  • 三合一网站建设公司杭州科技公司排名