Snapshot refresh DBMS Jobs
Hello,
I have a snapshot scheduled to refresh every hour. I have noticed that job is actually not running every hour. Here is an example of what i am trying to explain.
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'dbms_refresh.refresh(''"Schema"."FLODS_RENEW_MV"'');'
,next_date => TO_DATE('08/08/2006 09:22:00','dd/mm/yyyy hh24:mi:ss')
,INTERVAL => 'SYSDATE+1/24 '
,no_parse => TRUE
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || TO_CHAR(x));
END;
COMMIT;
This runs approximately for 3 mins. And i noticed today that the next_date changed the time to next_date => TO_DATE('08/08/2006 10:25:00','dd/mm/yyyy hh24:mi:ss').
So, is there any way to schedule a job every hour? Insted of every hour after the job finished executing?
Thanks
Hi,
This is one of the good reasons for using dbms_scheduler instead of dbms_job. dbms_scheduler supports a calendar syntax (actually a modified iCal RFC 2445 standard) for scheduling at regular intervals. The following job skeleton runs every hour at 22 mins after the hour starting immediately
begin
dbms_scheduler.create_job(
job_name=>'my_hourly_job',
job_type=>'plsql_block',
job_action=>'my_proc();',
repeat_interval=>'freq=hourly;byminute=22;bysecond=0',
enabled=>true , auto_drop=>true
end;
This is much clearer than using an ugly PL/SQL time function with TRUNC . It also deals automatically with daylight savings time switchovers which is uncertain with the PL/SQL time function.
With the new calendar syntax there should really be no reason to revert to time functions.
Hope this helps,
Ravi.
Similar Messages
-
Hi,
I would like to know how to create a snapshot refresh group that would refresh the snapshot daily between 0800 hrs to 1700 hrs.
Appreciate any inputs.
Thanks & Kind Regards,
ZaidStandard disclaimer-- 8.0.5 has been desupported for many years, you really ought to upgrade. Most of the folks on this and other forums haven't seen an 8.0.5 system in quite some time, so there may be version-specific caveats that we've long forgotten.
When a job fails, the error should be written to the alert log.
When a job fails, it will be rescheduled with an increasing delay (1 sec, 2 sec, 4 sec, 8 sec, ...) for 16 times. If it fails 16 times in a row, the job is marked as broken.
You can use the DBMS_JOB.BROKEN method to indicate that a job is no longer broken. You generally want to fix the underlying problem first, though.
Justin -
Hi
Need help here. The following is the script to create one of our snapshots.
CREATE SNAPSHOT PREEM_VIEW_SNP
PCTFREE 0
PCTUSED 99
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 25600 K
NEXT 5120 K
MINEXTENTS 1
MAXEXTENTS 505
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT)
TABLESPACE BP_DATA
LOGGING
NOCACHE
NOPARALLEL
USING INDEX PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
BUFFER_POOL DEFAULT)
REFRESH COMPLETE
NEXT TRUNC(SYSDATE+1) + 6.5/24
WITH ROWID
USING DEFAULT LOCAL ROLLBACK SEGMENT
DISABLE QUERY REWRITE AS
select cust_id customer_id,BTN || BTN_CUST_CD || RPAD(BTN_SORT_CD, 1) || RPAD(BTN_SFX, 4) || RPAD(BTN_ST_CD, 1)BLG_ACCT_TLPHN_NO
from CSBAN10V@UCDWP001
where ACCT_MKT_UN_ID in ('C', 'D', 'F', 'G', 'I',
'L', 'O', 'P', 'R', 'S', 'V', 'W')
Im concerned about the NEXT TRUNC(SYSDATE+1) + 6.5/24 part. It says the snapshot refreshes every day at 6:30 am.
I need to schedule the refreshes every day except Saturday and Sunday. Got any idea how can I do that?
PrashYou would probably want to use the dbms_job package to schedule the refresh in that case, rather than scheduling the refresh in the materialized view creation. Write a function that returns the next refresh time for your snapshot and pass that in when you create your job.
Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC -
Snapshot Refresh taking More Time
Dear All,
We are facing a Snapshot refresh problem currently in Production Environment.
Oracle Version : Oracle8i Enterprise Edition Release 8.1.6.1.0
Currently we have created a Snapshot on a Join with 2 remote tables using Synonyms.
ex:
CREATE SNAPSHOT XYZ REFRESH COMPLETE WITH ROWID
AS
SELECT a.* FROM SYN1 a, SYN2 b
Where b.ACCT_NO=a.ACCT_NO;
We have created a Index on the above Snapshot XYZ.
Create index XYZ_IDX1 on XYZ (ACCT_NO);
a. The Explain plan of the above query shows the Index Scan on SYN1.
If we query above Select Statement,it hardly takes 2 seconds to exedute.
b. But the Complete Refresh of Snapshot XYZ is almost taking 20 Mins for just truncating and inserting 500 records and is generating huge Disk Reads as SYN1 in remote table consists of 32 Million records whereas SYN2 contains only 500 Records.
If we truncate and insert inot a table as performed by the Complete refresh of Snapshot,it hardly takes 4 Seconds to refresh the table.
Please let me know what might be the possible reasons for the Complete refresh of Snapshot taking more time.Dear All,
While refreshing the Snapshot XYZ,I could find the following.
a. Sort/Merge operation was performed while inserting the data into Snapshot.
INSERT /*+ APPEND */ INTO "XYZ"
SELECT a.* FROM SYN1 a, SYN2 b Where b.ACCT_NO=a.ACCT_NO;
The above operation performed huge disk reads.
b. By Changing the session parameter sort_area_size ,the time decreased by 50% but still the disk reads are huge.
I would like to know why Sort/Merge Operation is performed in the above Insert?
Edited by: Prashanth Deshmukh on Mar 13, 2009 10:54 AM
Edited by: Prashanth Deshmukh on Mar 13, 2009 10:55 AM -
How to track Snapshot refresh error
Hi
I have a procedure which is doing the below transaction one after one:
1- Refresh snapshot Snap1
2- track snapshot refresh status If Ok do step 3 if not exit
2- Insert agregate data from snapshot Snap1 to table
3- Track insertion status if Ok proceed on next steps if not exit
3- commit
To refresh the snapshot here is the syntaxe i want to use.
DBMS_SNAPSHOT.refresh('Snap1','F');
If refresh ok then
insert into T1 select ..... from Snap1;
commit;
end if;
Thank you.I try to show/hide a div depending on the occurence of errors. I resolved this problem by doing this in javascript.
function showEdu(){
$("#edu").animate({ height: 'show', opacity: 'show' }, 'slow');
$s('P6_EDU_SHOWN','Y');
function hideEdu(){
$("#edu").animate({ height: 'hide', opacity: 'hide' }, 'slow');
$s('P6_EDU_SHOWN','N');
function checkEduError(){
if($("span").hasClass("errTxt") == true)
{showEdu();}
else
if($v('P6_EDU_SHOWN') == 'Y')
{showEdu();}
else
{hideEdu();}
} -
Hi.,
I am facing following error on during the snapshot refresh at 8i
ORA-04052: error occurred when looking up remote object [email protected]
ORA-00604: error occurred at recursive SQL level 2
ORA-02085: database link RT.PRDU connects to RT
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 617
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 674
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 654
ORA-06512: at line 1
Provide me the suitable solution.
Thanks in advance.Try to solve the following error :
ORA-02085 database link string connects to string
Cause: The database link attempted to connect to a database with a different name. The name of the database link must be the same name as the name of the database.
Action: Create a database link with the same name as the database to which it connects.
What's the name of the dblink ?
Nicolas.
Message was edited by:
N. Gasparotto -
ORA-12008: error in snapshot refresh path
I am getting this error even i am specifying to use other rollback segment
ALTER ROLLBACK SEGMENT R02 SHRINK;
SET TRANSACTION USE ROLLBACK SEGMENT R02;
alter materialized view PAY_REV_BREAKUPWITHWOFF NOLOGGING;
BEGIN dbms_mview.refresh('PAY_REV_BREAKUPWITHWOFF') ; END;
ERROR at line 1:
ORA-12008: error in snapshot refresh path
ORA-01562: failed to extend rollback segment number 1
ORA-01628: max # extents (505) reached for rollback segment SYS_RBS
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 617
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 674
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 654
ORA-06512: at line 1The reason why it's still using SYS_RBS seems to be that since you are refreshing a materialized view, it might be doing parallel DMLs. In this case the clause of specifying a particular rollback segment is ignored.
In addition to the above, try taking the rollback segment offline by executing
alter rollback segment SYS_RBS offline;
and then drop it by running
drop rollback segment SYS_RBS;
Then create new one and see if it works.
if the above mentioned doesn't work somehow...
try to change the extents storage parameter by running
alter rollback segment sys_rbs storage (MAXEXTENTS 1000);
Can't be sure as i currently don't have access to my system
Hope this helps
Message was edited by:
thrilller -
UNDO SPACE DURING SNAPSHOT REFRESH
Hi All,
I am seeing a weird issue with mu undo space in oracle 10g 10.2.0.3.
Problem is ....
I am doing a complete snapshot refresh from a remote database to source database. When I do this the snapshot refresh is consuming my all undo, I can see this by executing
select distinct segment_name,sum(bytes)/1024/1024/1024 from dba_segments where tablespace_name='UNDO_TBS' group by segment_name;
SEGMENT_NAME SUM(BYTES)
_SYSSMU16$ 39.931324
My total undo space is 40GB
Why the snapshot refresh is consuming all the undo. Any idea? Appreciate your help.Hi,
You can use the undocumented parameter "_mav_refresh_consistent_read" - refresh materialized views using consistent read snapshot (it will reduced the undo log issues).
The Basic problem is "ATOMIC_REFRESH" is true or enable. try to make it false and check
ATOMIC_REFRESH=>false
Example :- execute DBMS_MVIEW.REFRESH(''view_name,'C’,ATOMIC_REFRESH=>false);
- Pavan Kumar N -
Dbms job change in schedule time
Hi
Just not sure about the dbms jobs reschedule on oracle 11g on linux ..
I have a dbms job running every day by hour 20 now i want to change it to 23 hours for today and again back to normal hour 20.
can some one help me in the working steps for this to happen .
Thanks in advance
Edited by: 790072 on 12/06/2012 19:02>
I have a dbms job running every day by hour 20 now i want to change it to 23 hours for today and again back to normal hour 20.
>
Use the DBMS_JOB.CHANGE procedure to change the next job time.
See the example in the DBMS_JOB chapter of the packages and types doc
http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_job.htm
Search for CHANGE Procedure and follow the example
>
Usage Notes
•You must issue a COMMIT statement immediately after the statement.
•The parameters instance and force are added for job queue affinity. Job queue affinity gives users the ability to indicate whether a particular instance or any instance can run a submitted job.
•If the parameters what, next_date, or interval are NULL, then leave that value as it is.
Example
BEGIN
DBMS_JOB.CHANGE(14144, null, null, 'sysdate+3');
COMMIT;
END; -
I have to run a job every dat at midnight. How do I set my job interval to run a dbms job every day at a set time.
Thank youWell, because the date also has the time. Oh and Oracle actually 'see's ' midnight as AM not PM
In SqlPlus do the following:
alter session set nls_date_format='dd-mon-yyyy hh:mi pm' ;
select trunc(sysdate+1) from dual;
select trunc(sysdate+1)+12/144 from dual;
select trunc(sysdate+1)+90/144 from dual;
You get the idea
Thank you so much. trunc(sysdate+1) is next day isn't it? How does system know to run exactly at 12:00 PM. -
PLSQL DBMS JOB - how to schedule ?
Hi, I came across the process type "PLSQL DBMS JOB" - how can I schedule it within APEX?
I understood using PLSQL DBMS JOB it just executes once and thats it.
I like to use the process PLSQL DBMS JOB to execute once a day and call a procedure I have defined already. A code example wud be v.m. appreciated.
TIA
BernhardFirst you need to make sure your init.ora has the following things defined<br><br>
job_queue_processes=2<br>
job_queue_interval=10<br>
<br>the value above are recommended by Oracle<br><br>when I did this and restarted the database with the new init.ora (or pfile) it said something was no longer used so what I am suggesting above may not be entirely required but it seems to have worked for me...
<br><br>
then its just a case of executing the following<br><br>
declare<br>
jobno number;<br>
BEGIN<br>
dbms_job.submit(JobNo, 'begin my_thing_to_execute; end;', SYSDATE,
'SYSDATE + 1/24');<br>
COMMIT;<br>
dbms_output.put_line(jobno);<br>
END;<br>
<br>
the first sysdate is when to run next, the second sysdate+1/24 is how often to run so this is saying run hourly. if you want daily then it would be just +1.<br><br>that should get ya going to start with anyway. it can pay to put a little insert into a dummy table in your code that you want the dbmsjob to execute so then you know for sure that its working.<br><br>if you are talking about a dbms job thing in APEX then this is probably irrelevant as this is a dbmsjob in the database, not through APEX -
How to Reschedule the DBMS jobs after Cloning
Hi ,
Before Cloning , i took the backup of dbms jobs using the command
SELECT job, what, next_date, next_sec FROM dba_jobs;
After the clone is done , how should I resubmit the job?. Do we need to submit the job using the plsql block with commit in like below
VARIABLE jobno NUMBER
BEGIN
DBMS_JOB.SUBMIT(:jobno,
what=>'statspack_alert.sql;',
next_date=>sysdate,
interval=>'sysdate+1' );
COMMIT;
END;
or
Can I submit the jobs directly like below
Execute dbms_job.submit(
what=>'statspack_alert.sql;',
next_date=>sysdate,
interval=>'sysdate+1');
In the plsql block , can i hard code the job number?.
If we are using the bind variable, when the job is sumbitted , does it get assigned with job number?
Do we need to submit the job as the owner of that job or sysdba can submit the job on behalf of the owner?
Please address my questions
Thanks
NaveenCan I submit the jobs directly like below
Execute dbms_job.submit(
what=>'statspack_alert.sql;',
next_date=>sysdate,
interval=>'sysdate+1');What happens when you actually do it?
Why ask us rather than do it yourself?
PROCEDURE SUBMIT
Argument Name Type In/Out Default?
JOB BINARY_INTEGER OUT
WHAT VARCHAR2 IN
NEXT_DATE DATE IN DEFAULT
INTERVAL VARCHAR2 IN DEFAULT
NO_PARSE BOOLEAN IN DEFAULT
INSTANCE BINARY_INTEGER IN DEFAULT
FORCE BOOLEAN IN DEFAULT
In the plsql block , can i hard code the job number?.NO
If we are using the bind variable, when the job is sumbitted , does it get assigned with job number?yes, see above
Do we need to submit the job as the owner of that job or sysdba can submit the job on behalf of the owner?No option to assign OWNER, so need to CONNECT as desired owner before DBMS_JOB.SUMBIT -
Hi all,
I'm getting the below warning message in enterprise manager home at one of the nodes of RAC.
The Availability calculations for the cluster database target are disabled. Please enable the DBMS JOB EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS for Database Control.*
What does this mean ? Any idea ?
Thanks in advance.
Dhaval.Hi there,
The reason I found for this warning was that EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS() was broken.
I fixed it by executing DBMS exec DBMS_JOB.RUN(<<job number>>);
where job number can be obtained from select job,broken,what,log_user,schema_user from dba_jobs;
Thanks for all your efforts.
Regards,
Dhaval. -
Hi,
I have a query regarding jobs. We refresh production to quality server. So this way all jobs also would be refreshed to quality from production. Now i will have all the jobs but i do not want same scheduling(as of production for my quality) and actually want the scheduling that was previously defined for my quality system jobs to be effective now after i have refreshed the system from production. So how i may do this? is there a way to take a backup of scheduling times of jobs before quality refresh so i can manitian same later having refreshed from production.
Also is there a way to completely restore the older (before refresh all jobs of quality) to quality again may this would help me to get my older scheduling?
Please let me know.
Regards,
Ashish Robinson
SAP BASIS Team
Edited by: Ashish V Robinson on Oct 5, 2011 7:43 AMHi Ashish,
When you are performing the system copy with PRD data.There are some pre-steps needs to taken care to avoid issues after building the target system with PRD data.
1.Disable communication between source systems ( sm59 )
2. Disable background job processing by running BTCTRNS1
3.Complete message processing in source landscape.
If your target system already exist in your landscape before going to perform the refresh with PRD data take secure information backup in your target system.
1.User master data
2.RFC tables backup.
3.Background jobs information and background job tables backup using transport of copies method.
If you follow above steps you won't face any difficulty after system copy with PRD data.
What you have to do is the secure information which you have taken in target system you need to import in your target system.
I hope it will help you.
Regards,
Kiran .V -
We have 4 node 9iRAC and running majority of our jobs using DBMS jobs scheduler.
I was wondering, how does oracle do load balancing for DBMS jobs.
Some time I see node one taking the most of the load ?
Thanks
-AshokIn 10g it's the dbms_scheduler which is service name aware. Just define the job_class and associate it with a specified service.
DBMS_JOB.INSTANCE or DBMS_JOB.CHANGE is about the only built in tools that you have to work with in the 9I version.
Maybe you are looking for
-
How can i use an email address with an apostrophe as my apple ID
I need use a school email address for a new Apple ID but it has an apostrophe, and Apple does not see it as a valid address. How can I use that email?
-
EPrint problem with CP1525nw - connection error
I just installed a CP1525nw in our home network. It's wired, and we can print and access the printer's web page from every computer - no problems with local printing. However, I'm not able to successfully complete the ePrint setup. When printing the
-
GRC AC 10 CUA Configuration for Data Sources
When using CUA as the search data source in GRC AC 10.0 the search is not working. If I change the data source to my ECC system it works fine. Also trying to use CUA as the first sequence in the Details sources, but it does not work either. Also noti
-
BAPI_ACC_INVOICE_RECEIPT_POST
Hi, can someone tell me the required parameter of the Fm. I want to post some parked invoice through this. Thanks, sanjukta
-
Standard vs Pro for Terminal Services
I know Acrobat Standard and Pro both have support for TS, but is one better suited for TS then the other?