达梦学习笔记

安装数据库软件

1创建用户

2设置最大打开文件数

ulimit -n 65536 (临时)

(ulimit -a)

3. 解压后挂载镜像

mount -o loop dm8_setup_rh7_64_ent_8.1.1.88_20200629.iso /mnt

4. 用dmdba用户安装DM软件

xhost + (这一步在root用户下,访问Xserver的权限被授予每一个人)

echo $DISPLAY (在root用户下开启图形化)

su - dmdba

export DISPLAY=:0 (:0是echo出的结果,在dmdba用户下开启图形化)

./DMInstall.bin

注:通常当你从hostA登陆到hostB上运行hostB上的应用程序时,做为应用程序来说,hostA是client,但是对图形来说,是在hostA上显示的,需要使用hostA的Xserver,所以hostA是server。因此在登陆到hostB前,需要在hostA上运行xhost +来使其它用户能够访问hostA的Xserver。

5把库相关文件放到opt/dm8 (创建、授权、所属用户组)

mkdir -p /opt/dm8

chown dmdba:dinstall /opt -R

chmod 755 /opt -R

注意:考试的时候看题目要求的安装位置!

6 root执行脚本

7 dmdba配置环境变量

[dmdba@dmdba ~]$ vi .bash_profile

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/dm8/bin"(动态库的路径)

export DM_HOME="/opt/dm8"

export PATH=$DM_HOME/bin: $DM_HOME/tool:$PATH (只需要加这行)

source .bash_profile (使之生效)

echo $PATH (确认有/opt/dm8/bin)

8初始化数.据库(dmdba用户登陆后,调用dbca.sh (建库删库都是它))

启停数据库服务时,与实例名对应

按照考试要求,设置数据库名(DAMENG),实例名(DMSERVER),端口号

可设置三大核心文件:控制、数据、日志的位置

9 root执行脚本

注:这三个命令相当于注册数据库服务

su – dmdba

DmServiceDMSERVER status (查数据库状态)

DmServiceDMSERVER start 与上图第三行脚本作用一致

查看达梦进程ps -ef | grep dmserver

注:有进程就说明实例起来了

10.登录访问测试

disql sysdba/SYSDBA (简单形式,前面是用户名,后面是密码)

disql sysdba/SYSDBA@localhost:5236 (本地登录,端口默认是5236)

disql sysdba/SYSDBA@192.168.6.110:5236(远程登录,写ip,端口默认是5236)

<think>嗯,用户这次问的是达梦数据库SQL语句中@符号的用法。从对话历史看,用户之前已经了解过达梦的存储过程、变量赋值等基础编程知识,现在开始关注特定符号的语义,说明学习正在深入。 用户引用的四篇资料中,[2]提到密码包含特殊字符时需用双引号转义,但未涉及@符号;[3]讨论执行计划优化,[4]是学习笔记目录,都与当前问题无关。需要结合达梦官方文档和常见用法来解答。 达梦中的@主要有三种场景: 1) 在密码转义时作为分隔符,如用户引用[2]的示例"disql $DB_USR/\"$DB_PWD\"@$DB_IP:$DB_PORT",这里的@是连接字符串的一部分,将密码和主机端口分开 2) 在SQL*Plus风格的变量绑定中,如"SELECT * FROM t WHERE id=:id",但达梦的DISQL工具也支持"@变量名"形式引用绑定变量 3) 在存储过程中调用其他模式对象时作为模式名前缀,如"@模式名.表名" 用户没有提供具体SQL语句,所以需要全面说明。特别要注意第二种用法容易与Oracle的":变量"混淆,达梦同时兼容两种语法。另外要强调模式名前缀的用法和权限关系,避免用户误操作。 回答时需给出明确示例,比如动态SQL中@var的赋值操作,以及跨模式查询时@schema.table的写法。最后补充转义场景的说明,形成完整解答。考虑到用户可能正在调试程序,需要提醒权限检查和绑定变量作用域的问题。</think>在达梦数据库 SQL 中,`@` 符号主要有以下三种用法,需根据上下文具体分析: --- ### 一、连接字符串中的主机标识符(最常见) 在 **连接数据库** 的字符串中,`@` 用于分隔用户名/密码与主机地址,语法为: `用户名/密码@主机IP:端口号` **示例**: ```bash # 命令行连接(DISQL工具) disql SYSDBA/\"Dameng123!\"@192.168.1.100:5236 ``` - **作用**:声明登录的目标服务器地址和端口 - **关键点**: - 密码若含特殊字符(如 `!@#$%^&*`),需用双引号 `"` 包裹(如引用[2]所述) - Shell 脚本中需用反斜杠转义:`\"$DB_PWD\"`(如引用[2]示例)[^2] --- ### 二、动态 SQL 中的绑定变量前缀 在 **存储过程或动态 SQL** 中,`@变量名` 表示绑定变量(类似 Oracle 的 `:变量名`): ```sql -- 示例:动态SQL绑定变量 CREATE OR REPLACE PROCEDURE proc_demo AS v_sql VARCHAR(200); v_id INT := 100; BEGIN v_sql := 'SELECT * FROM employee WHERE dept_id = @id'; -- @id为绑定变量 EXECUTE IMMEDIATE v_sql USING v_id; -- 将v_id传递给@id END; ``` - **作用**:在动态 SQL 中传递参数值,避免 SQL 注入 - **执行过程**: 1. 声明 SQL 字符串时用 `@变量名` 占位 2. 执行时通过 `USING` 子句传入实际变量值 --- ### 三、跨模式访问对象(特定语法) 访问 **其他模式(Schema)下的对象** 时,可用 `@模式名.对象名` 语法: ```sql -- 访问模式HR下的EMPLOYEE表 SELECT * FROM @HR.EMPLOYEE; ``` - **作用**:显式指定对象所属的模式 - **权限要求**:当前用户需有该对象的访问权限(如 `SELECT ANY TABLE`) --- ### 使用场景对比 | **场景** | **示例** | **说明** | |------------------------|-----------------------------------|------------------------------| | 数据库连接字符串 | `SYSDBA/密码@127.0.0.1:5236` | 声明登录目标地址 | | 动态 SQL 绑定变量 | `WHERE id = @id` | 占位符,需用 `USING` 传值 | | 跨模式访问对象 | `SELECT * FROM @HR.EMPLOYEE` | 显式指定对象所属模式 | --- ### 注意事项 1. **连接字符串中的 `@`** - 密码含特殊字符时,必须用双引号包裹(如 `\"!@#Pass\"`) - 端口号不可省略(默认端口为 `5236`) 2. **绑定变量 `@变量名`** - 仅适用于动态 SQL(`EXECUTE IMMEDIATE`) - 静态 SQL 中直接使用变量名(如 `v_id`),无需 `@` 3. **跨模式访问权限** - 若提示 `对象 HR.EMPLOYEE 不存在`,需检查: - 模式 `HR` 是否存在 - 当前用户是否有 `SELECT` 权限 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值