目录
[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');