How to use OEM to run a script against many targets and send result by emai
Is there a way to use OEM to query the RMAN backup against many targets (databases) and have all the results send to you by a single email?
The script is :
SELECT a.instance_name, b.session_key, b.session_recid, b.session_stamp, b.command_id,
b.status, b.start_time, b.time_taken_display, b.input_type,
b.output_device_type, b.input_bytes_display, b.output_bytes_display,
b.output_bytes_per_sec_display
FROM
v$instance a, V$RMAN_BACKUP_JOB_DETAILS b WHERE ( b.start_time > (SYSDATE - 30) ) order
by b.start_time
Thanks.
Are you using a RMAN catalog? If not, you can used UDM's (this will be messy w/o a RMAN catalog) for what you want to do.
What I started out doing was....
You can create a UDM and push that UDM out to the targets you want. The problem with UDM's, is you can only pull 1 or 2values. I started down this same path and wrote a sql to concatenate the data into one value, such as
SELECT '|'||input_type||'|'||status||'|'||start_time||'|'||end_time||'|'||ROUND(elapsed_seconds,2)||'|'||time_taken_display||'|'
FROM v$rman_backup_job_details
WHERE (INPUT_TYPE, START_TIME)
IN
( SELECT input_type, MAX(START_TIME)
FROM v$rman_backup_job_details
GROUP BY INPUT_TYPE
AND INPUT_TYPE = 'DB FULL';
Do not put any warning/critical thresholds in the UDM and just let OEM Agent gather the data and pull it back into the SYSMAN repository.
You can then look at this view, SYSMAN. MGMT$METRIC_DETAILS to find the correct SQL to pull out the data you need. This view is made up of a 4 way union between 4 sql's. Once you find the SQL you need, then you can pull this information out and into a custom table of your own.
Once you have data into another table, you will then have to extract the concatenated string out, parse it out and report on it. This is where I stopped and said there has to be a better way.
I then thought about it and the RMAN catalog has all this, assuming you are using a RMAN Catalog.
I wrote a piece of dynamic sql to loop through the rman catalog to pull this out into a historical table and store the data. Then I can report on it from there. If you have a RMAN catalog, this works much better.
I also use UDM's to use OEM as a data extract tool to pull the number of archivelogs and bytes my databases create on an hourly basis. I pull 2 values, bytes and # of logs. So this works well with UDM's, don't have to concatenate a bunch of values and then parse it back out again.
I push this UDM to all databases, and have it run hourly. Then daily, I extract this information into a custom table and then use analytic functions to determine how much space is needed on the db servers for archivelogs for a 24 hour time frame. This helps with sizing our log destinations and gives us legitimate reports for Storage teams.
I can also build reports on how many archive logs are generated on a daily, weekly, monthly basis per database. Good for analysis and charge back methods.
Similar Messages
-
Someone is using faebook to run java script to get data and email from me in windows 8
someone is using faebook to run java script to get data and email from me in windows 8
Is this a developer question?
Jeff Sanders (MSFT)
@jsandersrocks - Windows Store Developer Solutions
@WSDevSol
Getting Started With Windows Azure Mobile Services development?
Click here
Getting Started With Windows Phone or Store app development?
Click here
My Team Blog: Windows Store & Phone Developer Solutions
My Blog: Http Client Protocol Issues (and other fun stuff I support) -
How can I perform performance runs of a set of tests and compare results across runs?
I have automated some scenarios using VS unit test frame work for a desktop application. I can see when running I get timing for how long the test takes.
What I'd like to do (using the test frame work or another tool) is run these scenarios before and after a performance fix and get an easy to read delta report on how much faster or slower each scenario got.
How can I achieve this with Visual Studio?Hi Chris,
Thank you for posting in the MSDN forum.
If you want to collect the performance for the test code directly. Maybe the Profiler tool would be helpful for you.
Like this MSDN document:
http://msdn.microsoft.com/en-us/library/hh270865.aspx
To diagnose why a test method is taking too much time, select the method in Test Explorer and then choose Profile on the context menu. See
Analyzing Application Performance by Using Profiling Tools.
Best Regards,
Jack
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey. -
How to use canon pixma MX377. I can't receive and send fax messages
Can please anyone send me complete instruction manual in english for my pixma canon MX377 machine because I can't receive and send fax messages. I'm connected to a PBX extension line or a xDSL splitter. Every time i called a person on the machine, I can hear him but he can't hear me. Thank you very much.
Hi rgc,
The PIXMA MX377 user's manual is available in an online format and can be downloaded from the Canon Asia website. The following link will take you to the Manuals page for the PIXMA MX377:
http://support-asia.canon-asia.com/P/search?model=PIXMA+MX377&filter=0&menu=manual
Once on the page, please scroll through the list and select the manual that corresponds to your operating system (Windows or Mac), then click the DOWNLOAD NOW button on the following page that appears to download and view the manual.
This didn't answer your question or issue? Find more help at Contact Us.
Did this answer your question? Please click the Accept as Solution button so that others may find the answer as well. -
How to use OEM to moniter sql server 2000
Hi,
I need to learn How to use OEM to moniter sql server 2000.
Can anyone help me and give me some website or documents
to read?
So I can learn to do this job.
Thanks.See Note 115302.1 in Metalink.oracle.com
in how to use OEM Diagnostic pack addon for SQL Server
Or search for
oem "user events"
to build your own monitor script. -
How to prevent Automator's "run shell script" to create fully decomposed forms of my strings ?
I am using Automator's "run shell script" and I am seeing that it outputs fully decomposed forms of my strings.
For example, when I set the action to "echo été" in a service (with "Replace selected text" activated) and run that into a Textwrangler window, I'll get fully decomposed forms that Textwrangler won't understand. But when I simply type that command into Terminal, I get my string in composed form.
The problem is not the display issue, but the fact that if I want to run grep for example in "run shell script", I will not be able to find the proper strings since the forms are different.Originally I was using $@ to parse a string and get the result pasted by the service. That was a while ago. There, I noticed that some Japanese characters were messed up. Basically all the kana characters that come with voicing markers like が-ga (instead of か-ka) etc. I did not have the time to pursue that issue though.
Then, last night, I found that a colleague of mine had tried to use $@ to feed to a local dictionary application called ding (http://ftp.tu-chemnitz.de/pub/Local/urz/ding/). His problem was with characters that had umlauts. After verifying how he wrote his action I remembered that I had similar issues with Japanese.
Basically his command was "/path/to/ding $@"
That's supposed to use the selected string as an argument to pass to ding, which will launch a Wish application where the string is used as the searched item.
From Terminal, that works a treat. But the exact same line in Automator (with input as argument, not as stdin) messed the composition and the resulting string was not recognized by ding as a match to what it was supposed to match.
So, I tried a few things to get to the core of the issue and found that a simple "echo [accented characters]" was enough to reproduce the difference in string handling between Automator and Terminal. That difference is also reproduced on a number of person's machines.
I have a number of services that basically revolve on "run shell script" actions and involve 3rd party application outputs, preference files etc. so it would not be convenient to show that to you.
I have sent a mail about this issue to the automator list yesterday too:
http://lists.apple.com/archives/Automator-users/2011/Jun/msg00004.html -
How to use IF Conditon in SAP Scripts?
Hi Guys,
I am having adoubt how to use IF conditon with multiple variables in SAp Scripts
for ex If a>b and a>c and a>d
Elseif b>a and b>c and b> d.
Elseif .....
endif.
How to use above example in SAP Scripts.
thanks,
Gopi.hi Gopi,
it is almost the same as normal ABAP, you only have to use & before and after the variable and the variable has to be in capitals and you have to make the line as command ( /: before the line )
IF &A& > &B& AND ...
text to print
ELSEIF ...
text to print
ENDIF.
hope this helps
ec -
How to use perform statements in sap scripts
how to use perform statements in sap scripts . and pls send me one progam for this
thnaks
rajaHi Raja,
<b>PERFORM</b> key work is used to include subroutine in sapscript form...
But the processing is lttle bit different form the one we use in ABAP.
Here the paramters passed to form is stored in internal table of name-value table. there are two table one for inbound parameter and other for outbound parameters.
Check out the example below to see how this is used..
<b>Definition in the SAPscript form:</b>
/: PERFORM GET_BARCODE IN PROGRAM QCJPERFO
/: USING &PAGE&
/: USING &NEXTPAGE&
/: CHANGING &BARCODE&
/: ENDPERFORM
/ &BARCODE&
<b>Coding of the calling ABAP program:</b>
REPORT QCJPERFO.
FORM GET_BARCODE TABLES IN_PAR STUCTURE ITCSY
OUT_PAR STRUCTURE ITCSY.
DATA: PAGNUM LIKE SY-TABIX, "page number
NEXTPAGE LIKE SY-TABIX. "number of next page
READ TABLE IN_PAR WITH KEY PAGE.
CHECK SY-SUBRC = 0.
PAGNUM = IN_PAR-VALUE.
READ TABLE IN_PAR WITH KEY NEXTPAGE.
CHECK SY-SUBRC = 0.
NEXTPAGE = IN_PAR-VALUE.
READ TABLE OUT_PAR WITH KEY BARCODE.
CHECK SY-SUBRC = 0.
IF PAGNUM = 1.
OUT_PAR-VALUE = |. "First page
ELSE.
OUT_PAR-VALUE = ||. "Next page
ENDIF.
IF NEXTPAGE = 0.
OUT_PAR-VALUE+2 = L. "Flag: last page
ENDIF.
MODIFY OUT_PAR INDEX SY-TABIX.
ENDFORM.
Hope this is clear to understand...
Enjoy SAP.
Pankaj Singh. -
How to use SQL() function while writing scripts in BODS 4.0
How to use SQL() function while writing scripts in BODS 4.0
Hello,
I think you want to post your question to the [Data Integration and Data Quality Management|Data Services and Data Quality; forum. This forum is for other BusinessObjects SDK development questions.
Sincerely,
Dan Kelleher -
How i use OEM 12c to monitor Microsoft Active directory.
Hi,
How i use OEM 12c to monitor Microsoft Active directory.Please assist me on this.
Thanks,
SagarHi,
The fundamental problem with this scenario is that you have non-failover capable modules in a failover chassis - think of the ASA failover pair as one device and the IPS modules as two completely separate devices.
Then, as already mentioned, add only the primary ASA. (The secondary will never be passing traffic in standby mode so it's not actually needed in MARS) Then, with the first IPS module you can add it as a module of the ASA or as a standalone device (MARS doesn't care). With the second IPS module the only option is to add it as a separate device anyway.
In a failover scenario the ASA's swap IP's but the IPS's don't so whereas you'll only ever get messages from the active ASA you'll get messages from both IPS IP's depending on which one happens to be in the active ASA at the time.
Don't forget that you have to manually replicate all IPS configuration every time you make a change.
HTH
Andrew. -
How to Use the same iview for both KM End User and the KM Administrator
Hi friends,
*This is my scenario :* How to Use the same iview for both KM End User and the KM Administrator but with different Context
Menu Options.
i followed these steps but im getting same context menu for both KM End User and the KM Administrator .
Assign the role Content Administrator to the user km_admin. This is needed so that km_admin can change
the presentation settings for the KM Folder u201EReports_kmFolder‟.
Now, login with user km_admin. Navigate to the Km Folder reports_kmFolder through Content Administration
-> Km Content. Click on Details link of the folder reports_kmFolder.
Go To Settings -> Presentation. Click on the tab u201ESettings for You‟-> Click on button u201ESelect Profile‟.
Select the radio button corresponding to u201Elayout Set‟, and choose u201EConsumerExplorer‟ from the dropdown.
Click u201EOK‟.
Select both the check boxes corresponding to Items Affected as shown above, and click u201ESave‟
Now, remove the u201ESuper Administrator‟ role from the user km_admin and login with this user.
How rto resolve this????
Regards,
Prasad.Hello Prasad,
Most likely the user km_admin still has system principal roles assigned, even though you removed the Super Admin role, you should check that this user doesn't have any other admin roles, otherwise it will be considered a System Principal user and will therefore still have access to all content. For more information see http://help.sap.com/saphelp_nw70/helpdata/en/19/56f28fbd4e11d5993b00508b6b8b11/frameset.htm
Try creating a new user with just read access to the content and you should see that it will not be able to make any changes etc.
Regards,
Lorcan. -
Running the alv report in background and sending it thro email
hi,
i have to run the alv report in background and send the output through emailHi
Many a times there is a requirement to display ALV Grid (not ALV List) in the background Job. I have checked the SDN Forum for the same and it has been mentioned that ALV Grid cannot be displayed in Background, but the list output of ALV is possible. So user wont have the actual Grid interface but the List interface.
There is a workaround to display ALV Grid in Background Job. The only restriction is you cant schedule the job through SM36. You need to execute the transaction of the report program, fill in the selection screen data and hit Execute.
The job would be executed in background. User will be able to see the Job Log and Job Status after executing the program. User doesnt have to go to SM37 to view the job status/log. Once the Job Status is changed to COMPLETED, user can click on DISPLAY SPOOL to view the ALV Grid.
Limitations:
Cant schedulea background job
The session should be active until the background job is completed. If the session is closed, then user wont be able to check the output in ALV Grid. User would be able to check the output through spool or SM37
Advantages:
If the spool width is greater than 255 characters, then the entire width could be seen in the output because the output is directed to an ALV Grid and not to spool
Interface of ALV Grid is available instead of ALV List even though its a background job.
Program wont give the TIME OUT error
Steps Required:
1. Once you execute the program, the following screen would be displayed
2. Click Display Job Status to check the Status of the Background Job
3. Click on Display the Job Log to check the Log
4. Click on Display Job Status to check the Job Status
5. Click on DISPLAY SPOOL to check the spool content once the Job Status is changed to COMPLETED. Output is displayed in ALV Grid
Programs:
1. Two different programs needs to be created
ZPROGRAM_ONE: This is the 1st program, where the selection screen and all the data validations would be done. Error handling for invalid data should be done in this program.
Once the data validation is done, this program would call the 2nd program ZPROGEAM_TWO. Build the logic to display ALV Grid in this program. The logic will only display ALV in foreground and it wont be reflected in the spool.
ZPROGRAM_TWO: This program would fetch all the data and do all the processing. If you want the spool output along with ALV Grid output, then build the logic in this program to display ALV Grid.
*& Report ZPROGRAM_ONE *
REPORT zprogram_one .
PRASHANT PATIL
TABLES : mara,
tsp01.
type-pools:slis.
TYPES : BEGIN OF t_mara,
matnr TYPE mara-matnr,
ersda TYPE mara-ersda,
ernam TYPE mara-ernam,
laeda TYPE mara-laeda,
END OF t_mara.
DATA : i_mara TYPE STANDARD TABLE OF t_mara,
wa_mara TYPE t_mara,
wa_index TYPE indx, " For Index details
wa_index_key TYPE indx-srtfd VALUE 'PRG_ONE',
i_jobsteplist TYPE STANDARD TABLE OF tbtcstep, " For spool number
wa_params TYPE pri_params, " To Get Print Parameters
wa_jobhead TYPE tbtcjob, " To know the status of job
wa_jobsteplist TYPE tbtcstep, " To know the spool
w_jobname TYPE tbtco-jobname, " Job name for bckgrnd job
w_jobcount TYPE tbtco-jobcount, " Unique id for bckgrd job
w_path TYPE string, " Upload path
w_lsind TYPE sy-lsind, " Index
wa_seltab TYPE rsparams,
i_seltab TYPE STANDARD TABLE OF rsparams,
wa_index1 TYPE indx, " For Index details
wa_index_key1 TYPE indx-srtfd VALUE 'PRG_TWO',
i_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat LIKE LINE OF i_fieldcat.
CONSTANTS DECLARATION *
CONSTANTS :
c_a(1) TYPE c VALUE 'A',
c_m(1) TYPE c VALUE 'M',
c_l(1) TYPE c VALUE 'L',
c_c(1) TYPE c VALUE 'C',
c_zfdr(4) TYPE c VALUE 'ZFDR',
c_x(1) TYPE c VALUE 'X',
c_locl(4) TYPE c VALUE 'LOCL', " Destination is LOCAL
c_f(1) TYPE c VALUE 'F', " Job Status - Failed
c_s(1) TYPE c VALUE 'S',
c_p(1) TYPE c VALUE 'P'.
SELECTION SCREEN PARAMETERS
SELECT-OPTIONS : s_matnr FOR mara-matnr.
START-OF-SELECTION.
Before the export, fill the data fields before CLUSTR
wa_index-aedat = sy-datum.
wa_index-usera = sy-uname.
EXPORT s_matnr
TO DATABASE indx(st) FROM wa_index ID wa_index_key.
To Open the Job for background processing
PERFORM open_job.
To get the print parameters
PERFORM get_print_parameters.
Submit the job in background
PERFORM job_submit.
Close the background job
PERFORM job_close.
This is the output screen with the buttons ********
Create 3 buttons DISPLAY SPOOL, STATUS, JOBLOG
SET PF-STATUS 'ZS001'.
WRITE: / 'The program is submitted in Background'.
WRITE: / 'Press DISPLAY SPOOL to see the spool'.
WRITE: / 'Press STATUS to see the status of the background'.
AT USER-COMMAND.
If user presses the 'BACK' button
IF sy-ucomm = 'BAK'.
IF wa_jobhead-status = c_f OR
wa_jobhead-status = c_a.
LEAVE TO SCREEN 0.
ENDIF.
ENDIF.
If the user presses the 'DISPLAY SPOOL' Button
IF sy-ucomm = 'DISPLAY'.
PERFORM display_spool.
ENDIF.
If the user presses the 'JOB STATUS' Button
IF sy-ucomm = 'STATUS'.
PERFORM display_status.
ENDIF.
If the user presses the 'JOB LOG' Button
IF sy-ucomm = 'JOBLOG'.
PERFORM display_job_log.
ENDIF.
*& Form open_job
text
--> p1 text
<-- p2 text
FORM open_job .
This is to Create a new job which is to be submitted in background to
process sales order/delivery/invoice
Here we would get a unique id ( Jobcount ) which identifies our job
along with the job name which we have assigned to our job
CONCATENATE sy-uname
sy-datum
sy-uzeit
INTO w_jobname . " Assign unique jobname
CALL FUNCTION 'JOB_OPEN'
EXPORTING
DELANFREP = ' '
JOBGROUP = ' '
jobname = w_jobname
SDLSTRTDT = NO_DATE
SDLSTRTTM = NO_TIME
JOBCLASS =
IMPORTING
jobcount = w_jobcount
CHANGING
RET =
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " open_job
*& Form get_print_parameters
text
--> p1 text
<-- p2 text
FORM get_print_parameters .
DATA : l_valid TYPE c.
This is to get the Print Parameters for the job which is to be
submitted in background to process sales order/delivery/invoice
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
ARCHIVE_ID = C_CHAR_UNKNOWN
ARCHIVE_INFO = C_CHAR_UNKNOWN
ARCHIVE_MODE = C_CHAR_UNKNOWN
ARCHIVE_TEXT = C_CHAR_UNKNOWN
AR_OBJECT = C_CHAR_UNKNOWN
ARCHIVE_REPORT = C_CHAR_UNKNOWN
AUTHORITY = C_CHAR_UNKNOWN
COPIES = C_NUM3_UNKNOWN
COVER_PAGE = C_CHAR_UNKNOWN
DATA_SET = C_CHAR_UNKNOWN
DEPARTMENT = C_CHAR_UNKNOWN
destination = c_locl " LOCL
EXPIRATION = C_NUM1_UNKNOWN
immediately = space
IN_ARCHIVE_PARAMETERS = ' '
IN_PARAMETERS = ' '
LAYOUT = C_CHAR_UNKNOWN
LINE_COUNT = C_INT_UNKNOWN
LINE_SIZE = C_INT_UNKNOWN
LIST_NAME = C_CHAR_UNKNOWN
LIST_TEXT = C_CHAR_UNKNOWN
MODE = ' '
new_list_id = c_x
PROTECT_LIST = C_CHAR_UNKNOWN
no_dialog = c_x
RECEIVER = C_CHAR_UNKNOWN
RELEASE = C_CHAR_UNKNOWN
REPORT = C_CHAR_UNKNOWN
SAP_COVER_PAGE = C_CHAR_UNKNOWN
HOST_COVER_PAGE = C_CHAR_UNKNOWN
PRIORITY = C_NUM1_UNKNOWN
SAP_OBJECT = C_CHAR_UNKNOWN
TYPE = C_CHAR_UNKNOWN
user = sy-uname
USE_OLD_LAYOUT = ' '
UC_DISPLAY_MODE = C_CHAR_UNKNOWN
DRAFT = C_CHAR_UNKNOWN
ABAP_LIST = ' '
USE_ARCHIVENAME_DEF = ' '
DEFAULT_SPOOL_SIZE = C_CHAR_UNKNOWN
PO_FAX_STORE = ' '
NO_FRAMES = C_CHAR_UNKNOWN
IMPORTING
OUT_ARCHIVE_PARAMETERS =
out_parameters = wa_params
valid = l_valid
EXCEPTIONS
archive_info_not_found = 1
invalid_print_params = 2
invalid_archive_params = 3
OTHERS = 4
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " get_print_parameters
*& Form job_submit
text
--> p1 text
<-- p2 text
FORM job_submit .
The job which we have created & the unique id ( jobcount ) which we
have got identifies our job. Hence those parameters are passed along
with the name of the background program "ZPROGRAM_TWO"
The job is submitted in background.
CALL FUNCTION 'JOB_SUBMIT'
EXPORTING
ARCPARAMS =
authcknam = sy-uname
COMMANDNAME = ' '
OPERATINGSYSTEM = ' '
EXTPGM_NAME = ' '
EXTPGM_PARAM = ' '
EXTPGM_SET_TRACE_ON = ' '
EXTPGM_STDERR_IN_JOBLOG = 'X'
EXTPGM_STDOUT_IN_JOBLOG = 'X'
EXTPGM_SYSTEM = ' '
EXTPGM_RFCDEST = ' '
EXTPGM_WAIT_FOR_TERMINATION = 'X'
jobcount = w_jobcount
jobname = w_jobname
LANGUAGE = SY-LANGU
priparams = wa_params
report = 'ZPROGRAM_TWO'
VARIANT = ' '
IMPORTING
STEP_NUMBER =
EXCEPTIONS
bad_priparams = 1
bad_xpgflags = 2
invalid_jobdata = 3
jobname_missing = 4
job_notex = 5
job_submit_failed = 6
lock_failed = 7
program_missing = 8
prog_abap_and_extpg_set = 9
OTHERS = 10
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " job_submit
*& Form job_close
text
--> p1 text
<-- p2 text
FORM job_close .
Once the job is submitted in background then the job is closed
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
AT_OPMODE = ' '
AT_OPMODE_PERIODIC = ' '
CALENDAR_ID = ' '
EVENT_ID = ' '
EVENT_PARAM = ' '
EVENT_PERIODIC = ' '
jobcount = w_jobcount
jobname = w_jobname
LASTSTRTDT = NO_DATE
LASTSTRTTM = NO_TIME
PRDDAYS = 0
PRDHOURS = 0
PRDMINS = 0
PRDMONTHS = 0
PRDWEEKS = 0
PREDJOB_CHECKSTAT = ' '
PRED_JOBCOUNT = ' '
PRED_JOBNAME = ' '
SDLSTRTDT = NO_DATE
SDLSTRTTM = NO_TIME
STARTDATE_RESTRICTION = BTC_PROCESS_ALWAYS
strtimmed = c_x
TARGETSYSTEM = ' '
START_ON_WORKDAY_NOT_BEFORE = SY-DATUM
START_ON_WORKDAY_NR = 0
WORKDAY_COUNT_DIRECTION = 0
RECIPIENT_OBJ =
TARGETSERVER = ' '
DONT_RELEASE = ' '
TARGETGROUP = ' '
DIRECT_START =
IMPORTING
JOB_WAS_RELEASED =
CHANGING
RET =
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
invalid_target = 8
OTHERS = 9
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " job_close
*& Form display_spool
text
--> p1 text
<-- p2 text
FORM display_spool .
To Read the Job to get the spool details
DATA : l_rqident TYPE tsp01-rqident, " Spool Number
l_spoolno TYPE tsp01_sp0r-rqid_char.
CLEAR : l_rqident,
w_lsind,
wa_jobsteplist.
REFRESH : i_jobsteplist.
SET PF-STATUS 'ZAR02'.
Get the Spool Number
CALL FUNCTION 'BP_JOB_READ'
EXPORTING
job_read_jobcount = w_jobcount
job_read_jobname = w_jobname
job_read_opcode = '20'
JOB_STEP_NUMBER =
IMPORTING
job_read_jobhead = wa_jobhead
TABLES
job_read_steplist = i_jobsteplist
CHANGING
RET =
EXCEPTIONS
invalid_opcode = 1
job_doesnt_exist = 2
job_doesnt_have_steps = 3
OTHERS = 4
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Read the Job Step list to get the spool number
READ TABLE i_jobsteplist INTO wa_jobsteplist INDEX 1.
CHECK wa_jobsteplist-listident <> space.
Spool Number
l_rqident = wa_jobsteplist-listident.
MOVE l_rqident TO l_spoolno.
Check the spool in TSP01
SELECT SINGLE * FROM tsp01 WHERE rqident = l_rqident.
IF sy-subrc = 0.
LEAVE TO LIST-PROCESSING.
CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
EXPORTING
spoolid = l_spoolno
IMPORTING
RC =
STATUS =
PERFORM show_alv.
ENDIF.
w_lsind = sy-lsind.
IF sy-lsind GE 19.
sy-lsind = 1.
ENDIF.
ENDFORM. " display_spool
*& Form show_alv
text
--> p1 text
<-- p2 text
FORM show_alv .
Before the import, fill the data fields before CLUSTR.
wa_index1-aedat = sy-datum.
wa_index1-usera = sy-uname.
To Import the selection screen data from Calling Program
IMPORT i_mara
FROM DATABASE indx(st) ID wa_index_key1 TO wa_index1.
FREE MEMORY ID wa_index_key1.
This prepares the field-catalog for ALV.
PERFORM prepare_fieldcatalog.
This displays the output in ALV format .
PERFORM display_alv.
ENDFORM. " show_alv
*& Form display_status
text
--> p1 text
<-- p2 text
FORM display_status .
To Display the STATUS of the JOB which is exectued in background
CLEAR : wa_jobsteplist.
REFRESH : i_jobsteplist.
WRITE:/ 'DISPLAYING JOB STATUS'.
CALL FUNCTION 'BP_JOB_READ'
EXPORTING
job_read_jobcount = w_jobcount
job_read_jobname = w_jobname
job_read_opcode = '20'
JOB_STEP_NUMBER =
IMPORTING
job_read_jobhead = wa_jobhead
TABLES
job_read_steplist = i_jobsteplist
CHANGING
RET =
EXCEPTIONS
invalid_opcode = 1
job_doesnt_exist = 2
job_doesnt_have_steps = 3
OTHERS = 4
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
To Display the status text as per the status type
CASE wa_jobhead-status.
WHEN 'S'. WRITE: / 'Scheduled'.
WHEN 'R'. WRITE: / 'Released'.
WHEN 'F'. WRITE: / 'Completed'.
WHEN 'A'. WRITE: / 'Cancelled'.
WHEN OTHERS.
ENDCASE.
IF sy-lsind GE 19.
sy-lsind = 1.
ENDIF.
ENDFORM. " display_status
*& Form display_job_log
text
--> p1 text
<-- p2 text
FORM display_job_log .
To display the log of the background program
LEAVE TO LIST-PROCESSING.
CALL FUNCTION 'BP_JOBLOG_SHOW_SM37B'
EXPORTING
client = sy-mandt
jobcount = w_jobcount
joblogid = ' '
jobname = w_jobname
EXCEPTIONS
error_reading_jobdata = 1
error_reading_joblog_data = 2
jobcount_missing = 3
joblog_does_not_exist = 4
joblog_is_empty = 5
joblog_show_canceled = 6
jobname_missing = 7
job_does_not_exist = 8
no_joblog_there_yet = 9
no_show_privilege_given = 10
OTHERS = 11.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " display_job_log
*& Form prepare_fieldcatalog
text
--> p1 text
<-- p2 text
FORM prepare_fieldcatalog .
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-tabname = 'I_MARA'.
wa_fieldcat-reptext_ddic = 'Material no.'.
wa_fieldcat-outputlen = '18'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ERSDA'.
wa_fieldcat-tabname = 'I_MARA'.
wa_fieldcat-reptext_ddic = 'Creation date'.
wa_fieldcat-outputlen = '10'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ERNAM'.
wa_fieldcat-tabname = 'I_MARA'.
wa_fieldcat-reptext_ddic = 'Name of Person'.
wa_fieldcat-outputlen = '10'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'LAEDA'.
wa_fieldcat-tabname = 'I_MARA'.
wa_fieldcat-reptext_ddic = ' Last Change'.
wa_fieldcat-outputlen = '10'.
APPEND wa_fieldcat TO i_fieldcat.
ENDFORM. " prepare_fieldcatalog
*& Form display_alv
text
--> p1 text
<-- p2 text
FORM display_alv .
Call ABAP List Viewer (ALV)
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
it_fieldcat = i_fieldcat
tables
t_outtab = i_mara.
ENDFORM. " display_alv
ZPROGRAM_TWO: This is the 2nd program which would be called from program ZPROGRAM_ONE.
*& Report ZPROGRAM_TWO *
REPORT zprogram_two .
PRASHANT PATIL
TABLES : mara.
TYPE-POOLS:slis.
TYPES : BEGIN OF t_mara,
matnr TYPE mara-matnr,
ersda TYPE mara-ersda,
ernam TYPE mara-ernam,
laeda TYPE mara-laeda,
END OF t_mara.
DATA : i_mara TYPE STANDARD TABLE OF t_mara,
wa_mara TYPE t_mara,
wa_index TYPE indx, " For Index details
wa_index_key TYPE indx-srtfd VALUE 'PRG_ONE',
wa_index1 TYPE indx, " For Index details
wa_index_key1 TYPE indx-srtfd VALUE 'PRG_TWO',
i_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat LIKE LINE OF i_fieldcat.
SELECT-OPTIONS : s_matnr FOR mara-matnr.
Before the import, fill the data fields before CLUSTR.
wa_index-aedat = sy-datum.
wa_index-usera = sy-uname.
To Import the selection screen data from Calling Program
IMPORT s_matnr
FROM DATABASE indx(st) ID wa_index_key TO wa_index.
FREE MEMORY ID wa_index_key.
SELECT matnr
ersda
ernam
laeda
FROM mara
INTO TABLE i_mara
WHERE matnr IN s_matnr.
PERFORM prepare_fieldcatalog.
PERFORM display_alv.
Before the export, fill the data fields before CLUSTR
wa_index1-aedat = sy-datum.
wa_index1-usera = sy-uname.
EXPORT i_mara
TO DATABASE indx(st) FROM wa_index1 ID wa_index_key1.
*& Form prepare_fieldcatalog
text
--> p1 text
<-- p2 text
FORM prepare_fieldcatalog .
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-tabname = 'I_MARA'.
wa_fieldcat-outputlen = '18'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ERSDA'.
wa_fieldcat-tabname = 'I_MARA'.
wa_fieldcat-outputlen = '10'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ERNAM'.
wa_fieldcat-tabname = 'I_MARA'.
wa_fieldcat-outputlen = '10'.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'LAEDA'.
wa_fieldcat-tabname = 'I_MARA'.
wa_fieldcat-outputlen = '10'.
APPEND wa_fieldcat TO i_fieldcat.
ENDFORM. " prepare_fieldcatalog
*& Form display_alv
text
--> p1 text
<-- p2 text
FORM display_alv .
Call ABAP List Viewer (ALV)
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = i_fieldcat
TABLES
t_outtab = i_mara.
ENDFORM. " display_alv
its possible to display ALV Grid using OO ALV. Following code can be used instead of FM.
In the PBO, add following code
SET PF-STATUS 'ZSTAT'.
If program is executed in background
CALL METHOD cl_gui_alv_grid=>offline
RECEIVING
e_offline = off.
IF off IS INITIAL.
IF container1 IS INITIAL.
CREATE OBJECT container1
EXPORTING
container_name = 'CC_ALV1' .
ENDIF.
ENDIF.
CREATE OBJECT g_grid1
EXPORTING
i_parent = container1.
CALL METHOD g_grid1->set_table_for_first_display
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
i_save = 'A'
i_default = ' '
is_layout =
is_print =
IT_SPECIAL_GROUPS =
it_toolbar_excluding =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
it_outtab = i_output
it_fieldcatalog = i_fieldcatalog
IT_SORT =
IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Reward points if useful
Regards
Anji -
How do I connect my phone to my iPad to receive and send iMessage from both?
How do I connect my phone to my iPad to receive and send iMessage from both?
You can't physically connect an iPad and iPhone. However, you can bluetooth tether.
iOS: Understanding Personal Hotspot
http://support.apple.com/kb/HT4517
Use Bluetooth to tether your iPhone, iPod touch, or iPad
http://www.macworld.com/article/1159258/bluetooth_tethering.html
How to Connect an iPad to an iPhone Via Bluetooth Tethering
http://techtips.salon.com/connect-ipad-iphone-via-bluetooth-tethering-25472.html
Using FaceTime http://support.apple.com/kb/ht4319
Troubleshooting FaceTime http://support.apple.com/kb/TS3367
The Complete Guide to FaceTime + iMessage: Setup, Use, and Troubleshooting
http://tinyurl.com/a7odey8
Troubleshooting FaceTime and iMessage activation
http://support.apple.com/kb/TS4268
iOS: FaceTime is 'Unable to verify email because it is in use'
http://support.apple.com/kb/TS3510
Using FaceTime and iMessage behind a firewall
http://support.apple.com/kb/HT4245
iOS: About Messages
http://support.apple.com/kb/HT3529
Set up iMessage
http://www.apple.com/ca/ios/messages/
iOS and OS X: Link your phone number and Apple ID for use with FaceTime and iMessage
http://support.apple.com/kb/HT5538
How to Set Up & Use iMessage on iPhone, iPad, & iPod touch with iOS
http://osxdaily.com/2011/10/18/set-up-imessage-on-iphone-ipad-ipod-touch-with-io s-5/
Set Up Alert Sounds
http://www.quepublishing.com/articles/article.aspx?p=1873027&seqNum=3
Extra FaceTime IDs
http://tinyurl.com/k683gr4
Troubleshooting Messages
http://support.apple.com/kb/TS2755
Troubleshooting iMessage Issues: Some Useful Tips You Should Try
http://www.igeeksblog.com/troubleshooting-imessage-issues/
Setting Up Multiple iOS Devices for iMessage and Facetime
http://macmost.com/setting-up-multiple-ios-devices-for-messages-and-facetime.htm l
FaceTime and iMessage not accepting Apple ID password
http://www.ilounge.com/index.php/articles/comments/facetime-and-imessage-not-acc epting-apple-id-password/
Fix Can’t Sign Into FaceTime or iMessage iOS 7
http://ipadtutr.com/fix-login-facetime-imessage-ios-7/
FaceTime, Game Center, Messages: Troubleshooting sign in issues
http://support.apple.com/kb/TS3970
Unable to use FaceTime and iMessage with my apple ID
https://discussions.apple.com/thread/4649373?tstart=90
iOS 7 allows you to block phone numbers or e-mail addresses from contacting you via the Phone, FaceTime, or Messages
http://howto.cnet.com/8301-11310_39-57602643-285/you-can-block-people-from-conta cting-you-on-ios-7/
How to Block Someone on FaceTime
http://www.ehow.com/how_10033185_block-someone-facetime.html
My Facetime Doesn't Ring
https://discussions.apple.com/message/19087457#19087457
How to watch FaceTime calls on the big screen with Apple TV
http://www.imore.com/daily-tip-ios-5-airplay-mirroring-facetime
Send an iMessage as a Text Message Instead with a Quick Tap & Hold
http://osxdaily.com/2012/11/18/send-imessage-as-text-message/
To send messages to non-Apple devices, check out the TextFree app https://itunes.apple.com/us/app/text-free-textfree-sms-real/id399355755?mt=8
How to Send SMS from iPad
http://www.iskysoft.com/apple-ipad/send-sms-from-ipad.html
How to Receive SMS Messages on an iPad
http://yourbusiness.azcentral.com/receive-sms-messages-ipad-16776.html
Apps for Texting http://appadvice.com/appguides/show/apps-for-texting
You can check the status of the FaceTime/iMessage servers at this link.
http://www.apple.com/support/systemstatus/
Cheers, Tom -
I disabled my iPhone 4 and while doing a restore via iTunes, it is downloading and timing out so the download is not completing. any idea how to get past that? I have tried many times and the same error keeps happening.
You need to force the phone into recovery mode, as described here, & restore it:
http://support.apple.com/kb/ht1808
Sorry, you've already lost all data on your phone. -
How to use DBMS_JOB to run the OWB scripts?
Can anyone pls explain how I can use the DBMS_JOB to run the scripts which are generated by OWB.
SuroopCREATE OR REPLACE PACKAGE "LOAD_DATAMART"
AS
TYPE t_global IS RECORD
( plsql_map VARCHAR2(50) := 'transactions_map_exp', -- Default mapping plsql program
plsql_map_main VARCHAR2(50) := 'transactions_map_exp.main', -- Default mapping plsql main program
servers NUMBER(2) := 19, -- Default concurrent loading servers
max_reloads NUMBER(3) := 3 , -- Default maximum load retrys
mail_sender VARCHAR2(99) := '"Certegy Data Warehouse"', -- Default Mail Sender
mail_notice VARCHAR2(99) := '[email protected]', -- Default Recepient Notification
mail_error VARCHAR2(99) := '[email protected]' -- Default Recepient for Errors.
GLOBAL t_global ;
PROCEDURE start_monitor_load(p_date IN DATE);
PROCEDURE monitor_load( p_date IN DATE , p_dwh_load# IN NUMBER DEFAULT NULL, p_servers IN NUMBER DEFAULT GLOBAL.servers );
PROCEDURE start_load(p_dwh_load# IN NUMBER, p_load_seq IN NUMBER, p_rbs IN VARCHAR2);
PROCEDURE create_job_load(p_dwh_load# IN NUMBER, p_load_seq IN NUMBER, p_rbs VARCHAR2 DEFAULT 'batch01_rbs' );
FUNCTION dependency_on(p_type IN VARCHAR2, p_date IN DATE) RETURN BOOLEAN;
PROCEDURE send_mail (p_sender IN VARCHAR2, p_recipient IN VARCHAR2, p_subject IN VARCHAR2, p_message IN VARCHAR2);
PROCEDURE start_load_guard;
PROCEDURE load_guard(p_job IN INTEGER);
END load_datamart;
CREATE OR REPLACE PACKAGE BODY "LOAD_DATAMART"
AS
PROCEDURE start_monitor_load(p_date IN DATE) IS
v_plsql VARCHAR2(32000);
BEGIN
v_plsql := 'load_datamart.monitor_load(to_date('''||TO_CHAR(p_date,'DD-MON-YYYY HH24:MI:SS')||''',''DD-MON-YYYY HH24:MI:SS''));';
EXECUTE IMMEDIATE 'declare v_job integer; begin dbms_job.submit(v_job,:v_plsql); end;'
USING v_plsql;
END start_monitor_load;
PROCEDURE monitor_load( p_date IN DATE, p_dwh_load# IN NUMBER DEFAULT NULL , p_servers IN NUMBER DEFAULT GLOBAL.servers ) IS
TYPE t_server IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
v_server t_server;
v_dwh_load# NUMBER;
v_reload_limit NUMBER := 0;
v_plsql_error VARCHAR2(32000);
pending_jobs BOOLEAN;
p_batch VARCHAR2(20) := 'batch01_rbs';
FUNCTION job_server_running(p_dwh_load_seq NUMBER) RETURN BOOLEAN IS
CURSOR c1 IS SELECT * FROM DWH_LOAD_DETAIL
WHERE dwh_load# = v_dwh_load#
AND load_seq = p_dwh_load_seq;
r1 c1%ROWTYPE;
PROCEDURE try_resubmit_job(p_dwh_load_seq OUT NUMBER) IS
v_load_seq NUMBER;
BEGIN
SELECT COUNT(*) INTO v_load_seq
FROM DWH_LOAD_DETAIL
WHERE dwh_load# = v_dwh_Load#;
IF v_load_seq < v_reload_limit THEN
INSERT INTO DWH_LOAD_DETAIL(dwh_load#,load_seq,load_server,plsql_map,map_parameters)
VALUES(v_dwh_load#,v_load_seq+1,0,r1.plsql_map,r1.map_parameters||'| SEQ '||v_load_seq);
COMMIT;
ELSE
RAISE_APPLICATION_ERROR(-20000,'Maximum '||v_reload_limit||' retrys reached, load aborted.');
END IF;
END;
BEGIN
OPEN c1;
FETCH c1 INTO r1;
IF c1%NOTFOUND THEN
RETURN FALSE;
ELSIF c1%FOUND AND r1.job_end_time IS NULL THEN
RETURN TRUE;
ELSIF c1%FOUND AND r1.job_end_time IS NOT NULL THEN
IF r1.job_end_time = 'BROKEN' THEN
try_resubmit_job(r1.load_seq); -- Oracle Errors
END IF;
RETURN FALSE;
END IF;
CLOSE c1;
END job_server_running;
FUNCTION get_next_load_seq(p_dwh_load_server IN NUMBER) RETURN NUMBER IS
CURSOR c1 IS SELECT * FROM DWH_LOAD_DETAIL
WHERE dwh_load# = v_dwh_load#
AND load_server = 0
ORDER BY dwh_load#,load_seq
FOR UPDATE OF load_server;
r1 c1%ROWTYPE;
BEGIN
OPEN c1;
FETCH c1 INTO r1;
IF c1%FOUND THEN
UPDATE DWH_LOAD_DETAIL
SET load_server = p_dwh_load_server
WHERE CURRENT OF c1;
END IF;
CLOSE c1;
COMMIT;
RETURN r1.load_seq;
END get_next_load_seq;
BEGIN
v_dwh_load# := p_dwh_load#;
-- Defining the Max Retry to load
SELECT COUNT(*) + GLOBAL.max_reloads INTO v_reload_limit
FROM DWH_LOAD_DETAIL
WHERE dwh_load# = v_dwh_load#;
FOR i IN 1..99 LOOP
v_server(i) := NULL;
END LOOP;
LOOP
pending_jobs := FALSE;
FOR i IN 1..p_servers LOOP
IF NOT job_server_running(v_server(i)) THEN
v_server(i) := get_next_load_seq(i);
IF v_server(i) IS NOT NULL THEN
load_datamart.create_job_load(v_dwh_load#,v_server(i),p_batch);
IF p_batch = 'batch01_rbs' THEN
p_batch :='batch02_rbs';
ELSIF p_batch = 'batch02_rbs' THEN
p_batch :='batch03_rbs';
ELSIF p_batch = 'batch03_rbs' THEN
p_batch :='batch01_rbs';
END IF;
END IF;
END IF;
IF v_server(i) IS NOT NULL THEN
pending_jobs := TRUE;
END IF;
END LOOP;
EXIT WHEN NOT pending_jobs;
dbms_lock.sleep(05);
END LOOP;
COMMIT;
UPDATE DWH_LOAD_HEADER
SET plsql_error = 'Completed'
WHERE dwh_load# = v_dwh_load#;
COMMIT;
EXCEPTION WHEN OTHERS THEN
v_plsql_error := SUBSTR(SQLERRM,1,4000);
load_datamart.send_mail(load_datamart.GLOBAL.mail_sender,load_datamart.GLOBAL.mail_error,
'Load Datamart - Load '||TO_CHAR(p_date,'MM/DD/YYYY HH24:MI:SS')||' not completed',
v_plsql_error||CHR(10)||
':::::::::::::::::::::::::::::::::::::::::'||CHR(13)||
'- Parameter Date '||TO_CHAR(p_date,'MM/DD/YYYY')||CHR(13)||
':::::::::::::::::::::::::::::::::::::::::'||CHR(13)||
'- Transmission time '||TO_CHAR(p_date,'hh24:mi:ss')||CHR(13)||
'- Load Seq# '||TO_CHAR(v_dwh_load#)||CHR(13)||
':::::::::::::::::::::::::::::::::::::::::'||CHR(13));
v_plsql_error := SUBSTR(SQLERRM,1,4000);
UPDATE DWH_LOAD_HEADER
SET plsql_error = v_plsql_error
WHERE dwh_load# = v_dwh_load#;
COMMIT;
RAISE_APPLICATION_ERROR(-20000,v_plsql_error);
END monitor_load;
PROCEDURE start_load(p_dwh_load# IN NUMBER, p_load_seq IN NUMBER, p_rbs IN VARCHAR2) IS
v_plsql_map VARCHAR2(200);
v_sqlerrm VARCHAR2(4000);
BEGIN
UPDATE DWH_LOAD_DETAIL
SET job_start_date = TRUNC(SYSDATE) ,
job_start_time = TO_CHAR(SYSDATE,'HH24:MI:SS')
WHERE dwh_load# = p_dwh_load#
AND load_seq = p_load_seq
RETURN plsql_map INTO v_plsql_map;
COMMIT;
EXECUTE IMMEDIATE 'set transaction use rollback segment '||p_rbs;
v_plsql_map := 'begin '||v_plsql_map||' end;';
EXECUTE IMMEDIATE v_plsql_map;
EXECUTE IMMEDIATE 'begin
UPDATE DWH_LOAD_DETAIL
SET job_end_date = SYSDATE,
job_end_time = TO_CHAR(SYSDATE,''HH24:MI:SS''),
rta_iid = '||global.plsql_map||'.get_runtime_audit_id,
rta_select = '||global.plsql_map||'.get_selected,
rta_update = '||global.plsql_map||'.get_updated,
rta_insert = '||global.plsql_map||'.get_inserted,
rta_errors = '||global.plsql_map||'.get_errors,
rta_delete = '||global.plsql_map||'.get_deleted
WHERE dwh_load# = :p_dwh_load#
AND load_seq = :p_load_seq;
UPDATE DWH_LOAD_HEADER
SET rows_inserted = NVL(rows_inserted,0) + NVL('||global.plsql_map||'.get_inserted,0)
WHERE dwh_load# = :p_dwh_load#;
END;' using p_dwh_Load#,p_load_seq;
COMMIT;
EXCEPTION WHEN OTHERS THEN
v_sqlerrm := SUBSTR(SQLERRM,1,3999);
EXECUTE IMMEDIATE ' begin
UPDATE DWH_LOAD_DETAIL
SET job_end_date = SYSDATE,
job_end_time = ''BROKEN'',
rta_iid = '||global.plsql_map||'.get_runtime_audit_id,
rta_select = '||global.plsql_map||'.get_selected,
rta_update = '||global.plsql_map||'.get_updated,
rta_insert = '||global.plsql_map||'.get_inserted,
rta_errors = '||global.plsql_map||'.get_errors,
rta_delete = '||global.plsql_map||'.get_deleted,
plsql_error = :v_sqlerrm
WHERE dwh_load# = :p_dwh_load#
AND load_seq = :p_load_seq;
UPDATE DWH_LOAD_HEADER
SET rows_inserted = NVL(rows_inserted,0) + NVL('||global.plsql_map||'.get_inserted,0)
WHERE dwh_load# = :p_dwh_load#;
END; ' using v_sqlerrm, p_dwh_load#,p_load_seq;
COMMIT;
END start_load;
PROCEDURE create_job_load(p_dwh_load# IN NUMBER, p_load_seq IN NUMBER, p_rbs VARCHAR2 DEFAULT 'batch01_rbs' ) IS
p_job INTEGER;
v_date DATE;
BEGIN
-- Submitting Job Load
DBMS_JOB.SUBMIT(p_job,'load_datamart.start_load('||p_dwh_load#||','||p_load_seq||','||''''||p_rbs||''');');
COMMIT;
END create_job_load;
FUNCTION dependency_on(p_type IN VARCHAR2, p_date IN DATE) RETURN BOOLEAN IS
CURSOR c1 IS SELECT * FROM DWH_DATA_LOADS
WHERE data_type = p_type
AND file_date >= TRUNC(p_date);
r1 c1%ROWTYPE;
BEGIN
OPEN c1;
FETCH c1 INTO r1;
IF c1%FOUND AND r1.status = 'Done' THEN
RETURN FALSE;
END IF;
CLOSE c1;
RETURN TRUE;
END;
PROCEDURE send_mail (p_sender IN VARCHAR2,
p_recipient IN VARCHAR2,
p_subject IN VARCHAR2,
p_message IN VARCHAR2) IS
* This procedure is usefull for sending e-mails for single or multiples recipients up to 50 *
* the limitation is Lotes Notes e-mail service. *
* Lewis Cunnigham Package is good also for massive distribuition to multiples e-mails, *
v_mailhost VARCHAR2(30) := '172.27.2.157'; -- Titan and Eagle available SMTP service, through the GATEWAY
v_mailhost VARCHAR2(30) := 'STPMTA1ML'; old one
v_mailhost VARCHAR2(30) := 'stpnh1ml'; Main SMTP, all other are replicated, not available.
v_mailhost VARCHAR2(30) := 'STPMS6ML'; Replicated server, not available.
v_mail_conn utl_smtp.connection;
v_crlf VARCHAR2(2) DEFAULT CHR(13)||CHR(10);
v_date VARCHAR2(255) DEFAULT TO_CHAR( SYSDATE, 'MM/DD/YYYY hh24:mi AM' ); -- Lotus Notes default format.
--pragma autonomous_transaction;
PROCEDURE writeData( p_text IN VARCHAR2 ) AS
BEGIN
IF ( p_text IS NOT NULL ) THEN
utl_smtp.write_data( v_mail_conn, p_text || v_crlf );
END IF;
END;
BEGIN
v_mail_conn := utl_smtp.open_connection(v_mailhost, 25); -- Default port
utl_smtp.helo(v_mail_conn, v_mailhost);
utl_smtp.mail(v_mail_conn, p_sender);
utl_smtp.rcpt(v_mail_conn, p_recipient);
utl_smtp.open_data(v_mail_conn);
writeData( 'To: '|| p_recipient ); -- Redundant, but necessary to complete format
writeData( 'From: ' || p_sender); -- Redundant, but necessary to complete format
writeData( 'Date: ' || v_date ); -- Database completion time
writeData( 'Subject: ' || NVL( p_subject , '(no subject) ' ) ); -- Default Subject
--writeData( 'Content-Type: text/html');
utl_smtp.write_data(v_mail_conn, '' || v_crlf );
utl_smtp.write_data(v_mail_conn, p_message ); -- Message body
utl_smtp.close_data(v_mail_conn );
utl_smtp.quit(v_mail_conn);
--commit;
EXCEPTION WHEN OTHERS THEN null; Since we are just sending e-mails,
-- We don't care about mail errors like when server down, only when needed.
END;
PROCEDURE start_load_guard IS
v_job INTEGER;
BEGIN
DBMS_JOB.SUBMIT(v_job,'load_datamart.load_guard(100);',SYSDATE+100);
DBMS_JOB.CHANGE(v_job,'load_datamart.load_guard('||v_job||');',SYSDATE,'sysdate+((1/60)*1/24)');
COMMIT;
END start_load_guard;
PROCEDURE load_guard(p_job IN INTEGER) IS
v_job INTEGER;
CURSOR c1 IS SELECT * FROM DWH_DATA_LOADS
WHERE file_date BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE)+(86399/86400);
did_PAYC_load BOOLEAN := NULL;
did_ARMS_load BOOLEAN := NULL;
did_CLMS_load BOOLEAN := NULL;
did_STAT_load BOOLEAN := NULL;
did_TRAN_load BOOLEAN := NULL;
did_VCOM_load BOOLEAN := NULL;
did_BCRD_load BOOLEAN := NULL;
did_PNET_load BOOLEAN := NULL;
BEGIN
FOR i IN c1 LOOP
NULL;
--if i.status in ('Ready','Done') then
--if i.data_type = 'PAYC' then
END LOOP;
IF NOT ( SYSDATE >= TO_DATE(TO_CHAR(SYSDATE,'DD-MON-YYYY')||' 13:35:00','DD-MON-YYYY HH24:MI:SS') )THEN
send_mail('"Load Datamart"','[email protected]','I am the guard','This is my body messaje at '||TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS')||'.');
ELSE
send_mail('"Load Datamart"','[email protected]','I am the guard, this is the last message.','This is my body messaje at '||TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS')||'.');
DBMS_JOB.SUBMIT(v_job,'begin dbms_job.next_date('||p_job||',to_date('''||TO_CHAR(SYSDATE+1,'DD-MON-YYYY')||' 03'||''',''DD-MON-YYYY HH24'')); commit; exception when others then null; end;',TRUNC(SYSDATE));
END IF;
COMMIT;
EXCEPTION WHEN OTHERS THEN
load_datamart.send_mail('"Load Datamart"','[email protected]','I am the guard, I break at '||TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS'),SQLERRM);
END load_guard;
END load_datamart;
Maybe you are looking for
-
How to define a text index in data modeler
Hello, how to define a text index (indextype is ctxsys.context) in data modeler? The SQL-command would be: create index P1_TEXT_BESCHR_SPRACHE on P1_PDM_MODUL_SPRACHE(BESCHREIBUNG) indextype is ctxsys.context parameters ('lexer global_lexer language
-
Encoded bounds vs display bounds ...
what's the difference between encoded & display bounds? for example my sequence has an encoded bounds of 960x720 and a display bounds of 1280x720. this is dvcpro hd media that's "supposed" to be HD. however if it's 960x720, then that's 4x3 as opposed
-
How can we do personalization at User Level
Hi , I have extended a controller . and I have to replace the seeded controller to extended controller using personalization at User Level. Can any one suggest how can we do personalization at user level. Regards, Krishna.
-
Cannot create a sybase connection pool
I am trying to migrate from Orion app server to Sun One appserver. Here is how I define the connection pool for orion <data-source class="com.evermind.sql.DriverManagerDataSource" name="TestPool"
-
Unwanted two-sided white border upon JPEG export
I'm having an export issue in Illustrator. I've created an artboard in Illustrator to the dimensions I need the final piece to be (for web). I did the design, went to export as JPEG and the saved JPEG file has a fat white border on just the top an