Location of Capture Process and Perf Overhead
Hi,
We are just starting to look at Streams technology. I am reading the doc and it implies that the capture process is run on the source database node. I am concerned of the overhead on the OLTP box. I have a few questions I was hoping to get clarification on.
1. Can I send the redo log to another node/db with data dictionary info and run the capture there? I would like to offload the perf overhead to another box and I thought Logminer could do it, so why not Streams.
2. If I run the capture process on one node/db can the initial queue I write to be on another node/db or is it implicit to where I run the capture process? I think I know this answer but would like to hear yours.
3. Is there any performance atomics on the cost of the capture process to an OLTP system? I realize there are many variables but am wondering if I should even be concerned with offloading the capture process.
Many thanks in advance for your time.
Regards,
Tom
In the current release, Oracle Streams performs all capture activities at the source site. The ability to capture the changes from the redo logs at an alternative site is planned for a future release. Captured changes are stored in an in-memory buffer queue on the local database. Multi-cpu servers with enough available memory should be able to handle the overhead of capture.
Similar Messages
-
Slow processing and getting opening errors/warnings
I've modified the PDF Binder sample to get a plugin that would open PDF's and Tif files, and save them as PDF/A-1b (code below).
It's working. The problem: it's processing too slow (compared with the Actions batch processing)... and I've been getting warnings/and errors about "The imput file is corrupt or of an unknown/unsupported type" type. This is stopping my batch process until I click OK, and the it continues.
I am trying to process a few thousand of tif files now. I tried first to use the Batch processing capability built in the Acrobat X... an it works, but only with the first 255 documents in the folder... then gives an "insufficient disk space" message for the rest of the files in the directory.
So, 2 questions: Does anyone knows why it is so slow processing the tiff files and... how I can make my code "silent" so it does not wait for the OK after the message??
Thanks in advance.
The code:
ADOBE SYSTEMS INCORPORATED
Copyright (C) 1998-2006 Adobe Systems Incorporated
All rights reserved.
NOTICE: Adobe permits you to use, modify, and distribute this file
in accordance with the terms of the Adobe license agreement
accompanying it. If you have received this file from a source other
than Adobe, then your use, modification, or distribution of it
requires the prior written permission of Adobe.
\file PDFBinder.cpp
- Implements a method to convert multiple files into PDFs and bind the PDFs
into one PDF file. The code shows how to use AVConversionToPDFHandler to
convert files to PDF and how to use PDDocInsertPages() to combind PDF files.
// Headers.
#include <stdio.h>
#include <ctype.h>
#ifndef MAC_PLATFORM
#include <direct.h>
#include "PIHeaders.h"
#endif
// Defines ----------
// Define this flag to show AVConversionToPDFEnumHandler info. in log file.
#define SHOW_TOPDF_HANDLER_TYPES
// define this flag to use file type filter
#define USE_FILE_FILTER
Constants/Declarations
// Message display control. Ture: display
ASBool bEcho = true;
// File location. User can change the following filenames.
#if WIN_PLATFORM
const char* STRING_PDFBinderFolder = "C:\\Fairfax\\Adobe\\in";
const char* STRING_PDFOutputFolder = "C:\\Fairfax\\Adobe\\PDFA";
const char* FOLDERSYMBOL="\\";
#endif
#if MAC_PLATFORM
const char* STRING_PDFBinderFolder = "/PDFBinder";
const char* FOLDERSYMBOL="/";
#endif
char* OutputPdfFileName = "PDFBinderOutput.pdf";
char* LogFileName = "PDFProcessLog.txt";
static ASInt32 gNumToPDFExt;
static ASInt32 gNumFromPDFExt;
static AVConversionFromPDFHandler RightHandler;
const int MAX_FILENAME_LENGTH = 256;
char sLogFileName[MAX_FILENAME_LENGTH];
// Filter -----------
// Filter is a list of file types which can be converted to PDF in this program.
// Use a filter may fit user's specific needs and ensure a smooth automation process.
// Of course, the user can turn off the filter in two ways:
// (1) gPDFBinderFileFilter = "";
// (2) comment out //USE_FILE_FILTER
// The filter should be consistent with the Acrobat viewer's menu capability:
// Create PDF from multiple files ...
// Here we put the types which have been tested, but user can expand it.
const char* gPDFBinderFileFilter = "pdf,tif,tiff,PDF,TIF,TIFF";
const int MAX_STRING_LENGTH = 2048;
AVConversionToPDFHandler gHandler;
// functions in this file.
int ConvertAndInsertFileToPDF(ASPathName aspItem, char* aFileName, PDDoc PDFfile);
void BindingFileToPDF(ASPathName aPathName, char* aFilename, ASFileSysItemPropsRec nFileAttrb, PDDoc targetPDdDoc, ASPathName outputPathName, int *ipTotal, int *ipConverted);
ASBool PassPDFBinderFileFilter(char* filename);
int ConvertAndSavePDFInTargetFolder(ASPathName aPathName, char* aFileName, PDDoc PDFfile, ASPathName outputPathName);
char* NewFileName(char *& aFileName);
// callbacks
ACCB1 ASBool ACCB2 MyAVConversionToPDFEnumProc(AVConversionToPDFHandler handler, AVConversionEnumProcData data);
ACCB1 ASBool ACCB2 AVConversionToPDFEnumFindHandler(AVConversionToPDFHandler handler, AVConversionEnumProcData data);
static ACCB1 ASBool ACCB2 myAVConversionFromPDFEnumProc(AVConversionFromPDFHandler handler, AVConversionEnumProcData data);
Implementation
/** This sample implements a method to convert multiple files into PDF
and bind the PDFs into one PDF file .
This sample shows developers how to grammatically implement To-PDF file
converson functionality. Basically, the code uses AVConversionToPDFHandler
to convert files to PDF and PDDocInsertPages()to combine PDF files.
This plug-in is designed to run from a menu item, and by setting bEcho = false
it may be run without any graphics user interface on the screen. Therefore, it
can be executed from other programs such as C IAC, VB IAC, and JavaScript
to meet enterprise workflow needs.
How to run it :
- This sample adds a menu item "PDF Binder" under the Acrobat SDK submenu. Two ways to
execute it: 1) click the menu item to run the program using a fixed file location
hard coded; 2) press the shift key and click the menu item to choose a folder where
files to be converted are located.
- Without folder selection, this original code is to convert and bind files in a
directory C\test\PDFBinder for Win, or a folder MacHD:test:PDFBinder for Mac.
You can copy the test files in the project's testfiles folder to the appropriate location
for testing. You may locate files to be converted in another directory/folder, and
specify the location in the string variable PDFBinderFolder in the code.
- When you have the files to be converted ready in the specified location,
run Acrobat 6 menu Advanced->AcrobatSDK->PDF Binder to start the operation. There are
echo messages informing you of the operation start and end, but you can change and
rebuild the code to turn off the display on screen.
- An output file PDFBinderOutput.pdf in the same location is created
when the program succeeds. A text log file PDFBinderLog.txt in the same
location records the process and results.
- You can set bEch = false in the code to turn off any display on the screen.
This is necessary when you call the menu function from within other programs
of C IAC, VB IAC, JavaScript.
- An optional file filter is used to pre-process the files. The filter only allows
the files with predefined types to be processed. You can change the file type list
as you wish. Using a filter may ensure a smooth automation process, since you can put
only well-tested file types in the filter. To turn off the filter, you can set
gPDFBinderFileFilter = "" or not to define USE_FILE_FILTER
- Note this is a sample only, developers need to make further improvement for
their actual use. For example, you can set up a list of files to use the method for
the conversion and binding. And you can add code to handle special file types.
@see AVConversionConvertToPDFWithHandler
@see AVConversionEnumToPDFConverters
@see ASFileSysDestroyFolderIterator
@see PDDocOpen
@see PDDocClose
@see PDDocInsertPages
@see PDDocCreatePage
@see PDDocDeletePages
@see PDPageRelease
@see ASFileSysCreatePathName
@see ASFileSysFirstFolderItem
@see ASFileSysNextFolderItem
@see ASFileSysGetNameFromPath
@see ASFileSysReleasePath
ACCB1 void ACCB2 PDFBinderCommand(void*)
// if the menu item clicked with Shift key pressed down, go to interactive mode.
// let the user to choose a folder and process all the file in the folder.
ASText dispText = ASTextNew();
char PDFBinderFolder[MAX_STRING_LENGTH];
ASBool shiftKeyIsDown = ((AVSysGetModifiers() & AV_SHIFT) != 0);
if(shiftKeyIsDown) {
AVOpenSaveDialogParamsRec dialogParams;
// Configure the dialog box parameters.
memset (&dialogParams, 0, sizeof (AVOpenSaveDialogParamsRec));
dialogParams.size = sizeof(AVOpenSaveDialogParamsRec);
dialogParams.windowTitle = ASTextFromScriptText("Choose folder with files to bind",kASRomanScript);
dialogParams.flags |= kAVOpenSaveAllowForeignFileSystems;
dialogParams.initialFileSys = ASGetDefaultUnicodeFileSys();
ASPathName thePath;
ASFileSys fileSys;
AVAppBeginModal(NULL);
if(ASBoolToBool(AVAppChooseFolderDialog(&dialogParams, &fileSys, &thePath)) != true){
AVAppEndModal();
//AVAlertNote("Failed to select the folder");
return;
AVAppEndModal();
#ifdef WIN_PLATFORM
ASFileSysDisplayASTextFromPath(ASGetDefaultUnicodeFileSys(), thePath, dispText);
ASHostEncoding bestEnc = ASTextGetBestEncoding(dispText, (ASHostEncoding)PDGetHostEncoding());
strncpy(PDFBinderFolder, ASTextGetEncoded(dispText, bestEnc), MAX_STRING_LENGTH - 1);
#else
ASPlatformPath aspPath;
ASFileSysAcquirePlatformPath(fileSys, thePath, ASAtomFromString("POSIXPath"), &aspPath);
strncpy(PDFBinderFolder, (char *)ASPlatformPathGetPOSIXPathPtr(aspPath), MAX_STRING_LENGTH - 1);
ASFileSysReleasePlatformPath(fileSys, aspPath);
// remove extra path separator
char e = PDFBinderFolder[strlen(PDFBinderFolder)-1];
if(e == ':' || e == '/')
PDFBinderFolder[strlen(PDFBinderFolder)-1]='\0';
dispText = ASTextFromScriptText(PDFBinderFolder, kASEUnicodeScript);
#endif
ASFileSysReleasePath(fileSys, thePath);
// Otherwise, the hard coded file path will be used.
else {
strcpy(PDFBinderFolder, STRING_PDFBinderFolder);
dispText = ASTextFromScriptText(PDFBinderFolder, kASRomanScript);
// instruction message
char strMsg[MAX_STRING_LENGTH] = "";
sprintf(strMsg, "This function will convert and process Tiff and PDF files in the selected directory. ");
strcat(strMsg, " You need to copy your files in C:\\Fairfax\\Adobe\\in directory." );
strcat(strMsg, " Files will be processed into C:\\Fairfax\\Adobe\\PDFA directory." );
strcat(strMsg, " If you are ready, click OK to continue, or click Cancel to quit. " );
strcat(strMsg, " \nNote you can press down Shift key and click the menu item to have a folder selection. " );
strcat(strMsg, " \nNote you can turn off the echo message by setting bEcho = false and rebuild the code. " );
if(ASBoolToBool(bEcho)==true){
ASInt32 choice = AVAlert(ALERT_CAUTION, strMsg, "OK", "Cancel", NULL, true);
if(choice==2) {
return;
// create a new target pdf file with one empty page
PDDoc TargetPDF = PDDocCreate();
ASFixedRect mediaBox = { fixedZero, ASInt32ToFixed(792), ASInt32ToFixed(612), fixedZero };
PDPage emptyPage = PDDocCreatePage (TargetPDF, PDBeforeFirstPage, mediaBox);
PDPageRelease (emptyPage);
// get available headlers and set our file filter
char ValidExt[MAX_STRING_LENGTH];
memset(ValidExt, 0, MAX_STRING_LENGTH);
#ifdef SHOW_TOPDF_HANDLER_TYPES
// enumerate AVConversioToPDF handlers to get all available file
// types which can be converted to PDF.
AVConversionEnumToPDFConverters(MyAVConversionToPDFEnumProc, (AVConversionEnumProcData) ValidExt);
//AVAlertNote("Converters Defined");
//AVAlertNote(ValidExt);
//AVAlertNote(gPDFBinderFileFilter);
#endif
#ifdef USE_FILE_FILTER
// set File filter
strcpy(ValidExt, gPDFBinderFileFilter);
//AVAlertNote(ValidExt);
#endif
// process all files in the directory
int iNumFiles = 0;
int iNumFilesConverted = 0;
char* Done = "Converted";
char* NotDone = " - ";
char fileName[MAX_FILENAME_LENGTH+1];
ASFileSysItemPropsRec props;
ASFolderIterator iter;
ASPathName aspItem = NULL;
memset(&props, 0, sizeof(props));
props.size = sizeof(props);
//AVAlertNote("Props Defined");
ASPathName theFolder = NULL;
ASFileSys fileSys = NULL;
DURING
#ifdef WIN_PLATFORM
fileSys = ASGetDefaultFileSysForPath(ASAtomFromString("ASTextPath"), dispText);
theFolder = ASFileSysCreatePathName (fileSys, ASAtomFromString("ASTextPath"), dispText, 0);
//AVAlertNote("FileSys and Folder Defined");
#else
fileSys = ASGetDefaultFileSysForPath(ASAtomFromString("POSIXPath"), PDFBinderFolder);
theFolder = ASFileSysCreatePathName (fileSys,
ASAtomFromString("POSIXPath"), PDFBinderFolder, 0);
#endif
if (theFolder==NULL) {
//AVAlertNote("Fail to create ASPathName for the selected folder.");
E_RTRN_VOID
// Find first file in current directory
if((iter = ASFileSysFirstFolderItem(fileSys, theFolder, &props, &aspItem))==FALSE) {
//AVAlertNote("This is either an invalid folder or the folder contains no files.");
E_RTRN_VOID
ASFileSysReleasePath(fileSys, theFolder);
//AVAlertNote("Folder Released");
// get filename only
if(ASFileSysGetNameFromPath(fileSys, aspItem, fileName, sizeof(fileName))) {
E_RTRN_VOID
HANDLER
// exception handling
char errorMsg[256];
ASGetErrorString (ASGetExceptionErrorCode(), errorMsg, 256);
if(aspItem!=NULL) ASFileSysReleasePath(fileSys, aspItem);
if(theFolder!=NULL) ASFileSysReleasePath(fileSys, theFolder);
// display an error message.
if(ASBoolToBool(bEcho)==true) {
AVAlertNote (errorMsg);
return;
END_HANDLER
//AVAlertNote(fileName);
// go to binding if it's a valid type of file
if(props.type == kASFileSysFile && PassPDFBinderFileFilter(fileName)) {
char outFileName[] = "";
//strcat(outFileName, STRING_PDFOutputFolder);
//strcat(outFileName, FOLDERSYMBOL);
//strcat(outFileName, fileName);
strcat(outFileName, STRING_PDFOutputFolder);
strcat(outFileName, FOLDERSYMBOL);
strcat(outFileName, fileName);
//AVAlertNote(outFileName);
ASPathName outputFileName = ASFileSysCreatePathName (ASGetDefaultFileSys(), ASAtomFromString("Cstring"), outFileName, 0);
BindingFileToPDF(aspItem, fileName, props, TargetPDF, outputFileName ,&iNumFiles, &iNumFilesConverted);
//AVAlertNote("File Processed");
ASFileSysReleasePath(fileSys, aspItem);
// process all other files
while(ASFileSysNextFolderItem(fileSys, iter, &props, &aspItem)) {
// get filename only
if(ASFileSysGetNameFromPath(fileSys, aspItem, fileName, sizeof(fileName))) {
return;
// go to binding if it's a valid type of file
if(props.type == kASFileSysFile && PassPDFBinderFileFilter(fileName)) {
char outFileName[] = "";
//strcat(outFileName, STRING_PDFOutputFolder);
//strcat(outFileName, FOLDERSYMBOL);
//strcat(outFileName, fileName);
strcat(outFileName, STRING_PDFOutputFolder);
strcat(outFileName, FOLDERSYMBOL);
strcat(outFileName, fileName);
//AVAlertNote(outFileName);
ASPathName outputFileName = ASFileSysCreatePathName (ASGetDefaultFileSys(), ASAtomFromString("Cstring"), outFileName, 0);
BindingFileToPDF(aspItem, fileName, props, TargetPDF, outputFileName, &iNumFiles, &iNumFilesConverted);
//AVAlertNote("File Processed");
ASFileSysReleasePath(fileSys, aspItem);
ASPathName pdfPathName = NULL;
DURING
// close the findfile
ASFileSysDestroyFolderIterator(fileSys, iter);
// save and close the output pdf file
// create path
ASText pathText = ASTextNew();
ASTextCatMany(
pathText,
dispText,
ASTextFromScriptText(FOLDERSYMBOL, kASRomanScript),
ASTextFromScriptText(OutputPdfFileName, kASRomanScript),
NULL);
#ifdef WIN_PLATFORM
ASFileSys fileSys = ASGetDefaultFileSysForPath(ASAtomFromString("ASTextPath"), pathText);
pdfPathName = ASFileSysCreatePathName (fileSys,
ASAtomFromString("ASTextPath"), pathText, 0);
#else
char path[MAX_STRING_LENGTH];
strncpy(path, ASTextGetEncoded(pathText,
ASTextGetBestEncoding(pathText, (ASHostEncoding)PDGetHostEncoding())), MAX_STRING_LENGTH - 1);
ASFileSys fileSys = ASGetDefaultFileSysForPath(ASAtomFromString("POSIXPath"), path);
pdfPathName = ASFileSysCreatePathName (fileSys,
ASAtomFromString("POSIXPath"), path, 0);
#endif
if(pdfPathName==NULL) {
E_RTRN_VOID
// delete the empty page
if(PDDocGetNumPages(TargetPDF)>1) {
PDDocDeletePages (TargetPDF, 0,0,NULL, NULL);
// save
//PDDocSave (TargetPDF, PDSaveFull | PDSaveCollectGarbage | PDSaveLinearized,
// pdfPathName, ASGetDefaultUnicodeFileSys(), NULL, NULL);
PDDocClose (TargetPDF);
//ASFileSysReleasePath(fileSys, pdfPathName);
HANDLER
// exception handling
char errorMsg[256];
ASGetErrorString (ASGetExceptionErrorCode(), errorMsg, 256);
if(pdfPathName!=NULL) ASFileSysReleasePath(fileSys, pdfPathName);
// display an error message.
if(ASBoolToBool(bEcho)==true) {
AVAlertNote (errorMsg);
return;
END_HANDLER
// use this line to show the massage on screen if you need
//if(ASBoolToBool(bEcho)==true) {
AVAlertNote ("Folder Completed. PDF/A Output files generated.");
return;
/* ConvertAndInsertFileToPDF
/** Internal function \n
** Convert a file to PDF, then insert it to target PDF file.
** @param aFileName IN char string, filename.
** @param PDFfile IN/OUT PDDoc of the target PDF file.
** @return 0 if OK, 1 if failed.
int ConvertAndInsertFileToPDF(ASPathName aPathName, char* aFileName, PDDoc PDFfile)
PDDoc tempPDF;
char* Ext;
DURING
// get file extention
Ext = strrchr(aFileName,'.');
if(Ext) {
Ext++;
else {
E_RETURN (1);
// if the file is PDF, open PDDoc
if(strcmp(Ext,"PDF")==0 || strcmp(Ext,"pdf")==0) {
tempPDF = PDDocOpen (aPathName, ASGetDefaultFileSys(), NULL, true);
if(tempPDF==NULL) {
PDDocClose(tempPDF);
E_RETURN (1);
// else convert it to PDF
else
// let it automatically find right handler for the file and do the job.
AVConversionStatus stat = AVConversionConvertToPDF
(kAVConversionAsyncOkay, //kAVConversionNoFlags
aPathName, ASGetDefaultFileSys(), &tempPDF, NULL);
// check if successful
if(stat != kAVConversionSuccess) {
//AVAlertNote("Cannot convert the file.");
E_RETURN (1);
HANDLER
// exception handling
char errorMsg[256];
ASGetErrorString (ASGetExceptionErrorCode(), errorMsg, 256);
// display an error message.
if(ASBoolToBool(bEcho) == true) {
AVAlertNote (errorMsg);
return 1;
END_HANDLER
// insert new PDF into target PDF
DURING
// insert all pages of new pdfc to TargetPDFfile.
PDDocInsertPages(PDFfile, PDLastPage, tempPDF, 0,
PDAllPages, PDInsertAll, NULL, NULL, NULL, NULL);
PDDocClose(tempPDF);
HANDLER
char errorMsg[256];
ASGetErrorString (ASGetExceptionErrorCode(), errorMsg, 256);
if(ASBoolToBool(bEcho)==true) {
AVAlertNote(errorMsg);
END_HANDLER
if(strcmp(Ext,"doc")==0) {
char fname[40];
sprintf(fname,"%s.pdf",aFileName);
remove(fname);
return 0;
/* MyAVConversionToPDFEnumProc
/** Internal callback function \n
** called for every AVConversionToPDFHandler.
** get the valid type (file extention) for the conversion.
** @return true.
ACCB1 ASBool ACCB2 MyAVConversionToPDFEnumProc(AVConversionToPDFHandler handler,
AVConversionEnumProcData data)
ASUns16 numFileExt = handler->convFilter.numFileDescs;
for (int i = 0; i < numFileExt; i++) {
char* ext = handler->convFilter.fileDescs[i].extension;
if(strlen(ext)>0) {
strcat((char*) data, ext);
strcat((char*) data, ",");
return true;
/* this is alternative code to get right conversion handler for a specific file
to be converted. It works with function AVConversionConvertToPDFWithHandler.
It's not used now, but kept for user's reference.
ACCB1 ASBool ACCB2 AVConversionToPDFEnumFindHandler(AVConversionToPDFHandler handler,
AVConversionEnumProcData data)
ASUns16 numFileExt = handler->convFilter.numFileDescs;
for ( int i = 0; i < numFileExt; i++)
char* ext = handler->convFilter.fileDescs[i].extension;
if(strlen(ext)) {
if(!strcmp((char*) data, ext)) {
gHandler = handler;
return false;
return true;
/* BindingFileToPDF
/** Internal callback function for binding process \n
** IN: char* aFilename, ASFileSysItemPropsRec nFileAttrb \n
** PDDoc targetPDdDoc, int *ipTotal, \n
** int *ipConverted, FILE *logfile \n
** OUT: int *ipTotal, int *ipConverted. \n
void BindingFileToPDF(ASPathName aPathName, char* aFilename, ASFileSysItemPropsRec nFileAttrb, PDDoc targetPDdDoc, ASPathName outputPathName, int *ipTotal, int *ipConverted)
// ignore system, hidden files, and our target PDF and log file.
if( nFileAttrb.isHidden
|| (strcmp(aFilename,".")==0) || (strcmp(aFilename,".." )==0)
|| (strcmp(aFilename,OutputPdfFileName)==0) || (strcmp(aFilename,LogFileName)==0)) {
return;
(*ipTotal)++;
char msg[MAX_STRING_LENGTH] = "";
char* Done = "Converted";
char* NotDone = " - ";
// try to convert and insert it to target PDF file.
// rc would be 0 for success, otherwise 1.
int rc = ConvertAndSavePDFInTargetFolder(aPathName, aFilename, targetPDdDoc, outputPathName);
// if converted
if(rc==0) {
(*ipConverted)++;
/* PassPDFBinderFileFilter
/** Internal callback function for binding process
** @return true if the IN aFilename is a valid file for PDF conversion,
** otherwise false.
ASBool PassPDFBinderFileFilter(char* aFilename)
#ifdef USE_FILE_FILTER
// if the filter is empty, any file will pass.
if(strlen(gPDFBinderFileFilter)==0)
return true;
char* Ext = strrchr(aFilename,'.');
if(Ext!=NULL) {
Ext++;
if(strstr(gPDFBinderFileFilter, Ext)) {
return true;
return false;
#else
// not use filter, any file will pass.
return true;
#endif
/* ConvertAndInsertFileToPDF
/** Internal function \n
** Convert a file to PDF, then insert it to target PDF file.
** @param aFileName IN char string, filename.
** @param PDFfile IN/OUT PDDoc of the target PDF file.
** @return 0 if OK, 1 if failed.
int ConvertAndSavePDFInTargetFolder(ASPathName aPathName, char* aFileName, PDDoc PDFfile, ASPathName outputPathName)
PDDoc tempPDF;
char* Ext;
DURING
// get file extention
Ext = strrchr(aFileName,'.');
if(Ext) {
Ext++;
else {
E_RETURN (1);
// if the file is PDF, open PDDoc
if(strcmp(Ext,"PDF")==0 || strcmp(Ext,"pdf")==0) {
tempPDF = PDDocOpen (aPathName, ASGetDefaultFileSys(), NULL, true);
if(tempPDF==NULL) {
PDDocClose(tempPDF);
E_RETURN (1);
// else convert it to PDF
else
// let it automatically find right handler for the file and do the job.
AVConversionStatus stat = AVConversionConvertToPDF
(kAVConversionAsyncOkay, //kAVConversionNoFlags
aPathName, ASGetDefaultFileSys(), &tempPDF, NULL);
// check if successful
if(stat != kAVConversionSuccess) {
//AVAlertNote("Cannot convert the file.");
E_RETURN (1);
else {
//change Extension
ASText asTmp = ASTextNew();
ASFileSysDisplayASTextFromPath(ASGetDefaultUnicodeFileSys(), outputPathName, asTmp);
//AVAlertNote(ASTextGetScriptText(asTmp, kASRomanScript));
if(strcmp(Ext,"TIF")==0 || strcmp(Ext,"tif")==0){
ASTextReplace(asTmp, ASTextFromScriptText(".tif", kASRomanScript), ASTextFromScriptText(".pdf", kASRomanScript));
} else {
ASTextReplace(asTmp, ASTextFromScriptText(".tiff", kASRomanScript), ASTextFromScriptText(".pdf", kASRomanScript));
//AVAlertNote(ASTextGetScriptText(asTmp, kASRomanScript));
outputPathName = ASFileSysCreatePathName (ASGetDefaultUnicodeFileSys(), ASAtomFromString("ASTextPath"), asTmp, 0);
HANDLER
// exception handling
char errorMsg[256];
ASGetErrorString (ASGetExceptionErrorCode(), errorMsg, 256);
// display an error message.
if(ASBoolToBool(bEcho) == true) {
AVAlertNote (errorMsg);
return 1;
END_HANDLER
// Run OCR and Save new PDF into target PDF
DURING
// OCR
ASAtom cmdName;
AVCommand cmd;
cmdName=ASAtomFromString("PaperCapture");
cmd=AVCommandNew(cmdName);
ASCab config = ASCabNew();
ASCabPutInt (config, "UIPolicy", kAVCommandUISilent); //hide the interface
if (kAVCommandReady == AVCommandSetConfig (cmd, config)) {
//AVAlertNote("Config Ready");
ASCab inputs = ASCabNew();
ASCabPutPointer (inputs, kAVCommandKeyPDDoc, PDDoc, tempPDF, NULL);
if (kAVCommandReady == AVCommandSetInputs (cmd, inputs)) {
//AVAlertNote("Input Ready");
ASCabDestroy (inputs);
AVCommandStatus status = AVCommandExecute(cmd);
//switch (status) {
// case kAVCommandReady :
// AVAlertNote("Not working, but ready to work.");
// break;
// case kAVCommandWorking :
// AVAlertNote("Still working");
// break;
// case kAVCommandDone :
// AVAlertNote("Done working");
// break;
// case kAVCommandInError :
// AVAlertNote("In Error");
// break;
// case kAVCommandNotExecuted :
// AVAlertNote("Command not executed due to lack of objects on which the command to be executed");
// break;
AVCommandDestroy(cmd);
//Save
//PDDocSave (tempPDF, PDSaveFull | PDSaveCollectGarbage | PDSaveLinearized, outputPathName, ASGetDefaultUnicodeFileSys(), NULL, NULL);
//ClosePDF
//PDDocClose(tempPDF);
//Convert to PDF/A Compliance
//Select the right handler
AVConversionEnumFromPDFConverters(myAVConversionFromPDFEnumProc, NULL);
// do conversion
AVConversionStatus stat = AVConversionConvertFromPDFWithHandler(RightHandler, NULL, kAVConversionAsyncOkay, tempPDF, outputPathName, ASGetDefaultFileSys(), NULL);
// check the returned status and show message
//if (stat == kAVConversionSuccess)
// AVAlertNote( "The PDF/A file was saved in output folder." );
//else if (stat == kAVConversionFailed)
// AVAlertNote( "The PDF/A conversion failed." );
//else if (stat == kAVConversionSuccessAsync)
// AVAlertNote( "The conversion will continue asynchronously." );
//else if (stat == kAVConversionCancelled)
// AVAlertNote( "The conversion was cancelled." );
//Save
//PDDocSave (tempPDF, PDSaveFull | PDSaveCollectGarbage | PDSaveLinearized, outputPathName, ASGetDefaultUnicodeFileSys(), NULL, NULL);
//ClosePDF
PDDocClose(tempPDF);
ASFileSysReleasePath(ASGetDefaultFileSys(), outputPathName);
HANDLER
char errorMsg[256];
ASGetErrorString (ASGetExceptionErrorCode(), errorMsg, 256);
if(ASBoolToBool(bEcho)==true) {
AVAlertNote(errorMsg);
END_HANDLER
if(strcmp(Ext,"doc")==0) {
char fname[40];
sprintf(fname,"%s.pdf",aFileName);
remove(fname);
return 0;
//Select the appropiate handler for the PDF/A conversion
static ACCB1 ASBool ACCB2 myAVConversionFromPDFEnumProc(AVConversionFromPDFHandler handler, AVConversionEnumProcData data)
AVFileFilterRec filter = handler->convFilter;
ASUns16 numFileExt = filter.numFileDescs;
char *kUniqueID = handler->uniqueID;
// go through the conversion handlers to find a handler for PDF extension files and the unique key matches the PDF/A one.
for (ASInt32 i = 0; i < numFileExt; i++)
if (strlen(handler->convFilter.fileDescs[i].extension)>0)
// found it, fill in the handler and return false to stop going on.
if (!strcmp(handler->convFilter.fileDescs[i].extension, "pdf") && !strcmp(kUniqueID,"com.callas.preflight.pdfa")) {
RightHandler = handler;
return false ;
return true;There are some options for various APIs to run "kinda silent" - but again, Acrobat is designed for INTERACTIVE use…so "completely silent" isn't really an option.
As for speed – you'd need to be MUCH MORE specific about where your slow downs are. Have you profiled?
From: Adobe Forums <[email protected]<mailto:[email protected]>>
Reply-To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>>
Date: Mon, 12 Dec 2011 07:39:08 -0800
To: Leonard Rosenthol <[email protected]<mailto:[email protected]>>
Subject: Slow processing and getting opening errors/warnings
Re: Slow processing and getting opening errors/warnings
created by FFX-ER<http://forums.adobe.com/people/FFX-ER> in Acrobat SDK - View the full discussion<http://forums.adobe.com/message/4079175#4079175 -
Hi,
We are working on Oracle 9i bi-directional Stream replication. After set up, and sufficient amount of testing from our side, we are facing fatal error in
Capture process in one of the database. Both the db srvr are having similar set up parameters, similar hardware, and almost everything is same. But we are facing this error in only one of them.
The error is :
Dump file e:\oracle\admin\repf\udump\repf_cp01_1620.trc
Thu Apr 03 15:42:53 2003
ORACLE V9.2.0.2.1 - Production vsnsta=0
vsnsql=12 vsnxtr=3
Windows 2000 Version 5.0 Service Pack 2, CPU type 586
Oracle9i Enterprise Edition Release 9.2.0.2.1 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.2.0 - Production
Windows 2000 Version 5.0 Service Pack 2, CPU type 586
Instance name: repf
Redo thread mounted by this instance: 1
Oracle process number: 19
Windows thread id: 1620, image: ORACLE.EXE (CP01)
*** 2003-04-03 15:42:53.000
*** SESSION ID:(21.548) 2003-04-03 15:42:53.000
TLCR process death detected. Shutting down TLCR
error 1280 in STREAMS process
ORA-01280: Fatal LogMiner Error.
OPIRIP: Uncaught error 447. Error stack:
ORA-00447: fatal error in background process
ORA-01280: Fatal LogMiner Error.
Dump file e:\oracle\admin\repf\udump\repf_cp01_1904.trc
Tue Apr 01 18:44:27 2003
ORACLE V9.2.0.2.1 - Production vsnsta=0
vsnsql=12 vsnxtr=3
Windows 2000 Version 5.0 Service Pack 2, CPU type 586
Oracle9i Enterprise Edition Release 9.2.0.2.1 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.2.0 - Production
Windows 2000 Version 5.0 Service Pack 2, CPU type 586
Instance name: repf
Redo thread mounted by this instance: 1
Oracle process number: 19
Windows thread id: 1904, image: ORACLE.EXE (CP01)
*** 2003-04-01 18:44:27.000
*** SESSION ID:(18.7) 2003-04-01 18:44:27.000
error 604 in STREAMS process
ORA-00604: error occurred at recursive SQL level 1
ORA-01423: error encountered while checking for extra rows in exact fetch
ORA-01089: immediate shutdown in progress - no operations are permitted
ORA-06512: at "SYS.LOGMNR_DICT_CACHE", line 1600
ORA-06512: at "SYS.LOGMNR_GTLO3", line 33
ORA-06512: at line 1
OPIRIP: Uncaught error 1089. Error stack:
ORA-01089: immediate shutdown in progress - no operations are permitted
ORA-00604: error occurred at recursive SQL level 1
ORA-01423: error encountered while checking for extra rows in exact fetch
ORA-01089: immediate shutdown in progress - no operations are permitted
ORA-06512: at "SYS.LOGMNR_DICT_CACHE", line 1600
ORA-06512: at "SYS.LOGMNR_GTLO3", line 33
ORA-06512: at line 1
Thanx,
Kamlesh ChaudharyIf you are configuring Streams environment you dont have to specify the logminer tablespace. So i did not specify it manually when i was setting up my Capture process, and i did not change it later.
Prior the 1280 fatal logminer error i have the following errors:
ORA-00353: log corruption near block string change string time string
ORA-00354: corrupt redo log block header.
I've checked the hard drive, and it it correct.
Any suggestions? -
RAC for downstreams capture process
I have created a real-time downstreams capture process in a RAC to protect the process of any failure but I have some doubts about this:
1- I need create the group of standby redo log for each instance in cluster or its shared for all ?
2- if one instance goes down and we perform Redos sending from the source via the following service depicted in the source TNSNAME:
RAC_STR=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=VIP-instance1)
(PORT=1521)
(ADDRESS=
(PROTOCOL=TCP)
(HOST=VIP-instance1)
(PORT=1521)
(CONNECT_DATA=
(SERVICE_NAME=RAC-global_name)
configured process will be able to continue capturing changes without data redo loss ?
Appreciate any explanation.>
if one instance goes down and we perform Redos sending from the source via the following service depicted in the source TNSNAME:
RAC_STR=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=VIP-instance1)
(PORT=1521)
(ADDRESS=
(PROTOCOL=TCP)
(HOST=VIP-instance1)
(PORT=1521)
(CONNECT_DATA=
(SERVICE_NAME=RAC-global_name)
configured process will be able to continue capturing changes without data redo loss ?You will not expirience with data loss if one of RAC instances goes down - next one will overtake yours downstream capture process and continues to mine redo from source database. But you definitly need to correct your tnsnames, because it is pointing twice to the same RAC instance "VIP-instance1"
The downstream capture on RAC unfortunatly has other problems, with I've already expirienced, but maybe it will not concern your configuration. The undocumented problems (or bugs which are open and not solved yet) are:
1. if your RAC DB has the phys. standby than it can happened that it discontinue to register redo from upstream Streams database.
2. if your RAC DB has both downstream and local capture then if more as 2 RAC instances are running, the local capture can't continue with current redolog (only after log switch) -
Resetting SCN from removed Capture Process
I've come across a problem in Oracle Streams where the Capture Processes seem to get stuck. There are no reported errors in the alert log and no trace files, but the capture process fails to continue capturing changes. It stays enabled, but in an awkward state where the OEM Console reports zeros across the board (0 messages, 0 enqueued), when in fact there had been accurate totals in the past.
Restarting the Capture process does no good. The Capture process seems to switch its state back and forth from Dictionary Initialization to Initializing and vice versa. The only thing that seems to kickstart Streams again is to remove the Capture process and recreate the same process.
However my problem is that I want to set the start_scn of the new capture process to the captured_scn of the remove capture process so that the new one can start from where the old one left off? However, I'm getting an error that this cannot be performed (cannot capture from specified SCN).
Am I understanding this correctly? Or should the new Capture process start from where the removed left off automatically?
ThanksHi,
I seem to have the same problem.
I now have a latency of round about 3 days while nothing happened in the database so I want to be able to set the capture process to a further SCN. Setting the Start_SCN gives me an error (can't remember it now unfortunately). Somethimes it seems that the capture process gets stuck in an archived log. It then takes a long time for it to go further and when it goes further it sprints through a bunch of logs before it gets stuck again. During that time all the statuses look good, no heavy cpu-usage is monitored. We saw that the capture-builder has the highest cpu-load, where I would expect the capture-reader to be busy.
I am able to set the first_scn. So a rebuild of the logminer dictionary might help a bit. But then again: why would the capture process need such a long time to process the archived-logs where no relevant events are expected.
In my case the Streams solution is considered as a candidate for a replication solution where Quest's Sharedplex is considered to be expensive and unable to meet the requirements. One main reason it is considered inadaquate is that it is not able to catch up after a database-restart of a heavy batch. Now it seems that our capture-process might suffer from the same problem. I sincerly hope I'm wrong and it proofs to be capable.
Regards,
Martien -
Can stream "capture process" skip an archivelog?
DB: 10.2.0.5, on Windows 2003 SP2 32-bits
A stream capture component in our database is stuck reading one the archive log file, and status in the v$streams_capture view is 'CREATING LCR' . It is not moving at all.
I think, the archivelog is corrupted and will guess skipping from reading the log can help??
Any idea?Find the transaction identifier in the trace file; for example in this trace the transaction is '0x000a.008.00019347'
Convert it from hex to decimal; in this example '0x000a.008.00019347' will be '10.8.103239'.
Example of trace file:
++++++++++++ Dumping Current LogMiner Lcr: +++++++++++++++
++ LCR Dump Begin: 0x000007FF3F75D8A0 - cannot_support
op: 255, Original op: 255, baseobjn: 74480, objn: 74480, objv: 1
DF: 0x00000003, DF2: 0x00000010, MF: 0x08240000, MF2: 0x00000000
PF: 0x00000000, PF2: 0x00000000
MergeFlag: 0x03, FilterFlag: 0x01
Id: 1, iotPrimaryKeyCount: 0, numChgRec: 0
NumCrSpilled: 0
RedoThread#: 1, rba: 0x000604.00014fd2.014c
scn: 0x0000.36a4b03c, (scn: 0x0000.36a4b03c, scn_sqn: 1, lcr_sqn: 0)xid: *0x000a.008.00019347*, parentxid: 0x000a.008.00019347, proxyxid: 0x0000.000.00000000, unsupportedReasonCode: 0,
ncol: 5 newcount: 0, oldcount: 0
LUBA: 0x3.c004eb.8.8.122f2
Filter Flag: UNDECIDED
++ KRVXOA Dump Begin:
Object Number: 74480 BaseObjNum: 74480 BaseObjVersion: 1
Then stop the capture process and execute the following procedure:
exec dbms_capture_adm.set_parameter('your_capture_process_name','_ignore_transaction','your_transaction_id_in_decimal_notation');
Now you can restart the capture process and it will ignore the tx. -
Several captures processes per queue
Hi everybody,
I've been trying out stream configuration on 10gR2 according to the tutorial of Sanjay Mishra on OTN and ... everything works great.
But...
I've tried to configure several applies processes reading from one queue, and several capture sending data to one single queue, and I can't get it to work. Is there something special to take care of - or is it supposed to be so ?
Thanks in advance - NicolasHi Nicolas,
If all the tables are stored on the same source database, you can create only 1 capture process and use the rules to filter the tables you'd like to include in your replication.
For example, let's suppose you have a schema called 'HR' and you would like to capture the changes for tables TAB1 and TAB2 only.
After setting your queue you have to follow these steps:
1) Create a rule set
begin
dbms_rule_adm.create_rule_set(rule_set_name => 'capture_ruleset',
evaluation_context => 'SYS.STREAMS$_EVALUATION_CONTEXT');
end;
2) Create the rules for TAB1 and TAB2
begin
dbms_rule_adm.create_rule(rule_name =>'TAB1_RULE',
condition => ':dml.get_object_owner()=''HR'' and :dml.get_object_name()=''TAB1''');
dbms_rule_adm.create_rule(rule_name =>'TAB2_RULE',
condition => ':dml.get_object_owner()=''HR'' and :dml.get_object_name()=''TAB2''');
end;
3) Add the rules to your rule set
begin
dbms_rule_adm.add_rule(rule_set_name=>'CAPTURE_RULESET',rule_name=>'TAB1_RULE');
dbms_rule_adm.add_rule(rule_set_name=>'CAPTURE_RULESET',rule_name=>'TAB2_RULE');
end;
4) Create the capture process
BEGIN
DBMS_CAPTURE_ADM.CREATE_CAPTURE(
queue_name => 'streams_queue',
capture_name => 'my_capture',
rule_set_name => 'capture_ruleset',
start_scn => NULL,
source_database => NULL,
use_database_link => false,
first_scn => NULL);
END;
And that's it!
If you need to add another table, you just create a new rule and add it to your capture rule set. Also,don't forget to prepare the table for instantiation and to setup supplemental logging.
Let me know if you have any questions,
Aldo -
Instantiation and start_scn of capture process
Hi,
We are working on stream replication, and I have one doubt abt the behavior of the stream.
During set up, we have to instantiate the database objects whose data will be transferrd during the process. This instantiation process, will create the object at the destination db and set scn value beyond which changes from the source db will be accepted. Now, during creation of capture process, capture process will be assigned a specific start_scn value. Capture process will start capturing the changes beyond this value and will put in capture queue. If in between capture process get aborted, and we have no alternative other than re-creation of capture process, what will happen with the data which will get created during that dropping / recreation procedure of capture process. Do I need to physically get the data and import at the destination db. When at destination db, we have instantiated objects, why not we have some kind of mechanism by which new capture process will start capturing the changes from the least instantiated scn among all instantiated tables ? Is there any other work around than exp/imp when both db (schema) are not sync at source / destination b'coz of failure of capture process. We did face this problem, and could find only one work around of exp/imp of data.
thanx,Thanks Mr SK.
The foll. query gives some kind of confirmation
source DB
SELECT SID, SERIAL#, CAPTURE#,CAPTURE_MESSAGE_NUMBER, ENQUEUE_MESSAGE_NUMBER, APPLY_NAME, APPLY_MESSAGES_SENT FROM V$STREAMS_CAPTURE
target DB
SELECT SID, SERIAL#, APPLY#, STATE,DEQUEUED_MESSAGE_NUMBER, OLDEST_SCN_NUM FROM V$STREAMS_APPLY_READER
One more question :
Is there any maximum limit in no. of DBs involved in Oracle Streams.
Ths
SM.Kumar -
Capture Process hangs and LOGMINER Stops - "wait for transaction" ???
HI all
Any ideas why the LOGMINRER would stop mining the logs at the capture site DB (just hangs 40 short of current archivelog)
Capture Process is a status of Capturing Changes
And the wait event on the Capture Process is "wait for transaction"
How to diagnose whats wrong with Capture Process - been this way for 4 days !Hi
Yes we have had to explicity register archivelogs also.
Unfortunately this archivelog is registered -> so I am not sure. It apapers to have been as a result of a large DML transaction -> and I am not 100% sure the archivelog is posibly corrupt (however I doubt it as in 5 years as DBA I have not once hit a corruption - but always a first).
Any thoughts on how to proceed ? -
Getting Updated image through Config manager Build and capture process
Hi guys,
Looking for some pointers on getting the almost fully patched image out of configuration manager build and capture process.
I need below pointers:
- What and where to advertise\deploy software packages target? since its a new deployment, I believe it should be targeted to all unknown computers.
- How many times should I call 'install update' step in TS and where?
- What is the best way to patch image (if something is missed out during image capture) offline (since its config manager 2012 R2). when I pull schedule update list for offline schedule, does that only pull updates that are required for that image or it
pulls everything available as updates?
- I have done offline patch of image but still once the image is deployed it pulls office updates. Looks like , offline service just injects OS patches..right?
Regards,
Regards,- Where? That depends upon what you what. But, going by the letter of what you asked, you shouldn't deploy any applications or packages if you want them on your newly images systems, you should make them a part of the TS using Install Software and Install
Application tasks.
- How many times? You should only need one although depending upon what you are deploying and if you are using offline updates, some folks add more. I typically use two one right after the Setup Windows and ConfigMgr task (just like the task sequence wizard
builds for you) to update the OS and "things" in the image and one at the end to catch additional updates for apps and components added during the TS. Note that you also have to initiate an update scan cycle for additional install update tasks to work. Do
this by adding a run-command line task before the second Install Updates task with the proper WMIC incantation.
- Offline Updates only injects CBS updates into the image which are typically just core OS updates. You should also update your image though to include non-CBS updates. Using a build and catpure task sequence makes this easy.
Jason | http://blog.configmgrftw.com -
Oralce streamsSystem Change Number (SCN) and capture process
Do we have get SCN before capture process is started ? If yes , from where does the replication is started .
WIll replication process startright from the time when SCN is captured
OR
will replicaion start from the time when the capture process is started
Edited by: [email protected] on Mar 26, 2009 6:04 PMI am trying to setup oracle streams to enable replication for a set of tables.
One of the step as per the doc is is to setup/get SCN and its acheived by the following peice of code.
CONNECT STRMADMIN/STRMADMINPW@<CONNECT_STRING_SOURCE>
DECLARE
V_SCN NUMBER;
BEGIN
V_SCN := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@DB_LINK_TARGET_DB(
SOURCE_OBJECT_NAME => '<SCOTT.EMP>',
SOURCE_DATABASE_NAME => 'SOURCE_DATABASE',
INSTANTIATION_SCN => V_SCN);
END;
STRMADMIN : Is a genenice user account (streams administrator) to manage oracle streams. -
Unable to initialize capture device and device control in HDV
I shot with a Sony HVR-Z1U/Z1N and am using a Sony HDV 1080i tape deck to digitize.
I recently purchased a MacBook Pro and installed FCP Pro 5 on it. After getting over some time code issues we were chugging along, when on the 4th tape the image on the log and capture screen suddenly dissapeared (I could get audio and could see the image on the tape deck). Well after taking the tape out, checking and rechecking it I popped it back in and ever since then, I have been getting this error mssg "Unable to initialize capture device and device control."
I have tried deleting the preferences and starting from scratch. If I do that, and choose the easy setup with HDV- 1080i60, it gives me this error "Unable to locate the following external devices- HDV (1440 X 1080) 30fps.
I upgraded to FCP 5.1.2 this morning and upgraded the OS to 10.4.7 and QT to 7.1.3 and still no change.
Im at my wits end, Ive been working on this for a whole week now.
Thank you,
BugsIt has been reported to take more than one attempt to correct the installation but, if properly executed on a machine without other system problems, the QT reinstall process does work. The key element here is you must reinstall QT after you trash the receipts. The process is listed below.
x
To do a full quicktime reinstall.
Go to /library/receipts and delete any files that say Quicktime followed by a number e.g. Quicktime703.pkg
Go to the Apple quicktime site and download the appropriate version of Quicktime to your hard drive.
Run the Quicktime installer.
Repair Disk Permissions for your System Disk (Disk Utility > Select the system disk > Repair Disk Permissions)
Reboot
If this doesn't work, then the problem lies elsewhere:
1. your system - user preferences, firewire ports or other system elements.
2. your equipment - camera/deck/firewire cables.
3. your process - not setting up the software properly or using the software erroneously.
Listed below is a troubleshooting process. Not all steps are appropriate but the general process of isolating the problem is useful.
Troubleshooting Steps for OS X
by Jan Johannsen (Collected from: Apple>User Tips Library>User Tips Contributions forum)
FIRST AID
01 Completely shutdown, wait a 5 minutes, restart
02 Make sure you're not running out of free space on the System volume
03 Check/fix the filesystem using Disk Utility &/or Diskwarrior
04 Repair permissions using Disk Utility
05 Create a new user account, and see if the problem persists there
06 Clear system & user caches
07 Run FCP Rescue
08 Unplug all USB, Firewire devices except Apple mouse
09 Startup in SafeBoot mode, and see if the problem persists there
10 Reset system firmware
MORE SERIOUS TROUBLESHOOTING
11 Reapply the latest combo updater
12 Run the Apple hardware diagnostic CD
13 Check the hard drive for bad blocks
14 Take out 3rd party RAM
15 Unplug 3rd Party PCI cards
16 Reset PMU
17 Archive and reinstall the OS
18 Reinstall the system from scratch
19 Send the machine back to Apple -
Capture process status waiting for Dictionary Redo: first scn....
Hi
i am facing Issue in Oracle Streams.
below message found in Capture State
waiting for Dictionary Redo: first scn 777777777 (Eg)
Archive_log_dest=USE_DB_RECOVERY_FILE_DEST
i have space related issue....
i restored the archive log to another partition eg. /opt/arc_log
what should i do
1) db start reading archive log from above location
or
2) how to move some archive log to USE_DB_RECOVERY_FILE_DEST from /opt/arc_log so db start processing ...
Regard'sHi -
Bad news.
As per note 418755.1
A. Confirm checkpoint retention. Periodically, the mining process checkpoints itself for quicker restart. These checkpoints are maintained in the SYSAUX tablespace by default. The capture parameter, checkpoint_retention_time, controls the amount of checkpoint data retained by moving the FIRST_SCN of the capture process forward. The FIRST_SCN is the lowest possible scn available for capturing changes. When the checkpoint_retention_time is exceeded (default = 60 days), the FIRST_SCN is moved and the Streams metadata tables previous to this scn (FIRST_SCN) can be purged and space in the SYSAUX tablespace reclaimed. To alter the checkpoint_retention_time, use the DBMS_CAPTURE_ADM.ALTER_CAPTURE procedure.
Check if the archived redologfile it is requesting is about 60 days old. You need all archived redologs from the requested logfile onwards; if any are missing then you are out of luck. It doesnt matter that there have been mined and captured already; capture still needs these files for a restart. It has always been like this and IMHO is a significant limitation for streams.
If you cannot recover the logfiles, then you will need to rebuild the captiure process and ensure that any gap in data captures has been resynced manually using tags tofix the data.
Rgds
Mark Teehan
Singapore -
Cannot restart aborted Capture Process
Hi,
I've found that my capture process's status is aborted according to OEM and it cannot seem to be restarted.
How do I:
a) Determine why it has aborted?
b) Restart it?
Cheers,
WarrenThe trace file should indicate why the capture process has aborted. You will find it in the background dump destination location (unless you are on Windows, in that case look in the user dump destination). If you have encountered an unsupported datatype, you will need to modify your rules to eliminate the table with the unsupported datatype.
-
Hello:
I will be using creative techniques to process and manipulate a large number (hundreds) of very large (80 megapixel) images captured using a medium format digital back (Phase One IQ180).
Final output will be digital fine art imagery printed using an Epson 11880 at large sizes (up to 60 inches x ?), retaining the highest possible quality and resolution. I will be using Adobe CC PhotoShop and Camera RAW as well as Capture One software. PhotoShop filters will be used extensively.
The Mac Pro needs to be optimized for the above purpose and be useful for at least five years. I plan to max out all the other options (RAM, graphics cards, storage). Performance is more important than cost.
The few discussions I have found that mention optimum core configurations seem to lean toward 6 or 8 (but likely are not taking into consideration my need for manipulating a large number of very large files), so I am looking to this foum for opinions.
Thank you,
KentSee if this helps
http://macperformanceguide.com/index_topics.html#MacPro2013
Maybe you are looking for
-
Eclipse 3.4 and Java 6 compatibility
Hi All, I have a tomcat plugin inside Eclipse 3.4.2. Recently I upgraded from Java 5 to Java 6. When I try to start Tomcat from Eclipse,I get the following error: Error occurred during initialization of VM java.lang.UnsatisfiedLinkError: java.lang.Fl
-
System delivery reaction in Scheduling Agreement
Dear All. I have created a schedule line agreement with two dates. 01.07.2010 Qty 10 02.07.2010 Qty 10 If I go through VL01N transaction and choose date 01.07.2010 system working properly, and if I choose date 30.07.2010 and press enter system crea
-
How to get song information to replicate across home sharing?
Hi there, At the momement my home sharing is populating new albums which have been added toboth of my PCs. However what it is not doing is updating song information e.g song or artist name across both PCs. I have a lot of old albums which have name
-
S P R E A D type settings (created in FH, not editable in AI)
I am converting a batch of old maps from FreeHand to Illustrator, with spread type for the state names: C A L I F O R N I A In FreeHand, letter spacing can be spread out by dragging the right edge of the type box, or numerically by typing a
-
How to build the vertical photo gallery?
Similar to tn3, but I need to build a vertical photo gallery with scroll bar with as3. Can you please advise?