达梦数据库常见参数调整

达梦数据库常见参数调整,第1张

下面是在命令行客户端工具直接执行的脚本(执行后,会输出待调整参数):

备注:第一次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 dual

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

/

~

关注

达梦数据库常见报错及解决办法 原创

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,则默认创建主键时为非聚集型。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6705040.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存