Oracle中通过命令行实现定时操作详解 Oracle中通过命令行实现定时操作详解 Oracle中通过命令行实现定时操作详解 Oracle基础
众所周知 一般操作系统会提供定时执行任务的方法 例如 Unix平台上提供命令行oracle怎么用了让系统定时执行任务的命令Crontab 但是 对于某些需求 例如 一些对数据库表的操作 最为典型的是证券交易所每日收盘后的结算 它涉及大量的数据库表操作 如果仍然利用操作系统去定时执行 不仅需要大量的编程工作 而且还会出现用户不一致等运行错误 甚至导致程序无法执行
一 分析问题
事实上 对于以上需求 命令行oracle怎么用我们可以利用数据库本身拥有的功能Job Queue(任务队列管理器)去实现 任务队列管理器允许用户提前调度和安排某一任务 使其能在指定的时间点或时间段内自动执行一次或多次 由于任务在数据库中被执行 所以执行效率很高
任务队列管理器允许我们定制任务的执行时间 并提供了灵活的处理方式 还可以通过配置 安排任务在系统用户访问量少的时段内执行 极大地提高了工作效率 例如 对于数据库日常的备份 更新 删除和复制等耗时长 重复性强的工作 我们就可以利用任务队列管理器去自动执行以减少工作量
目前 拥有此项功能的数据库有许多 最有代表性的是SQL Server Oracle 等 但是 要让任务队列管理器工作 还需要我们加以配置才能实现 SQL Server的功能配置是在一个图形化界面(GUI)中实现的 非常简单 利用OEM客户端管理工具 Oracle的配置也可以在一个图形界面中完成 然而大多数的用户更习惯于命令行的方式去操纵数据库 本文介绍如何通过命令行实现这种配置
二 实现步骤
.确保Oracle的工作模式允许启动任务队列管理器
Oracle定时执行 Job Queue 的后台程序是SNP进程 而要启动SNP进程 首先要确保整个系统的模式是可以启动SNP进程的 这需要以DBA的身份去执行如下命令
svrmgrl alter system enable restricted session; 或sql alter system disenable restricted session;
利用如上命令更改系统的会话方式为disenable restricted 为SNP的启动创造条件
.确保Oracle的系统已经配置了任务队列管理器的启动参数
SNP的启动参数位于Oracle的初始化文件中 该文件放在$ORACLE_HOME/dbs路径下 如果Oracle的SID是myora 的话 则初始化文件就是initmyora ora 在文件中对SNP启动参数的描述部分如下
job_queue_process=n job_queue_interval=N
第一行定义SNP进程的启动个数为n 系统缺省值为 正常定义范围为 ~ 根据任务的多少 可以配置不同的数值
第二行定义系统每隔N秒唤醒该进程一次 系统缺省值为 秒 正常范围为 ~ 秒 事实上 该进程执行完当前任务后 就进入睡眠状态 睡眠一段时间后 由系统的总控负责将其唤醒
如果该文件中没有上面两行 请按照如上配置添加 配置完成后 需要重新启动数据库 使其生效 注意 如果任务要求执行的间隔很短的话 N的配置也要相应地小一点
.将任务加入到数据库的任务队列中
调用Oracle的dbms_job包中的存储过程 将任务加入到任务队列中
dbms_job submit( job out binary_integer what in archar next_datein date interval in varchar no_parse in boolean)
其中
●job 输出变量 是此任务在任务队列中的编号
●what 执行的任务的名称及其输入参数
●next_date 任务执行的时间
●interval 任务执行的时间间隔 下面详细讨论一下dbms_job submit中的参数interval 严格地讲 interval是指上一次执行结束到下一次开始执行的时间间隔 当interval设置为null时 该job执行结束后 就被从队列中删除 假如我们需要该job周期性地执行 则要用 sysdate+m 表示
将任务加入到任务队列之前 要确定执行任务的数据库用户 若用户是scott 则需要确保该用户拥有执行包dbms_job的权限 若没有 需要以DBA的身份将权利授予scott用户
svrmgrl grant execute on dbms_job to scott;
.将要执行的任务写成存储过程或其他的数据库可执行的pl/sql程序段
例如 我们已经建立了一个存储过程 其名称为my_job 在sql/plus中以scott用户身份登录 执行如下命令
sql variable n number; sql begin dbms_job submit(:n my_job; sysdatesysdate+ / ); mit; end; /
系统提示执行成功
Sql print :n;
系统打印此任务的编号 例如结果为
如上 我们创建了一个每隔 分钟执行一次的任务号为 的任务 可以通过Oracle提供的数据字典user_jobs察看该任务的执行情况
sql select job next_date next_sec failures broken from user_jobs;
执行结果如下
job next_date next_sec failures broken / / : : N
这表示任务号为 的任务 下一次将在 / / : : 执行 此任务的执行失败记录为 次 注意 当执行job出现错误时 Oracle将其记录在日志里 失败次数每次自动加 当执行失败次数达到 时 Oracle就将该job标志为broken 此后 Oracle不再继续执行它 直到用户调用过程dbms_job broken 重新设置为not broken 或强制调用dbms_job run来重新执行它
lishixinzhi/Article/program/Oracle/201311/17096
如何在命令行重启oracle数据库?方法:
1. 打开secureCRT,连接到数据库所在的linux机器 。若用户为root,请输入命令“su - oracle”并回车,若要密码,输入密码后并回车,就切换到了oracle用户下 。
2. 关掉oracle的监听进程:命令为“lsnrctl stop”并回车,这时外部没法连接到数据库了 。如图有提示关闭成功信息 。
3.先杀掉所有session , “ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCAL=NO|awk '{print $2}'|xargs kill”也可以用其他办法 。然后用sqlplus登录到数据库 。命令依次为:“sqlplus /nolog”-“connect / as sysdba” ,最后用命令关闭oracle数据库"shutdown immediate"。关闭命令的时候需要等待点时间,成功后会有如图的提示 。
4.用命令"exit"退出sqlplus 。然后用命令“lsnrctl start”启动数据库的监听进程 。如图提示语句表明启动成功 。
5.先用sqlplus登录到数据库 。命令依次为:“sqlplus /nolog”-“connect / as sysdba” 。然后输入命令“startup”并回车 。等待几分钟会出现如图提示信息 。最后用命令“exit”退出sqlplus 。
如何通过命令行启动oracle1.
打开命令行窗口界面,可以同时按住“ctrl R”键,在弹出来的运行窗口中输入cmd 。
2.
启动oracle服务,在命令行窗口中输入“net
start
oracleserviceXXXX”后面的XXXX实际是需要根据您自己的数据库实例名进行替换 。如果您不知道,可以看下“计算机管理”界面下的服务中,能不能找到服务名类似的服务 。提示“服务已经启动成功”就说明服务启动起来了 。
3.
启动监听程序,在命令行窗口输入lsnrctl
start,等到提示“命令执行成功”就可以了 。
怎么用命令行操作oracle数据库初步接触oracle命令行oracle怎么用,推荐使用sqlplus 。如果命令行oracle怎么用你是装在windows上命令行oracle怎么用,直接在运行写输入sqlplus即可调用 。用linux或unix只需在命令行下输入sqlplus
/
as
sysdba
linux下怎么启动oracle数据库,命令是什么?启动oracle数据库步骤:\x0d\x0a首先使用oracle用户登录Linux , 然后在shell命令行中执行下面的命令:\x0d\x0a第一步:打开Oracle监听\x0d\x0a$ lsnrctl start\x0d\x0a第二步:进入sqlplus\x0d\x0a$ sqlplus /nolog\x0d\x0aSQL\x0d\x0a第三步:使用sysdab角色登录sqlplus\x0d\x0aSQL conn /as sysdba\x0d\x0a第四步:启动数据库\x0d\x0aSQL startup\x0d\x0a经过上面的四个步骤,oracle数据库就可以启动了 。\x0d\x0a关闭数据库用 shutdown 是要等待事物结束才关闭,强制关闭用 shutdown abort 。
【命令行oracle怎么用 oracle命令行执行sql语句】关于命令行oracle怎么用和oracle命令行执行sql语句的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- sqlserver2008r2日志,sqlserver 日志
- 微商如何推广自己的产品,微商如何推广自己的产品视频
- 抖音直播可以带货么,抖音直播可以直接带货吗
- windows系统打架的简单介绍
- 图片加文字居中css样式,css让图片和文字居中对齐的属性
- jquery手标移入事件,jquery鼠标移上去事件
- php日均一亿数据量 php数据统计分析
- 路由器怎么看连接的宽带,如何查看路由器网络
- 冬天亲子拍摄什么,冬季最佳亲子游目的地