常用的数据库功能操作

数据库 waitig 470℃ 百度已收录 0评论

常用的数据库功能操作

物化视图,查询DLL,定时任务

物化视图

也叫做实例视图

【不建议使用,由于没有索引等优化手段,一旦数据量大些造成性能的问题。】

【还有个问题是在使用的时候,遇到公司的数据库主备库同步数据,这个物化视图‘很可能’倒是同步数据失败[(ノ`Д)ノ当初找了好久这个原因]】

测试代码:

CREATE MATERIALIZED VIEW VM_REPORT_OPEN_MERCHANT
BUILD IMMEDIATE   --在视图编写好后创建  
--更新方式COMPLETE 完全刷新  刷新时间 360分钟 
REFRESH COMPLETE NEXT  SYSDATE + 360/(24*60)  
ENABLE QUERY REWRITE   --可读
AS 
select ****这里就是个查询语句****;

刷新方式 FAST 快速增量刷新,的限制太多,[统计之类的都不可以使用]只有简单到视图才可以使用的感觉。


查询数据库DLL

就是查询数据库的表、视图、存储等的具体的创建语句等东东

查看表的索引等东东
SELECT DBMS_METADATA.GET_DDL(s.OBJECT_TYPE,s.OBJECT_NAME) 
FROM user_objects s LEFT JOIN USER_indexes i 
on s.OBJECT_NAME=i.INDEX_NAME  
WHERE i.TABLE_NAME='APP_USER' OR s.OBJECT_NAME='APP_USER' ORDER BY s.OBJECT_NAME;
--APP_USER 需要查询的表的名称
查看 表、视图、存储等的创建语句:
SELECT DBMS_METADATA.GET_DDL('TABLE','APP_USER')  as sql FROM dual; --表
SELECT DBMS_METADATA.GET_DDL('VIEW','V_APP_USER')  as sql FROM dual; --视图
SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW','VM_MERCHANT_TRADING')  as sql FROM dual; --物化视图
SELECT DBMS_METADATA.GET_DDL('PROCEDURE','PROC_TRANSREPORT_DIRECT_MODE')  as sql FROM dual; --存储过程

数据库定时任务

查看启用的定时任务
select * from user_jobs;
停止和开启任务
begin
    dbms_job.remove(1);  --1任务的Job .broken(121,true); --暂停     .run(121)--启动
    commit; 
 end;
创建任务
begin  --每一天 凌晨1点
    declare jobno number;
BEGIN
    sys.dbms_job.submit(jobno,
            'DELETE_OS_DATA;',  --执行的存储过程名称 what
            TRUNC(sysdate) + 1 +1 / (24), --next——date执行时间 可为‘’  我通常都是写上的和下个参数一样的内容
            'TRUNC(sysdate) + 1 +1 / (24)' --interval,关键设置 定时的时间字符串
    );
    commit; 
END; end;
--参数说明:
--job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作;
--what参数是将被执行的PL/SQL代码块;
--next_date参数指识何时将运行这个工作。写Job的时候可以不指定该值;
--interval参数何时这个工作将被重执行。
interval设置和示例

1、 每分钟执行 Interval => TRUNC(sysdate,’mi’) + 1 / (24*60)

2、 每天定时执行
例如:每天的凌晨2点执行 Interval => TRUNC(sysdate) + 1 +2 / (24)

3、 每周定时执行
例如:每周一凌晨2点执行 Interval => TRUNC(next_day(sysdate,2))+2/24 --星期一,一周的第二天

4、 每月定时执行
例如:每月1日凌晨2点执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24

5、 每季度定时执行
例如每季度的第一天凌晨2点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 2/24

6、 每半年定时执行
例如:每年7月1日和1月1日凌晨2点
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+2/24

7、 每年定时执行
例如:每年1月1日凌晨2点执行
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+2/24

8、每天早上8点30分 :
‘TRUNC(SYSDATE + 1) +(8*60+30)/(24*60)’

9、每天00:30 : TRUNC(sysdate) + 1 + 30 / (24*60)

前一半为获取系统时间 +号后面‘1’表示1天


20171104 整理 小杭
数据库:Oracle 版本不知道



本文由【waitig】发表在等英博客
本文固定链接:常用的数据库功能操作
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)