怎么用命令行操作oracle数据库众所周知,一般操作系统会提供定时执行任务的方法,例如:Unix平台上提供了让系统定时执行任务的命令Crontab 。但是,对于某些需求,例如:一些对数据库表的操作,最为典型的是证券交易所每日收盘后的结算 , 它涉及大量的数据库表操作,如果仍然利用操作系统去定时执行,不仅需要大量的编程工作,而且还会出现用户不一致等运行错误,甚至导致程序无法执行 。
一、分析问题
事实上,对于以上需求,我们可以利用数据库本身拥有的功能Job Queue(任务队列管理器)去实现 。任务队列管理器允许用户提前调度和安排某一任务,使其能在指定的时间点或时间段内自动执行一次或多次,由于任务在数据库中被执行,所以执行效率很高 。
任务队列管理器允许我们定制任务的执行时间,并提供了灵活的处理方式,还可以通过配置 , 安排任务在系统用户访问量少的时段内执行 , 极大地提高了工作效率 。例如 , 对于数据库日常的备份、更新、删除和复制等耗时长、重复性强的工作 , 我们就可以利用任务队列管理器去自动执行以减少工作量 。
目前,拥有此项功能的数据库有许多,最有代表性的是SQL Server 7.0、Oracle 8.0.5等 。但是,要让任务队列管理器工作,还需要我们加以配置才能实现 。SQL Server的功能配置是在一个图形化界面(GUI)中实现的 , 非常简单 。利用OEM客户端管理工具 , Oracle的配置也可以在一个图形界面中完成 。然而大多数的用户更习惯于命令行的方式去操纵数据库 。本文介绍如何通过命令行实现这种配置 。
二、实现步骤
1.确保Oracle的工作模式允许启动任务队列管理器
Oracle定时执行“Job Queue”的后台程序是SNP进程 , 而要启动SNP进程,首先要确保整个系统的模式是可以启动SNP进程的,这需要以DBA的身份去执行如下命令:
svrmgrl alter system enable restricted session;
或sql alter system disenable restricted session;
利用如上命令更改系统的会话方式为disenable restricted,为SNP的启动创造条件 。
2.确保Oracle的系统已经配置了任务队列管理器的启动参数
SNP的启动参数位于Oracle的初始化文件中,该文件放在$ORACLE_HOME/dbs路径下,如果Oracle的SID是myora8的话 , 则初始化文件就是initmyora8.ora , 在文件中对SNP启动参数的描述部分如下:
job_queue_process=n
job_queue_interval=N
第一行定义SNP进程的启动个数为n 。系统缺省值为0,正常定义范围为0~36,根据任务的多少 , 可以配置不同的数值 。
第二行定义系统每隔N秒唤醒该进程一次 。系统缺省值为60秒,正常范围为1~3600秒 。事实上 , 该进程执行完当前任务后,就进入睡眠状态,睡眠一段时间后,由系统的总控负责将其唤醒 。
如果该文件中没有上面两行 , 请按照如上配置添加 。配置完成后,需要重新启动数据库,使其生效 。注意:如果任务要求执行的间隔很短的话 , N的配置也要相应地小一点 。
3.将任务加入到数据库的任务队列中
调用Oracle的dbms_job包中的存储过程 , 将任务加入到任务队列中:
dbms_job.submit( job out binary_integer,
what in archar2,
next_datein date,
interval in varchar2,
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;
4.将要执行的任务写成存储过程或其他的数据库可执行的pl/sql程序段
例如,我们已经建立了一个存储过程,其名称为my_job,在sql/plus中以scott用户身份登录,执行如下命令:
sql variable n number;
sql begin
dbms_job.submit(:n‘my_job;’,sysdate,
‘sysdate+1/360’);
commit;
end;
/
系统提示执行成功 。
Sql print :n;
系统打印此任务的编号 , 例如结果为300 。
如上,我们创建了一个每隔4分钟执行一次的任务号为300的任务 。可以通过Oracle提供的数据字典user_jobs察看该任务的执行情况:
sql select job,next_date,next_sec,failures,broken from user_jobs;
执行结果如下:
job next_date next_sec failures broken
300 2000/10/10 11:45:15 0 N
这表示任务号为300的任务,下一次将在2000/10/10 11:45:15执行,此任务的执行失败记录为0次 。注意:当执行job出现错误时 , Oracle将其记录在日志里,失败次数每次自动加1 。当执行失败次数达到16时,Oracle就将该job标志为broken 。此后 , Oracle不再继续执行它,直到用户调用过程dbms_job.broken,重新设置为not broken,或强制调用dbms_job.run来重新执行它 。
除了以上我们讨论的submit存储过程之外,Oracle还提供了其他许多存储过程来操作任务 。例如:dbms_job.change 、 dbms_job.what、dbms_job.interval可以用来修改提交的任务 。要想删除该任务 , 只需运行dbms_job.remove(n)即可,其中n为任务号 。
oracle登录数据库的命令;
1、启动oracle数据库:从root切换到oracle用户进入:su-oracle进入sqlplus环境 , nolog参数表示不登录:sqlplus/nolog以管理员模式登录:sqlplus 。
2、数据库监听:启动监听服务:lsnrctlstart停止监听服务:lsnrctlstop查看监听状态 。
3、用户权限管理:注:以下命令都需要DBA权限 。
ORACLE的sqlplus中执行查询命令查询方法如下oracle怎么执行命令:
1、win键 R键oracle怎么执行命令,输入cmdoracle怎么执行命令,打开命令提示符oracle怎么执行命令:
2、输入sqlplus 用户名/密码@实例名
3、输入查询命令 。
如:
select * from dept;
oracle怎么运行cmd命令?在windowsoracle怎么执行命令的cmd命令行中执行 sqlplus 用户名/密码@orcl进入sqlplus命令行
alter user system identified by systemadmin 为什么结果显示 2
sqlplus每个命令应该以 分号结尾oracle怎么执行命令 , 你没有分号oracle怎么执行命令,sqlplus程序显示2,表示第二行,等待你的输入 。
你输入分号即可 。
或者一开始输入oracle怎么执行命令:alter user system identified by systemadmin;
【oracle怎么执行命令 oracle语句怎么执行】oracle怎么执行命令的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于oracle语句怎么执行、oracle怎么执行命令的信息别忘了在本站进行查找喔 。
推荐阅读
- 最危险的飞行队游戏下载,十大最危险的飞机
- android使用flutter控件,flutter 自定义控件
- 视频照片怎么在电视播放,播放电视视频的照片
- linux怎么开命令行,linux怎样打开命令行
- mysql是怎么预编译的 mysql怎么编程
- gis打开时脚本错误,arcgis102脚本错误
- ios如何下载历史版本的软件,ios如何卸载软件
- ios单机破解游戏,ios单机破解版游戏
- 包含稳定的windows系统的词条