体系结构
可以看出,在DM8 中存储的层次结构如下:
-
数据库由一个或多个表空间组成;
-
每个表空间由一个或多个数据文件组成;
-
每个数据文件由一个或多个簇组成;
-
段是簇的上级逻辑单元,一个段可以跨多个数据文件;
-
簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;
-
页是数据库中最小的分配单元,也是数据库中使用的最小的IO 单元。
总结:页<簇<段<数据文件<表空间
1 体系结构概览
DM是单进程多线程的服务架构,Oracle是多线程架构。
DM由数据库和实例组成,数据库是指数据文件、控制文件等物理文件;
实例是由后台的进程和线程构成;
dm.ini参数文件,文本文件;
dm.ctl控制文件,二进制文件;控制文件由系统备份:备份路径在参数文件中:
select * from v$dm_ini t where t.para_name like 'CTL_BAK%';
2 控制文件内容:
数据库名称、OGUID 、数据库启动时间、 数据文件、联机日志等信息;
3 控制文件转换为文本文件:
[dmdba@localhost DAMENG]$ dmctlcvt type=1 src=dm.ctl dest=dm.txt
4参数文件修改:
参数文件对应的两个系统视图:V D M I N I v DM_INI v DMINIvparameter ;
参数类型:READ ONLY只读参数,不能调用系统函数修改,只能修改 dm .ini 中的值 。
SYS:系统动态参数 :可以通过调用系统函数修改 ,修改可以即时生效;
IN FILE:手工参数 ,可以通过调用系统函数修改,但修改时 scope 参数只能指定为2 修改后需要重启数据库才能生效。
SESSION:会话参数 ,可以通过调用系统函数修改 针对会话生效。
①:使用函数修改:
SP_SET_PARA_VALUE() --针对整型
SP_SET_PARA_DOUBLE_VALUE() --针对浮点型
SP_SET_PARA_STRING_VALUE() --针对字符类型
格式:sp_set_para_value(scope, ‘para_name’, para_value)
Scope: 1: 表示修改内存和配置文件中的值(both)
2:表示修改内存中的值 memory(memory)
SQL>sp_set_para_value(2,'MAX_OS_MEMORY',100)
②:使用DDL修改:
格式:alter system set 'PARA_NAME '=VALUES both/memory/spfile
alter system set 'LIST_TABLE'=1 both; --内存与参数文件中的值都修改;
alter system set 'LIST_TABLE'=1 memory; --只修改内存中的值;
alter system set 'LIST_TABLE'=0 spfile; --修改参数文件中的值;
5线程、会话
操作系统中查找dm的进程与线程:
[root@localhost ~]# ps -ef|grep dmserver
dmdba 50832 1 0 01:10 ? 00:00:20 /dm8/bin/dmserver /dm8/data/DAMENG/dm.ini noconsole
dmdba 52301 1 0 01:42 ? 00:00:08 /dm8/bin/dmserver /dm8/data/DM01/dm.ini noconsole
root 60514 58204 0 09:51 pts/2 00:00:00 grep color=auto dmserver
[root@localhost ~]# ps -T -p 50832
DM杀死会话的方法:
方式一:使用系统函数
SQL>sp_close_session(session_id);
SELECT * FROM V$SESSIONS;
方法二:操作系统中杀死对应线程:‘
# kill -15 线程id
v$sessions 中包含了会话session_id和线程ID;