本文共 3292 字,大约阅读时间需要 10 分钟。
dm中和oracle一样,也分为实例和数据库两个概念,而且这两者的概念也基本一致。
唯一的区别是:达梦是单进程,而oracle是多进程的。一般是一个db对应一个实例,但是DSC(DM共享集群)多个实例对一个数据库。
dm的服务器组成:
客户端+服务器(实例+数据库) 客户端不能直接去访问数据库,客户端把请求交给实例,实例去访问数据库,把访问信息,返回实例,实例交给交给客户端。DM 数据库使用了磁盘上大量的物理存储结构来保存和管理用户数据。主要包括:
2.1、配置文件
配置文件是 DM 数据库用来设置功能选项的一些文本文件的集合,配置文件以 ini 为扩展名,如dm.ini, dmarch.ini2.2、控制文件
每个 DM 数据库都有一个名为 dm.ctl 的控制文件。控制文件是一个二进制文件,它记录了数据库必要的初始信息。2.3、数据文件
数据文件以 dbf 为扩展名,它是数据库中最重要的文件类型,一个 DM 数据文件对应磁 盘上的一个物理文件,数据文件是真实数据存储的地方,每个数据库至少有一个与之相关的 数据文件。在实际应用中,通常有多个数据文件。2.4、重做日志文件
重做日志文件又叫redo日志。主要用于数据库的备份和恢复。2.5、归档文件
利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点,如果没有归档日志文件,则只能利用备份进行恢复。2.6、逻辑日志文件
如果在DM数据库上配置了复制功能,复制源就会产生逻辑日志文件。2.7、备份文件
备份文件以 bak 为扩展名2.8、日志文件(跟踪日志,事件日志)
用户在 dm.ini 中配置 SVR_LOG 和 SVR_LOG_SWITCH_COUNT 参数后就会打开跟踪日志。 DM 数据库系统在运行过程中,会在 log 子目录下产生一个“dm_实例名_日期”命名的 事件日志文件。事件日志文件对 DM 数据库运行时的关键事件进行记录,如系统启动、关闭、内存申请失败、IO错误等一些致命错误。DM 数据库管理系统的内存结构主要包括内存池、缓冲区、排序区、哈希区等。根据系统中子模块的不同功能,对内存进行了上述划分,并采用了不同的管理模式。
3.1、共享内存 查看共享内存大小:SQL> select para_name,para_value from v$dm_ini where para_name='MEMORY_TARGET';
SQL> select para_name,para_value from v$dm_ini where para_name='MEMORY_POOL';
2、状态:free,dirty,clean,pending.
3、如何去设置buffer的大小?
SQL> select para_name,para_value from v$dm_ini where para_name='BUFFER';--大小
SQL> select para_name,para_value from v$dm_ini where para_name='MAX_BUFFER';--最大值
如何修改:
ORALCE: alter system set xxx=…; DM:SP_set_PARA_VALUE(SCOPE,PARA_NAME,PARA_VALUE);我们可以通过V P A R A M E T E R 和 V PARAMETER 和V PARAMETER和VDM_INI视图去查看相关参数的值,例如:
SQL> select name ,type from v$parameter where name='BUFFER';
SQL> sp_set_para_value(2,'BUFFER',1500);
其中参数2表示只修改配置文件,1表示修改配置文件和内存。
另外需要注意的是,在oracle中Recycle(快速回收池)和Keep(保留池)存放的是表,而在DM中存放的是表空间。
3.3、字典缓冲区
SQL> select para_name,para_value from v$dm_ini where para_name like '%DICT%';
3.4、Sql缓冲区
介绍sql缓冲区之前,我们首先需要明白一条sql在dm数据库中的执行过程,大致为: 1、语法义分析。 2、语义分析(存放数据的数据字典表,产生物理读) 3、权限判断 4、查找数据块是否内存(在内存,逻辑读,不在内存,把数据块从磁盘读到buffer) 5、找是否有可用的执行计划。有的直接按照执行计划把结果展示出来。如果没有,生成执行计划,再把数据展示出来。 而Sql缓冲区中存放的就是:最近使用的sql,DMSQL代码,执行计划和最近查询的结果集),用来减少硬解析。 查看方式:SQL> select para_name,para_value from v$dm_ini where para_name='CACHE_POOL_SIZE';
3.5、日志缓冲区
日志缓冲区是用于存放重做日志的内存缓冲区,dm中数据每3s写一次或是commit。SQL> select para_name,para_value from v$dm_ini where para_name like '%RLOG%';
3.6、排序区
对数据进行排序,如果内存排序无法完成,把部分排序转到磁盘(temp) SORT_BUF_SIZE —大小,值要结合你的业务。3.7、HASH区
HJ_BUF_SIZESQL> select para_name,para_value from v$dm_ini where para_name like '%HJ%';
3.8、重做日志文件的管理
–查看日志文件:SQL> select path from v$rlogfile;
SQL> alter database add logfile '/dm7/data/DAMNEG/DAMENG04.log' size 512;
SQL> alter database resize logfile '/dm7/data/DAMNEG/DAMENG04.log' to 1024;
转载地址:http://ydcpz.baihongyu.com/