达梦体系结构与运维管理

1、启动/关闭数据库

(一)启动数据库

一、命令行方式

cd /dm8/dmdbms/bin
./dmserver [ini_file_path] [-noconsole] [mount]
说明:
(1)Dmserver命令行启动参数可指定dm.ini文件的路径,非控制台方式启动及指定数据库是否以MOUNT状态启动。
(2)Dmserver启动时可不指定任何参数,默认使用当前目录下的dm.ini文件,若是当前目录不存在dm.ini文件,则没法启动
(3)Dmserver 启动时能够指定-noconsole 参数。若是以此方式启动,则没法经过在控制台中输入服务器命令。当以控制台方式启动dmserver时,用户能够在控制台输入一些命令。
当不肯定启动参数的使用方法时,可使用 help 参数,将打印出格式、参数说明和使用示例。使用方法以下:
[dmdba@dmtest ~]$ /dm8/dmdbms/bin/dmserver help
格式: ./dmserver [ini_file_path] [-noconsole] [mount] [path=ini_file_path] [dcr_ini=dcr_path]css

实例:
./dmserver path=/opt/dmdbms/bin/dm.ini
./dmserver /opt/dmdbms/bin/dm.ininode

关键字 说明
--------------------------------------------------------------------------------
path dm.ini绝对路径或者dmserver当前目录的dm.ini
dcr_ini 若是使用css集群环境,指定dmdcr.ini文件路径
-noconsole 以服务方式启动
mount 配置方式启动
help 打印帮助信息sql

生产库实例:/dm8/dmdbms/bin/dmserver /dm8/dmdata/DMOA/dm.ini -noconsole数据库

二、服务的方式

systemctl start DmServiceDMOASERVER.service
systemctl status DmServiceDMOASERVER.service缓存

[root@dmtest ~]# systemctl list-unit-files|grep Dm*
DmAPService.service enabled
DmServiceDMOASERVER.service enabled服务器

说明:
不管是在何种操做系统下运行,DM数据库在启动时都会进行LICENSE检查。若LICENSE过时或KEY文件与实际运行环境不配套,DM服务器会强制退出。session

(二)关闭数据库

一、命令行模式

在启动数据库的命令工具中输入exit,而后回车,退出DM数据库app

二、服务的方式

systemctl stop DmServiceDMOASERVER.serviceide

2、表空间

DM8建立数据库时,系统会自动建立5个表空间:SYSTEM、ROLL、MAIN、TEMP、HMAIN。
(1)SYSTEM 存放全局数据字典信息和全局系统数据。
(2)ROLL 存放回滚记录。
(3)MAIN 存放临时数据。
(4)TEMP 用户默认表空间。
(5)HMAIN HUGE表空间,存放列式存储数据。函数

(一)建立表空间

建立名为bookshop的表空间,并指定该空间上拥有2个数据文件,每一个数据文件的大小为128M:
create tablespace bookshop datafile 'd:\bookshop1.dbf' size 128,'d:\bookshop2.dbf' size 128;
建立表空间时指定数据文件初始代销为128M,扩展属性为可自动扩展,每次扩展大小为100m,最大可扩展到200M:
create tablespace test datafile '/dm8/dmdata/DMOA/test.dbf' size 128 autoextend on next 100 maxsize 200;

说明:
添加的数据文件大小最小为4096*页大小,如页大小为32K,则可添加的文件最小值为4096*32k=128M。

(二)删除表空间

只能够删除用户建立的表空间而且只能删除未使用过的表空间。删除表空间时会删除其拥有的全部数据文件。
例如删除bookshop表空间:
drop tablespace bookshop;

(三)修改表空间名

可修改已存在的由用户建立的表空间的名称。
好比可修改bookshop表空间名为books:
alter tablespace bookshop rename to books;

(四)扩展表表空间

在bookshop表空间中添加大小为64M的数据文件:
alter tablespace bookshop add datafile 'd:\book.dbf' size 64;
扩展bookshop表空间中数据文件book.dbf大小至128M:
alter tablespace bookshop resize datafile 'd:\book.dbf' to 128;

3、帐户

(一)帐户建立

建立用户TEST_USER时指定该用户使用的最大磁盘空间为50M
create user test_user identified by test_password diskspace limit 50;
对用户的空间限制也可进行更改,如修改用户TEST_USER的磁盘空间限制为无限制:
alter user test_user diskspace unlimited;

(二)表建立

建立表TEST时指定该表对象可以使用的最大磁盘空间为500M
create table test(sno int,myinfo varchar) diskspace limit 500;
对表对象空间的限制也可进行更改,如修改表TEST的磁盘空间限制为50M:
alter table test modify diskspace limit 50;

4、重作日志文件

(一)添加剧作日志文件

在服务器打开状态下,能够添加新的重作日志文件。添加的数据文件大小最小为4096*页大小,如页大小为32K,则可添加的文件最小值为4096*32k=128M。
示例以下:
alter database add logfile 'd:\dameng03.log' size 128;

(二)扩展重作日志文件

在服务器打开状态下,能够扩展已有的重作日志文件的大小。
alter database resize logfile 'd:\dameng03.log' to 256;

5、回滚表空间

回滚空间的空间名固定为ROLL,不可修改。

(一)扩展回滚表空间

回滚空间的其余管理和用户表空间的管理基本是同样的,可增长和扩展回滚空间中的回滚文件,设置回滚空间的扩展属性。

(二)修改回滚表空间路径

回滚文件的路径记录在控制文件里面,可使用dmctlcvt工具在DM服务器关闭的状态下对控制文件进行修改。使用dmctlcvt工具将控制文件转换为文本文件,编辑文本文件
中要修改的文件的路径后再使用dmctlcvt工具将文本文件转换为控制文件便可。
示例以下:回滚表空间路径从d盘移动到e盘
(1)首先转换控制文件到文本文件
dmctlcvt c2t D:\dm.ctl D:\ctl.txt
(2)编辑ctl.txt文本文件
将文件中的fil_path=d:\roll.dbf改成新路径fil_path=e:\roll.dbf,保存文本文件。
(3)复制d:\roll.dbf文件为e:\roll.dbf
(4)最后转换文本文件到控制文件
dmctlcvt t2c D:\ctl.txt D:\dm.ctl
这种修改文件路径的方法也可用于重作日志文件,系统表空间文件等路径的修改

6、经常使用操做

(一)会话

一、链接会话概况

select*from v$connect;
说明:IP_ADDR为“::1”且TYPE$为“SQL3”,表示会话是在达蒙服务器经过bing/disql直连的

二、链接会话详细信息

如:执行的sql语句、主库名、当前会话状态、用户名等等
---会话id能够经过“select sessid ();”获取
select *from v$sessions where state='ACTIVE';
select *from v$sessions where user_name='OA' and clnt_host='dmtest' and appname='disql' and clnt_ip='::1' and sess_id=281223325068824;
select sess_seq,state,substr(sql_text,0,10)sql_text,user_name,create_time,clnt_host,appname,clnt_ip,osname,last_send_time,trx_id from v$sessions;

三、杀掉会话

sp_close_session(281224128100360);
说明:281224128100360是v$sessions中的sess_id

(二)SQL

一、经过会话id查询SQL执行文本
select sf_get_session_sql(281223325068824)from dual;
二、经过sql文本查询sql_id和hash_value
select*from v$sqltext where sql_text like '%select wftnode0_.NODEID as NODEID40_0_%';
三、经过sql_id或hash_value查询执行计划
select*from v$sql_plan where sql_id=16919;
四、经过sql_id查询sql历史执行信息
select*from v$sql_history where sql_id=16919;
五、查询执行时长超过2秒的活动SQL语句
select sess_id,sql_text,sf_get_session_sql(sess_id)fullsql,last_recv_time,datediff(ss,last_recv_time,sysdate)y_exectime,clnt_ip from v$sessions where state='ACTIVE';
六、显示系统最近1000条执行时间超过预约值的SQL语句
select*from v$long_exec_sqls where to_char(finish_time,'yyyymmdd')='20210219' order by finish_time desc;

(三)事务和锁

select*from v$trx
select*from v$lock;
select o.name,l.* from v$lock l,sysobjects o where l.table_id=o.id and l.blocked=1;

(四)数据库对象信息

一、全部帐户

select username,user_id,account_status,default_tablespace,temporary_tablespace,created,profile from dba_users;
select o.name,u.id,o.crtdate,o.valid,u.locked_status,last_login_dtid from sysusers u,sysobjects o where u.id=o.id and o.type$='UR' and o.subtype$='USER';

二、指定帐户下全部对象

select*from sysobjects where schid in(select id from sysobjects where type$='SCH' and name='OA');
sysobjects字段说明:
schid:TYPE$=SCHOBJ或者TYPE$=TABOBJ时表示对象所属的模式 ID,不然为 0。
type$:对象的主类型
1) 库级:UR(用户), SCH(模式), POLICY,GDBLINK, GSYNOM,DSYNOM,DIR,OPV,SPV,RULE,DMNOBJ;
2) 模式级:SCHOBJ;
3) 表级:TABOBJ
subtype$:对象的子类型。分为三种:
1) 用户对象:USER, ROLE;
2) 模式对象:UTAB,STAB,VIEW,PROC,SEQ,PKG,TRIG, DBLINK,SYNOM, CLASS,TYPE,JCLASS,DOMAIN,CHARSET,CLLT,CONTEXT;
3) 表对象:INDEX,CNTIND,CONS

(五)表空间

一、单独查询数据文件

select t.name ts_name,
decode(d.auto_extend,1,'自动扩展',0,'非自动扩展')auto_extend,
d.next_size,
t.id ts_id,
d.id file_id,
d.path file_name,
d.create_time,
d.modify_time,
d.status$,
d.total_size * sf_get_page_size() / 1024 / 1024||'M' "Size(MB)",
d.free_size * sf_get_page_size() / 1024 / 1024||'M' "Free(MB)",
(d.total_size-d.free_size) * 100 / d.total_size||'%' "Used(%)"
from v$tablespace t, v$datafile d
where t.id = d.group_id order by t.id,d.id;

二、汇总数据文件

select name,
sum(total_size) * sf_get_page_size() / 1024 / 1024 || 'M' "Size(MB)",
sum(free_size) * sf_get_page_size() / 1024 / 1024 || 'M' "Free(MB)",
(sum(total_size)-sum(free_size)) * 100 / sum(total_size) || '%' "Used(%)"
from (select t.name, d.total_size, d.free_size
from v$tablespace t, v$datafile d
where t.id = d.group_id)
group by name;

(六)数据库及参数配置

数据库信息:
select*from v$database;
实例信息:
select*from v$instance;
全部初始化参数:
select*from v$dm_ini;
控制文件:
select*from v$dm_ini where para_name='CTL_PATH';
归档配置:
select*from v$dm_arch_ini;
日志文件:
select*from v$rlogfile;

(七)查看/调整数据库参数配置

一、经过视图查看

select*from v$dm_ini where para_name='SVR_LOG';
此参数表示是否打开SQL日志功能,0:表示关闭;1:表示打开;2:按文件中记录数量切换日志文件,日志记录为详细模式;3:不切换日志文件,日志记录为简单模式,只记录时间和原始语句

二、经过函数查看/修改

能够在dm数据库运行过程当中执行sf_get_para_value、sf_get_para_double_value和sf_get_para_string_value这三个函数来获取系统的当前配置参数,而且可使用sp_set_para_value 和 sp_set_para_double_value 过程来修改静态/动态配置参数。
SQL> select sf_get_para_value(1,'svr_log') from sysdual;

行号 SF_GET_PARA_VALUE(1,'svr_log')
---------- ------------------------------
1 1
SQL> SELECT sf_get_sys_priv(8197) FROM sysdual;

行号 SF_GET_SYS_PRIV(8197)
---------- ---------------------
1 EXECUTE

示例以下:
sf_get_para_value(scope int, paraname varchar(256))
配置参数的值类型为数值类型时使用该函数来获取当前值。scope 参数为1表示获取ini文件中配置参数的值,为2表示获取内存中配置参数的值。
sf_get_para_double_value(scope int, paraname varchar(8187))
配置参数的值类型为浮点型时使用该函数来获取当前值。scope 参数为1 表示获取ini文件中配置参数的值,为 2 表示获取内存中配置参数的值。
sf_get_para_string_value (scope int, paraname varchar(8187))
配置参数的值为字符串类型时用该系统函数来获取当前值。scope 参数为 1 表示获取ini 文件中配置参数的值,为 2 表示获取内存中配置参数的值。

sp_set_para_value (scope int, paraname varchar(256), value int64)
该过程用于修改整型静态配置参数和动态配置参数。scope 参数为1 表示在内存和ini文件中都修改参数值,此时只能修改动态的配置参数。参数为 2 表示只在 ini 文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数。当 scope 等于 1,试图修改静态配置参数时服务器会返回错误信息。只有具备 dba 角色的用户才有权限调用 sp_set_para_value。
sp_set_para_double_value (scope int, paraname varchar(8187),alue double)
该过程用于修改浮点型静态配置参数和动态配置参数。scope 参数为 1 表示在内存和ini 文件中都修改参数值,此时只能修改动态的配置参数。参数为 2 表示只在 ini 文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数。当 scope 等于 1,试图修改静态配置参数时服务器会返回错误信息。只有具备 dba 角色的用户才有权限调用sp_set_para_double_value。
sf_set_system_para_value (paraname varchar(256), value int64\double\varchar(256), deferred int, scope int64)
该过程用于修改系统整型、double、varchar 的静态配置参数或动态配置参数。deferred 参数,为 0 表示当前 session 修改的参数当即生效,为 1 表示当前 session不生效,后续再生效,默认为 0。scope 参数为 1 表示在内存和 ini 文件中都修改参数值,此时只能修改动态的配置参数。参数为 2 表示只在 ini 文件中修改配置参数,此时可用来修 改 静 态 配 置 参 数 和 动 态 配 置 参 数 。 只 有 具 有 dba 角 色 的 用 户 才 有 权 限 调 用sf_set_system_para_value。

dm 的动态 ini 参数分为系统级和会话级两种级别。会话级参数在服务器运行过程当中被修改时,以前建立的会话不受影响,只有新建立的会话使用新的参数值。
1. sf_set_session_para_value (paraname varchar(8187), value bigint)
设置某个会话级 ini 参数的值,设置的参数值只对本会话有效。
2. sp_reset_session_para_value (paraname varchar(8187))
重置某个会话级 ini 参数的值,使得这个 ini 参数的值和系统 ini 参数的值保持一致。
3. sf_get_session_para_value (paraname varchar(8187))
得到当前会话的某个会话级 ini 参数的值。须要注意的是,在对参数进行调整前,dba 应该深入理解配置参数中每一个参数的含义和对系统的影响,避免因为错误的调整致使影响整个系统对外提供正常服务。对于一些关键业务,在实际调整前,建议在测试系统上先进行试验,验证经过后再在生产系统上进行调整。

(八)数据库归档配置

一、开启归档

alter database add archivelog 'type=local,dest=/dm8/dmarch,file_size=512,space_limit=0';
参数说明:
file_size 单个redo日志归档文件大小,取值范围65MB-2048MB,默认是1024MB。

二、查看是否开启归档

SQL> select name,status$,role$,arch_mode from v$database;

行号 NAME STATUS$ ROLE$ ARCH_MODE
---------- ---- ----------- ----------- ---------
1 DMOA 4 0 Y

三、查看归档配置

SQL> select*from v$dm_arch_ini;

行号 ARCH_NAME ARCH_TYPE ARCH_DEST ARCH_FILE_SIZE ARCH_SPACE_LIMIT ARCH_HANG_FLAG ARCH_TIMER_NAME ARCH_IS_VALID ARCH_WAIT_APPLY ARCH_INCOMING_PATH ARCH_CURR_DEST
---------- -------------- --------- ----------- -------------- ---------------- -------------- --------------- ------------- --------------- ------------------ --------------
1 ARCHIVE_LOCAL1 LOCAL /dm8/dmarch 512 51200 1 NULL Y NULL NULL /dm8/dmarch

7、经常使用函数

(一)执行检查点

select checkpoint(rate int);
说明:rate表示刷脏页百分比,取值范围1-100或0,若是为0表示全部脏页都刷新到磁盘,若是是30表示30%的脏页刷新到磁盘。

(二)INI参数管理

一、得到dm.ini文件中BUFFER参数值
select sf_get_para_value(1,'buffer');
二、将dm.ini文件中HFS_CACHE_SIZE参数值设置为320
sp_set_para_value (1,'hfs_cache_size',320);
也能够统一使用以下函数修改系统整型、double、varchar 的静态配置参数或动态配置参数:
sf_set_system_para_value ('join_hash_size',50,1,1);
三、设置会话级ini参数join_hash_size的值为2000
sf_set_session_para_value('join_hash_size',2000);
四、重置会话级ini参数join_hash_size的值
sp_reset_session_para_value('join_hash_size')
五、获取会话级ini参数join_hash_size的值:
select sf_get_session_para_value('join_hash_size');
六、设置服务器日志相关INI参数
select sf_set_sql_log(1, '3:5:7');

(三)杀掉会话

说明:281224128100360是v$sessions中的sess_id
sp_close_session(281224128100360);
终止 id 为 310509680 的会话的操做
call sp_cancel_session_operation (310509680);

(四)查询数据库基础信息

一、得到系统建库时指定的簇大小
select sf_get_extent_size ();
二、得到系统建库时指定的页大小
select sf_get_page_size ();
三、得到系统建库时指定字符集
select sf_get_unicode_flag ();
四、获取数据库惟一标志 sguid
select sf_get_sguid();
五、获取一个惟一编码串。
select guid();
六、返回当前链接 id
select sessid ();
七、返回当前用户 id
select uid();
八、返回当前用户名
select user();
九、获取数据库名
select cur_database();
十、获取系统当前时钟记数
select cur_tick_time();

(五)重组表空间空闲簇

call sp_reclaim_ts_free_extents('system');

(六)清空执行缓存信息

call sp_clear_plan_cache();

(七)执行计划

设置计划 id 为 473546872 的计划结果集缓存生效。
call sp_set_pln_rs_cache(473546872, 1);

清空 id 为 473546872 的执行缓存信息
call sp_clear_plan_cache(473546872);

(八)用户对表或列的权限

得到用户 sysdba 对表 sys.sysobjects 的查询权限
select sf_check_user_table_priv ('sys', 'sysobjects', 'sysdba', 0);
得到用户 sysdba 对表 sys.sysobjects 的 id 列的查询权限
select sf_check_user_table_col_priv ('sys', 'sysobjects', 'id' ,'sysdba', 0);
说明:0=select, 1=insert, 2=delete, 3=update,4=reference

(九)监控执行时间超过5秒的语句

监控结果存放在v$log_exec_sqls_time
call sp_set_long_time(5000);
查看 v$long_exec_sqls 监控的最短执行时间。
select sf_get_long_time();

(十)返回指定会话上最近处理的完整的语句

select sf_get_session_sql(96710784);

(十一)备份恢复管理

一、添加备份目录
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');
二、删除备份目录
SELECT SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/home/dm_bak');
三、清理所有备份目录
SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();
四、删除指定备份集
SELECT SF_BAKSET_REMOVE('DISK','/home/dm_bak/db_bak_for_remove',1);
五、批量删除知足指定条件的全部备份集。
SELECT SF_BAKSET_REMOVE_BATCH ('DISK', now(), NULL, NULL);
六、批量删除指定时间以前的数据库备份集
CALL SP_DB_BAKSET_REMOVE_BATCH('DISK', NOW());
七、批量删除指定表空间对象及指定时间以前的表空间备份集
CALL SP_TS_BAKSET_REMOVE_BATCH('DISK',NOW(),'MAIN');
八、批量删除指定表对象及指定时间以前的表备份集
CALL SP_TAB_BAKSET_REMOVE_BATCH('DISK',NOW(),'SYSDBA','TAB_FOR_BATCH_DEL');
九、批量删除指定时间以前的归档备份集
CALL SP_ARCH_BAKSET_REMOVE_BATCH('DISK', NOW());

(十二)对象相关信息管理

一、返回表/视图定义
CALL SP_TABLEDEF('PRODUCTION','PRODUCT');
CALL SP_VIEWDEF('PURCHASING','VENDOR_EXCELLENT');
二、获取check约束/unique约束/索引/同义词/序列
经过查询系统表,获得约束 ID 为 134217770,查询check约束定义:
SELECT A.name, A.ID FROM SYSOBJECTS A, SYSOBJECTS B WHERE B.NAME='TEST_CHECKDEF' AND A.PID=B.ID AND A.SUBTYPE$='CONS';
SELECT CHECKDEF(134217770,1);
经过查询系统表,系统生成 C2 上的 INDEX 为 33555481,查询unique约束定义:
SELECT C.INDEXID FROM SYSOBJECTS O,SYSCONS C WHERE O.NAME='CONS1' AND O.ID=C.ID;
SELECT CONSDEF(33555481,1);
查询系统表获得索引 ID,获取index的建立定义:
SELECT NAME, ID FROM SYSOBJECTS WHERE NAME='PRODUCT_IND' AND SUBTYPE$='INDEX';
SELECT indexdef(33555530,1);
获取同义词定义:
SELECT SYNONYMDEF('SYSDBA', 'SYSOBJECTS',0,1);
获取序列定义:
SELECT ID FROM SYSOBJECTS WHERE NAME='SEQ1'; --查出 id 为 167772160
SELECT SEQDEF(167772160, 1);
三、对指定索引进行空间整理
CALL SP_REORGANIZE_INDEX('PRODUCTION','PRODUCT_IND');
四、重建索引
SP_REBUILD_INDEX('SYSDBA', 33555530);
五、获取自增列当前值
SELECT IDENT_CURRENT('PRODUCTION.PRODUCT');

(十三)日志管理

一、删除三天以前的归档日志
SELECT SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE - 3);
二、删除 LSN 值小于 95560 的归档日志文件。
SELECT SF_ARCHIVELOG_DELETE_BEFORE_LSN(95560)

(十四)统计信息

一、对 SYSOBJECTS 表上全部的索引生成统计信息
CALL SP_TAB_INDEX_STAT_INIT ('SYS', 'SYSOBJECTS');
二、对库上全部模式下的全部用户表以及表上的全部索引生成统计信息
CALL SP_DB_STAT_INIT ();
三、对指定的索引 IND 生成统计信息
CALL SP_INDEX_STAT_INIT ('SYSDBA', 'IND');
四、对表 SYSOBJECTS 的 ID 列生成统计信息
CALL SP_COL_STAT_INIT ('SYS', 'SYSOBJECTS', 'ID');
五、对'SYSOBJECTS'表上全部的列生成统计信息
CALL SP_TAB_COL_STAT_INIT ('SYS', 'SYSOBJECTS');
六、对'SYSOBJECTS'表上全部的列生成统计信息,采样率 90
CALL SP_STAT_ON_TABLE_COLS ('SYS','SYSOBJECTS',90);
七、对表 SYSOBECTS 生成统计信息
CALL SP_TAB_STAT_INIT ('SYS', 'SYSOBJECTS');
八、对'SELECT * FROM SYSOBJECTS'语句涉及的全部表生成统计信息
CALL SP_SQL_STAT_INIT ('SELECT * FROM SYSOBJECTS');
九、清空索引 IND 的统计信息
CALL SP_INDEX_STAT_DEINIT ('SYSDBA', 'IND');
十、删除 SYSOBJECTS 的 ID 列的统计信息
CALL SP_COL_STAT_DEINIT ('SYS', 'SYSOBJECTS', 'ID');
十一、删除 SYSOBJECTS 表上全部列的统计信息
CALL SP_TAB_COL_STAT_DEINIT ('SYS', 'SYSOBJECTS');
十二、删除表 SYSOBECTS 的统计信息
CALL SP_TAB_STAT_DEINIT ('SYS', 'SYSOBJECTS');
1三、统计指定执行ID的全部操做符的执行时间
需设置INI参数ENABLE_MONITOR=一、MONITOR_TIME=1 和 MONITOR_SQL_EXEC=1。
select count(*) from sysobjects where name='SYSDBA';
已用时间: 14.641(毫秒). 执行号:26. 能够获得执行号为 26。
et(26);

(十五)资源监控

一、监测当前系统的内存空间是否低于阀值
CALL SP_CHECK_IDLE_MEM ();
二、监测 d:\data 路径下的磁盘空间是否低于阀值
CALL SP_CHECK_IDLE_DISK ('d:\data');
说明:对 指 定 位 置 的 磁 盘 空 间 进 行 检 测 , 并 在 低 于 阈 值 ( 对 应 INI 参 数IDLE_DISK_THRESHOLD)的状况下打印报警记录到日志,同时报磁盘空间不足的异常。
三、查看 DM 服务器对用户命令的平均响应时间
在 dm.ini 中 ENABLE_MONITOR 取值不小于 2 的前提下执行,单位秒
SELECT SYS.SF_GET_CMD_RESPONSE_TIME();
四、查看事务的平均响应时间
在 dm.ini 中 ENABLE_MONITOR 取值不为 0 的前提下执行,单位秒
SELECT SYS.SF_GET_TRX_RESPONSE_TIME();
五、查看数据库中用户态时间占总处理时间的比值
在 dm.ini 中 ENABLE_MONITOR 取值不小于 2 的前提下执行,用户态时时间占总处理时间的比值,该比值越大代表用于 IO、事务等待等耗费的时间越少
SELECT SYS.SF_GET_DATABASE_TIME_PER_SEC();

(十六)空间占用

一、查看用户占用的空间
可使用系统函数USER_USED_SPACE获得用户占用空间的大小,函数参数为用户名,返回值为占用的页的数目。
SELECT USER_USED_SPACE('TEST_USER');
二、查看表占用的空间
可使用系统函数TABLE_USED_SPACE获得表对象占用空间的大小,函数参数为模式名和表名,返回值为占用的页的数目。
SELECT TABLE_USED_SPACE('SYSDBA', 'TEST');
三、查看表使用的页数
可使用系统函数TABLE_USED_PAGES获得表对象实际使用页的数目,函数参数为模式名和表名,返回值为实际使用页的数目。
SELECT TABLE_USED_PAGES('SYSDBA', 'TEST');
四、查看索引占用的空间
可使用系统函数INDEX_USED_SPACE获得索引占用空间的大小,函数参数为索引ID,返回值为占用的页的数目。
SELECT INDEX_USED_SPACE(33555463);
五、查看索引使用的页数
可使用系统函数INDEX_USED_PAGES获得索引实际使用页的数目,函数参数为索引ID,返回值为实际使用页的数目。
SELECT INDEX_USED_PAGES(33555463);
六、获取整个数据库占用的页数
SELECT DB_USED_SPACE ();

(十七)其余杂类函数

一、将整型数 2010,2,2,5,5 转换成日期时间类型SELECT TO_DATETIME (2010,2,2,5,5);二、清空动态性能视图 V$SQL_HISTORY 的历史数据SP_DYNAMIC_VIEW_DATA_CLEAR('V$SQL_HISTORY');三、解锁用户call SP_UNLOCK_USER('USER123');四、得到表达式的内部存储字节select dump('an',1017);五、让一个线程睡眠 1 秒钟以后,再醒过来继续运行sleep(1);六、获取表的行数,功能和 SP_GET_TABLE_COUNT 同样SELECT SP_GET_TABLE_COUNT(1097);

相关文章
相关标签/搜索