结合EM快速解决复杂的配置问题(r4笔记第91天)
图形工具在学习中一般是不作为推荐工具使用的,很多时候可能工作环境都是字符界面,远程连接,基本没有可能接触到图形工具,图形工具的好处真是一把双刃剑,功能丰富全面而且极其方面,这是优点也是缺点,如果一旦脱离了图形工具,可能就会发现自己会的东西越来越少。在工作中,有时候有些同事会问我 一些关于toad,SQLDeveloper的使用细节,很多时候自己都有些陌生,因为确实使用这些图形工具的机会相对比比较少,但是也不能一味排斥这些工具,一旦有紧急问题的时候,有些图形工具的功能还是很给力的。 前段时间客户有个需求,需要在在某个用户下创建一个物化视图,通过db link来从源数据中刷新得到数据,但是刷新的频率有一定的要求,他们希望在每天凌晨4点半的时候刷新这个物化视图,这个工作看起来还是很简单的。 操作系统层面可以通过crontab来完成。 如果通过脚本,可以通过shell运行,然后设定sleep时间,基本能够满足要求。 如果从数据库层面,scheduler job就是一个很不错的选择。dbms_scheduler算是dbms_job的升级版,可以灵活地搭配对应的程序(pl/sql)和调度来完成,这个时候程序和调度就像零件一样,可以在不同的job中灵活组配。 客户倾向于从数据库层面来完成。这个时候思路就很清晰,需要创建program,创建scheduler,然后在job中加载program,scheduler 说起来容易做起来难,如果在文档中查找,也能做出来,但是需要花一些时间来验证,而且很有可能出错,这个时候如果通过图形工具也是一个不错的选择。可能这个时候工作环境中没有图形界面,通过远程连接这些都是不可以实现的, 没有条件我们要创造条件,我们可以在本地安装一套数据库软件,配置EM就可以开工了,但是EM或者Grid control有一个很不错的选项就是show sql的功能,本地创建没有意义,但是我们可以把对应的sql语句拷贝出来,略作修改就是最终的脚本了。 看看通过EM创建job是多么的简单。 创建scheduler的截图如下:
创建program的截图如下:
创建job的截图如下:
来看看show sql生成的语句吧。 创建scheduler的语句。
BEGIN
sys.dbms_scheduler.create_schedule(
repeat_interval => 'FREQ=DAILY;BYHOUR=4;BYMINUTE=30;BYSECOND=0',
start_date => systimestamp at time zone 'Pacific/Pago_Pago',
schedule_name => '"SYSTEM"."REFRESH_SNAP_BY_DAY"');
END;
创建program的语句
BEGIN
DBMS_SCHEDULER.CREATE_PROGRAM(
program_name=>'"SYSTEM"."PROGRAM_REFRESH_SNAP"',
program_action=>'exec dbms_mview.refresh(''XX'',''C'');',
program_type=>'PLSQL_BLOCK',
number_of_arguments=>0,
comments=>'',
enabled=>TRUE);
END;
创建job的语句
BEGIN
sys.dbms_scheduler.create_job(
job_name => '"SYSTEM"."JOB_REFRESH_SNAP"',
program_name => '"SYSTEM"."PROGRAM_REFRESH_SNAP"',
schedule_name => '"SYSTEM"."REFRESH_SNAP_BY_DAY"',
job_class => '"DEFAULT_JOB_CLASS"',
auto_drop => FALSE,
enabled => TRUE);
END;
所以也不要一味排斥图形工具,毕竟我们只是为了让自己工作效率提高,白猫黑猫啊,抓住老鼠就是好猫,合理使用图形工具还是值得推荐的。
- shell脚本自动化采集性能sql(r2笔记39天)
- R语言与点估计学习笔记(EM算法与Bootstrap法)
- 开发 | 为个人深度学习机器选择合适的配置
- 阿里音乐流行趋势预测竞赛数据清洗整合——纯python
- 生产环境sql语句调优实战第二篇(r2第38天)
- 生产环境sql语句调优实战第三篇(r2笔记38天)
- 简单易学的机器学习算法——K-Means算法
- 通过shell脚本定位性能sql和生成报告(r2笔记37天)
- VXFS启用异步IO导致的严重问题(r2笔记56天)
- 通过sql语句分析足彩(r2笔记55天)
- 关于验证表中有无数据的方法比较(r2笔记54天)
- 海量数据迁移之分区并行抽取(r2笔记53天)
- 海量数据迁移之外部表切分(r2笔记52天)
- 怎样突破表名30个字符的限制(r2笔记51天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在Linux中如何查看可用的网络接口详解
- Linux程序运行时加载动态库失败的解决方法
- Linux/CentOS系统同步网络时间的2种方法详解
- Linux 常用命令之Linux more命令使用方法
- Ubuntu下VIM配置成C++开发编辑器
- Ubuntu环境下使用G++编译CPP文件
- Linux下Tomcat的几种运行方式讲解
- linux中chmod命令用法详解
- Linux强制释放占用端口以及Linux防火墙端口开放方法详解
- CentOS7.5从零安装Python3.6.6的教程详解
- 实现一台或者多台Linux实例解绑SSH密钥对
- centos7切换启动内核与切换启动模式的讲解
- Ubuntu下Sublime Text无法输入中文最简单的解决方案
- 详解linux系统输入输出管理和vim的常用功能
- 查看远程 Linux 系统中某个端口是否开启的三种方法