当前位置:首页 » 编程语言 » 达梦sql变量
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

达梦sql变量

发布时间: 2023-08-10 03:45:51

❶ 达梦数据库 如何使用sql语句查询,数据库容量大小和数据库使用量大小

SELECT sum(df.TOTAL_SIZE) - sum(df.FREE_SIZE) as used ,
sum(df.TOTAL_SIZE) as total,
sum(df.FREE_SIZE) as free
FROM "SYS".V$TABLESPACE AS ts, "SYS".V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID;

❷ 达梦数据库varchar改为number报错

~
关注
达梦数据库常见报错及解决办法 原创
2021-09-13 16:53:28

果味怪叔叔~

码龄3年

关注
在达梦数据库的日常使用中我们可能会遇到很多问题,今天我将自己近期常遇到的错误进行总结汇总。

1、连接数据库报错:网络通信梁型异常

解决方法:

数据库连接报网络通信异常原因通常只有两个,数据库服务启动异常或者数据库服务器网络通信异常

1. 登录数据库服务器检查数据库进程是否存在ps –ef|grep dmserver

2. 检查数据库服务器网络通信ping数据库服务器地址

3. 检查数据库服务器数据段渣银库端口号通信是否正常telnet数据库服务器ip数据库端口号

2、数据库启动报错:dmserver startup failed, code = -104 [Invalid INI file]

解决方法:

数据库正常启动需要有数据文件,该类报错一般存在如下两方面原因:

1)数据文件不存在;

2)启动数据库的用户没有读写数据文件的权限。

3、数据库连接报错:用户名或密码错误

解决方法:

此类错误只需输入正确的密码即可。

如果忘记密码,以管理员登录数据库后修改该用户的密码:

alter user USERNAME identified by “PASSWD”

前面的USERNAME是用户名,后面的PASSWD是密码。

需要注意用户名不区分大小写,密码区分大小写。

4、登录数据库时报错“用户已被锁”

解决方法:

使用SYSDBA登录到数据库后,鼠标右键在对应“登录”名上单击“解锁”,此时“登录名”上的小锁符号消失;

或使用SYSDBA登录后手动调用存储过程call SP_UNLOCK_LOGIN(‘登录名‘)解锁;

通常是用户多次尝试登录但密码错误导致,有时候应用系统配置了数据库连接池,应用启动时初始化连接池会多次连接数据库,如用户名密码不对,则很快就会锁住该用户。

5、执行update,insert,delete语句完成后程序或其他数据库连接查不到改变后的数据

解决方法:

造成此类现象的原因单条sql或者sql脚本执行完上述语句后没有进行commit操作导致。

数据库的执行单元是事务,事务如果没有commit或者rollback,仍处于未完成状态,根据事物ACID特性中的隔离性,其他数据库连接无法看到未完成的数据库事务对数据的改变

6、数据库语句长时间不能执行完成,类似卡住的状态

解决方法:

1)对于select等查询语句,需要对sql语句进行分析优化,提升查询效率

2)update,insert,delete语句执行慢可能的原因为数据库阻塞导致,需要查握宴找出导致阻塞的语句,并对语句进行处理

7、执行语句报错“字符串截断”

解决方法:

修改的数据,超过了数据库中字符类型(VARCHAR,CHAR)定义的长度,如VARCHAR(64),插入的数据字节长度超过64就会报错

8、执行语句报错“数据溢出”

解决方法:

修改的数据,超过了数据库中数值类型(int,number,decimal)定义的长度,如decimal(6,2),插入1000000,插入的数据超过定义的范围就会报错。

9、执行语句报错 “不能修改或删除聚集索引的列”或“试图删除聚集主键”

解决方法:

若想对有聚聚索引的列进行修改,可以重建表,或者重新在别的列上建立一个聚集索引。该列上的索引就变成非聚集了,就可以修改了。

很多时候是因为创建表时指定的主键被自动创建为聚集索引了,可以修改ini参数,将PK_WITH_CLUSTER设为0,则默认创建主键时为非聚集型。

❸ 达梦数据库shell脚本怎么获取查询语句结果集

方式一

当然是windows电脑安装达梦管理工具,直接把脚本贴进去执行,但避免不了出现误操作

在这里插入图片描述

方式二

使用shell脚本执行sql

1. 先找到达梦数据库安装位置吧

[root@localhost ~]# ss -nlp |grep 5236
tcp LISTEN 0 128 [::]:5236 [::]:* users:(("dmserver",pid=103380,fd=4))
[root@localhost ~]# ps -ef|grep dmserver
root 85093 66993 0 17:56 pts/6 00:00:00 grep --color=auto dmserver
dmdba 103380 1 8 13:36 ? 00:23:18 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/data/DAMENG_JW/dm.ini -noconsole
1
2
3
4
5
1
2
3
4
5
2. 直接在linux上执行shell命令执行sql脚本

2.1 # disql username/password:port

使用这个命令可以进入sql控制台

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 5.524(ms)
disql V8
SQL>
进入SQL>后:
直接输入sql语句,使用英文分号结尾,回车执行。
使用“`sql文件路径”,可以执行sql脚本文件,注意前面有一个小撇(esc和tab中间的键)
使用“start sql文件路径”,可以执行sql脚本文件。
2.2 # disql username/password:port `sql文件位置

使用这个命令可以执行sql脚本

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236 \`sql/test.sql
[root@localhost sql]#
1
2
1
2
但需注意
这个脚本执行完sql会停留在sql执行行,如需执行完返回到shell命令行,则需要在sql文件结尾添加:exit; 。
这个shell语句不能用start执行sql文件,只能使用“`”,并且前面需要添加转义字符“\”。
2.3 达梦sql脚本注意事项

目前发现-创建schema语句以及执行过程结尾,都需要添加“/”结束

例如执行以下语句,回车执行,一直在输出数字,直到输入“/”,再回车执行,才执行成功。

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 6.121(ms)
disql V8
SQL> create schema test;
2
3 /
操作已执行
已用时间: 26.698(毫秒). 执行号:700604.
SQL>
sql脚本示例:

-- 创建schema
CREATE SCHEMA DB_ZFBA_MOBILE;
/
-- 执行过程
begin
if exists(select 1 from DBA_TAB_COLUMNS where OWNER='DB_ZFBA_MOBILE' AND TABLE_NAME='T_ZJTQD') then
EXECUTE immediate 'drop table DB_ZFBA_MOBILE.T_ZJTQD';
end if;
end;
/
create table DB_ZFBA_MOBILE.T_ZJTQD
(
"C_BH" char(32) NOT NULL, -- 主键
"C_BH_AJ" varchar2(32) NULL, -- 案件编号
……
"DT_ZHXGSJ" datetime NULL, -- 最后修改时间
constraint PK_T_ZJTQD primary key( C_BH )
);
sql文件结尾添加exit;,保证多个sql文件执行不会中断

3. 编写shell脚本

注意:shell脚本一定在linux中编写,windows编写的有些语句执行不成功(目前原因未知)
例如: a=a b=b c=$a$b echo $c 在windows下编写,linux中执行完会输出b
#!/bin/bash

# 请先配置数据库连接信息,再执行此脚本
DM_PATH=/home/dmdba/dmdbms #达梦数据库的安装位置
USERNAME=cpuser #达梦数据库连接用户名
PASSWORD=cpuser123 #达梦数据库连接密码
PORT=5236 #达梦数据库连接端口号

# 下面的信息请不要随意修改
CONNECT_INFO=$USERNAME/$PASSWORD:$PORT
echo "连接信息:"$CONNECT_INFO
# STEP 1
echo "【开始执行】---- sql/02_创建数据库对象/00.CS_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/00.CS_GSYS.sql >> DB_DM.log
echo "【执行完成】---- sql/02_创建数据库对象/00.CS_GSYS.sql"

# STEP 2
echo "【开始执行】---- sql/02_创建数据库对象/01.CT_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/01.CT_GSYS.sql >> DB_DM.log
echo "【执行完成】---- sql/02_创建数据库对象/01.CT_GSYS.sql"

# STEP 3
echo "【开始执行】---- sql/02_创建数据库对象/02.CC_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/02.CC_GSYS.sql >> DB_DM.log
echo "【执行完成】---- sql/02_创建数据库对象/02.CC_GSYS.sql"

# STEP 4
echo "【开始执行】---- sql/02_创建数据库对象/03.CI_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/03.CI_GSYS.sql >> DB_DM.log
echo "【执行完成】---- sql/02_创建数据库对象/03.CI_GSYS.sql"

# STEP 5
echo "【开始执行】---- sql/03_初始化数据/02.I_T_Aty_CodeType_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02.I_T_Aty_CodeType_GSYS.sql >> DB_DM.log
echo "【执行完成】---- sql/03_初始化数据/02.I_T_Aty_CodeType_GSYS.sql"

# STEP 6
echo "【开始执行】---- sql/03_初始化数据/02.I_T_Aty_Code_GSYS.sql"
$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02.I_T_Aty_Code_GSYS.sql >> DB_DM.log
echo "【执行完成】---- sql/03_初始化数据/02.I_T_Aty_Code_GSYS.sql"

# Complete
echo "【SQL全部执行完成】---- 日志请查看DB_DM.log"
执行完成后,通过shell控制台和DB_DM.log日志可以分析sql脚本是否执行成功。

❹ 达梦数据库DM迁移之导出sql脚本

原文地址: https://blog.csdn.net/corleone_4ever/article/details/105394414

利用达梦数据迁移工具即可

新建迁移

选择SQL=====>DM,然后按照提示说明执行即可

❺ 达梦数据库能使用pl/sql这个工具吗如何连接

没有什么区别···都是语法····
你把begin
end
看做是
c里面的
{
}
就行了···
比如
存储过程当中
就是as
begin
但是他们中间是定义了变量的
as
declare
@id
int
begin
如果没有变量
就直接as
begin
也有的写
is
begin
plsql块
可能是declare
定义了之后就直接是
begin
所以其实没什么太大区别

❻ 达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本

通过shell脚本调用sql脚本:
1、shell脚本调用sql脚本
#首先编辑sql文件
oracle@SZDB:~> more dept.sql
connect scott/tiger
spool /tmp/dept.lst
set linesize 100 pagesize 80
select * from dept;
spool off;
exit;

#编辑shell脚本文件,在shell脚本内调用sql脚本
oracle@SZDB:~> more get_dept.sh
#!/bin/bash

# set environment variable

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

export ORACLE_SID=CNMMBO
sqlplus -S /nolog @/users/oracle/dept.sql #注意此处执行sql脚本的方法 -S 表示以静默方式执行
exit

#授予脚本执行权限
oracle@SZDB:~> chmod 775 get_dept.sh

-->执行shell脚本
oracle@SZDB:~> ./get_dept.sh

DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

2、shell脚本调用rman脚本
#首先编辑RMAN脚本
oracle@SZDB:~> more rman.rcv
RUN {
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';
ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;
ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;
SET LIMIT CHANNEL CH1 READRATE=10240;
SET LIMIT CHANNEL CH1 KBYTES=4096000;
SET LIMIT CHANNEL CH2 READRATE=10240;
SET LIMIT CHANNEL CH2 KBYTES=4096000;
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
BACKUP
DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE INPUT;
DELETE NOPROMPT OBSOLETE;
RELEASE CHANNEL CH1;
RELEASE CHANNEL CH2;
}

#编辑shell脚本文件,在shell脚本内调用rman脚本
oracle@SZDB:~> more rman_bak.sh
#!/bin/bash

# set environment variable

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
export ORACLE_SID=CNMMBO
$ORACLE_HOME/bin/rman target / cmdfile=/users/oracle/rman.rcv log=/users/oracle/bak/rman.log
exit

#授予脚本执行权限
oracle@SZDB:~> chmod 775 rman_bak.sh
#执行shell脚本

❼ 达梦数据库常见参数调整

下面是在命令行客户端工具直接执行的脚本(执行后,会输出待调整参数):
备注:第一次dminit后就要调整,获取的是当前系统可用内存。

set serveroutput on
declare
v_maxsess bigint;

v_cpus bigint;
v_mem_mb bigint;
v_bufs bigint;
v_refs bigint;
v_maxdisk_mb bigint;
begin

-- manual set

v_maxsess=5000;

-- reload messages
v_cpus=64;
v_mem_mb=500000;
v_bufs=101;
v_refs=67;
v_maxdisk_mb=100000;

SELECT cast(67434610688*0.8/1024/1024 as int) into v_maxdisk_mb FROM V$SYSTEMINFO ORDER BY DRIVER_TOTAL_SIZE DESC ;

-- SELECT * FROM V$SYSTEMINFO ORDER BY DRIVER_TOTAL_SIZE DESC LIMIT 1 OFFSET 1;

SELECT case when N_CPU<8 then 8 3 when N_CPU<32 then N_CPU 2 else 64 end n_CPU,FREE_PHY_SIZE/1024/1024 MEM
into v_cpus,v_mem_mb FROM V$SYSTEMINFO LIMIT 1;

with a(val) as(select 5 union all
select 7 union all
select 11 union all
select 13 union all
select 17 union all
select 19 union all
select 23 union all
select 29 union all
select 31 union all
select 37 union all
select 41 union all
select 43 union all
select 47 union all
select 53 union all
select 59 union all
select 61 union all
select 67 union all
select 71 union all
select 73 union all
select 79 union all
select 83 union all
select 89 union all
select 97 union all
select 101),b as(
select rownum rn,val val from a)
select (
select VAL bufs from b where rn=( 3 + CAST( v_mem_mb/1024.0 1.0/2048 100 AS INT))) v_bufs,,(
select VAL refs from b where rn=( 3 + CAST( v_mem_mb/1024.0 1.0/2048 100 AS INT)) )v_refs into v_bufs,v_refs from al
;
print '
begin
SP_SET_PARA_VALUE(2,''MAX_OS_MEMORY'',100);
SP_SET_PARA_VALUE(2,''MEMORY_POOL'',cast( '||v_mem_mb||' 0.1 as int) );
SP_SET_PARA_VALUE(2,''MEMORY_TARGET'',cast ( '||v_mem_mb||'
0.2 as int) );
SP_SET_PARA_VALUE(2,''MEMORY_MAGIC_CHECK'',1);

SP_SET_PARA_VALUE(2,''VM_POOL_TARGET'',cast( (0.37) '||v_mem_mb||' 1024 0.6/'||v_maxsess||' as int));
SP_SET_PARA_VALUE(2,''SESS_POOL_TARGET'',cast( (0.37)
'||v_mem_mb||' 1024 0.3/'||v_maxsess||' as int ) );
SP_SET_PARA_VALUE(2,''CACHE_POOL_SIZE'',cast( (0.37) '||v_mem_mb||' ('||v_maxsess||'/2000.0)*0.55 as int) );

SP_SET_PARA_VALUE(2,''BUFFER'',cast('||v_mem_mb||' * 0.5 as int));
SP_SET_PARA_VALUE(2,''MAX_BUFFER'',cast('||v_mem_mb||' * 0.5 as int));
SP_SET_PARA_VALUE(2,''RECYCLE'',10000*'||v_cpus||'/100);
SP_SET_PARA_VALUE(2,''BUFFER_POOLS'','||v_bufs||');
SP_SET_PARA_VALUE(2,''RECYCLE_POOLS'','||v_refs||');
SP_SET_PARA_VALUE(2,''WORKER_THREADS'','||v_cpus||');
SP_SET_PARA_VALUE(2,''TASK_THREADS'','||v_cpus||');

SP_SET_PARA_VALUE(2,''HJ_BUF_GLOBAL_SIZE'', cast('||v_mem_mb||' * 0.18 as int));
SP_SET_PARA_VALUE(2,''HJ_BUF_SIZE'', cast('||v_mem_mb||' * 0.0018 as int));
SP_SET_PARA_VALUE(2,''HAGR_BUF_GLOBAL_SIZE'',cast('||v_mem_mb||' * 0.12 as int));
SP_SET_PARA_VALUE(2,''HAGR_BUF_SIZE'', cast('||v_mem_mb||' * 0.0024 as int));

SP_SET_PARA_VALUE(2,''DICT_BUF_SIZE'','||v_refs||' 5);
SP_SET_PARA_VALUE(2,''TEMP_SIZE'',5000
'||v_mem_mb||'/1024.0/256);

SP_SET_PARA_VALUE(2,''VM_POOL_SIZE'','||v_refs||' 5);
SP_SET_PARA_VALUE(2,''SESS_POOL_SIZE'','||v_refs||'
5);

SP_SET_PARA_VALUE(2,''MAX_SESSIONS'','||v_maxsess||');
SP_SET_PARA_VALUE(2,''MAX_SESSION_STATEMENT'','||v_maxsess||'*8);

SP_SET_PARA_VALUE(2,''ENABLE_ENCRYPT'',0);
SP_SET_PARA_VALUE(2,''USE_PLN_POOL'',1);
SP_SET_PARA_VALUE(2,''OLAP_FLAG'',2);
SP_SET_PARA_VALUE(2,''OPTIMIZER_MODE'',1);
SP_SET_PARA_VALUE(2,''VIEW_PULLUP_FLAG'',1);
SP_SET_PARA_VALUE(2,''COMPATIBLE_MODE'',2);
SP_SET_PARA_VALUE(2,''MONITOR_TIME'',0);
SP_SET_PARA_VALUE(2,''ENABLE_MONITOR'',1);
SP_SET_PARA_VALUE(2,''SVR_LOG'',0);

end;
'

print '
create tablespace "USER" datafile ''USER01.dbf'' size 200;'
--print '
--alter user SYSDBA default tablespace "USER";'
print '
sp_set_para_value(1,''PWD_POLICY'',0);'
print '
create user DMDBA identified by DMDBA default tablespace "USER";'
print '
GRANT DBA TO dmdba;'
print '
sp_set_para_value(1,''PWD_POLICY'',2);'

print '
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG ''DEST=/home/dmdba/dmdbms/arch,TYPE=LOCAL,FILE_SIZE=1024,SPACE_LIMIT='||cast(v_maxdisk_mb*0.1 as int)||'''
ALTER DATABASE OPEN;'

print '
sp_set_para_value(1,''BAK_USE_AP'',2);
BACKUP DATABASE FULL TO DMBAK_FULL_00 BACKUPSET ''DMBAK_FULL_00'' COMPRESSED;
'

exception
when others then
raise_application_error (-20001,substr( ' 执行失败, '||SQLCODE||' '||SQLERRM||' '||dbms_utility.format_error_backtrace , 1, 400));
end;

/