暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

03.达梦DCA认证课程-DM数据库体系结构

原创 让世界为你转身 2024-10-10
959

1.存储结构

表空间是 DM 数据库的最大存储单元,所有数据都存储在表空间中。
表空间采用段(segment)、簇(extent)和页(page,对应 block)的方式管理。
一个表空间可以包含一个或多个数据文件。一个数据文件仅能归属于一个表空间。
DM 物理文件包含:配置文件、控制文件、数据文件、联机日志(此四个文件必不可少,缺少一个将无法正常启动)。

1.1 三大文件查看

查看数据文件:

SQL> select GROUP_ID,PATH,ID,STATUS$ from v$datafile; 行号 GROUP_ID PATH ID STATUS$ ---------- ----------- ---------------------------------------------------- ----------- ----------- 1 0 /home/dmdba/dmdbms/data/ECARD/SYSTEM.DBF 0 1 2 1 /home/dmdba/dmdbms/data/ECARD/ROLL.DBF 0 1 3 3 /home/dmdba/dmdbms/data/ECARD/TEMP.DBF 0 1 4 4 /home/dmdba/dmdbms/data/ECARD/MAIN.DBF 0 1 5 5 /home/dmdba/dmdbms/data/ECARD/DMHR.DBF 0 1 6 6 /home/dmdba/dmdbms/data/ECARD/V8_TABLESPACE.dbf 0 1 7 7 /home/dmdba/dmdbms/data/ECARD/OPENPLARTFORM_DATA.dbf 0 1 8 8 /home/dmdba/dmdbms/data/ECARD/CHANNEL_DATA_01.dbf 0 1 9 8 /home/dmdba/dmdbms/data/ECARD/CHANNEL_DATA_02.dbf 1 1 10 8 /home/dmdba/dmdbms/data/ECARD/CHANNEL_DATA_03.dbf 2 1 11 8 /home/dmdba/dmdbms/data/ECARD/CHANNEL_DATA_04.dbf 3 1 行号 GROUP_ID PATH ID STATUS$ ---------- ----------- ------------------------------------------------- ----------- ----------- 12 8 /home/dmdba/dmdbms/data/ECARD/CHANNEL_DATA_05.dbf 4 1 12 rows got

查看重做日志文件:

SQL> select path from v$rlogfile; 行号 PATH ---------- ----------------------------------------- 1 /home/dmdba/dmdbms/data/ECARD/ECARD01.log 2 /home/dmdba/dmdbms/data/ECARD/ECARD02.log 3 /home/dmdba/dmdbms/data/ECARD/ECARD03.log 已用时间: 0.730(毫秒). 执行号:1308. SQL> select path,rlog_size/1024/1024 from v$rlogfile; 行号 PATH RLOG_SIZE/1024/1024 ---------- ----------------------------------------- -------------------- 1 /home/dmdba/dmdbms/data/ECARD/ECARD01.log 256 2 /home/dmdba/dmdbms/data/ECARD/ECARD02.log 256 3 /home/dmdba/dmdbms/data/ECARD/ECARD03.log 256 已用时间: 0.989(毫秒). 执行号:1309.

查看控制文件:

SQL> select para_name,para_value from v$dm_ini where para_name= 'CTL_PATH'; 行号 PARA_NAME PARA_VALUE ---------- --------- ------------------------------------ 1 CTL_PATH /home/dmdba/dmdbms/data/ECARD/dm.ctl 已用时间: 10.951(毫秒). 执行号:1313. SQL> select para_name,para_value from v$dm_ini where para_name='CTL_BAK_PATH'; 行号 PARA_NAME PARA_VALUE ---------- ------------ ------------------------------------- 1 CTL_BAK_PATH /home/dmdba/dmdbms/data/ECARD/ctl_bak 已用时间: 4.678(毫秒). 执行号:1314. SQL> select para_name,para_value from v$dm_ini where para_name='CTL_BAK_NUM'; 行号 PARA_NAME PARA_VALUE ---------- ----------- ---------- 1 CTL_BAK_NUM 10 已用时间: 6.657(毫秒). 执行号:1315. SQL> select para_name,para_value from v$dm_ini where para_name in ('CTL_PATH','CTL_BAK_PATH','CTL_BAK_NUM');

1.2 表空间管理

1.2.1 表空间介绍

DM 默认预定义 SYSTEM、ROLL、MAIN、TEMP、HMAIN 五个表空间。

  • SYSTEM

系统表空间,存放数据字典等信息(表、字段、视图等对象的定义、用户角色权限信息等,部分隐含参数写入 SYSTEM 表空间),SYSTEM 表空间自动扩展不允许关闭。

  • ROLL

回滚表空间,存放回滚页,数据库中的 DML 操作对应都会生成 redo 和 undo,undo 信息放入 ROLL 表空间对应的数据文件中,redo 信息写入联机日志文件,用于保证数据的一致性。
ROLL 回滚段数据包含 Active、unexpired、expired 三种状态。遇到查询记录过旧的错误(等同于 oracle 的快照过旧的错误)。

解决方法:

1.增大 undo_retention(回滚段的保留时长), 及时、分段提交。扩大 ROLL 表空间。
2.查询时间过长导致,可以考虑优化查询
SQL> select NAME,TYPE,VALUE,SYS_VALUE,FILE_VALUE,DESCRIPTION from v$parameter where name='UNDO_RETENTION';

行号     NAME           TYPE VALUE      SYS_VALUE  FILE_VALUE
---------- -------------- ---- ---------- ---------- ----------
           DESCRIPTION                                                                             
           ----------------------------------------------------------------------------------------
1          UNDO_RETENTION SYS  180.000000 180.000000 90.000000
           Maximum retention time in seconds for undo pages since relative transaction is committed
  • MAIN

用户默认表空间,当创建用户时,如果为指定用户的默认表空间,则 MAIN 为用户的默认表空间。相当于 Oracle 的 USERS 表空间。

  • 临时表空间

临时表空间,存放临时表数据、临时结果集等,当大量的数据排序或创建索引等占用临时表空间。DM 中临时表空间大小由参数 TEMP_SIZE 指定,不支持单独创建临时表空间。

达梦 TEMP 表空间,数据库启动时会按照如下参数重建 TEMP 表空间。

SQL> select name, value, type from v$parameter t where name like 'TEMP%'; 行号 NAME VALUE TYPE ---------- ---------------- ---------------------- --------- 1 TEMP_PATH /dm8/dmdbms/data/ECARD READ ONLY 2 TEMP_SIZE 10 IN FILE 3 TEMP_SPACE_LIMIT 0 SYS

相关参数说明:

TEMP_SIZE:临时表空间初始大小 TEMP_PATH:临时表空间路径 TEMP_SPACE_LIMIT:临时表空间的空间限制,0 表示不限制。

收缩 TEMP 表空间的方法:

1.重启数据库,TEMP 表空间数据文件会重建。 2.在线收缩临时表空间使用 SP_TRUNC_TS_FILE 函数 SQL> select id,name from v$ifun where name='SP_TRUNC_TS_FILE'; 行号 ID NAME ---------- ----------- ---------------- 1 1298 SP_TRUNC_TS_FILE SQL> select * from v$ifun_arg where id=1298; 行号 ID NAME SEQ DATA_TYPE LEN PREC IO_TYPE COMMENT$ ---------- ----------- ------- ----------- ---------------- ----------- ----------- ------- -------- 1 1298 RVAL -1 UNKNOWN DATATYPE 0 0 RETURN NULL 2 1298 TS_ID 0 INTEGER 4 0 IN NULL 3 1298 FILE_ID 1 INTEGER 4 0 IN NULL 4 1298 TO_SIZE 2 INTEGER 4 0 IN NULL

调大temp表空间的方法:

--可以直接修改temp文件的大小,但重启后会重建为temp_size指定的大小 alter tablespace temp resize datafile 'TEMP.DBF' to 50; --永久修改大小方法 alter system set 'TEMP_SIZE' =50 spfile;
  • HMAIN

HUGE 表的默认表空间(HTS 表空间)

1.2.1 创建表空间

创建名为tbs1的表空间,并指定该空间上拥有 2个数据文件,每个数据文件的大小为50M ,设置自动扩展

-- 达梦表空间数据文件单位默认为M,不需要带单位,路径可以省略,使用system_path的路径 create tablespace tbs1 datafile '/home/dmdba/dmdbms/data/ECARD/TBS101.DBF' size 50 autoextend on next 10 maxsize 10240,'/home/dmdba/dmdbms/data/ECARD/TBS102.DBF' size 50 autoextend on next 10 maxsize 10240;

1.2.2 修改表空间名

DM 预定义表空间不支持重命名,自定义表空间支持重命名。

alter tablespace tbs1 rename to tbs1_new;

1.2.3 修改表空间状态

用户表空间有联机和脱机两种状态。系统表空间、回滚表空间、重做日志表空间和临时文件表空间不允许脱机。

设置表空间状态为脱机状态时,如果该表空间有未提交的事务,则脱机失败报错。 脱机后可对表
空间的数据进行备份.

alter tablespace tbs1 offline; alter tablespace tbs1 online;

1.2.4 修改表空间数据缓冲区

用户表空间可以切换使用的数据缓冲区,系统表空间、回滚表空间、重做日志表空间和临时文件表空间不允许修改数据缓冲区。可以使用的数据缓冲区有 NORMAL 和 KEEP。表空间修改成功后,并不会立即生效,而是需要服务器重启。缓冲池名 KEEP 是达梦的保留关键字,使用时必须加双引号。

SQL> alter tablespace tbs1_new cache="KEEP"; SQL> select name,cache from v$tablespace; SQL> alter tablespace tbs1_new cache="NORMAL";

1.2.5 删除表空间

只可以删除用户创建的表空间并且只能删除未使用过的表空间,删除表空间时会删除其拥有的所有数据文件。

drop tablespace tbs1;

1.2.6 管理数据文件

1.添加数据文件

--可以使用相对路径 alter tablespace tbs1 add datafile 'TBS103.DBF' size 50;

2.设置数据文件自动扩展

alter tablespace tbs1 datafile 'TBS103.DBF' autoextend on next 2 maxsize 20480; alter tablespace tbs1 datafile 'TBS101.DBF' autoextend off;

3.修改数据文件大小

--dm老版本不支持将数据文件改小,2022年9月份以后的版本支持 alter tablespace tbs1 resize datafile 'TBS103.DBF' TO 100;

4.迁移自定义表空间数据文件

alter tablespace tbs offline; --Oracle19c之前,需要手动拷贝数据文件,然后再进行rename alter tablespace tbs rename datafile 'TBS01.DBF' TO '/dm8/data/DM/TBS/TBS01.DBF'; alter tablespace tbs rename datafile 'TBS02.DBF' TO '/dm8/data/DM/TBS/TBS02.DBF'; alter tablespace tbs online;

1.2.7 表空间相关查询

相关数据字典:

select * from dba_tablespaces; select * from DBA_DATA_FILES; select * from v$tablespace; select * from v$datafile; --查询数据文件剩余空间 select * from DBA_FREE_SPACE;

表空间和数据文件对应关系查询:

SQL> SELECT df.GROUP_ID,ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID= df.GROUP_ID; 行号 GROUP_ID NAME PATH ---------- ----------- ------ --------------------------------- 1 0 SYSTEM /dm8/dmdbms/data/ECARD/SYSTEM.DBF 2 7 TEST /dm8/dmdbms/data/ECARD/TEST02.DBF 3 7 TEST /dm8/dmdbms/data/ECARD/TEST01.DBF 4 5 DMHR /dm8/dmdbms/data/ECARD/DMHR.DBF 5 4 MAIN /dm8/dmdbms/data/ECARD/MAIN.DBF 6 3 TEMP /dm8/dmdbms/data/ECARD/TEMP.DBF 7 1 ROLL /dm8/dmdbms/data/ECARD/ROLL.DBF 7 rows got -- file_id是针对某个表空间内部排序的 SQL> select TABLESPACE_NAME,FILE_ID,FILE_NAME from dba_data_files order by 1,2; 行号 TABLESPACE_NAME FILE_ID FILE_NAME ---------- --------------- ----------- --------------------------------- 1 DMHR 0 /dm8/dmdbms/data/ECARD/DMHR.DBF 2 MAIN 0 /dm8/dmdbms/data/ECARD/MAIN.DBF 3 ROLL 0 /dm8/dmdbms/data/ECARD/ROLL.DBF 4 SYSTEM 0 /dm8/dmdbms/data/ECARD/SYSTEM.DBF 5 TEMP 0 /dm8/dmdbms/data/ECARD/TEMP.DBF 6 TEST 0 /dm8/dmdbms/data/ECARD/TEST01.DBF 7 TEST 1 /dm8/dmdbms/data/ECARD/TEST02.DBF 7 rows got

1.3 重做日志文件管理

重做日志包含联机日志和归档日志(数据库在归档模式下才会产生归档日志文件)。

联机重做日志:存放 redo 信息,循环使用,不断覆盖,默认重做日志大小256M。联机日志 v$rlog 中记录有日志序列号(LSN: Log Sequence Number)。

DM 数据库联机日志自动切换,不能手工切换,无法删除重做日志。DM 联机日志没有日志组。

1.3.1 调整重做日志大小

--建议所有日志大小一样 alter database resize logifle 'DAMENG01.log' to 500; alter database resize logifle 'DAMENG02.log' to 500;

1.3.2 添加重做日志

alter database add logfile 'DAMENG03.log' SIZE 500;

1.3.3 修改重做日志路径

alter database mount; alter database RENAME LOGFILE 'DM01.log' TO '/dm8/data/DM/REDO/DM01.log'; alter database RENAME LOGFILE 'DM02.log' TO '/dm8/data/DM/REDO/DM02.log'; alter database RENAME LOGFILE 'DM03.log' TO '/dm8/data/DM/REDO/DM03.log'; alter database open;

1.3.4 重做日志相关查询

相关视图:

select * from v$rlogfile; --cur_file表示正在使用的联机日志 select * from v$rlog;

查询redo日志相关信息:

--查询redo log日志信息 SQL> select group_id,file_id,path,rlog_size/1024/1024 M from v$rlogfile; 行号 GROUP_ID FILE_ID PATH M ---------- ----------- ----------- ---------------------------------- -------------------- 1 2 0 /dm8/dmdbms/data/ECARD/ECARD01.log 256 2 2 1 /dm8/dmdbms/data/ECARD/ECARD02.log 256

2.数据库参数

2.1 参数分类

手动,静态和动态三种类型。分别对应 v$parameter 视图中 type 的 read only,in file,sys 和 session.
**手动参数(read only):**不能通过 SQL 命令或函数修改,只能通过修改 dm.ini 文本文件修改此参数(需要重启数据库才能生效)。
**静态参数(IN FILE) :**不能修改内存中的值,只能修改参数文件中的值,可以通过 SQL 命令或函数修改,但需要重启数据库才能生效。
动态参数(SYS 和SESSION ):ini 文件和内存可同时修改, 修改后即时生效。其中,SYS为动态系统级参数,修改后会影响所有的会话;SESSION 为动态会话级参数,修改后只针对当前会话生效。

-- v$parameter和v$dm_ini均可以查询dm数据库的参数 SQL> desc v$parameter; 行号 NAME TYPE$ NULLABLE ---------- ------------- ------------- -------- 1 ID INTEGER Y 2 NAME VARCHAR(80) Y 3 TYPE VARCHAR(200) Y 4 VALUE VARCHAR(4000) Y 5 SYS_VALUE VARCHAR(4000) Y 6 FILE_VALUE VARCHAR(4000) Y 7 DESCRIPTION VARCHAR(255) Y 8 DEFAULT_VALUE VARCHAR(256) Y 9 ISDEFAULT INTEGER Y 9 rows got 已用时间: 2.155(毫秒). 执行号:1605 SQL> desc v$dm_ini; 行号 NAME TYPE$ NULLABLE ---------- ------------- ------------ -------- 1 PARA_NAME VARCHAR(128) Y 2 PARA_VALUE VARCHAR(256) Y 3 MIN_VALUE VARCHAR(256) Y 4 MAX_VALUE VARCHAR(256) Y 5 DEFAULT_VALUE VARCHAR(256) Y 6 MPP_CHK CHAR(1) Y 7 SESS_VALUE VARCHAR(256) Y 8 FILE_VALUE VARCHAR(256) Y 9 DESCRIPTION VARCHAR(256) Y 10 PARA_TYPE VARCHAR(200) Y 10 rows got 已用时间: 10.981(毫秒). 执行号:1604. --查询参数类型 SQL> select distinct type from v$parameter; 行号 TYPE ---------- --------- 1 READ ONLY 2 SYS 3 IN FILE 4 SESSION

2.2 查看数据库参数

2.2.1 通过dm.ini文件查看

达梦的ini参数文件在实例路径中,文件名为dm_ini,可以直接查看该文件,获取具体ini的参数信息。

[dmdba@dmserver ECARD]$ pwd /home/dmdba/dmdbms/data/ECARD [dmdba@dmserver ECARD]$ head dm.ini #DaMeng Database Server Configuration file #this is comments #file location of dm.ctl CTL_PATH = /home/dmdba/dmdbms/data/ECARD/dm.ctl #ctl file path CTL_BAK_PATH = /home/dmdba/dmdbms/data/ECARD/ctl_bak #dm.ctl backup path CTL_BAK_NUM = 10 #backup number of dm.ctl, allowed to keep one more backup file besides specified number. SYSTEM_PATH = /home/dmdba/dmdbms/data/ECARD #system path CONFIG_PATH = /home/dmdba/dmdbms/data/ECARD #config path TEMP_PATH = /home/dmdba/dmdbms/data/ECARD #temporary file path

2.2.2 通过参数动态视图查看

相关视图有V$PARAMETER和V$DM_INI。 同时系统视图查看参数对比查看dm.ini文件的优点是,如果要重新配置参数,可以知道参数配置的值的范围、参数类型,及其配置生效的条件和范围等。视图有V$PARAMETER和V$DM_INI,内容比dm.ini文件多一些。

通过v$parameter查看:

SQL> select name,type,value from v$parameter limit 5; 行号 NAME TYPE VALUE ---------- ------------ --------- ------------------------------------- 1 CTL_PATH READ ONLY /home/dmdba/dmdbms/data/ECARD/dm.ctl 2 CTL_BAK_PATH READ ONLY /home/dmdba/dmdbms/data/ECARD/ctl_bak 3 CTL_BAK_NUM SYS 10 4 SYSTEM_PATH READ ONLY /home/dmdba/dmdbms/data/ECARD 5 CONFIG_PATH READ ONLY /home/dmdba/dmdbms/data/ECARD

通过v$dm_ini查看:

SQL> select PARA_NAME,PARA_VALUE from v$dm_ini limit 5; 行号 PARA_NAME PARA_VALUE ---------- ------------ ------------------------------------- 1 CTL_PATH /home/dmdba/dmdbms/data/ECARD/dm.ctl 2 CTL_BAK_PATH /home/dmdba/dmdbms/data/ECARD/ctl_bak 3 CTL_BAK_NUM 10 4 SYSTEM_PATH /home/dmdba/dmdbms/data/ECARD 5 CONFIG_PATH /home/dmdba/dmdbms/data/ECARD

2.2.3 通过系统函数查看

在DM达梦数据库中,有3个系统函数可以查看参数配置情况。

分别是SF_GET_PARA_VALUE、SF_GET_PARA_DOUBLE_VALUE和SF_GET_PARA_STRING_VALUE三个函数,分别对应参数值为数值类型、浮点类型、字符串类型的参数时使用。

语法格式:

-- 其中,SCOPE参数为1表示获取INI文件中配置参数的值,为2表示获取内存中配置参数的值 SF_GET_PARA_VALUE(scope int, paraname varchar(256)) SF_GET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187)) SF_GET_PARA_STRING_VALUE(scope int, paraname varchar(8187))

使用示例:

--查看数据库实例最大连接数,在文件和内存中的配置 SQL> SELECT SF_GET_PARA_VALUE(1, 'MAX_SESSIONS'); 行号 SF_GET_PARA_VALUE(1,'MAX_SESSIONS') ---------- ----------------------------------- 1 1500 已用时间: 4.974(毫秒). 执行号:1405. SQL> SELECT SF_GET_PARA_VALUE(2, 'MAX_SESSIONS'); 行号 SF_GET_PARA_VALUE(2,'MAX_SESSIONS') ---------- ----------------------------------- 1 1500 已用时间: 0.770(毫秒). 执行号:1406.

2.3 修改数据库参数

查看数据库参数之后,通常需要根据应用系统和业务及数据库运行情况对参数进行修改。DM达梦数据库修改参数的方法一般有四种。

2.3.1 通过console 控制台工具修改

图形化界面方式修改,不管修改什么类型参数都需要重启数据库才能生效

2.3.1. 通过编辑dm.ini文件修改

通常在linux系统里,使用VI工具对dm.ini文件进行参数修改,然后对数据库进行重启,使得参数值生效。

2.3.2 通过alter语句修改

1.alter system

语法:

alter system set '<参数名称>'=<参数值> [DEFERRED] [MEMORY|BOTH|SPFILE];

参数说明:

DEFERRED: 只适用于动态参数,指定 DEFERRED,参数值延迟生效,对当前 session 不生效,只对新创建的会话生效;缺省为立即生效,对当前会话和新创建的会话都生效。 MEMORY: 只对内存中的值做修改即时生效; SPFILE: 只对 INI 文件中的值做修改; BOTH: 内存和 INI 文件都做修改。默认情况下,为MEMORY。对于静态参数,只能指定SPFILE。

使用示例:

1)修改COMPATIBLE_MODE参数

# 查询服务器兼容模式设置,value当前会话,sys_value系统,file_value参数文件 SQL> select name,type,value,sys_value,file_value from v$parameter where name='COMPATIBLE_MODE'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- --------------- ------- ----- --------- ---------- 1 COMPATIBLE_MODE IN FILE 0 0 0 已用时间: 11.199(毫秒). 执行号:1702. # 修改静态参数COMPATIBLE_MODE为2,兼容oracle SQL> alter system set 'COMPATIBLE_MODE'=2 spfile; DMSQL 过程已成功完成 已用时间: 11.896(毫秒). 执行号:1704. SQL> select name,type,value,sys_value,file_value from v$parameter where name='COMPATIBLE_MODE'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- --------------- ------- ----- --------- ---------- 1 COMPATIBLE_MODE IN FILE 0 0 2

2)修改UNDO_RETENTION参数

# 系统级动态参数 SQL> select name,type,value,sys_value,file_value from v$parameter where name='UNDO_RETENTION'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- -------------- ---- --------- --------- ---------- 1 UNDO_RETENTION SYS 90.000000 90.000000 90.000000 SQL> select name,type,value,sys_value,file_value from v$parameter where name='UNDO_RETENTION'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- -------------- ---- ---------- ---------- ---------- 1 UNDO_RETENTION SYS 180.000000 180.000000 90.000000

3)修改buffer

SQL> select name,type,value,sys_value,file_value from v$parameter where name='BUFFER'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- ------ ------- ----- --------- ---------- 1 BUFFER IN FILE 1000 1000 1000 已用时间: 10.933(毫秒). 执行号:1800. SQL> alter system set 'BUFFER'=2000 spfile;

2.alter session

语法:

alter session set '<参数名称>'=<参数值> [purge];

参数说明:

PURGE:指是否清理执行计划。设置后的值只对当前会话有效。当包含 PURGE 选项时会清除服务器保存的所有执行计划。

使用示例:

SQL> select name,type,value,sys_value,file_value from v$parameter where name='LIST_TABLE'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- ---------- ------- ----- --------- ---------- 1 LIST_TABLE SESSION 0 0 0 已用时间: 7.494(毫秒). 执行号:1710. SQL> alter session set 'LIST_TABLE'=1; DMSQL 过程已成功完成 已用时间: 1.013(毫秒). 执行号:1711. SQL> select name,type,value,sys_value,file_value from v$parameter where name='LIST_TABLE'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- ---------- ------- ----- --------- ---------- 1 LIST_TABLE SESSION 1 0 0 已用时间: 5.848(毫秒). 执行号:1712.

2.3.3 通过系统函数修改

通常使用较多的有以下5个,分别是:
SP_SET_PARA_VALUE、SP_SET_PARA_DOUBLE_VALUE、SP_SET_PARA_STRING_VALUE;
和 SF_SET_SESSION_PARA_VALUE、SF_SET_SYSTEM_PARA_VALUE;

SQL> select name,id from v$ifun t where t.name like 'SP_SET_PARA%'; 行号 NAME ID ---------- ------------------------ ----------- 1 SP_SET_PARA_DOUBLE_VALUE 2902 2 SP_SET_PARA_DOUBLE_VALUE 586 3 SP_SET_PARA_STRING_VALUE 2901 4 SP_SET_PARA_STRING_VALUE 585 5 SP_SET_PARA_VALUE 2900 6 SP_SET_PARA_VALUE 584 SQL> select * from v$ifun_arg where id=586; 行号 ID NAME SEQ DATA_TYPE LEN PREC IO_TYPE COMMENT$ ---------- ----------- -------- ----------- ---------------- ----------- ----------- ------- -------- 1 586 RVAL -1 UNKNOWN DATATYPE 0 0 RETURN NULL 2 586 SCOPE 0 INTEGER 4 0 IN NULL 3 586 PARANAME 1 VARCHAR 256 0 IN NULL 4 586 VALUE 2 DOUBLE 8 0 IN NULL

1.SP_SET_PARA_VALUE 函数:
作用:

设置 dm.ini 文件中非浮点和字符串类型的参数值

语法:

SP_SET_PARA_VALUE (scope int, ini_param_name varchar(256) ,value bigint)

参数说明:

SCOPE:修改范围(0:memory;1:both;2:spfile)

2.SP_SET_PARA_DOUBLE_VALUE 函数
作用:

设置 dm.ini 参数中浮点型的参数值

语法:

SP_SET_PARA_DOUBLE_VALUE (scope int, ini_param_name varchar(256),value double

3.SP_SET_PARA_STRING_VALUE 函数

作用:

设置 dm.ini 文件中的字符串型参数值

语法:

SP_SET_PARA_STRING_VALUE (scope int, ini_param_name varchar(256) ,value varchar(8187))

4.SF_SET_SESSION_PARA_VALUE 函数

作用:

设置会话级INI参数的值

语法:

SF_SET_SESSION_PARA_VALUE (paraname varchar(8187),value bigint)

参数说明:

paraname: 会话级 INI 参数的参数名

5.SF_SET_SYSTEM_PARA_VALUE 函数

作用:

修改系统整型、double、varchar的静态配置参数或动态配置参数。

语法:

SF_SET_SYSTEM_PARA_VALUE (paraname varchar(256), value bigint/double/varchar(256),deferred int, scope int)

参数说明:

paraname:ini 参数的参数名。
value:要设置的新值。
deferred:是否立即生效。为 0 表示当前 session 修改的参数立即生效,为 1 表示当前
session 不生效,后续再生效,默认为 0。
scope:取值为 0、1、2 。0 表示修改内存中的参数值,1 表示修改内存和 INI 文件中参数值,0 和 1 都只能修改动态的配置参数。2 表示修改 INI 文件中参数,此时可用来修改静态配置参数和动态配置参数

使用示例:

SQL> SP_SET_PARA_VALUE (2, 'MAX_SESSIONS', 200) SQL> SELECT SF_GET_PARA_VALUE(1, 'MAX_SESSIONS'); SQL> SELECT SF_GET_PARA_VALUE(2, 'MAX_SESSIONS');

3.内存结构

3.1 数据缓冲区

用于缓存数据文件中的数据页。BUFFER 是从磁盘读出的数据页在内存中的镜像,包含四个类型,分别是normal、fast、recycle、keep,由 INI 配置中的 BUFFER、FAST_POOL_PAGES、RECYCLE、KEEP 等确定大小,不同类型的缓冲区主要表现为淘汰机制不同。

数据缓冲区的大小影响数据库的读写性能,OLTP 数据缓冲区占内存 40-60%,OLAP 可以稍大;系统应尽量减少物理读,提高逻辑读。

--查询数据缓冲区,四种类型的空间配置,如果安装时勾选自动优化,会调整数据缓冲区配置 SQL> select name,type,value,sys_value,file_value,description from v$parameter where name in ('BUFFER','FAST_POOL_PAGES','RECYCLE','KEEP'); 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION ---------- --------------- ------- ----- --------- ---------- --------------------------- 1 BUFFER IN FILE 1000 1000 2000 Initial System Buffer Size In Megabytes 2 FAST_POOL_PAGES IN FILE 3000 3000 3000 Fast Pool Pages 3 KEEP IN FILE 8 8 8 Initial System KEEP Buffer Size In Megabytes 4 RECYCLE IN FILE 300 300 300 Initial System KEEP Buffer Size In Megabytes 已用时间: 9.918(毫秒). 执行号:1901. --查看数据缓冲区信息 SQL> select * from v$bufferpool

3.2 重做日志缓冲区

重做日志是数据库与磁盘间的一层缓存,将随机的磁盘写转换成顺序写,日志缓冲区是数据库和日志间的缓存,对应 INI 参数 RLOG_BUF_SIZE。

SQL> select name,type,value,sys_value,file_value,description from v$parameter where name in ('RLOG_BUF_SIZE'); 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION ---------- ------------- ------- ----- --------- ---------- ----------------------------- 1 RLOG_BUF_SIZE IN FILE 1024 1024 1024 The Number Of Log Pages In One Log Buffer 已用时间: 9.359(毫秒). 执行号:1903. --查询页大小 SQL> select page; 行号 PAGE ---------- ----------- 1 8192 已用时间: 0.681(毫秒). 执行号:1904.

3.3 SQL缓冲区

SQL CACHE POOL,简称 SCP,对应 INI 参数 CACHE_POOL_SIZE,是用来存储包信息(PACKAGE)、执行计划、结果集缓存的一片专用缓存区域,对于 SQL 类别比较多,或者 PKG比较多、复杂的系统,建议将该参数调大。

SQL> select name,type,value,sys_value,file_value,description from v$parameter where name in ('CACHE_POOL_SIZE'); 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION ---------- --------------- ------- ----- --------- ---------- ---------------------------- 1 CACHE_POOL_SIZE IN FILE 100 100 100 SQL buffer size in megabytes 已用时间: 13.914(毫秒). 执行号:1905.

参数为 USE_PLN_POOL,是否启动计划重用;为 0 时禁止计划重用,1 表示启动,默认为 1。RS_CAN_CACHE,是否启动结果集缓存,默认为 0,不启用。

SQL> select name,type,value,sys_value,file_value,description from v$parameter where name in ('USE_PLN_POOL','RS_CAN_CACHE'); 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- ------------ ------- ----- --------- ---------- DESCRIPTION ------------------------------------------------------------------------------------------------------------ 1 USE_PLN_POOL IN FILE 1 1 1 Query Plan Reuse Mode, 0: Forbidden; 1:strictly reuse, 2:parsing reuse, 3:mixed parsing reuse 2 RS_CAN_CACHE IN FILE 0 0 0 Resultset cache mode. 0: Forbidden; 1: Allowed only if the USE_PLN_POOL is non-zero; 2: Allowed only be set 已用时间: 7.582(毫秒). 执行号:1906.

相关视图:

select * from v$cacheitem; select * from v$cachesql; select * from v$cachepln; select * from v$cachers

3.4 字典缓冲区

字典缓冲区是存在数据库对象的一片缓冲区,对应 INI 参数 DICT_BUF_SIZE,DM8 里面数据对象其实对应的是系统表上的一些信息,内存中的数据对象是通过将系统表上的信息取出并解析出来得到的,该缓冲区一是避免了频繁向磁盘请求获取系统表信息,二是可以减少系统表信息解析开销。

SQL> select name,type,value,sys_value,file_value,description from v$parameter where name='DICT_BUF_SIZE'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION ---------- ------------- ------- ----- --------- ---------- ---------------- 1 DICT_BUF_SIZE IN FILE 50 50 50 dict buffer size 已用时间: 11.512(毫秒). 执行号:1909.

相关视图:

select * from v$dynamic_tables t where T.NAME like '%DICT%'; select * from V$DICT_CACHE_ITEM; select * from V$DICT_CACHE;

3.5 主内存池

当其他内存池(比如运行时内存池:虚拟内存池 vm pool 和会话池 session pool 等)不够时,会先向主内存池申请空间。

服务器启动时从操作系统申请的一大片内存,后续服务器运行过程中,一般情况下,很多需要内存分配的地方都是从该池分配,如果需要的内存大于配置值(MEMORY_POOL),共享内存池也可进行自动扩展,INI 参数 MEMORY_EXTENT_SIZE 指定了共享内存池每次扩展的大小,参数 MEMORY_TARGET 则指定了共享内存池能扩展到的最大大小。

相关查询:

select * from V$mem_pool; select name, type, value, sys_value, file_value from v$parameter t where name like 'MEMORY%';

参数说明:

MEMORY_POOL:初始大小 MEMORY_EXTENT_SIZE:扩展大小 MEMORY_TARGET:目标大小 MEMORY_N_POOL:共享内存池个数,默认为 1,高并发时可设置多个。 MAX_OS_MEMORY:内存占用操作系统内存的比例,默认 100,建议调整到 80-90%。

3.6 运行时内存

特点:

使用时申请,用完即释放。包含:虚拟内存池 vm pool、会话池 session pool、排序区、HASH 区等。HASH 区和排序区都属于虚拟缓冲区 ,实际申请时使用虚拟内存池或会话内存池。

**排序区:**SORT_BUF_SIZE
少量的数据排序,优先在内存中排序,此时占用排序区;
大量的数据排序,内存中放不下,占用临时表空间排序。
如果业务经常有排序,可以适当调大排序区,提高效率。

select name, type, value, sys_value, file_value from v$parameter t where name like 'SORT%';

**HASH 区:**HJ_BUF_SIZE
HASH 连接、HASH 分区占用哈希区。如果业务 hash 连接较多,可以调大哈希区。

select name, type, value, sys_value, file_value from v$parameter t where name like 'HJ%';

4.数据库进程

达梦为单进程多线程架构,Oracle 是多进程架构。DM 进程中主要包括监听线程、IO 线程、工作线程、调度线程、日志线程等,可以通过 DM 的动态性能视图查看线程的相关信息。

4.1 相关视图

主要相关的线程视图有如下 4 个:

V$LATCHES :记录当前正在等待的线程信息。 V$THREADS :记录当前系统中活动线程的信息,以及描述信息。 V$WTHRD_HISTORY :记录自系统启动以来,所有活动过线程的相关历史信息。 V$PROCESS :记录服务器进程信息

使用示例:

SQL> select * from v$process; 行号 PID PNAME TRACE_NAME TYPE$ ---------- ----------- -------- ---------- ----------- 1 20921 dmserver 1 已用时间: 3.474(毫秒). 执行号:1500. SQL> select distinct name,count(1) from v$threads group by name order by 2 desc; 行号 NAME COUNT(1) ---------- -------------- -------------------- 1 dm_lpq_thd 10 2 dm_purge_thd 10 3 dm_wrkgrp_thd 8 4 dm_io_thd 8 5 dm_tskwrk_thd 4 6 dm_hio_thd 4 7 dm_sql_thd 3 8 dm_sqllog_thd 2 9 dm_sql_aux_thd 1 10 dm_sched_thd 1 11 dm_redolog_thd 1 行号 NAME COUNT(1) ---------- ------------- -------------------- 12 dm_chkpnt_thd 1 13 dm_trctsk_thd 1 14 dm_quit_thd 1 15 dm_lsnr_thd 1 16 dm_audit_thd 1 16 rows got 已用时间: 4.437(毫秒). 执行号:1501.

4.2 查看数据库进程

查看数据库进程:

[root@dmserver ~]# ps -ef|grep dmserver dmdba 2761 1 0 11月12 ? 00:02:28 /dm8/dmdbms/bin/dmserver path=/dm8/dmdbms/data/FACE/dm.ini -noconsole

查看数据库线程:

[root@dmserver ~]# ps -T -p 2761 PID SPID TTY TIME CMD 2761 2761 ? 00:00:00 dmserver 2761 2764 ? 00:00:01 dm_sqllog_thd 2761 2766 ? 00:00:00 dm_quit_thd 2761 2767 ? 00:00:00 dm_io_thd 2761 2768 ? 00:00:00 dm_io_thd 2761 2769 ? 00:00:00 dm_io_thd 2761 2770 ? 00:00:00 dm_io_thd 2761 2771 ? 00:00:00 dm_io_thd 2761 2772 ? 00:00:00 dm_io_thd 2761 2773 ? 00:00:00 dm_io_thd 2761 2774 ? 00:00:00 dm_io_thd 2761 2775 ? 00:00:00 dm_io_thd 2761 2776 ? 00:00:00 dm_io_thd 2761 2777 ? 00:00:00 dm_io_thd 2761 2778 ? 00:00:00 dm_io_thd 2761 2779 ? 00:00:00 dm_io_thd 2761 2780 ? 00:00:00 dm_io_thd 2761 2781 ? 00:00:00 dm_io_thd 2761 2782 ? 00:00:00 dm_io_thd 2761 2783 ? 00:00:05 dmserver 2761 2786 ? 00:00:00 dm_chkpnt_thd 2761 2787 ? 00:00:07 dm_redolog_thd 2761 2789 ? 00:00:00 dm_hio_thd 2761 2790 ? 00:00:00 dm_hio_thd 2761 2791 ? 00:00:00 dm_hio_thd 2761 2792 ? 00:00:00 dm_hio_thd 2761 2793 ? 00:00:01 dm_tskwrk_thd 2761 2794 ? 00:00:01 dm_tskwrk_thd 2761 2795 ? 00:00:01 dm_tskwrk_thd 2761 2796 ? 00:00:01 dm_tskwrk_thd 2761 2797 ? 00:00:01 dm_tskwrk_thd 2761 2798 ? 00:00:01 dm_tskwrk_thd 2761 2799 ? 00:00:01 dm_tskwrk_thd 2761 2800 ? 00:00:01 dm_tskwrk_thd 2761 2801 ? 00:00:01 dm_tskwrk_thd 2761 2802 ? 00:00:01 dm_tskwrk_thd 2761 2803 ? 00:00:01 dm_tskwrk_thd 2761 2804 ? 00:00:01 dm_tskwrk_thd 2761 2805 ? 00:00:01 dm_tskwrk_thd 2761 2806 ? 00:00:01 dm_tskwrk_thd 2761 2807 ? 00:00:01 dm_tskwrk_thd 2761 2808 ? 00:00:01 dm_tskwrk_thd 2761 2809 ? 00:00:01 dm_sqllog_thd 2761 2810 ? 00:00:00 dm_sql_aux_thd 2761 2811 ? 00:00:13 dm_purge_thd 2761 2812 ? 00:00:05 dmserver

top 命令查看达梦数据库 CPU 资源占用:

[dmdba@dmserver script]$ cd ../bin [dmdba@dmserver bin]$ ./DmServiceECARD status DmServiceECARD (pid 3068) is running. [dmdba@dmserver bin]$ ps -ef|grep dm.ini dmdba 2761 1 0 11月12 ? 00:02:28 /dm8/dmdbms/bin/dmserver path=/dm8/dmdbms/data/FACE/dm.ini -noconsole dmdba 3068 1 0 11月12 ? 00:02:30 /dm8/dmdbms/bin/dmserver path=/dm8/dmdbms/data/ECARD/dm.ini -noconsole dmdba 24043 23880 0 23:49 pts/5 00:00:00 grep --color=auto dm.ini [dmdba@dmserver bin]$ top -Hp 2761 Threads: 66 total, 0 running, 66 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 8172916 total, 1469456 free, 4174348 used, 2529112 buff/cache KiB Swap: 8388604 total, 8387316 free, 1288 used. 3669488 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2761 dmdba 20 0 3126724 545116 17528 S 0.0 6.7 0:00.48 dmserver 2764 dmdba 20 0 3126724 545116 17528 S 0.0 6.7 0:01.12 dm_sqllog_thd 2766 dmdba 20 0 3126724 545116 17528 S 0.0 6.7 0:00.00 dm_quit_thd 2767 dmdba 20 0 3126724 545116 17528 S 0.0 6.7 0:00.00 dm_io_thd 2768 dmdba 20 0 3126724 545116 17528 S 0.0 6.7 0:00.00 dm_io_thd 2769 dmdba 20 0 3126724 545116 17528 S 0.0 6.7 0:00.00 dm_io_thd 2770 dmdba 20 0 3126724 545116 17528 S 0.0 6.7 0:00.01 dm_io_thd

5.归档日志

5.1 开启归档

归档配置有 三 种方式:

  1. SQL 语句完成 dmarch.ini 和 ARCH_INI 配置;

  2. 手动编写 dmarch.ini 文件和设置参数 ARCH_INI;

  3. 利用 manager 图形化工具配置。

5.1.1 通过sql命令开归档

-- 1.查看当前的归档模式 select arch_mode from v$database; -- 2.启动到mount状态,状态3为mount alter database mount; select status$ from v$database; -- 3.添加存放归档的目录,dm没有默认归档路径,file_sie达到多大切换另一个归档,space_limit设置归档空间限制 alter database add archivelog 'dest= /dm8/dmdbms/arch,type=local,file_size=64,space_limit=10240'; -- 4.开归档 SQL> alter database archivelog; -- 5.启动到open状态,状态4为open alter database open; select status$ from v$database; -- 6.查看归档配置 select arch_mode from v$database; select arch_name,arch_type,arch_dest,arch_file_size,arch_space_limit from v$dm_arch_ini; -- 7.检查归档线程 select DISTINCT name, thread_desc from v$threads;

说明:

1. V$database 中的 status$用数字来表示状态的,这里一共有 6 种状态,如下: 1:启动;2:启动,redo 完成;3 :MOUNT ;4 :打开;5:挂起;6:关闭 2. Roles$:角色,也是用数字表示。 0:普通;1:主库;2:备库

5.1.2 修改dm.ini 与dmarch.ini开归档

# 1.使用配置文件开关归档 [dmdba@dmserver DAMENG]$ cd /opt/dm8/data/DAMENG # 2.开启dmarch.ini配置文件 [dmdba@dmserver DAMENG]$ cat dm.ini | grep -i arch_ini ARCH_INI = 1 #启用dmarch.ini # 3.手动编辑dmarch.ini 文件,之后保存 。dmarch.ini文件中添加内容如下: [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /home/dmdba/arch ARCH_FILE_SIZE = 64 ARCH_SPACE_LIMIT = 0 [ARCHIVE_LOCAL2] ARCH_TYPE = LOCAL ARCH_DEST = /home/dmdba/arch1 ARCH_FILE_SIZE = 64 ARCH_SPACE_LIMIT = 0 # 4.重启数据库服务生效 [dmdba@dmserver DAMENG]$ DmServiceDMSERVER stop Stopping DmServiceDMSERVER: [ OK ] [dmdba@dmserver DAMENG]$ DmServiceDMSERVER start Starting DmServiceDMSERVER: [ OK ] # 5.检查验证 SQL> select arch_mode from v$database; SQL> select arch_name,arch_type,arch_dest,arch_file_size,arch_space_limit from v$dm_arch_ini;

参数说明:

ARCH_TYPE:归档类型,有以下几种: 本地归档 LOCAL(一台主库最多配 8 个)、 远程实时归档REALTIME(一台主库最多配 8 个)、远程异步归档 ASYNC(一台主库最多配 8 个)、即时归档 TIMELY(一个主库最多配 8 个)、远程归档 REMOTE(一个主库最多配 8 个) ARCH_DEST: 归档路径 ARCH_FILE_SIZE:单个归档文件大小,单位 MB,取值范围(64~2048),默认为 1024MB,即 1G ARCH_SPACE_LIMIT:归档文件空间限制,单位 MB,取值范围(1024~4294967294),0表示无空间限制

5.1.3 使用manager工具开归档

使用manager图像化工具来开启归档。

5.2 关闭归档

alter database mount; alter database noarchivelog; -- 删除归档路径配置,可以不做 ALTER DATABASE DELETE ARCHIVELOG 'dest=/home/dmdba/arc'; ALTER DATABASE DELETE ARCHIVELOG 'dest=/home/dmdba/arc1'; alter database open; select arch_mode from v$database;

5.3 归档切换

数据库自动完成归档的切换,DM 支持手工切换归档。

--三条语句功能一样,选择一条执行即可,产生新的归档日志,redo日志并不会切换 alter database archivelog current; alter system archive log current; alter system switch logfile; --oracle中是切换联机日志的,达梦中是切换归档的

5.4 归档日志清理

--归档删除相关的系统函数 SQL> select name from v$ifun t where name like 'SF_ARCHIVELOG_%'; 行号 NAME ---------- -------------------------------- 1 SF_ARCHIVELOG_DELETE_BEFORE_LSN 2 SF_ARCHIVELOG_DELETE_BEFORE_TIME --删除10天前的归档日志。 Select SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-10); --删除某个lsn之前的归档 select SF_ARCHIVELOG_DELETE_BEFORE_LSN(803946);

归档自动删除:

#dmarch.ini,可以设置保留期,到期自动清理 arch_reserver_time #归档日志保留时间,单位分钟

针对业务繁忙期间,出现磁盘 IO 不定时繁忙的情况,因为配置了归档的空间上限(归档达到此上限),生成新的归档日志前删除旧的归档日志文件造成了 IO 的不定时繁忙。
解决方案:配置 JOB 作业,在业务空间期定时清理 N 天之前的归档文件。

5.5 归档日志检测

可以通过dmrachk检查归档日志连续性.

dmrachk帮助信息:

[dmdba@dmserver ~]$ dmrachk rachk V8 version: 03134283904-20220630-163817-20005 格式: dmrachk keyword=value 例程: dmrachk arch_fil=/opt/a.log 强制参数: 必须指定arch_fil或者arch_path 关键字 说明(默认值) -------------------------------------------------------------------------------- ARCH_FIL 指定一个归档文件 CMP_FIL 指定一个用于比较的归档文件 ARCH_PATH 指定一个归档目录 CMP_PATH 指定一个用于比较的归档目录 RECV_PATH 指定一个待修复的归档目录 TRUNC_FIL 指定新的文件,用于存储从错误归档中,抽取的有效数据。 EXTRACT_FIL 指定新的文件,用于存储从指定的seq范围的归档文件中抽取数据 ARCH_BAK_PATH 指定备份文件路径,用于存储归档修复过程中的重复文件 CHECK 校验级别(0, 1, 2, 3, 4) 0: 文件校验, 1: 包校验(seq & magic),2:ptx校验,3:rrec校验, 4:清理无效的归档文件, 5:修复归档文件到free之后的最后一个有效日志包。默认(0) BEGIN_LSN 指定归档目录时,指定排除小于该LSN的文件 END_LSN 指定归档目录时,指定排除大于该LSN的文件 BEGIN_SEQ 指定归档目录时,抽取大于该SEQ的文件 END_SEQ 指定归档目录时,抽取小于该SEQ的文件 BEFORE_LSN CHECK=4,指定归档目录,删除该LSN之前的文件。默认为0,所有LSN范围内日志均删除 BEFORE_SEQ CHECK=4,指定归档目录,删除该SEQ之前的文件。默认为0,所有SEQ范围内日志均删除 BEFORE_TIME CHECK=4,指定归档目录,删除该时间点之前的文件。默认删除所有时间点的归档 EXCLUDE_DB_MAGIC CHECK=4,指定归档目录,删除指定的DB_MAGIC之外的文件。 OUTPUT_FIL LOG可以指定输出到文件 DCR_INI 指定dmdcr.ini路径,若未指定,则不使用 DM_INI 目标库dm.ini的路径,用于获取日志加密信息 AFTER_FREE 指定TRUNC_FIL时,是否校验并抽取FREE之后的内容。0 不抽取;1 抽取。默认0 CYT_UPDATE 是否更新归档密钥,需要与ARCH_PATH同时使用。0 不更新;1 更新。默认0。 CYT_UPDATED_PATH 归档密钥更新目标文件所在目录。未指定时,直接在原文件上更新;若指定,则更新到新的路径,原文件保持不变 HELP 显示帮助信息

dmrachk检测归档日志:

dmrachk arch_path=/dm8/dmdbms/arch

5.6 相关数据字典

V$ARCHIVED_LOG:显示当前实例的所有归档日志文件信息。 V$DM_ARCH_INI :用来存放归档路径等相关归档参数信息。 V$ARCH_FILE :查询本地归档日志信息。对DMDSC集群,除了显示本地归档外,也显示远程归档信息。 V$ARCH_QUEUE :显示当前归档任务队列信息。 V$ARCH_SEND_INFO:用于在主库上查询各备库的日志发送统计信息。 V$ARCH_STATUS :查询归档状态信息,归档状态是由主库记录和维护的,此视图只在主库上查询有效,备库上的查询结果没有实际意义。 V$BACKUPSET_ARCH: 显示备份集的归档信息。 V$BACKUPSET_SEARCH_DIRS: 查询 V$BACKUPSET_SEARCH_DIRS 显示当前会话已添加的备份目录,即备份集搜索目录。若用户没有添加备份目录,那么仅显示默认的备份目录。

6.服务管理

6.1 数据库服务状态

Mount:不能访问数据,只能对归档模式,数据库模式等进行维护
Open:可以访问数据,对外正常提供服务
Suspend:不允许对数据更改,写日志,限制磁盘写入,否则挂起
Mount 与 open 状态可以互切 ,open 与 suspend 状态可以互切,但是 mount 与 suspend不能互切

6.2 数据库模式

Normal:默认打开服务时是 open,第一次初始化打开时不允许 mount 打开.
Primary :无论是否指定状态,打开服务时是 mount
Standby:无论是否指定状态,打开服务时是 mount
以上三种模式,在 mount 状态下允许切换

6.3 数据库服务的启动

方式1:

[dmdba@dmserver ~]$ DmServiceDMSERVER start Starting DmServiceDMSERVER: [ OK ] 或 mount--->open [dmdba@dmserver ~]$ DmServiceDMSERVER start mount Starting DmServiceDMSERVER: [ OK ] [dmdba@dmserver arch]$ disql sysdba/dmdba123 服务器[LOCALHOST:5236]:处于普通配置状态 登录使用时间: 14.063(毫秒) SQL> select status$ from v$instance; 行号 status$ ---------- ------- 1 MOUNT SQL> alter database open; SQL> alter database mount; Mount 与 open 可以互切.

方式2:

[dmdba@dmserver ~]$dmserver /opt/dm8/data/DAMENG/dm.ini -noconsole mount & [dmdba@dmserver ~]$dmserver /opt/dm8/data/DAMENG/dm.ini -noconsole Dmserver help 查看帮助 最好调到后台启动 disql sysdba/dmdba123 服务器[LOCALHOST:5236]:处于普通配置状态 登录使用时间: 13.229(毫秒) SQL> select status$ from v$instance; 行号 status$ ---------- ------- 1 MOUNT SQL>alter database open; 注意此处加& 和不加的区别:加&时,在当前窗口执行 ctrl+c,服务的状态不受影响

方式3:

[root@dmserver ~]# systemctl enable DmServiceDMSERVER.service [root@dmserver ~]# systemctl start DmServiceDMSERVER.service [root@dmserver ~]# systemctl status DmServiceDMSERVER.service

方式4:类似于windows的服务管理方式

调用图形,所在位置:/opt/dm8/tool/dmservice.sh

[dmdba@dmserver tool]$ dmservice.sh

6.4 数据库服务的关闭

方式1:

[dmdba@dmserver ~]$ DmServiceECARD status DmServiceECARD (pid 6880) is running. [dmdba@dmserver ~]$ DmServiceECARD stop Stopping DmServiceECARD: [ OK ]

方式2:

[dmdba@dmserver ~]$ disql sysdba/Newcapec.2022 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 4.157(ms) disql V8 SQL> shutdown immediate;SQL> shutdown abort; 操作已执行 已用时间: 1.331(毫秒). 执行号:0. SQL> exit [dmdba@dmserver ~]$ DmServiceECARD status DmServiceECARD dead but pid file exists

方式3:

[root@dmserver ~]# systemctl stop DmServiceECARD.service

方式4:

使用图形化工具:dmservice.sh

7.数据库版本查询

方式1:

SQL> select * from v$version; 行号 BANNER ---------- --------------------------------- 1 DM Database Server 64 V8 2 8.1 3 企业版 4 DB Version: 0x7000c 5 03134283904-20220630-163817-20005 已用时间: 0.339(毫秒). 执行号:56802.

方式2:

SQL> select id_code; 行号 ID_CODE ---------- ----------------------------------- 1 --03134283904-20220630-163817-20005 已用时间: 1.932(毫秒). 执行号:56803.
最后修改时间:2024-10-29 08:38:25
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论