Java Local Cache Outperformed C++ Local Cache in 3.6.1
Currently I'm using same local cache configuration to publish 10000 record of a portable object and retrieve same item few times from both Java and c++ client with oracle coherence 3.6.1 version. I'm using linux x86 version for both java and c++.
Results from Java : 3 Micro Seconds (best Case), 4-5 Micro Seconds (Average Case)
Results from C++ : 7 Micro Seconds, 8-9 Mirco Seconds (Average Case)
When we have local cache for both Java and C++ data retrival latency ideally should be same. But I was able to witness 4 Mirco Second lagging in c++. Is there any sort of c++ configuration which I can improve the perfromance to reach at least 4-5 Micro Seconds.
My local cache configuration is as follows.
<local-scheme>
<scheme-name>local-example</scheme-name>
</local-scheme>
So in underneath coherence implementation it uses Safe HashMap as the default (As the documentation). Please let me know if i'm doing something wrong?
Hi Dave,
I have append my c++ sample code for reference.
-------------- Main class -------------------
#include "coherence/lang.ns"
#include "coherence/net/CacheFactory.hpp"
#include "coherence/net/NamedCache.hpp"
#include <ace/High_Res_Timer.h>
#include <ace/Sched_Params.h>
#include "Order.hpp"
#include "Tokenizer.h"
#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
using namespace coherence::lang;
using coherence::net::CacheFactory;
using coherence::net::NamedCache;
Order::View readOrder(String::View);
void createCache(std::string, NamedCache::Handle&, std::string, std::string&, std::string, std::string);
void readCache(NamedCache::Handle&, std::string, std::string&, std::string, std::string, std::string);
static int globalOrderIndex = 1;
int main(int argc, char** argv) {
try {
String::View vsCacheName;
std::string input;
std::ifstream infile;
std::string comment = "#";
infile.open("test-data.txt");
size_t found;
std::string result;
while (!infile.eof()) {
getline(infile, input);
if (input.empty())
continue;
found = input.rfind(comment);
if (found != std::string::npos)
continue;
Tokenizer str(input);
std::vector<std::string> tokens = str.split();
vsCacheName = tokens.at(0);
NamedCache::Handle hCache = CacheFactory::getCache(vsCacheName);
std::string itemCountList = tokens.at(1);
std::string searchCount = tokens.at(2);
std::string skipFirst = tokens.at(3);
std::string searchValue = tokens.at(4);
Tokenizer str1(itemCountList);
str1.setDelimiter(",");
std::vector<std::string> tokens1 = str1.split();
for (int x = 0; x < tokens1.size(); x++) {
std::string count = tokens1.at(x);
std::string result;
createCache(count, hCache, searchCount, result, vsCacheName, skipFirst);
sleep(1);
readCache(hCache, searchCount, result, skipFirst, count, searchValue);
std::cout << result << std::endl;
infile.close();
} catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
Order::View readOrder(String::View aotag) {
globalOrderIndex++;
return Order::create(aotag);
void createCache(std::string count, NamedCache::Handle& hCache, std::string searchIndex,
std::string& result, std::string cacheName, std::string skipValue) {
int totalRounds = atoi(count.c_str());
int search = atoi(searchIndex.c_str());
int skipFirstData = atoi(skipValue.c_str());
bool skipFirst = skipFirstData == 1 ? true : false;
int loop_count = skipFirstData == 1 ? search + 1 : search;
if (totalRounds == 0)
return;
ACE_hrtime_t average(0);
ACE_High_Res_Timer* tm = new ACE_High_Res_Timer();
ACE_hrtime_t nstime(0);
for (int x = 0; x <1; x++) {
tm->start();
for (int y = 0; y < totalRounds; y++) {
std::stringstream out;
out << globalOrderIndex;
String::View aotag = out.str();
Order::View order = readOrder(aotag);
hCache->put(aotag, order);
tm->stop();
tm->elapsed_time(nstime);
sleep(1);
if (x > 0 || !skipFirst) // skipping first write because it is an odd result
average += nstime;
tm->reset();
delete tm;
double totalTimetoAdd = average / (1 * 1000);
double averageOneItemAddTime = (average / (1 * totalRounds * 1000));
std::stringstream out;
out << totalTimetoAdd;
std::string timeToAddAll = out.str();
std::stringstream out1;
out1 << averageOneItemAddTime;
std::string timetoAddOne = out1.str();
result.append("------------- Test ");
result += cacheName;
result += " with ";
result += count;
result += " -------------\n";
result += "Time taken to publish data: ";
result += (timeToAddAll);
result += " us";
result += "\n";
result += "Time taken to publish one item: ";
result += (timetoAddOne);
result += " us\n";
void readCache(NamedCache::Handle& hCache, std::string searchCount,
std::string& result, std::string skipValue, std::string countVal, std::string searchValue) {
int skipData = atoi(skipValue.c_str());
bool skipFirst = skipData == 1 ? true : false;
int count = atoi(countVal.c_str());
String::View vsName = searchValue.c_str();
ACE_hrtime_t average(0);
int search = atoi(searchCount.c_str());
int loop_count = skipData == 1 ? search + 1 : search;
ACE_High_Res_Timer* tm = new ACE_High_Res_Timer();
ACE_hrtime_t nstime(0);
ACE_hrtime_t best_time(10000000);
bool isSaturated = true;
int saturatedValue = 0;
for (int x = 0; x < loop_count; x++) {
tm->start();
Order::View vInfo = cast<Order::View>(hCache->get(vsName));
tm->stop();
tm->elapsed_time(nstime);
if (x>0 || !skipFirst){
average += nstime;
if(nstime < best_time) {
best_time = nstime;
if(isSaturated){
saturatedValue = x+1;
} else {
isSaturated = false;
std::cout << nstime << std::endl;
vInfo = NULL;
tm->reset();
Order::View vInfo = cast<Order::View>(hCache->get(vsName));
if(vInfo == NULL)
std::cout << "No info available" << std::endl;
// if(x%1000==0)
// sleep(1);
delete tm;
double averageRead = (average / (search * 1000));
double bestRead = ((best_time)/1000);
std::stringstream out1;
out1 << averageRead;
std::string timeToRead = out1.str();
std::stringstream out2;
out2 << bestRead;
std::stringstream out3;
out3 << saturatedValue;
result += "Average readtime: ";
result += (timeToRead);
result += " us, best time: ";
result += (out2.str());
result += " us, saturated index: ";
result += (out3.str());
result += " \n";
----------------- Order.hpp ---------------
#ifndef ORDER_INFO_HPP
#define ORDER_INFO_HPP
#include "coherence/lang.ns"
using namespace coherence::lang;
class Order : public cloneable_spec<Order> {
// ----- constructors ---------------------------------------------------
friend class factory<Order>;
public:
virtual size_t hashCode() const {
return size_t(&m_aotag);
virtual void toStream(std::ostream& out) const {
out << "Order("
<< "Aotag=" << getAotag()
<< ')';
virtual bool equals(Object::View that) const {
if (instanceof<Order::View > (that)) {
Order::View vThat = cast<Order::View > (that);
return Object::equals(getAotag(), vThat->getAotag())
return false;
protected:
Order(String::View aotag) : m_aotag(self(), aotag) {}
Order(const Order& that) : super(that), m_aotag(self(), that.m_aotag) {}
// ----- accessors ------------------------------------------------------
public:
virtual String::View getAotag() const {
return m_aotag;
// ----- data members ---------------------------------------------------
private:
const MemberView<String> m_aotag;
#endif // ORDER_INFO_HPP
----------- OrderSerializer.cpp -------------
#include "coherence/lang.ns"
#include "coherence/io/pof/PofReader.hpp"
#include "coherence/io/pof/PofWriter.hpp"
#include "coherence/io/pof/SystemPofContext.hpp"
#include "coherence/io/pof/PofSerializer.hpp"
#include "Order.hpp"
using namespace coherence::lang;
using coherence::io::pof::PofReader;
using coherence::io::pof::PofWriter;
using coherence::io::pof::PofSerializer;
class OrderSerializer: public class_spec<OrderSerializer,extends<Object>,implements<PofSerializer> > {
friend class factory<OrderSerializer>;
protected:
OrderSerializer(){
public: // PofSerializer interface
virtual void serialize(PofWriter::Handle hOut, Object::View v) const {
Order::View order = cast<Order::View > (v);
hOut->writeString(0, order->getAotag());
hOut->writeRemainder(NULL);
virtual Object::Holder deserialize(PofReader::Handle hIn) const {
String::View aotag = hIn->readString(0);
hIn->readRemainder();
return Order::create(aotag);
COH_REGISTER_POF_SERIALIZER(1001, TypedBarrenClass<Order>::create(), OrderSerializer::create());
-----------------Tokenizer.h--------
#ifndef TOKENIZER_H
#define TOKENIZER_H
#include <string>
#include <vector>
// default delimiter string (space, tab, newline, carriage return, form feed)
const std::string DEFAULT_DELIMITER = " \t\v\n\r\f";
class Tokenizer
public:
// ctor/dtor
Tokenizer();
Tokenizer(const std::string& str, const std::string& delimiter=DEFAULT_DELIMITER);
~Tokenizer();
// set string and delimiter
void set(const std::string& str, const std::string& delimiter=DEFAULT_DELIMITER);
void setString(const std::string& str); // set source string only
void setDelimiter(const std::string& delimiter); // set delimiter string only
std::string next(); // return the next token, return "" if it ends
std::vector<std::string> split(); // return array of tokens from current cursor
protected:
private:
void skipDelimiter(); // ignore leading delimiters
bool isDelimiter(char c); // check if the current char is delimiter
std::string buffer; // input string
std::string token; // output string
std::string delimiter; // delimiter string
std::string::const_iterator currPos; // string iterator pointing the current position
#endif // TOKENIZER_H
--------------- Tokenizer.cpp -------------
#include "Tokenizer.h"
Tokenizer::Tokenizer() : buffer(""), token(""), delimiter(DEFAULT_DELIMITER)
currPos = buffer.begin();
Tokenizer::Tokenizer(const std::string& str, const std::string& delimiter) : buffer(str), token(""), delimiter(delimiter)
currPos = buffer.begin();
Tokenizer::~Tokenizer()
void Tokenizer::set(const std::string& str, const std::string& delimiter)
this->buffer = str;
this->delimiter = delimiter;
this->currPos = buffer.begin();
void Tokenizer::setString(const std::string& str)
this->buffer = str;
this->currPos = buffer.begin();
void Tokenizer::setDelimiter(const std::string& delimiter)
this->delimiter = delimiter;
this->currPos = buffer.begin();
std::string Tokenizer::next()
if(buffer.size() <= 0) return ""; // skip if buffer is empty
token.clear(); // reset token string
this->skipDelimiter(); // skip leading delimiters
// append each char to token string until it meets delimiter
while(currPos != buffer.end() && !isDelimiter(*currPos))
token += *currPos;
++currPos;
return token;
void Tokenizer::skipDelimiter()
while(currPos != buffer.end() && isDelimiter(*currPos))
++currPos;
bool Tokenizer::isDelimiter(char c)
return (delimiter.find(c) != std::string::npos);
std::vector<std::string> Tokenizer::split()
std::vector<std::string> tokens;
std::string token;
while((token = this->next()) != "")
tokens.push_back(token);
return tokens;
I'm really concerned about the performance. 1 Micro seconds is very much valuable for me. If you could reduce it to 5 micro seconds then it would be a great help for me. I'm building above code by following release arguments.
"g++ -Wall -ansi -m32 -O3"
Following file is my test script
------------ test-data.txt ---------------
#cache type - data load - read attempts - skip first - read value
local-orders 10000 5 1 1
# dist-extend 1,100,10000 5 1 1
# repl-extend 1,100,10000 5 1 1
You can uncomment one by one and test different caches with different loads.
Thanks for the reply
sura
Edited by: sura on 23-Jun-2011 18:49
Edited by: sura on 23-Jun-2011 19:35
Edited by: sura on 23-Jun-2011 19:53
Similar Messages
-
Local Cache containing all Distributed Cache entries
Hello all,
I am seeing what appears to be some sort of problem. I have 2 JVMS running, one for the application and the other serving as a coherence cache JVM (near-cache scheme).
When i stop the cache JVM - the local JVM displays all 1200 entries even if the <high-units> for that cache is set to 300.
Does the local JVM keep a copy of the Distributed Data?
Can anyone explain this?
Thankshi,
i have configured a near-cahe with frontscheme and back scheme.in the front scheme i have used local cache and in the back scheme i have used the distributed cache .my idea is to have a distributed cache on the coherence servers.
i have 01 jvm which has weblogic app server while i have a 02 jvm which has 4 coherence servers all forming the cluster.
Q1: where is the local cache data stored.? is it on the weblogic app server or on the coherence servers (SSI)..
Q2: although i have shutdown my 4 coherence servers..i am still able to get the data in the app.so have a feel that the data is also stored locally..on the 01 jvm which has weblogic server runnng...
q3: does both the client apps and coherence servers need to use the same coherence-cache-config.xml
can somebody help me with these questions.Appreciate your time.. -
LOCAL OLAP CACHE AND GLOBAL OLAP CACHE
what is local olap cache and global olap cache...
what is the difference between ....can you explain scenario plz...
will reward with points
thanks in advanceHello GURU
Local cache is specific to a user, before BW 3.0 it was only local cache available...if a user run the query data will come to cache from infoprovider and next time same query will not go to Data base instead it will fetch data from cache memory...this cache will be used only for that particular user...if some other user try the same query it will not pick up dta from cache.....
BW 3.0 onward we have global cache which means several user can access same cache for the same query or data which is related in cache...
Thanks
Tripple k -
Stale Near Cache data when all Cache Server fails and are restarted
Hi,
We are currently making use of Coherence 3.6.1. We are seeing an issue. The following is the scenario:
- caching servers and proxy server are all restarted.
- one of the cache say "TestCache" is bulk loaded with some data (e.g. key/value of : key1/value1, key2/value, key3/value3) on the caching servers.
- near cache client connects onto the server cluster via the Extend Proxy Server.
- near cache client is primed with all data from the cache server "TestCache". Hence, near cache client now has all key/values locally (i.e. key1/value1, key2/value, key3/value3).
- all caching servers in the cluster is down, but the extend proxy server is ok.
- all cache server in the cluster comes back up.
- we reload all cache data into "TestCache" on the cache server, but this time it only has key/value of : key1/value1, key2/value.
- So the caching server's state for "TestCache" is that it should only have key1/value1, key2/value, but the near cache client still thinks it's got key1/value1, key2/value, key3/value3. So in effect, it still knows about key3/value3 which no longer exists.
Is there anyway for the near cache client to invalidate the key3/value3 automatically? This scenario happens because the extend proxy server is actually not down, but all caching servers are, but the near cache client for some reason doesn't know about this and does not invalidate the cache client near cache data.
Can anyone help?
Thanks
Regards
Wilson.Hi,
I do have the invalidation strategy as "ALL". Remember this cache client is connected via the Extend proxy server where it's connectivity is still ok, just the caching server holding the storage data in the cluster are all down.
Please let me know why else we can try.
Thanks
Regards
Wilson. -
ROW CACHE ENQUEUE LOCK/ibrary cache load lock leads to database hung
(lowercase, curly brackets, no spaces)
We faced database hung on 3 node 11i erp 9i rac database.
We saw the library cache load lock timed out events reported in alert log.
Then few ora-600 and later ROW CACHE ENQUEUE LOCK timed out event. Eventually database was hung and we had to bounce the services .
we created support sr 7845542.992 for RCA.
The support says to increase shared pool size to avoid shared pool fragmentation and avoid reload ,additionaly to upgrade to 10g database.
I am not covinced adding additional pool size would solve this or upgrade to 10 .furthermore even 10g has such issues reported.
I saw couple of bugs mentioned such issue can happen due deadlock of session holding latches .
kindly let me know your view on issue
If required i can attach statspack for more information. (lowercase, curly brackets, no spaces)Many Thanks, i was keen to have your update .
There are 8 cpus on each node . Reloads very high during time period ,but normally there are not high reloads.
Statspack details for 3 nodes
STATSPACK report for
DB Name DB Id Instance Inst Num Release Cluster Host
PROD 21184234 PROD1 1 9.2.0.8.0 YES npi-or-db-p-
11.npi.corp
Snap Id Snap Time Sessions Curs/Sess Comment
Begin Snap: 149817 30-Oct-09 13:00:09 574 #########
End Snap: 149837 30-Oct-09 14:00:17 602 #########
Elapsed: 60.13 (mins)
Cache Sizes (end)
~~~~~~~~~~~~~~~~~
Buffer Cache: 8,192M Std Block Size: 8K
Shared Pool Size: 1,024M Log Buffer: 10,240K
Load Profile
~~~~~~~~~~~~ Per Second Per Transaction
Redo size: 122,414.93 11,449.13
Logical reads: 69,550.76 6,504.89
Block changes: 928.41 86.83
Physical reads: 196.24 18.35
Physical writes: 28.65 2.68
User calls: 343.97 32.17
Parses: 558.61 52.25
Hard parses: 43.48 4.07
Sorts: 467.24 43.70
Logons: 0.63 0.06
Executes: 2,046.99 191.45
Transactions: 10.69
% Blocks changed per Read: 1.33 Recursive Call %: 97.59
Rollback per transaction %: 5.07 Rows per Sort: 15.85
Instance Efficiency Percentages (Target 100%)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffer Nowait %: 100.00 Redo NoWait %: 100.00
Buffer Hit %: 99.72 In-memory Sort %: 100.00
Library Hit %: 96.79 Soft Parse %: 92.22
Execute to Parse %: 72.71 Latch Hit %: 99.77
Parse CPU to Parse Elapsd %: 60.10 % Non-Parse CPU: 78.07
-> s - second
-> cs - centisecond - 100th of a second
-> ms - millisecond - 1000th of a second
-> us - microsecond - 1000000th of a second
-> ordered by wait time desc, waits desc (idle events last)
Avg
Total Wait wait Waits
Event Waits Timeouts Time (s) (ms) /txn
db file sequential read 249,234 0 1,537 6 6.5
db file scattered read 61,776 0 769 12 1.6
row cache lock 780,098 10 566 1 20.2
library cache lock 697,849 157 432 1 18.1
latch free 127,926 4,715 387 3 3.3
global cache cr request 370,770 3,091 309 1 9.6
PL/SQL lock timer 59 58 112 1903 0.0
wait for scn from all nodes 303,572 18 103 0 7.9
library cache pin 26,231 2 100 4 0.7
global cache null to x 17,717 716 92 5 0.5
buffer busy waits 5,388 18 74 14 0.1
db file parallel read 5,245 0 69 13 0.1
log file sync 20,407 29 66 3 0.5
enqueue 52,200 70 60 1 1.4
buffer busy global CR 4,845 33 55 11 0.1
CGS wait for IPC msg 412,512 407,106 50 0 10.7
ksxr poll remote instances 1,279,565 483,046 48 0 33.2
log file parallel write 160,040 0 42 0 4.1
library cache load lock 1,491 2 29 20 0.0
global cache open x 19,507 344 28 1 0.5
buffer busy global cache 957 0 22 23 0.0
global cache s to x 16,516 180 20 1 0.4
db file parallel write 11,120 0 12 1 0.3
log file sequential read 618 0 11 18 0.0
DFS lock handle 23,768 0 10 0 0.6
control file sequential read 8,563 0 4 0 0.2
KJC: Wait for msg sends to c 1,549 57 4 3 0.0
lock escalate retry 76 76 4 52 0.0
SQL*Net break/reset to clien 12,546 0 3 0 0.3
SQL*Net more data to client 85,773 0 3 0 2.2
control file parallel write 1,265 0 2 1 0.0
global cache null to s 648 23 1 2 0.0
global cache busy 200 0 1 5 0.0
global cache open s 1,493 28 1 1 0.0
log file switch completion 12 0 1 61 0.0
PX Deq Credit: send blkd 161 70 1 4 0.0
kksfbc child completion 119 118 1 5 0.0
PX Deq: reap credit 5,948 5,456 0 0 0.2
PX Deq: Execute Reply 83 29 0 3 0.0
process startup 8 0 0 25 0.0
LGWR wait for redo copy 992 12 0 0 0.0
IPC send completion sync 450 450 0 0 0.0
PX Deq: Parse Reply 100 28 0 1 0.0
undo segment extension 10,380 10,372 0 0 0.3
PX Deq: Join ACK 146 65 0 1 0.0
buffer deadlock 222 221 0 0 0.0
async disk IO 1,179 0 0 0 0.0
wait list latch free 2 0 0 16 0.0
PX Deq: Msg Fragment 112 28 0 0 0.0
Library Cache Activity for DB: PROD Instance: PROD1 Snaps: 149817 -149837
->"Pct Misses" should be very low
Get Pct Pin Pct Invali-
Namespace Requests Miss Requests Miss Reloads dations
BODY 116,007 1.1 133,347 19.9 24,338 0
CLUSTER 4,224 0.6 5,131 1.0 0 0
INDEX 15,048 24.1 13,798 26.4 2 0
JAVA DATA 82 0.0 692 39.6 136 0
JAVA RESOURCE 66 39.4 206 25.2 12 0
PIPE 1,140 0.5 1,160 0.5 0 0
SQL AREA 1,197,908 12.6 13,517,660 1.5 111,833 73
TABLE/PROCEDURE 3,847,439 0.8 4,230,265 7.9 142,200 0
TRIGGER 8,444 2.4 8,657 18.5 1,274 0
GES Lock GES Pin GES Pin GES Inval GES Invali-
Namespace Requests Requests Releases Requests dations
BODY 1 1,234 1,258 985 0
CLUSTER 3,222 25 25 25 0
INDEX 13,792 3,641 3,631 3,629 0
JAVA DATA 0 0 0 0 0
JAVA RESOURCE 0 26 25 0 0
PIPE 0 0 0 0 0
SQL AREA 0 0 0 0 0
TABLE/PROCEDURE 857,137 13,130 13,264 10,762 0
TRIGGER 0 200 202 200 0
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
STATSPACK report for
DB Name DB Id Instance Inst Num Release Cluster Host
PROD 21184234 PROD2 2 9.2.0.8.0 YES npi-or-db-p-
12.npi.corp
Snap Id Snap Time Sessions Curs/Sess Comment
Begin Snap: 149847 30-Oct-09 14:00:05 493 #########
End Snap: 149857 30-Oct-09 15:00:02 432 #########
Elapsed: 59.95 (mins)
Cache Sizes (end)
~~~~~~~~~~~~~~~~~
Buffer Cache: 8,192M Std Block Size: 8K
Shared Pool Size: 1,024M Log Buffer: 10,240K
Load Profile
~~~~~~~~~~~~ Per Second Per Transaction
Redo size: 71,853.44 32,058.65
Logical reads: 273,904.84 122,207.36
Block changes: 889.13 396.70
Physical reads: 40.40 18.03
Physical writes: 20.97 9.35
User calls: 153.74 68.60
Parses: 66.19 29.53
Hard parses: 2.66 1.19
Sorts: 25.70 11.47
Logons: 0.16 0.07
Executes: 726.41 324.10
Transactions: 2.24
% Blocks changed per Read: 0.32 Recursive Call %: 92.41
Rollback per transaction %: 4.84 Rows per Sort: 193.55
Instance Efficiency Percentages (Target 100%)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffer Nowait %: 100.00 Redo NoWait %: 99.99
Buffer Hit %: 99.99 In-memory Sort %: 100.00
Library Hit %: 99.35 Soft Parse %: 95.97
Execute to Parse %: 90.89 Latch Hit %: 99.99
Parse CPU to Parse Elapsd %: 36.55 % Non-Parse CPU: 98.28
Wait Events for DB: PROD Instance: PROD2 Snaps: 149847 -149857
-> s - second
-> cs - centisecond - 100th of a second
-> ms - millisecond - 1000th of a second
-> us - microsecond - 1000000th of a second
-> ordered by wait time desc, waits desc (idle events last)
Avg
Total Wait wait Waits
Event Waits Timeouts Time (s) (ms) /txn
enqueue 65,823 33,667 90,459 1374 8.2
row cache lock 38,996 560 1,795 46 4.8
PX Deq Credit: send blkd 522 499 1,223 2344 0.1
PX Deq: Parse Reply 466 416 987 2117 0.1
db file sequential read 50,130 0 421 8 6.2
library cache lock 78,842 172 210 3 9.8
db file scattered read 6,904 0 152 22 0.9
global cache cr request 84,801 575 113 1 10.5
latch free 8,096 736 65 8 1.0
log file sync 5,676 27 41 7 0.7
wait for scn from all nodes 18,891 10 24 1 2.3
CGS wait for IPC msg 394,678 392,142 21 0 49.0
library cache pin 1,339 0 17 13 0.2
global cache null to x 2,145 48 16 8 0.3
global cache s to x 3,242 32 16 5 0.4
buffer busy waits 366 10 15 40 0.0
ksxr poll remote instances 70,990 31,295 14 0 8.8
db file parallel read 359 0 11 31 0.0
global cache open x 2,708 55 10 4 0.3
async disk IO 3,474 0 8 2 0.4
global cache open s 3,470 10 6 2 0.4
log file parallel write 13,076 0 5 0 1.6
global cache busy 58 40 5 90 0.0
PL/SQL lock timer 1 1 5 4877 0.0
DFS lock handle 3,362 0 5 1 0.4
log file sequential read 412 0 4 10 0.1
db file parallel write 2,774 0 3 1 0.3
library cache load lock 59 0 3 58 0.0
buffer busy global CR 722 0 3 4 0.1
control file sequential read 6,398 0 3 0 0.8
SQL*Net break/reset to clien 16,078 0 2 0 2.0
name-service call wait 26 0 2 67 0.0
control file parallel write 1,248 0 2 1 0.2
process startup 24 0 1 49 0.0
KJC: Wait for msg sends to c 3,491 4 1 0 0.4
SQL*Net more data to client 23,724 0 1 0 2.9
buffer busy global cache 23 0 0 19 0.0
global cache null to s 114 0 0 4 0.0
PX Deq: reap credit 5,646 5,509 0 0 0.7
log file switch completion 4 0 0 58 0.0
lock escalate retry 54 54 0 1 0.0
IPC send completion sync 119 118 0 0 0.0
direct path read 2,820 0 0 0 0.3
direct path read (lob) 3,632 0 0 0 0.5
PX Deq: Join ACK 88 37 0 0 0.0
direct path write 2,470 0 0 0 0.3
kksfbc child completion 6 6 0 6 0.0
buffer deadlock 3 3 0 11 0.0
global cache quiesce wait 4 4 0 8 0.0
Library Cache Activity for DB: PROD Instance: PROD2 Snaps: 149847 -149857
->"Pct Misses" should be very low
Get Pct Pin Pct Invali-
Namespace Requests Miss Requests Miss Reloads dations
BODY 27,353 0.5 28,091 6.5 1,643 0
CLUSTER 203 1.0 269 1.5 0 0
INDEX 526 9.9 271 19.9 0 0
JAVA DATA 18 0.0 120 6.7 4 0
JAVA RESOURCE 20 45.0 56 26.8 3 0
JAVA SOURCE 1 100.0 1 100.0 0 0
PIPE 999 0.4 1,043 0.4 0 0
SQL AREA 131,793 7.6 3,406,577 0.4 7,012 0
TABLE/PROCEDURE 926,987 0.2 1,907,993 1.0 8,845 0
TRIGGER 1,519 0.1 1,532 4.9 69 0
GES Lock GES Pin GES Pin GES Inval GES Invali-
Namespace Requests Requests Releases Requests dations
BODY 1 129 277 117 0
CLUSTER 168 2 2 2 0
INDEX 271 52 56 52 0
JAVA DATA 0 0 0 0 0
JAVA RESOURCE 0 9 6 0 0
JAVA SOURCE 0 1 1 1 0
PIPE 0 0 0 0 0
SQL AREA 0 0 0 0 0
TABLE/PROCEDURE 89,523 764 868 460 0
TRIGGER 0 2 14 2 0
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DB Name DB Id Instance Inst Num Release Cluster Host
PROD 21184234 PROD3 3 9.2.0.8.0 YES npi-or-db-p-
13.npi.corp
Snap Id Snap Time Sessions Curs/Sess Comment
Begin Snap: 149808 30-Oct-09 14:00:00 31 #########
End Snap: 149809 30-Oct-09 15:00:02 34 11,831.4
Elapsed: 60.03 (mins)
Cache Sizes (end)
~~~~~~~~~~~~~~~~~
Buffer Cache: 8,192M Std Block Size: 8K
Shared Pool Size: 1,024M Log Buffer: 10,240K
Load Profile
~~~~~~~~~~~~ Per Second Per Transaction
Redo size: 1,518.14 36,700.35
Logical reads: 1,333.43 32,235.02
Block changes: 5.09 123.01
Physical reads: 54.31 1,312.88
Physical writes: 3.91 94.44
User calls: 1.46 35.40
Parses: 2.24 54.21
Hard parses: 0.04 0.93
Sorts: 0.84 20.28
Logons: 0.06 1.45
Executes: 3.11 75.23
Transactions: 0.04
% Blocks changed per Read: 0.38 Recursive Call %: 94.31
Rollback per transaction %: 45.64 Rows per Sort: 215.97
Instance Efficiency Percentages (Target 100%)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffer Nowait %: 99.99 Redo NoWait %: 100.00
Buffer Hit %: 96.21 In-memory Sort %: 100.00
Library Hit %: 99.07 Soft Parse %: 98.29
Execute to Parse %: 27.94 Latch Hit %: 99.98
Parse CPU to Parse Elapsd %: 69.88 % Non-Parse CPU: 97.92
Wait Events for DB: PROD Instance: PROD3 Snaps: 149808 -149809
-> s - second
-> cs - centisecond - 100th of a second
-> ms - millisecond - 1000th of a second
-> us - microsecond - 1000000th of a second
-> ordered by wait time desc, waits desc (idle events last)
Avg
Total Wait wait Waits
Event Waits Timeouts Time (s) (ms) /txn
enqueue 19,510 7,472 15,509 795 130.9
PX Deq: Parse Reply 1,152 1,071 2,577 2237 7.7
row cache lock 2,202 518 1,579 717 14.8
db file scattered read 31,556 0 354 11 211.8
db file sequential read 17,272 0 67 4 115.9
db file parallel read 1,722 0 34 20 11.6
global cache cr request 53,754 91 32 1 360.8
wait for scn from all nodes 1,897 13 10 5 12.7
CGS wait for IPC msg 403,358 401,478 10 0 2,707.1
DFS lock handle 4,753 0 8 2 31.9
direct path read 1,248 0 6 5 8.4
PX Deq: Execute Reply 110 38 6 51 0.7
global cache open s 160 10 5 31 1.1
control file sequential read 6,442 0 3 0 43.2
name-service call wait 26 0 2 78 0.2
latch free 129 109 2 13 0.9
KJC: Wait for msg sends to c 153 24 1 9 1.0
control file parallel write 1,245 0 1 1 8.4
buffer busy waits 199 0 1 6 1.3
process startup 20 0 1 44 0.1
global cache null to x 74 2 1 9 0.5
global cache null to s 19 0 1 29 0.1
global cache open x 268 1 1 2 1.8
library cache lock 1,150 0 0 0 7.7
PX Deq: Join ACK 129 48 0 3 0.9
log file parallel write 1,157 0 0 0 7.8
async disk IO 219 0 0 1 1.5
direct path write 1,024 0 0 0 6.9
ksxr poll remote instances 6,740 4,595 0 0 45.2
PX Deq: reap credit 6,580 6,511 0 0 44.2
buffer busy global CR 73 0 0 2 0.5
log file sequential read 11 0 0 10 0.1
log file sync 100 0 0 1 0.7
global cache s to x 282 2 0 0 1.9
db file parallel write 95 0 0 1 0.6
library cache pin 142 0 0 0 1.0
SQL*Net break/reset to clien 28 0 0 1 0.2
IPC send completion sync 81 81 0 0 0.5
PX Deq: Signal ACK 32 14 0 1 0.2
PX Deq Credit: send blkd 3 1 0 7 0.0
SQL*Net more data to client 841 0 0 0 5.6
PX Deq: Msg Fragment 37 17 0 0 0.2
log file single write 4 0 0 1 0.0
db file single write 1 0 0 1 0.0
SQL*Net message from client 4,213 0 13,673 3246 28.3
gcs remote message 214,784 75,745 7,016 33 1,441.5
wakeup time manager 233 233 6,812 29237 1.6
PX Idle Wait 2,338 2,294 5,686 2432 15.7
PX Deq: Execution Msg 2,151 1,979 4,796 2229 14.4
Library Cache Activity for DB: PROD Instance: PROD3 Snaps: 149808 -149809
->"Pct Misses" should be very low
Get Pct Pin Pct Invali-
Namespace Requests Miss Requests Miss Reloads dations
BODY 1,290 0.0 1,290 0.0 0 0
CLUSTER 18 0.0 8 0.0 0 0
SQL AREA 4,893 2.0 36,371 0.5 2 0
TABLE/PROCEDURE 1,555 3.9 3,834 4.9 71 0
TRIGGER 286 0.0 286 0.0 0 0
GES Lock GES Pin GES Pin GES Inval GES Invali-
Namespace Requests Requests Releases Requests dations
BODY 1 0 0 0 0
CLUSTER 4 0 0 0 0
SQL AREA 0 0 0 0 0
TABLE/PROCEDURE 863 224 42 42 0
TRIGGER 0 0 0 0 0
------------------------------------------------------------- -
=============
Lets test java class code:
import java.util.*;
import java.sql.*;
import oracle.jdbc.*;
import oracle.jdbc.pool.OracleDataSource;
public class TestDriver {
public static void main(String[] args) throws SQLException {
//deadly force: Locale.setDefault(Locale.ENGLISH);
// but my Locale is RU!
// see NLS_CHARACTERSET- WE8MSWIN1252 must be WE8MSWIN1251!
OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:system/123@localhost:1521/xe");
Connection conn = ods.getConnection();
DatabaseMetaData meta = conn.getMetaData();
System.out.println("JDBC driver version is " + meta.getDriverVersion());
==========
Output result:
Exception in thread "main" java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:785)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:376)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:839)
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:389)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:278)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:199)
at Oracle.Test.TestDriver.main(TestDriver.java:27)
=================================================================
Database info:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
National Language Support
National Language Parametersort by this column Value
NLS_CALENDAR GREGORIAN
NLS_CHARACTERSET WE8MSWIN1252
NLS_COMP BINARY
NLS_CURRENCY ?.
NLS_DATE_FORMAT DD.MM.RR
NLS_DATE_LANGUAGE RUSSIAN
NLS_DUAL_CURRENCY ?.
NLS_ISO_CURRENCY RUSSIA
NLS_LANGUAGE RUSSIAN
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_NCHAR_CONV_EXCP FALSE
NLS_NUMERIC_CHARACTERS ,
NLS_SORT RUSSIAN
NLS_TERRITORY RUSSIA
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT DD.MM.RR HH24:MI:SSXFF
NLS_TIMESTAMP_TZ_FORMAT DD.MM.RR HH24:MI:SSXFF TZR
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZRRight. I have diagnosed the issue. It is caused by the removal of the "CIS"
territory from Oracle Database XE. I have logged bug #5114250.
If you have access to the applicaction source code, try the following workaround:
boolean workaround = false;
Locale origLocale = Locale.getDefault();
if ( origLocale.toString().equals( "ru_RU" ) ) {
Locale.setDefault( new Locale( "en", "US" ) );
workaround = true;
DriverManager.registerDriver( new OracleDriver() );
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:system/manager@//localhost:1522/ORA92.PL.ORACLE.COM"
System.out.println( "Connected." );
if ( workaround ) {
Statement stmt = conn.createStatement();
String territory = "CIS";
if ( conn.getMetaData().getDatabaseMajorVersion() >= 10 )
territory = "RUSSIA";
stmt.execute(
"ALTER SESSION SET NLS_LANGUAGE='RUSSIAN' NLS_TERRITORY='"
+ territory +"'" );
stmt.close();
System.out.println( "NLS_TERRITORY changed to " + territory );
Locale.setDefault( origLocale );
-- Sergiusz -
Navigation is cached - even when navigation cache is disabled?!
I seem to have a problem clearing the navigation cache. Whenever I change a role of workset in the PCD, the change is not visible until some time has passed (perhaps 100 minutes, I will try to verify that).
If I change a page (like inserting a new iView) the change is visible immediatly.
This sounds like a fairly standard "flush the navigation cache" problem, but that does not solve the problem. I have disabled all the caches in "System Administration -> Navigation -> Navigation cache" and have also cleared all of them just for good measure.
I have used Firebug in firefox to verify that this is not a browser cache problem. For example I have a folder in the role that contains two pages. I add a third page, flush all browser caches, close the browser and reload the page. In firebug I can see that I get a "200 OK" response that only includes the original two pages - not the new third page.
I have also tried clearing the PCD cache in "System Administration -> Support -> Portal Content Directory -> PCD Administration -> Release cache". When I do that I can see (again with firebug) that the request is taking slightly longer the first time (around 300ms instead of the usual ~70ms). However, the new page is still not visible.
The only thing that help (besides waiting) is to restart the entire portal. The changes are then visible immediatly.
I have even tried clearing the HTTP cache, which also does not help.
What other caches could there be besides the navigation cache, the PCD cache, the HTTP cache or the browser cache? How can I debug this problem further?
Thanks in advance.
Best regards,
Ole Hyldahl Tolshave
P.S. We use SEP EP 7.00 SP21
Edited by: Ole Hyldahl Tolshave on Jun 17, 2010 10:21 AMHi Tobias,
I tried clearing the DB cache (by using /irj/servlet/prt/portal/prtroot/com.sap.portal.prt.cache.PRTRegionDBClear). No change (change to role is still being cached).
I used the PCD Inspector and verified that the contents are identical to what I see in Content Administration -> Portal Content (which is different from what is rendered in the top navigation and detailed navigation).
We only have one server node running.
I tried deploying the .PAR-file from SAP support (and restarted). This made no changes so now I am waiting for them to get back to me.
But thank you again for trying to help.
Best regards,
Ole Hyldahl Tolshave -
How do you tell difference between16MB Cache or 32 MB Cache HDD
Hi All,
Please can you tell me how I tell if the drive I am purchasing is 16MB cache or 32 MB cache version. I am buying 10 x 1T Seagate barracuda 7200.12 drives. The model number is ST31000524AS
They told me they are 32MB cache but i suspect they may be 16MB as the 32MB version on newegg has the seriel number: ST31000528AS 1TB 7200 RPM 32MB
Please can you help me.
Mamy thanks
KInd regards
Anthony Freeman
www.freemanproductions.co.zaThanks Bill and Harm,
Im about to post a new thread requesting assistance. I have the new pc now, plugged it in yesterday, and am really a little overwhelmed with the setup and would really appreciate some guidence if possible.
Many thanks
regards
Anthony -
How can I get a local path of the local disk with swf
Since FileReference.download() doesn't download multiple
files, I want to download files with php ftp_get by FTP.
I need to pass the local path of the local disk where I can
download the files from a remote serveur. How can I get a prompt to
have a user choose a folder on his computor (local disk), if any
way possible?OK, at least 3 is working.
I don't know how you have a Tape Recorder icon on your Home Screen. I cannot add one myself. But, I am running Holo Launcher in replacement of the default LG "Optimus" User Interface. It's much better in my opinion.
Try long pressing the icon and select Edit and maybe you can change some attribute of the icon.
Another thing you could do, is long-press an empty area of your desktop, to add an icon. Select Shortcut, then Select Contact, and scroll through your contact list and choose the contact that you added for *86.
You realize if you have voice mail you haven't heard, there is a tape recorder icon in the notification bar, which you touch and pull down, then press it to dial voicemail.
If that functionality doesn't work, you MIGHT want to consider doing a factory data reset on your device, but that is going to nuke all your personalizations and cause you work to set up again. -
Query performance problem - events 2505-read cache and 2510-write cache
Hi,
I am experiencing severe performance problems with a query, specifically with events 2505 (Read Cache) and 2510 (Write Cache) which went up to 11000 seconds on some executions. Data Manager (400 s), OLAP data selection (90 s) and OLAP user exit (250 s) are other the other event with noticeable times. All other events are very quick.
The query settings (RSRT) are
persistent cache across each app server -> cluster table,
update cache in delta process is checked ->group on infoprovider type
use cache despite virtual characteristics/key figs checked (one info-cube has1 virtual key figure which should have a static result for a day)
=>Do you know how I can get more details than what's in 0TCT_C02 to break down the read and write cache events time or do you have any recommandation?
I have checked and no dataloads were in progres on the info-providers and no master data loads (change run). Overall system performance was acceptable for other queries.
ThanksHi,
Looks like you're using BDB, not BDB JE, and this is the BDB JE forum. Could you please repost here?:
Berkeley DB
Thanks,
mark -
Integration Builder - runtime data cache - Error when creating cache list
All,
When I go into the Integration Builder --> Administration --> Runtime tab --> Data Cache
I get a message saying "Error when creating cache list".
All cache areas look ok and I do not see any other error.
Also, RFC INTEGRATION_DIRECTORY_HMI looks good.
Please advise.
Thanks a lot.Hi,
Use transaction SXI_CACHE to update the Integration Directory cache. Alternatively, you can use the following URLs to update the CPA cache. Use XIDIRUSER to refresh the cache.
For complete cache refresh u2013 http://<hostname>:<port>/CPACache/refresh?mode=full
For delta cache refresh u2013 http://<hostname>:<port>/CPACache/refresh?mode=delta
If this does not solve the issue, check transaction SLDCHECK to ensure that connection to SLD is available. If the connection fails, check the configuration in the transaction SLDAPICUST. Make sure that the password maintained is correct and the maintained service user is not locked.
Now in the Integration Repository go to Environment u2192 Clear SLD Data Cache. Also go to Integration Directoy and clear the cache using menu Environment u2192 Clear SLD Data Cache.
Open the XI Start Page and click on Administration. On the Repository tab, choose Cache Overview. Refresh the cache using the buttons/icons on the right. Use XIDIRUSER to refresh the cache. Carry out cache refresh in the same way on the Directory and Runtime tabs.
regards,
ganesh. -
Cache config for distributed cache and TCP*Extend
Hi,
I want to use distributed cache with TCP*Extend. We have defined "remote-cache-scheme" as the default cache scheme. I want to use a distributed cache along with a cache-store. The configuration I used for my scheme was
<distributed-scheme>
<scheme-name>MyScheme</scheme-name>
<backing-map-scheme>
<read-write-backing-map-scheme>
<internal-cache-scheme>
<class-scheme>
<class-name>com.tangosol.util.ObservableHashMap</class-name>
</class-scheme>
</internal-cache-scheme>
<cachestore-scheme>
<class-scheme>
<class-name>MyCacheStore</class-name>
</class-scheme>
<remote-cache-scheme>
<scheme-ref>default-scheme</scheme-ref>
</remote-cache-scheme>
</cachestore-scheme>
<rollback-cachestore-failures>true</rollback-cachestore-failures>
</read-write-backing-map-scheme>
</backing-map-scheme>
</distributed-scheme>
<remote-cache-scheme>
<scheme-name>default-scheme</scheme-name>
<initiator-config>
<tcp-initiator>
<remote-addresses>
<socket-address>
<address>XYZ</address>
<port>9909</port>
</socket-address>
</remote-addresses>
</tcp-initiator>
</initiator-config>
</remote-cache-scheme>I know that the configuration defined for "MyScheme" is wrong but I do not know how to configure "MyScheme" correctly to make my distributed cache the part of the same cluster to which all other caches, which uses the default scheme, are joined. Currently, this ain't happening.
Thanks.
RG
Message was edited by:
user602943Hi,
Is it that I need to define my distributed scheme with the CacheStore in the server-coherence-cache-config.xml and then on the client side use remote cache scheme to connect to get my distributed cache?
Thanks, -
error message that my local host name is in use and the system generates a new one every time I wake my mac the error mssg reads This computer’s local hostname “D-360.local” is already in use on this network. The name has been changed to “D-444.local”.
There are several possible causes for this behavior.
1. Two (or more) computers on the local network have the same Bonjour name, such as "X's-MacBook-Pro.local". Resolve the name conflict by renaming one or more of them in the Sharing preference pane.
2. You have two simultaneous connections to the same local network: probably Ethernet and Wi-Fi. If applicable, disconnect the Ethernet cable or turn off Wi-Fi.
3. A Mac wakes from sleep due to network traffic. This is a bug in OS X that may only affect some models.
4. A device that gets its network address from the router wakes from sleep, and the address it was using before has been assigned to another device.
5. A third-party wireless router has incompatible settings or firmware. In that case, refer to the manufacturer or ISP for support. Restarting the router may help, temporarily.
6. See also this support article. -
I get this message: This computer’s local hostname “x-8.local” is already in use on this network. The name has been changed to “x-9.local” I have turned off sharing and it continues to upgrade name. What is the fix?
Hi, this is a common problem, mostly just irksome though.
It can have many cause, like using more than one Interface for connections, Router temporarily losing x.local & seeing a new connection with x.local already used, insists it must be x-1.local, x-2.local, etc..
What all Sharing do you have enabled?
Some possible fixes...
http://forums.macrumors.com/showthread.php?t=542899
https://discussions.apple.com/thread/3941367 -
Delta cache refresh Vs Complete cache refresh
In SXI_cache
we can view Delta cache refresh and Complete cache refresh
can you explain Delta cache refresh Vs Complete cache refresh???hi Gabriel,
Only execute Complete Cache refresh, if Delta refresh does not solve the issue! Delta cache refresh should resolve all known issues.
Complete cache refresh can run long time and delay message processing in this time.
for more details
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/c0332b2a-eb97-2910-b6ba-dbe52a01be34
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/1a69ea11-0d01-0010-fa80-b47a79301290
*PS reward points if useful**
Regards,
Sumit Gupta
Maybe you are looking for
-
Task in Process Definition not Running when Trigger Automatically
Hi All, I have created a task in Process Definition (eBusiness Suite User)and attached JAVA code to this task. Also i have triggered this task on C response of Email Updated Task . I also have Change Email Task which is mentioned in Lookup.USR_PROCES
-
Menu button unresponsive - other buttons work fine!
I've tried resetting and restoring according to the Apple instructions on the web ( http://www.apple.com/support/ ), with no success. I can play music, scroll up and down menus and other navigation, but since I can't use the Menu button, I can't navi
-
"Intercompany Billing: Mandatory condition MWST is missing"
Hi Guys During an intercompany billing, I am having - mandatory condition MWST is missing. In the Analysis I have - Access not executed (requirement 008 not fulfilled) How do I resolve this please.
-
How to print terms and cond of a PO in a fresh page in smartforms??
hi All, My requirement is as follows... i need to print terms and conditions of a purchase order after the main window and the amount has been printed. the terms and conditions should be in a fresh page. i.e if the line items items and the amounts wi
-
being new to macs having switched from pcs i am trying to print labels for cds and dvds that i produce for customers. is there any built in software to do this within mac or do i have to purchase something, and if so what is there out there that othe