达梦数据库系列—45.系统存储过程总结

目录

参数

数据库

执行计划

会话

备份恢复

数据守护

归档日志

[SQL LOG](#SQL LOG)

统计信息


参数

查询数值类型参数值

--语法格式:

select SF_GET_PARA_VALUE (scope int, paraname varchar(256));

--SCOPE 参数为 1 表示获取 INI 文件中配置参数的值

--SCOPE 参数为 2 表示获取内存中配置参数的值

--例如:获取 DM.INI 文件中动态参数 HFS_CACHE_SIZE 的当前值

select SF_GET_PARA_VALUE (1,'HFS_CACHE_SIZE');

查询浮点型参数值

--语法格式

select SF_GET_PARA_DOUBLE_VALUE(scope int, paraname varchar(8187));

--SCOPE 参数为 1 表示获取 INI 文件中配置参数的值

--SCOPE 参数为 2 表示获取内存中配置参数的值

--例如:获取内存中 参数SEL_RATE_EQU 的当前值

select SF_GET_PARA_DOUBLE_VALUE(2,'SEL_RATE_EQU');

查询字符串类型参数值

--语法格式

select SF_GET_PARA_STRING_VALUE(scope int, paraname varchar(8187));

--SCOPE 参数为 1 表示获取 INI 文件中配置参数的值

--SCOPE 参数为 2 表示获取内存中配置参数的值

--例如:获取 DM.INI 文件中动态参数 SQL_TRACE_MASK 的当前值

select SF_GET_PARA_STRING_VALUE(1,'SQL_TRACE_MASK');

获得当前会话的某个会话级 INI 参数的值

--语法格式

select SF_GET_SESSION_PARA_VALUE (paraname varchar(8187));

--例如:获取当前会话 USE_HAGR_FLA 参数的值

select SF_GET_SESSION_PARA_VALUE ('USE_HAGR_FLAG');

修改整型参数

SP_SET_PARA_VALUE (scope int, paraname varchar(256), value int64);

SP_SET_PARA_VALUE (1,'HFS_CACHE_SIZE',320);

修改浮点型参数

SP_SET_PARA_DOUBLE_VALUE(scope int,paraname varchar(8187),value double);

SP_SET_PARA_DOUBLE_VALUE(1, 'SEL_RATE_EQU', 0.3);

修改系统整型、double、 varchar的配置参数

--语法格式

SF_SET_SYSTEM_PARA_VALUE(paraname varchar(256),value int64\double\varchar(256),deferred int,scope int64);

--DEFERRED 参数为 0 表示当前 session 修改的参数立即生效,默认为 0

--DEFERRED 参数为 1 表示当前 session 不生效,后续再生效

--SCOPE 参数为 1 表示在内存和 INI 文件中都修改参数值,此时只能修改动态的配置参数

--SCOPE 参数为 2 表示只在 INI 文件中修改配置参数,此时可用来修改静态配置参数和动态配置参数

--例如:将动态参数 ENABLE_DDL_ANY_PRIV 设置为 1,且当前 session 立即生效

select SF_SET_SYSTEM_PARA_VALUE('ENABLE_DDL_ANY_PRIV',1,0,1);

修改会话级INI参数的值,设置的参数值只对本会话有效

SF_SET_SESSION_PARA_VALUE (paraname varchar(8187), value bigint);

--例如:将 USE_HAGR_FLAG 设置为 1,且只对本会话有效

select SF_SET_SESSION_PARA_VALUE ('USE_HAGR_FLAG',1);

重置某个会话级 INI 参数的值

--语法格式

SP_RESET_SESSION_PARA_VALUE (paraname varchar(8187));

--例如:重置 USE_HAGR_FLAG

select SP_RESET_SESSION_PARA_VALUE ('USE_HAGR_FLAG');

数据库

查看版本

select id_code();

SELECT SF_GET_UNICODE_FLAG ();

查看字符集

select UNICODE ();

查看页大小

select SF_GET_PAGE_SIZE();

查看簇大小

SELECT SF_GET_EXTENT_SIZE ();

查看永久魔数

SELECT PERMANENT_MAGIC();

打开监听

SP_OPEN_LSNR();

关闭监听

SP_CLOSE_LSNR();

查看表定义

CALL SP_TABLEDEF('SYSDBA', 'ORDERS');

根据对象类型、对象名、对象所属模式返回DDL语句 :

SELECT SF_DBMS_METADATA_GET_DDL(OBJECT_TYPE=>'TABLE',OBJECT_NAME=>'DICT_AREA',SCHNAME=>'TEST');

查看视图定义

CALL SP_VIEWDEF('SYSDBA', 'VIEW1');

查看约束定义

//通过查询系统表

SELECT C.INDEXID FROM SYSOBJECTS O,SYSCONS C WHERE O.NAME='CONS1' AND O.ID=C.ID;

//系统生成C2上的INDEX为33555481

SELECT CONSDEF(33555481,1);

查看索引定义

//查询系统表得到索引ID

SELECT NAME, ID FROM SYSOBJECTS WHERE NAME='PRODUCT_IND' AND SUBTYPE$='INDEX';

SELECT indexdef(33555530,1);

查看全文索引定义

//查询系统表得到全文索引ID

select name, id from sysobjects where name='PRODUCT_CINd';

select context_index_def(33555531, 1);

查看同义词定义

SELECT SYNONYMDEF('SYSDBA', 'SYSOBJECTS',0,1);

查看序列定义

SELECT ID FROM SYSOBJECTS WHERE NAME='SEQ1'; //查出id为167772160

SELECT SEQDEF(167772160, 1);

禁用/启用触发器

SP_ENABLE_EVT_TRIGGER('SYSDBA', 'TRI_1', 1);

SP_ENABLE_EVT_TRIGGER('SYSDBA', 'TRI_1', 0);

分配给表的页面数

SELECT TABLE_USED_SPACE('SYSDBA','SPACE_TABLE');

表已使用的页面数

SELECT TABLE_USED_PAGES('SYSDBA','SPACE_TABLE');

表的总行数

SELECT TABLE_ROWCOUNT('SYSDBA','TAB1');

执行计划

仅当历史执行计划持久化功能打开(USE_PLN_POOL!=0,ENABLE_MONITOR_PLNHIST=1)时,使用 DBMS_XPLAN 包才有意义。

展示sql语句的历史执行计划

如果还未创建过系统包。请先调用系统过程创建系统包

SP_CREATE_SYSTEM_PACKAGES (1,'DBMS_XPLAN');

DBMS_XPLAN.DISPLAY_PLANHIST('SELECT C1 FROM T1;');

会话

杀会话

SP_CLOSE_SESSION(510180488);

解锁用户

SP_UNLOCK_USER('USER123');

查看当前用户

SELECT USER();

查看当前数据库

SELECT CUR_DATABASE();

查看当前用户ID

SELECT UID();

查看当前会话ID

SELECT SESSID ();

备份恢复

查看备份集信息,需要先添加备份目录,V$BACKUPSET_SEARCH_DIRS有目录信息,当前会话执行查询。

添加备份目录

SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm/backup');

删除备份目录,只删目录不删文件

SELECT SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/dm/backup');

SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();

删除备份目录,删除文件

SELECT SF_BAKSET_REMOVE('DISK','/dm/backup/db_full_bak_01',1)

删除备份集

SELECT SF_BAKSET_REMOVE_BATCH ('DISK', now(), NULL, NULL);

删除满足指定条件的所有库级备份集

SELECT SF_BAKSET_REMOVE_BATCH_S ('DISK', now(), NULL, NULL);

删除满足指定条件的所有库级备份集,保留备份时间最新的 n 个库级完全备份集

SELECT SF_BAKSET_REMOVE_BATCH_N ('DISK', now(), NULL, NULL, 2);

删除指定时间之前的数据库备份集

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());

BACKUP ARCHIVELOG BACKUPSET '/dm/backup/arch_bak_for_batch_del';

SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm/backup');

CALL SP_ARCH_BAKSET_REMOVE_BATCH('DISK', NOW());

数据守护

设置OGUID

SP_SET_OGUID (451245);

设置实时归档有效/无效

SP_SET_RT_ARCH_VALID ();

SP_SET_RT_ARCH_INVALID ();

获取实时归档状态

SELECT SF_GET_RT_ARCH_STATUS ();

归档日志

设置刷脏页百分比为 30% 的检查点

SELECT CHECKPOINT(30);

删除三天之前的归档

SELECT SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE - 3);

删除 LSN 值小于 95560 的归档日志文件

SELECT SF_ARCHIVELOG_DELETE_BEFORE_LSN(95560);

SQL LOG

使配置生效

SP_REFRESH_SVR_LOG_CONFIG();

修改 SVR_LOG 参数为1

sp_set_para_value(1,'SVR_LOG',1);

统计信息

对库上所有模式下的所有用户表以及表上的所有索引生成统计信息

CALL SP_DB_STAT_INIT ();

对某张表生成统计信息

SP_TAB_STAT_INIT ('SYS', 'SYSOBJECTS');

对表上所有的索引生成统计信息

SP_TAB_INDEX_STAT_INIT ('SYS', 'SYSOBJECTS');

对某个表上所有的列生成统计信息

SP_TAB_COL_STAT_INIT ('SYS', 'SYSOBJECTS');

对指定的索引生成统计信息

SP_INDEX_STAT_INIT ('SYSDBA', 'IND');

对指定的列生成统计信息

SP_COL_STAT_INIT ('SYS', 'SYSOBJECTS', 'ID');

对某个表上所有的列,按照指定的采样率生成统计信息

SP_STAT_ON_TABLE_COLS ('SYS','SYSOBJECTS',90);

对'SELECT * FROM SYSOBJECTS'语句涉及的所有表生成统计信息

SP_SQL_STAT_INIT ('SELECT * FROM SYSOBJECTS');

相关推荐
云和数据.ChenGuang16 分钟前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys44 分钟前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi1 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据2 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi3 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀3 小时前
Redis梳理
数据库·redis·缓存
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天3 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺4 小时前
分布式系统架构:服务容错
数据库·架构
独行soc5 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘