达梦数据库学习笔记之二

• 安装达梦数据库tmp不够的处理
图形界面安装tmp不够的问题, 是因为麒麟用内存的大概1/2作为/tmp.
解决方法

  1. 加大tmpfs 的值
    方法一: 服务器内存加大,比如加到8G,/tmp自动增大. 适合于内存较大的虚拟机环境
    方法二: 修改/etc/fstab
    指定tmpfs的size大于 1.5G , 这里设置4G(当然内存要大于4G)
vi /ect/fstab
tmpfs /tmp tmpfs nodev,nosuid,size=4G 0 0
  1. 不从tmpfs挂载/tmp目录
    有两种方法.
    • 方法一 : 禁用从tmpfs加载/tmp
systemctl mask tmp.mount

systemctl is-enabled  tmp.mount

[root@localhost ~]# systemctl is-enabled tmp.mount
masked



[root@kylin-dm8 DM8]# systemctl mask tmp.mount
Created symlink /etc/systemd/system/tmp.mount → /dev/null.
[root@kylin-dm8 DM8]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               456M     0  456M   0% /dev
tmpfs                  482M  4.0K  482M   1% /dev/shm
tmpfs                  482M  7.2M  475M   2% /run
tmpfs                  482M     0  482M   0% /sys/fs/cgroup
/dev/mapper/klas-root   46G   12G   34G  27% /
tmpfs                  482M  1.2M  481M   1% /tmp
/dev/sda1             1014M  211M  804M  21% /boot
tmpfs                   97M     0   97M   0% /run/user/0
tmpfs                   97M   56K   97M   1% /run/user/12345
/dev/sr0               911M  911M     0 100% /run/media/dmdba/dameng
重启后,tmp不再放在tmpfs
[root@kylin-dm8 ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               968M     0  968M   0% /dev
tmpfs                  994M     0  994M   0% /dev/shm
tmpfs                  994M  9.1M  985M   1% /run
tmpfs                  994M     0  994M   0% /sys/fs/cgroup
/dev/mapper/klas-root   46G   12G   34G  27% /
/dev/sda1             1014M  211M  804M  21% /boot
tmpfs                  199M     0  199M   0% /run/user/993
tmpfs                  199M     0  199M   0% /run/user/0
查看/etc/fstab:

[root@localhost ~]# cat /etc/fstab

#
/dev/mapper/klas-root   /                       xfs     defaults        0 0
UUID=6a41149a-547e-4ea5-8744-513725cff0e0 /boot                   xfs     defaults        0 0
/dev/mapper/klas-swap   none                    swap    defaults        0 0


恢复原来:

[root@kylin-dm8 ~]# systemctl unmask tmp.mount
Removed /etc/systemd/systeem/tmp.mount.
  1. 给达梦安装专门指定tmp目录
    这是最简单方便的方法.但是每个session都要设置一次.
    mkdir /home/dmdba/tmp
    DM_INSTALL_TMPDIR=/home/dmdba/tmp
    export DM_INSTALL_TMPDIR

• 如何查看,修改dm 参数
data/DAMENG/dm.ini文件
可以直接修改dm.ini文件, 需要重启生效.

select * from v$parameter;
 参数类型

SQL> select distinct type from v$parameter;
行号     TYPE     
---------- ---------
1          READ ONLY
2          SYS
3          IN FILE
4          SESSION

• read only 只能手动修改dm.ini ,不能用alter system 修改
• sys 可以在运行时动态修改.可以同时修改dm.ini和内存的值
• session 可以在运行时动态修改.
• IN file 只能修改dm.ini,重启才能生效

修改, both , spfile, memory. 名字要加单引号, 默认是memory.

修改, both , spfile, memory. 名字要加单引号, 默认是memory.
COMPATIBLE_MODE不能动态修改, both同时修改systme和文件.失败

SQL> alter system set 'COMPATIBLE_MODE'=4 both;
alter system set 'COMPATIBLE_MODE'=4 both;
[-839]:Try to alter static ini parameter.
used time: 6.943(ms). Execute id is 0.
只修改文件成功.
SQL> alter system set 'COMPATIBLE_MODE'=4 spfile;
DMSQL executed successfully
used time: 7.048(ms). Execute id is 2001.
修改内存,失败
SQL> alter system set 'COMPATIBLE_MODE'=4 memory;
alter system set 'COMPATIBLE_MODE'=4 memory;
[-839]:Try to alter static ini parameter.
used time: 6.359(ms). Execute id is 0.

不加范围,缺省是修改内存

SQL>
QL>  alter system set 'COMPATIBLE_MODE'=4;
 alter system set 'COMPATIBLE_MODE'=4;
[-839]:Try to alter static ini parameter.
used time: 6.229(ms). Execute id is 0.
SQL> 
UNDO_RETENTION可以动态修改
SQL> alter system set 'UNDO_RETENTION'=180 both;
DMSQL executed successfully
used time: 6.831(ms). Execute id is 2101.
SQL> select name, type, value, sys_value, file_value from v$parameter where name = 'UNDO_RETENTION'  ;
LINEID     NAME           TYPE VALUE      SYS_VALUE  FILE_VALUE
---------- -------------- ---- ---------- ---------- ----------
1          UNDO_RETENTION SYS  180.000000 180.000000 180.000000
used time: 7.270(ms). Execute id is 2102.
SQL> 

• 在session级别修改
LIST_TABLE可以在session级别修改(session能修改,system应该能修改)
session级别修改

alter session set 'LIST_TABLE' = 1;

SQL> alter session set 'LIST_TABLE' = 1;
DMSQL executed successfully
used time: 0.456(ms). Execute id is 2104.
SQL> select name, type, value, sys_value, file_value from v$parameter where name = 'LIST_TABLE';
LINEID     NAME       TYPE    VALUE SYS_VALUE FILE_VALUE
---------- ---------- ------- ----- --------- ----------
1          LIST_TABLE SESSION 1     0         0
used time: 7.940(ms). Execute id is 2105.
SQL> 

其它session没有修改

SQL> select name, type, value, sys_value, file_value from v$parameter where name = 'LIST_TABLE';
LINEID     NAME       TYPE    VALUE SYS_VALUE FILE_VALUE
---------- ---------- ------- ----- --------- ----------
1          LIST_TABLE SESSION 0     0         0
used time: 6.245(ms). Execute id is 1108.

• 可以用函数修改

用函数修改参数
• sp_set_para_value: 修改整数. 其它分别是double, string.

SQL> select name, id from v$ifun  t where name like 'SP_SET_PARA%';
LINEID     NAME                     ID         
---------- ------------------------ -----------
1          SP_SET_PARA_DOUBLE_VALUE 586
2          SP_SET_PARA_STRING_VALUE 585
3          SP_SET_PARA_VALUE        584
used time: 1.446(ms). Execute id is 1110.
SQL> select * from v$ifun_arg where id = 584;
LINEID     ID          NAME     SEQ         DATA_TYPE        LEN         PREC        IO_TYPE COMMENT$
---------- ----------- -------- ----------- ---------------- ----------- ----------- ------- --------
1          584         RVAL     -1          UNKNOWN DATATYPE 0           0           RETURN  NULL
2          584         SCOPE    0           INTEGER          4           0           IN      NULL
3          584         PARANAME 1           VARCHAR          256         0           IN      NULL
4          584         VALUE    2           BIGINT           8           0           IN      NULL
used time: 2.109(ms). Execute id is 1111.

1  sp_set_para_value(0,'LIST_TABLE',1);
2* 
SQL> /
DMSQL executed successfully
used time: 6.033(ms). Execute id is 2107.
SQL> 
SQL> 


ALTER SYSTEM SET 'MTAB_MEM_SIZE' =10 spfile;
ALTER SESSION SET 'HAGR_HASH_SIZE'=110000;
SP_SET_PARA_VALUE、SP_SET_PARA_DOUBLE_VALUE、SP_SET_PARA_STRING_VALUE; 和 SF_SET_SESSION_PARA_VALUE、SF_SET_SYSTEM_PARA_VALUE;
https://blog.csdn.net/weixin_37737228/article/details/122273024?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-122273024-blog-108274594.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-122273024-blog-108274594.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=2

• 如何建表空间

增加文件,修改文件大小,建临时表空间,undo表空间
单位只能是M,只指定size, 128 ,100 ok.
添加的数据文件大小最小为4096 * 页大小,如页大小为8K,则可添加的文件最小值为4096 * 8k=32M。

 alter tablespace test_tbs1 add datafile '/home/dmdba/dmdbms/data/DAMENG/test_tbs1_04.dbf' size 32; ok
create tablespace test_tbs1 datafile '/home/dmdba/dmdbms/data/DAMENG/test_tbs1_01.DBF'  size 128 ; ok

create tablespace test_tbs3 datafile '/home/dmdba/dmdbms/data/DAMENG/test_tbs3_01.DBF'  size 30 ;  30  too small.2 行附近出现错误[-2410]:数据文件[/home/dmdba/dmdbms/data/DAMENG/test_tbs3_01.DBF]大小无效.
已用时间: 0.359(毫秒). 执行号:0.
drop tablespace test_tbs2 ,文件自动被删除
SQL> alter tablespace test_tbs1 add datafile '/home/dmdba/dmdbms/data/DAMENG/test_tbs1_02.dbf' size 64;
操作已执行
已用时间: 18.931(毫秒). 执行号:2025.
SQL> ed
SQL> l
1  alter tablespace test_tbs1 add datafile '/home/dmdba/dmdbms/data/DAMENG/test_tbs1_03.dbf' size 50;
2* 
SQL> /
操作已执行
已用时间: 22.039(毫秒). 执行号:2026.
SQL> ed
SQL> l
1  alter tablespace test_tbs1 add datafile '/home/dmdba/dmdbms/data/DAMENG/test_tbs1_04.dbf' size 32;
2* 
SQL> /
操作已执行
已用时间: 19.244(毫秒). 执行号:2027.

如何查看页大小等参数?
select name, value from v$parameter where name like ‘%GLOBAL_PAGE%’;
GLOBAL_PAGE_SIZE 8192

页大小决定varchar的最大长度,字节
8k 3900
varchar可以选择以字符为单位/ 字节为单位,默认字节为单位.
varchar(10) 以字节为单位,5个汉字; 以字符为单位,10个汉字

查看达梦数据库基本参数, 通过manager中右键点击 localhost(SYSDBA), 选择"管理服务器", 可以看到数据库概览

可以看到字符集, 页大小,簇大小等信息.

• 如何建用户,授权限,查看权限
select * from v$parameter t where t.name = ‘PWD_POLICY’;
create user hr IDENTIFIED by dameng123;
修改系统口令策略:
alter SYSTEM set ‘PWD_POLICY’ = 15 BOTH;

PWD_POLICY(隐含参数,不在dm.ini中, 只能通过函数或SQL语句修改。)参数指定系统的口令策略,默认为2;
系统支持的口令策略有:
⚫ 0 无策略
⚫ 1 禁止与用户名相同
⚫ 2 口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值(缺省9)
⚫ 4 至少包含一个大写字母(A-Z)
⚫ 8 至少包含一个数字(0-9)
⚫ 16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略2和4,则设置口令策略为2+4=6即可。
PWD_POLICY是隐含参数,PWD_POLICY,只能通过函数或SQL语句修改。
用户资源限制
alter user lyf limit password_life_time 90;
alter user lyf limit failed_login_attemps 5, password_lock_time 3;
create profile profile1 limit FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3, PASSWORD_LIFE_TIME 180;
alter user lyf PROFILE profile1;

查询用户系统权限
select * from dba_sys_privs where grantee = ‘LYF’;
查询授予的role
select * from dba_role_privs where grantee = ‘LYF’;
查询用户被授予的表的权限
select * from dba_tab_privs where grantee = ‘LYF’;
查询用户被授予字段的权限
select* from dba_col_privs where grantee = ‘LYF’;

几个重要角色和说明
DBA:具有几乎所有权限(除审计和强制访问控制之外),默认赋给SYSDBA用户。
PUBLIC:具有对当前模式下对象的DML数据操作权限。
RESOURCE:具有在当前模式下对象定义权限(创建表、索引、视图等);
SOI:具有查询sys开头系统表的权限;
VTI:具有查询v 开头的动态视图权限(动态视图记录在 v 开头的动态视图权限(动态视图记录在v 开头的动态视图权限(动态视图记录在vdynamic_tables,如果没有此权限,DM管理工具上会报没有查询v$视图权限)
DB_AUDIT_开头的角色是审计相关角色,具有审计相关权限,默认赋给SYSAUDITOR。
DB_POLICY_开头的角色是安全相关角色,具有强制访问控制等权限,默认赋给SYSSSO。

新建用户的权限是create session. 有2个role: public , SOI(能查询sys开头的表,比如sysobjects,sysusers).
要建表要给与resource role或create table权限

SQL> grant resource to lyf;
操作已执行
已用时间: 8.590(毫秒). 执行号:1108.
SQL> select * from dba_sys_privs where grantee = 'LYF';
行号     GRANTEE PRIVILEGE      ADMIN_OPTION
---------- ------- -------------- ------------
1          LYF     CREATE SESSION NO
已用时间: 0.395(毫秒). 执行号:1109.
SQL> select * from dba_role_privs where grantee = 'LYF';
行号     GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
---------- ------- ------------ ------------ ------------
1          LYF     RESOURCE     N            NULL
2          LYF     PUBLIC       N            NULL
3          LYF     SOI          N            NULL
已用时间: 1.499(毫秒). 执行号:1110.
SQL> conn lyf/Welcome1_
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.424(ms)
SQL> create table t1(id int);
操作已执行
已用时间: 5.755(毫秒). 执行号:1200.
SQL> desc t1;
行号     NAME TYPE$   NULLABLE
---------- ---- ------- --------
1          ID   INTEGER Y
已用时间: 6.267(毫秒). 执行号:1201.
SQL> 


创建用户,含有特殊字符要用双括号(单括号报错)

create user hrtest IDENTIFIED by dameng123;
alter user hrtest IDENTIFIED by "Dameng@123";

查当前用户使用的profile
没有返回就是没有使用profile
select a.pid profileid, b.name profile_name, a.uid userid, c.name user_name
from SYSUSERPROFILES a, SYSOBJECTS b, SYSOBJECTS c
where a.PID = b.id
and a.UID = c.ID;

• 如何生成查看类似awr报告

DM8系统包手册

https://blog.csdn.net/weixin_52814866/article/details/124944866

1). 示例数据库版本

SQL> select id_code;
行号     ID_CODE                          
---------- ---------------------------------
1          1-2-84-21.10.21-149328-10032-ENT 
已用时间: 0.252(毫秒). 执行号:709.
2). 检查是否启用AWR
SQL> SELECT SF_CHECK_AWR_SYS;
行号     SF_CHECK_AWR_SYS
---------- ----------------
1          0
已用时间: 0.885(毫秒). 执行号:701.
说明:0:未启用;1:已启用
3). 初始化AWR系统包
SQL> SP_INIT_AWR_SYS(1);
它建表空间sysaux.
DMSQL 过程已成功完成
已用时间: 718.527(毫秒). 执行号:702.
4). 设置时间间隔(60分钟)
这一步如果不执行,后面手动收集AWR报告即使执行了,也没有真正拍照.
SQL> CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(60);
DMSQL 过程已成功完成
已用时间: 27.305(毫秒). 执行号:703.
说明:单位是分钟,默认值是60,取值区间10~525600
5). 手动收集AWR报告
SQL> DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
DMSQL 过程已成功完成
已用时间: 96.382(毫秒). 执行号:704.
SQL> DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
DMSQL 过程已成功完成
已用时间: 88.695(毫秒). 执行号:705.
SQL> DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
DMSQL 过程已成功完成
已用时间: 75.207(毫秒). 执行号:706.
 

6). 检查AWR报告信息
SQL> SELECT * FROM SYS.WRM\$_SNAPSHOT;
7). 生成AWR报告  --这里示例生成2号和3号快照之间的性能报告(注意这里的路径是服务器路径,而非本地路径)
SQL> CALL SYS.AWR_REPORT_HTML(2,3,'/dm8/dmdbms','AWR.HTML');DMSQL 过程已成功完成
已用时间: 183.242(毫秒). 执行号:708.
注意,这里目录不能用/tmp,否则不生成文件,也步报错.
[dmdba@dmdb01 dmdbms]$ pwd
/dm8/dmdbms
[dmdba@dmdb01 dmdbms]$ ls -l AWR.HTML 
-rw-r--r-- 1 dmdba dinstall 200934 May 24 12:58 AWR.HTML
CALL SYS.AWR_REPORT_HTML(1,2,'/home/dmdba','AWR.HTML');

8). 修改 snapshot 的间隔时间为 60 分钟、保留时间为 1 天。
SQL> CALL DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(1440,60);
9) 停止AWR(删除表空间sysaux)
SP_INIT_AWR_SYS(0);

• alert 日志,错误日志位置?

数据库初始化日志 $DM_HOME/data/DAMENG/dminit20221017075819.log
告警日志在安装目录$DM_HOME/log 目录下

• 如何查看所有表/view的名字

sysobjects查看普通的所有表,比如dba_users, user_tables.
v$dynamic_tables 查看动态视图,比如v$rlog

SQL> select name from v$dynamic_tables where name like '%RLOG%';
行号     NAME            
---------- ----------------
1          V\$RLOG
2          V\$RLOG_PKG
3          V\$RLOGFILE
4          V\$KEEP_RLOG_PKG
5          V\$RLOG_PKG_STAT
6          V\$RLOG_HISTORY
7          V\$RLOG_RAFT_INFO
7 rows got
已用时间: 0.837(毫秒). 执行号:1115.
SQL> 
•	  
o	dba_objects查看dba_的object
select object_name from dba_objects where  object_name like 'DBA%';
•	
o	sysobjects查看系统对象,但是不含系统视图
select count(*) from sysobjects;
•	
o	dba_object和sysobject的数量比较

SQL> select count(*) from dba_objects;   
行号     COUNT(*)            
---------- --------------------
1          1078
已用时间: 16.324(毫秒). 执行号:702.
SQL> select count(*) from sysobjects;
行号     COUNT(*)            
---------- --------------------
1          1061

查看dba_tablespaces
SQL> select name, type\$,subtype\$ from sysobjects where name = 'DBA_TABLESPACES';
LINEID     NAME            TYPE\$  SUBTYPE\$
---------- --------------- ------ --------
1          DBA_TABLESPACES SCHOBJ VIEW
2          DBA_TABLESPACES DSYNOM NULL

• 调优

  1. 如何估算分配多少内存
  2. 如何设置hugepage, 异步IO(不需要设置异步IO,自动支持,但是无从确认)
    oracle 11g sga_target, sga_max_size, 达梦对应的参数?
    还是类似9i,需要逐个配置?
    答案:类似8i,需要逐个配置.

在版本03134283904-20220630-163817-20005的达梦数据库.
在$DM_HOME/samples/sql_script/GBK/auto_parameter_adjustment.sql
可以自动调整参数.
• 控制文件自动生成
每次对数据库结构修改,比如创建表空间,增加文件,移动文件.都会自动备份控制文件.
目录在ctl_bak目录.

• sqllog.ini 什么用
sql跟踪使用的
SVR_LOG 参数设置是否开启
默认关闭
dm.ini文件有定义

SQL> select * from v$parameter where name = 'SVR_LOG';     
行号     ID          NAME    TYPE VALUE SYS_VALUE FILE_VALUE
---------- ----------- ------- ---- ----- --------- ----------
           DESCRIPTION                                                                                                                 DEFAULT_VALUE ISDEFAULT  
           --------------------------------------------------------------------------------------------------------------------------- ------------- -----------
1          553         SVR_LOG SYS  0     0         0
           Whether the Sql Log sys Is open or close. 1:open, 0:close, 2:use switch and detail mode. 3:use not switch and simple mode.  0             1

• disql连接数据库
o 如何修改disql 语言为英文

/etc/dm_srv.conf文件修改cn为en
LANGUAGE=(en)


o 配置连接符
disql sysdba/Welcome1_@192.168.56.87:5236
disql sysdba/Welcome1_


o 不登陆执行脚本
单引号括起来,里面是,加文件名(在esc键下面)

disql sysdba/Welcome1_ ‘`a.sql’


o 交互模式运行脚本

start a.sql
或者
`a.sql (esc下面)

o disql的配置文件/etc/dm_srv.conf

[dmdba@kylin-dm8 etc]$ cat dm_svc.conf 
TIME_ZONE=(480)
LANGUAGE=(en)
DM=(192.168.56.87:5236)
[dmdba@kylin-dm8 etc]$ disql sysdba/Welcome1_@dm
Server[192.168.56.87:5236]:mode is normal, state is open
login used time : 1.306(ms)
disql V8
SQL> exit

• 达梦认证方式

密码/os认证( 缺省不开启).
强制访问控制
不同用户看到不同数据(安全版本)

• 达梦数据库版本

共享存储集群(RAC) DMDSC
DMMPP 分布集群
同步软件 DMHS, oracle 同步到 达梦
网站下载的是开发版.
开发版性能和企业版一样.只是有时间限制, 以发布版本为准, 1年有效期.
开发版可以搭建集群

• 数据库装载

文本载入数据库.
dmfldr手册 (dameng fast loader)
drivers 目录
dpi接口. c语言
fldr快速导入接口
• 认证考试
都是上机考试
dca -> dcp -> dcm
vnc 登录 图形化界面
root用户登录, 查看DISPLAY的值.
su 到dmdba
export DISPLAY 的值为root查看的值.
数据库会重启. 所以修改参数一定要修改dm.ini

• 开启归档
mount/open suspend 可以随意切换
suspend 只读.不能修改. 比如归档空间满的时候,变为suspend.
mount-suspend 之间不能转换. 必须通过open.
alter database archivelog;

需要在mount下开启归档

SQL> alter database mount;
executed successfully
used time: 1.421(ms). Execute id is 0.
SQL> alter database archivelog;
executed successfully
used time: 7.281(ms). Execute id is 0.
SQL> alter database ADD ARCHIVELOG 'type=local, dest=/home/dmdba/arch, file_size=64, space_limit=10240';

• 卸载达梦数据库

DM安装目录下有个文件:
uninstall.sh
卸载完成后,手动删除/home/dmdba/dmdbms目录,还有
/etc/dm_srv.conf文件.否则提示已经有安装,再安装可能运行有问题.
安装选项
21. sysdba 默认密码 SYSDBA. (大写)
22. dminit命令行建库
ps -ef|grep dmserver
确认达梦数据库是否在运行. 进程名字dmserver.

• 数据库注册和注销
配置注册数据库服务, systemctl自动启动
就是增加到systemctl系统管理

  1. 图形界面注册服务
    tool/dbca.sh
    dbca用于:
    建库;删库,注册数据库,注销数据库.

ini配置文件 选择dm.ini ,相当于spfile
修改后要重启才能生效.只是修改ini文件.
再执行提示的 3个命令(复制systemctl配置文件, 启用systemctl, 启动数据库)
2)命令行注册服务
dm8/script/root/dm_service_installer.sh
删除注册: dm_servie_uninstaller.sh
-h help
-t dmserver
-p 实例名相同即可,or 不同
-dm_ini dm.ini位置
• tool目录下 dbca等
manager.sh
nca.sh
dbca.sh
console
所以path要设置$DM_HOME/tool, $DM_HOMEbin

• database status和切换

shutdown
mount    开归档,配置主备等
open
suspend
shutdown

• 在disql里管理
数据库状态改变和关闭

SQL> alter database mount;
executed successfully
used time: 6.724(ms). Execute id is 0.
SQL> select status$ from v$instance;

---------- -------
1          MOUNT
used time: 0.966(ms). Execute id is 1902.
SQL> 

SQL> alter database open;
executed successfully
used time: 11.479(ms). Execute id is 0.
SQL> select status$ from v$instance;

---------- -------
1          OPEN
used time: 0.228(ms). Execute id is 1903.
SQL> select status$ from v$database;
   
---------- -----------
1          4
used time: 1.730(ms). Execute id is 1904.
SQL> 

SQL> alter database suspend;
executed successfully
used time: 100.546(ms). Execute id is 0.
SQL> select status$ from v$instance;

---------- -------
1          SUSPEND
used time: 1.314(ms). Execute id is 1905.
SQL> alter database open;
executed successfully
used time: 0.317(ms). Execute id is 0.
SQL> select status$ from v$database;
    
---------- -----------
1          4
used time: 6.364(ms). Execute id is 1906.
SQL> 

disql> shutown immediate;
shutdown abort;

• 如何启动/关闭数据库

  1. 系统启动是自动启动.通过systemctl
  2. 手动启动$DMHOME/bin/
    每个数据库有自己的脚本. 也是systemctl调用的脚本.
    比如DM8数据库.
    DmServiceDM8 start.
    • 用bin/DMService*命令

[dmdba@kylin-dm8 bin]$ ls DmServiceDM*
DmServiceDM8 DmServiceDMSERVER
名字为DmService+ 数据库名
查看进程

ps -ef|grep dmserver
[dmdba@kylin-dm8 DM8]$ ps -ef|grep dmserver
dmdba      10280       1  0 05:16 ?        00:00:04 /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdbms/data/DAMENG/dm.ini -noconsole
dmdba      11887       1  0 05:48 pts/0    00:00:00 /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdbms/data/DM8/dm.ini -noconsole


bin/DmService* start  正常启动
DMService start mount启动到mount

[dmdba@kylin-dm8 bin]$ which DmServiceDMSERVER 
/home/dmdba/dmdbms/bin/DmServiceDMSERVER
[dmdba@kylin-dm8 bin]$ DmServiceDMSERVER  stop
Stopping DmServiceDMSERVER:                                [ OK ]

用 DmServiceDMSERVER stop 关闭(或者用systemctl stop),是向dmserver发出singal 15. 如下是log/dm_DMSERVER_202210.log:

stop 
2022-10-18 07:52:44.121 [FATAL] database P0000001382 T0000000000000001382  sigterm_handler receive signal 15
2022-10-18 07:52:44.121 [INFO] database P0000001382 T0000000000000001399  Server is stopping...
2022-10-18 07:52:44.121 [INFO] database P0000001382 T0000000000000001399  listener closed  and all sessions disconnected
2022-10-18 07:52:46.122 [INFO] database P0000001382 T0000000000000001399  adjust undo_retention & wakeup purge thread...shutdown abort,


SQL> shutdown abort
2   ;
操作已执行
已用时间: 0.250(毫秒). 执行号:0.
SQL> 

日志:
####2022-10-18 07:55:37.784 [FATAL] database P0000002277 T0000000000000002522 dmserver shutdown abort
2022-10-18 07:55:37.784 [INFO] database P0000002277 T0000000000000002522 total 2 rfil opened!

• ** 用dmserver 前台启动
dmserver 命令类似故障处理时使用.所有信息打印在终端. 退出时数据库即关闭.
如下启动到mount

./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount

bin/dmserver start mount手动启动到mount

前台启动方式,exit退出时就关闭.
不需要注册就可以使用dmserver 启动.(即如果没有注册,只能用这种方式启动)
不加mount,就是open
例子:

[dmdba@kylin-dm8 bin]$ ./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini 
file dm.key not found, use default license!
version info: develop
DM Database Server 64 V8 03134283890-20220525-161267-10045 startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2023-05-25
begin redo pwr log collect, last ckpt lsn: 110474 ...
redo pwr log collect finished
main rfil[/home/dmdba/dmdbms/data/DAMENG/DAMENG01.log]'s grp collect 0 valid pwr record, discard 0 invalid pwr record
EP[0]'s cur_lsn[110474], file_lsn[110474]
begin redo log recover, last ckpt lsn: 110474 ...
redo log recover finished
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
iid page's trxid[26127]
NEXT TRX ID = 26128
pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 to_release_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 to_release_pages, 0 mgr pages, 0 mgr recs!
iid page's trxid[27129]
NEXT TRX ID = 28131.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
pseg_crash_trx_rollback end
SYSTEM IS READY.
退出

exit
Server is stopping...
listener closed  and all sessions disconnected

• mount启动后, disql连接后可以改为open

[dmdba@kylin-dm8 ~]$ dm
Server[LOCALHOST:5236]:mode is normal, state is mount
login used time : 1.862(ms)
disql V8
SQL> alter database open;
executed successfully
used time: 25.629(ms). Execute id is 0.
SQL> select status$ from v d a t a b a s e ; L I N E I D S T A T U S database; LINEID STATUS database;LINEIDSTATUS


1 4
used time: 7.297(ms). Execute id is 500.
SQL>

/tool/dmservice.sh 查看达梦数据库状态
前台启动的这里不更新

• 关闭数据库
服务关闭数据库是shutdown immediate

kill 15 , shutodwn immediate (通过服务关闭是发出kill 15)
kill 9 shutdown abort
或者 通过systemctl 服务关闭. 是发出kill 15.
或者DmServiceDMSERVER stop命令. systemctl就是调用这个脚本.

• 连接配置文件
tool/server_connection.xml

• SQL语言

DML

DCL
grant
revoke
TCL (transaction control language)
rollback
commit
savepoint

NULL缺省排在最前(FLAG=0)

[dmdba@kylin-dm8 DAMENG]$ cat dm.ini |grep NULL
        ORDER_BY_NULLS_FLAG             =  0                    #null values are before or last not null values when order by
NULLS LAST也可以在sql指定
达梦的UNION, 不排序.(oracle排序)
select count(*) vs select count(name)
count(*) 包括null, 字段名不含null.

SQL> select * from t1;
LINEID     ID          NAME
---------- ----------- ----
1          1           a
2          2           NULL
used time: 0.549(ms). Execute id is 1315.
SQL> select count(*) from t1;
LINEID     COUNT(*)            
---------- --------------------
1          2
used time: 0.742(ms). Execute id is 1316.
SQL> select count(name) from t1;
LINEID     COUNT(NAME)         
---------- --------------------
1          1
used time: 0.914(ms). Execute id is 1317.
SQL> 

达梦如何查看v$controlfile

• 没有动态视图可以查看
• 可以用strings大概看内容
[dmdba@kylin-dm8 DAMENG]$ strings dm.ctl
• 可以用dmctlcvt 命令(dm control convert)

bin/dmctlcvt
dmctlcvt help
dmctlcvt type=1 src=dm.ctl dest=/tmp/ctl.txt

• 如何查看当前数据库varchar单位字节还是字符?
LENGTH_IN_CHAR

1  select name,value from v$parameter where name like 'LENGTH_IN%';
2* 
SQL> /
LINEID     NAME           VALUE
---------- -------------- -----
1          LENGTH_IN_CHAR 0
used time: 6.698(ms). Execute id is 1323.

SQL> select * from v$parameter where name like '%LENGTH%';
LINEID     ID          NAME                    TYPE      VALUE SYS_VALUE FILE_VALUE
---------- ----------- ----------------------- --------- ----- --------- ----------
           DESCRIPTION                                               DEFAULT_VALUE ISDEFAULT  
           --------------------------------------------------------- ------------- -----------
1          651         LENGTH_IN_CHAR          READ ONLY 0     0         0
           Column max length in CHAR or BYTE, 0: in BYTE, 1: in CHAR 0             1
2          723         NVARCHAR_LENGTH_IN_CHAR IN FILE   1     1         1
           Whether nvarchar convert to varchar(n char) 1:yes,0:no    1             1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值