Oracle中通過(guò)命令行實(shí)現(xiàn)定時(shí)操作詳解 Oracle中通過(guò)命令行實(shí)現(xiàn)定時(shí)操作詳解 Oracle基礎(chǔ)
阜康網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
眾所周知 一般操作系統(tǒng)會(huì)提供定時(shí)執(zhí)行任務(wù)的方法 例如 Unix平臺(tái)上提供了讓系統(tǒng)定時(shí)執(zhí)行任務(wù)的命令Crontab 但是 對(duì)于某些需求 例如 一些對(duì)數(shù)據(jù)庫(kù)表的操作 最為典型的是證券交易所每日收盤(pán)后的結(jié)算 它涉及大量的數(shù)據(jù)庫(kù)表操作 如果仍然利用操作系統(tǒng)去定時(shí)執(zhí)行 不僅需要大量的編程工作 而且還會(huì)出現(xiàn)用戶(hù)不一致等運(yùn)行錯(cuò)誤 甚至導(dǎo)致程序無(wú)法執(zhí)行
一 分析問(wèn)題
事實(shí)上 對(duì)于以上需求 我們可以利用數(shù)據(jù)庫(kù)本身?yè)碛械墓δ躂ob Queue(任務(wù)隊(duì)列管理器)去實(shí)現(xiàn) 任務(wù)隊(duì)列管理器允許用戶(hù)提前調(diào)度和安排某一任務(wù) 使其能在指定的時(shí)間點(diǎn)或時(shí)間段內(nèi)自動(dòng)執(zhí)行一次或多次 由于任務(wù)在數(shù)據(jù)庫(kù)中被執(zhí)行 所以執(zhí)行效率很高
任務(wù)隊(duì)列管理器允許我們定制任務(wù)的執(zhí)行時(shí)間 并提供了靈活的處理方式 還可以通過(guò)配置 安排任務(wù)在系統(tǒng)用戶(hù)訪(fǎng)問(wèn)量少的時(shí)段內(nèi)執(zhí)行 極大地提高了工作效率 例如 對(duì)于數(shù)據(jù)庫(kù)日常的備份 更新 刪除和復(fù)制等耗時(shí)長(zhǎng) 重復(fù)性強(qiáng)的工作 我們就可以利用任務(wù)隊(duì)列管理器去自動(dòng)執(zhí)行以減少工作量
目前 擁有此項(xiàng)功能的數(shù)據(jù)庫(kù)有許多 最有代表性的是SQL Server Oracle 等 但是 要讓任務(wù)隊(duì)列管理器工作 還需要我們加以配置才能實(shí)現(xiàn) SQL Server的功能配置是在一個(gè)圖形化界面(GUI)中實(shí)現(xiàn)的 非常簡(jiǎn)單 利用OEM客戶(hù)端管理工具 Oracle的配置也可以在一個(gè)圖形界面中完成 然而大多數(shù)的用戶(hù)更習(xí)慣于命令行的方式去操縱數(shù)據(jù)庫(kù) 本文介紹如何通過(guò)命令行實(shí)現(xiàn)這種配置
二 實(shí)現(xiàn)步驟
.確保Oracle的工作模式允許啟動(dòng)任務(wù)隊(duì)列管理器
Oracle定時(shí)執(zhí)行 Job Queue 的后臺(tái)程序是SNP進(jìn)程 而要啟動(dòng)SNP進(jìn)程 首先要確保整個(gè)系統(tǒng)的模式是可以啟動(dòng)SNP進(jìn)程的 這需要以DBA的身份去執(zhí)行如下命令
svrmgrl alter system enable restricted session; 或sql alter system disenable restricted session;
利用如上命令更改系統(tǒng)的會(huì)話(huà)方式為disenable restricted 為SNP的啟動(dòng)創(chuàng)造條件
.確保Oracle的系統(tǒng)已經(jīng)配置了任務(wù)隊(duì)列管理器的啟動(dòng)參數(shù)
SNP的啟動(dòng)參數(shù)位于Oracle的初始化文件中 該文件放在$ORACLE_HOME/dbs路徑下 如果Oracle的SID是myora 的話(huà) 則初始化文件就是initmyora ora 在文件中對(duì)SNP啟動(dòng)參數(shù)的描述部分如下
job_queue_process=n job_queue_interval=N
第一行定義SNP進(jìn)程的啟動(dòng)個(gè)數(shù)為n 系統(tǒng)缺省值為 正常定義范圍為 ~ 根據(jù)任務(wù)的多少 可以配置不同的數(shù)值
第二行定義系統(tǒng)每隔N秒喚醒該進(jìn)程一次 系統(tǒng)缺省值為 秒 正常范圍為 ~ 秒 事實(shí)上 該進(jìn)程執(zhí)行完當(dāng)前任務(wù)后 就進(jìn)入睡眠狀態(tài) 睡眠一段時(shí)間后 由系統(tǒng)的總控負(fù)責(zé)將其喚醒
如果該文件中沒(méi)有上面兩行 請(qǐng)按照如上配置添加 配置完成后 需要重新啟動(dòng)數(shù)據(jù)庫(kù) 使其生效 注意 如果任務(wù)要求執(zhí)行的間隔很短的話(huà) N的配置也要相應(yīng)地小一點(diǎn)
.將任務(wù)加入到數(shù)據(jù)庫(kù)的任務(wù)隊(duì)列中
調(diào)用Oracle的dbms_job包中的存儲(chǔ)過(guò)程 將任務(wù)加入到任務(wù)隊(duì)列中
dbms_job submit( job out binary_integer what in archar next_date in date interval in varchar no_parse in boolean)
其中
●job 輸出變量 是此任務(wù)在任務(wù)隊(duì)列中的編號(hào)
●what 執(zhí)行的任務(wù)的名稱(chēng)及其輸入?yún)?shù)
●next_date 任務(wù)執(zhí)行的時(shí)間
●interval 任務(wù)執(zhí)行的時(shí)間間隔 下面詳細(xì)討論一下dbms_job submit中的參數(shù)interval 嚴(yán)格地講 interval是指上一次執(zhí)行結(jié)束到下一次開(kāi)始執(zhí)行的時(shí)間間隔 當(dāng)interval設(shè)置為null時(shí) 該job執(zhí)行結(jié)束后 就被從隊(duì)列中刪除 假如我們需要該job周期性地執(zhí)行 則要用 sysdate+m 表示
將任務(wù)加入到任務(wù)隊(duì)列之前 要確定執(zhí)行任務(wù)的數(shù)據(jù)庫(kù)用戶(hù) 若用戶(hù)是scott 則需要確保該用戶(hù)擁有執(zhí)行包dbms_job的權(quán)限 若沒(méi)有 需要以DBA的身份將權(quán)利授予scott用戶(hù)
svrmgrl grant execute on dbms_job to scott;
.將要執(zhí)行的任務(wù)寫(xiě)成存儲(chǔ)過(guò)程或其他的數(shù)據(jù)庫(kù)可執(zhí)行的pl/sql程序段
例如 我們已經(jīng)建立了一個(gè)存儲(chǔ)過(guò)程 其名稱(chēng)為my_job 在sql/plus中以scott用戶(hù)身份登錄 執(zhí)行如下命令
sql variable n number; sql begin dbms_job submit(:n my_job; sysdate sysdate+ / ); mit; end; /
系統(tǒng)提示執(zhí)行成功
Sql print :n;
系統(tǒng)打印此任務(wù)的編號(hào) 例如結(jié)果為
如上 我們創(chuàng)建了一個(gè)每隔 分鐘執(zhí)行一次的任務(wù)號(hào)為 的任務(wù) 可以通過(guò)Oracle提供的數(shù)據(jù)字典user_jobs察看該任務(wù)的執(zhí)行情況
sql select job next_date next_sec failures broken from user_jobs;
執(zhí)行結(jié)果如下
job next_date next_sec failures broken / / : : N
這表示任務(wù)號(hào)為 的任務(wù) 下一次將在 / / : : 執(zhí)行 此任務(wù)的執(zhí)行失敗記錄為 次 注意 當(dāng)執(zhí)行job出現(xiàn)錯(cuò)誤時(shí) Oracle將其記錄在日志里 失敗次數(shù)每次自動(dòng)加 當(dāng)執(zhí)行失敗次數(shù)達(dá)到 時(shí) Oracle就將該job標(biāo)志為broken 此后 Oracle不再繼續(xù)執(zhí)行它 直到用戶(hù)調(diào)用過(guò)程dbms_job broken 重新設(shè)置為not broken 或強(qiáng)制調(diào)用dbms_job run來(lái)重新執(zhí)行它
lishixinzhi/Article/program/Oracle/201311/17096
初步接觸oracle,推薦使用sqlplus。如果你是裝在windows上,直接在運(yùn)行寫(xiě)輸入sqlplus即可調(diào)用。用linux或unix只需在命令行下輸入sqlplus
/
as
sysdba
1,非集群下 Windows環(huán)境下數(shù)據(jù)庫(kù)
conn scott/123@127.0.0.1:1521/orcl
conn scott/123456@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =
(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =
(SERVER = DEDICATED)(SERVICE_NAME = orcl)))
Linux環(huán)境下數(shù)據(jù)庫(kù)
conn scott/123@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST
= 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME =
orcl)))
2,集群下連接
conn scott/123@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE = yes)(FAILOVER = on)
(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(ADDRESS=
(PROTOCOL=TCP)(HOST=127.0.0.2)(PORT=1521)))(CONNECT_DATA=(SERVER=default)
(SERVICE_NAME=orcl)))
擴(kuò)展資料
在命令行中登錄oracle數(shù)據(jù)庫(kù):
sqlplus username/password ?如:普通用戶(hù)登錄 ?sqlplus scott/tiger
sqlplus username/password as sysdba 如:sqlplus sys/admin as sysdba
sqlplus username/password@net_service_name 如: sqlplus scott/tiger@orcl
sqlplus username/password@//host:port/sid
參考資料:百度百科 - Oracle數(shù)據(jù)庫(kù)
啟動(dòng)oracle數(shù)據(jù)庫(kù)步驟:\x0d\x0a首先使用oracle用戶(hù)登錄Linux,然后在shell命令行中執(zhí)行下面的命令:\x0d\x0a第一步:打開(kāi)Oracle監(jiān)聽(tīng)\x0d\x0a$ lsnrctl start\x0d\x0a第二步:進(jìn)入sqlplus\x0d\x0a$ sqlplus /nolog\x0d\x0aSQL\x0d\x0a第三步:使用sysdab角色登錄sqlplus\x0d\x0aSQL conn /as sysdba\x0d\x0a第四步:?jiǎn)?dòng)數(shù)據(jù)庫(kù)\x0d\x0aSQL startup\x0d\x0a經(jīng)過(guò)上面的四個(gè)步驟,oracle數(shù)據(jù)庫(kù)就可以啟動(dòng)了。\x0d\x0a關(guān)閉數(shù)據(jù)庫(kù)用 shutdown 是要等待事物結(jié)束才關(guān)閉,強(qiáng)制關(guān)閉用 shutdown abort。
1、首先打開(kāi)命令行窗口,切換到su - oracle,啟動(dòng)數(shù)據(jù)庫(kù)監(jiān)聽(tīng)。
2、打開(kāi)sqlplus。
3、用sys賬戶(hù)以sysdba的身份登錄。
4、輸入sys用戶(hù)的密碼,然后按下enter。
5、登錄成功后,輸入startup。
6、稍等片刻,可以看到數(shù)據(jù)庫(kù)實(shí)例已經(jīng)運(yùn)行了。
分享題目:命令行oracle怎么用 Oracle怎么使用
文章網(wǎng)址:http://www.chinadenli.net/article42/hpgpec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、、網(wǎng)站營(yíng)銷(xiāo)、自適應(yīng)網(wǎng)站、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)