Problem to pass Oracle variable to Unix
11gr2
Problem to pass Oracle variable to Unix
refer to echo $x
in korn shell
$cat /tmp/x.sh
"/tmp/x.sh" 11 lines, 208 characters
#!/bin/ksh
x=`sqlplus -s myacc/myacc <<endl
set echo off verify off feed off termout off pages 0
SELECT p.spid
FROM v$session s, v$process p
WHERE s.paddr = p.addr
AND s.sid =2;
exit
endl`
. /tmp/x.sh
$ echo $x
FROM v s, v p check_logfiles._var_adm_kernlog.seek csn.16 myspid.sh pw_management ssh-BbLO7942 x.sh ERROR at line 2: ORA-04044: procedure, function, package, or type is not allowed hereuse sqlplus
sql> select p.spid
2 FROM v$session s, v$process p
3 WHERE s.paddr = p.addr
4 AND s.sid =2;
SERVER
PID
22965Edited by: jmft2012 on Mar 23, 2013 9:23 PM
jmft2012 wrote:
$cat /tmp/x.sh
"/tmp/x.sh" 11 lines, 208 characters
#!/bin/ksh
x=`sqlplus -s myacc/myacc <<endl
set echo off verify off feed off termout off pages 0
SELECT p.spid
FROM v$session s, v$process p
WHERE s.paddr = p.addr
AND s.sid =2;
exit
endl`
. /tmp/x.sh
$ echo $x
FROM v s, v p check_logfiles._var_adm_kernlog.seek csn.16 myspid.sh pw_management ssh-BbLO7942 x.sh ERROR at line 2: ORA-04044: procedure, function, package, or type is not allowed hereuse sqlplus
sql> select p.spid
2 FROM v$session s, v$process p
3 WHERE s.paddr = p.addr
4 AND s.sid =2;
SERVER
PID
22965
since the here script is being processed by the command line interpreter, it resolves "$session" & "$process" to be null values.
You need to be smarter than the tools you are (ab)using.
Handle: jmft2012
Status Level: Explorer (65)
Registered: Nov 13, 2009
Total Posts: 355
Total Questions: 74 (32 unresolved)
I extend my condolences to you since you rarely get answers to your questions here.
Similar Messages
-
Problem with do click on a field - Oracle 10g form - UNIX
Hello, friends.
I nedd a help. I have a problem with a Oracle 10g form when it was executed in UNIX environment.
The problem is that when I do click with the mouse in a different field, doesn't lead me to the other field. That is, don't let me to do click on a different field than the initial field of the form. Just work with TAB or ENTER.
Would you tell me what I can check?
Thanks.
Kisses.
AnnieHello
Another question about the problem that I posted yesterday:
Why the system.cursor_item isn't change when I do click in other field? Just the system.mouse_item changes. This problem occurss in Oracle 10g at UNIX environment (don't occurss in Windows environment).
Thanks.
Kisses.
Annie -
Error while passing ODI variable in JNDI Url for JMS Queue XML
Hi,
Facing a weird problem while passing ODI variable in JNDI Url for JMS Queue XML.
Below is the JNDI Url configured under ODI Topology:
JNDI Url: t3://<host_location>?d=#TEST.SCHEMA_FILE&s=<schema_name>&JMS_DESTINATION=jms/<queue_name>
where,
#TEST.SCHEMA_FILE --> ODI variable storing xsd name and location
Issue Description:
If we restart ODI server then for the first run of any ODI interface using JMS Queue XML, it is unable to get the value for ODI variable present in JNDI Url (d=#TEST.SCHEMA_FILE).
It throws error message saying: No XSD found
Temporary Resolution:
As a temporary fix if we hard-code and pass the value in that ODI variable as shown below, it will successfully go through.
eg: JNDI Url: t3://<host_location>?d=C:\XSD\test.xsd&s=<schema_name>&JMS_DESTINATION=jms/<queue_name>
Reverting it back to variable later will have no issues and subsequent run will succeed.
But again anytime later if server is restarted then first run will have this issue.
Want to have permanent fix for it.
Any one having idea on it please share. Appreciate your help!What ODI version are you using? It could be related to the bug in the older version as described in support note Doc ID 1290326.1
-
Unable to pass parameter in oracle procedure through unix shell script
Hi Experts,
I have oracle procedure where in I have to pass the value of procedure parameter through unix script.
Follwoing is the sample procedure which i tried to exceute from the unix.
Procedure:
create or replace procedure OWNER.PRC_TESTING_OWNER(OWNER IN VARCHAR2) AS
sql_stmt varchar2(1000) := NULL;
v_count number := 0;
v_owner varchar2(100) := owner;
begin
sql_stmt:='select count(1) from '||v_owner||'.EMP@infodb where rownum<=10';
execute immediate sql_stmt into v_count;
DBMS_OUTPUT.PUT_LINE(sql_stmt);
DBMS_OUTPUT.PUT_LINE(v_count);
END;The script which I used is:
Unix
#!/bin/ksh
parm=$1
echo start
sqlplus -s scott@DEV/tiger <<EOF >>result_1.txt
set serveroutput on;
select '$parm' from dual;
exec owner.PRC_TESTING_OWNER('$parm');
EOFThe script is working fine that is i am able to pass to parameter value through unix shell script. :)
But if I want to pass the value of the owner in cursor , I am unable to pass this value through unix.
Following the procedure which i am trying to implement.
create or replace procedure OWNER.PRC_TESTING_OWNER(OWNER IN VARCHAR2) IS
v_owner varchar2(100) := owner;
CURSOR main_cur IS
select
i.ROWID rid ,
emp_name,
deptid
from v_owner.employee;
CURSOR subset_cur(c_deptid NUMBER ) IS
SELECT *
FROM v_owner.DEPT d
where d.dept_id=c_deptid;
--##main loop
FOR i IN main_cur LOOP
FOR j IN subset_cur(i.deptid) LOOP
BEGIN
insert into v_owner.RESULT_TABLE
END;
END LOOP;
END LOOP;How can i pass parameter value of the stored procedure through unix script(that is "owner" in this case), when these parameter value is
used in cursor? :(
Can anybody help me regarding the same?
Thanks in Advance !! :DIt's not the parameter in the cursor that is the problem, it's that you are trying to use static SQL for something that won't be known until run time (the owner of the table).
You would need to use something like ...
declare
l_owner varchar2(30) := 'SCOTT';
l_ref_cursor sys_refcursor;
type l_ename_tab is table of scott.emp.ename%type;
l_ename_array l_ename_tab;
begin
open l_ref_cursor for
'select ename
from ' || l_owner || '.emp';
loop
fetch l_ref_cursor bulk collect into l_ename_array limit 10;
exit when l_ename_array.COUNT = 0;
for x in 1 .. l_ename_array.count
loop
dbms_output.put_line(l_ename_array(x));
end loop;
end loop;
close l_ref_cursor;
end;
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.01 -
Problem regarding passing variable in sdo_ordinate_array
I want to pass user selected points in sdo_ordinate array and return result in an array . I have created two varrays in oracle called ALLPOS and LSTPOS.ALLPOS is output array . I get the desired output when i hard cord the values of sd0_ordinate_array but i am not able to pass any variable parameter in sdo_ordinate_array . If i try to pass a string variable i get invalid number exception . If i pass a varray called LSTPOS i get following exception.
FUNCTION FOO(lstpos in LSTPOS) RETURN ALLPOS
AS
POS_DATA ALLPOS := ALLPOS();
CURSOR c_pos is
SELECT cust_id FROM T_S_CUSTOMERS
WHERE SDO_RELATE(geometry,
SDO_GEOMETRY(2003, 8307, NULL,
SDO_ELEM_INFO_ARRAY(1,1003,1),
SDO_ORDINATE_ARRAY(lstpos)),'mask=inside querytype=window') = 'TRUE';
BEGIN
FOR pos_rec IN c_pos LOOP
POS_DATA.extend;
POS_DATA(POS_DATA.count) := pos_rec.cust_id;
END LOOP;
RETURN POS_DATA;
END;
i get following compilation error
Error(9,24): PL/SQL: ORA-00932: inconsistent datatypes: expected NUMBER got BATUSER.LSTPOS
Thanks and Regards
NidhiHi!
I would like you using following with MDSYS.SDO_ORDINATE_ARRAY
definition: [CREATE TYPE mdsys.sdo_elem_info_array AS VARRAY (1048576) of NUMBER]
CREATE OR REPLACE FUNCTION FOO(lstpos in MDSYS.SDO_ORDINATE_ARRAY)
RETURN MDSYS.SDO_ORDINATE_ARRAY AS
POS_DATA MDSYS.SDO_ORDINATE_ARRAY := MDSYS.SDO_ORDINATE_ARRAY();
CURSOR c_pos is
SELECT cust_id FROM T_S_CUSTOMERS
WHERE SDO_RELATE(
geometry,
MDSYS.SDO_GEOMETRY(2003, 8307, NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),
lstpos
),'mask=inside querytype=window'
) = 'TRUE';
BEGIN
FOR pos_rec IN c_pos LOOP
POS_DATA.extend;
POS_DATA(POS_DATA.count) := pos_rec.cust_id;
END LOOP;
RETURN POS_DATA;
END;
--call the function
declare
-- Non-scalar parameters require additional processing
result mdsys.sdo_ordinate_array;
lstpos mdsys.sdo_ordinate_array := mdsys.sdo_ordinate_array(1,2,3,4);
begin
-- Call the function
result := foo(lstpos => lstpos);
end;regards, Andreas -
Problem passing Session variable as URL parameter?
Hi,
I am trying to create a multiple page entry form using
coldfusion session. But I am having some problem when passing the
session variable to url parameter. For test purpose I have created
the following code:
<cfif Not IsDefined("SESSION.AE")>
<!--- If structure undefined, create/initialize it
--->
<cfset SESSION.AE = StructNew()>
<!--- Represent current form srep; start at one --->
<cfset SESSION.AE.StepNum = 1>
</cfif>
<cfif IsDefined("Form.GoBack")>
<cfset SESSION.AE.StepNum = #url.StepNum# - 1>
<cfelseif IsDefined("Form.Next")>
<cfset SESSION.AE.StepNum = #url.StepNum# + 1>
</cfif>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<body>
<form method="post"
action="/AE/try.cfm?StepNum=#SESSION.AE.StepNum#">
<input type="submit" name="GoBack" value="Back">
<input type="submit" name="Next" value="Next">
</form>
</body>
</html>
When run it I get the following error:
The value "" cannot be converted to a number
The error occurred in C:\CFusionMX\wwwroot\AE\try.cfm: line
11
9 : <cfset SESSION.AE.StepNum = #url.StepNum# - 1>
10 : <cfelseif IsDefined("Form.Next")>
11 : <cfset SESSION.AE.StepNum = #url.StepNum# + 1>
12 : <!---<cfset SESSION.AE.StepNum = #url.StepNum# +
1>--->
13 : </cfif>
I couldn't figure out where is the problem. Any help is
really appreciated.
Thanks in advance.You are mixing up your gets and posts aren't you?
You have your form method set to post which creates form
variables not
url variables. So when you try to use the url variable to set
your
session it does not exist.
Change your SESSION.AE.StepNum = #url.StepNum# to
Session.AE.StepNum =
form.StepNum, note there is no need for the #'s.
OR
change your form method="post" to form method="get"
Nagelia wrote:
> Hi,
>
> I am trying to create a multiple page entry form using
coldfusion session. But
> I am having some problem when passing the session
counter to url parameter. For
> test purpose I have created the following code:
>
> <cfif Not IsDefined("SESSION.AE")>
> <!--- If structure undefined, create/initialize it
--->
> <cfset SESSION.AE = StructNew()>
> <!--- Represent current form srep; start at one
--->
> <cfset SESSION.AE.StepNum = 1>
> </cfif>
> <cfif IsDefined("Form.GoBack")>
> <cfset SESSION.AE.StepNum = #url.StepNum# - 1>
> <cfelseif IsDefined("Form.Next")>
> <cfset SESSION.AE.StepNum = #url.StepNum# + 1>
> </cfif>
>
> <html>
> <head>
> <title>Untitled Document</title>
> <meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
> </head>
> <body>
> <form method="post"
action="/AE/try.cfm?StepNum=#SESSION.AE.StepNum#">
> <input type="submit" name="GoBack" value="Back">
> <input type="submit" name="Next" value="Next">
> </form>
> </body>
> </html>
>
> When run it I get the following error:
>
> The value "" cannot be converted to a number
>
>
> The error occurred in C:\CFusionMX\wwwroot\AE\try.cfm:
line 11
>
> 9 : <cfset SESSION.AE.StepNum = #url.StepNum# - 1>
> 10 : <cfelseif IsDefined("Form.Next")>
> 11 : <cfset SESSION.AE.StepNum = #url.StepNum# +
1>
> 12 : <!---<cfset SESSION.AE.StepNum =
#url.StepNum# + 1>--->
> 13 : </cfif>
>
> I couldn't figure out where is the problem. Any help is
really appreciated.
>
> Thanks in advance.
>
>
>
> -
How to pass bind variable into oracle reports 6i - Parameter form
Hello All,
I want to pass bind variable into Oracle Reports 6I - Parameters.
I have tried out that but got the below error :-
rep-0781 : Bind variables are not allowed in the select statement
Kindly help me is there any option which allow me to pass bind variables into Oracle reports 6I.
Thanks
HARSH SHAHHi,
may be its not possible to use :P_PARAM1 in user parameter of oracle 6i reports
but u can full fill user requirement using oracle forms
create a form as like as report parameter window
then create parameter list and run report
PROCEDURE Run_Emp_Report IS
pl_id ParamList;
BEGIN
pl_id := Get_Parameter_List('tmpdata');
IF NOT Id_Null(pl_id) THEN
Destroy_Parameter_List( pl_id );
END IF;
pl_id := Create_Parameter_List('tmpdata');
Add_Parameter(pl_id, 'PARAMFORM', TEXT_PARAMETER, 'NO');
Run_Product(REPORTS, 'empreport', SYNCHRONOUS, RUNTIME, FILESYSTEM, pl_id, NULL);
END;
thanks
mostafiz mitul
Dhaka Bangladesh -
Problems passing timestamp variable to block-SQL command not properly ended
Can you please help me answer or direct me to resources in answering the following.
I'm attempting to pass a timestamp variable to a block but am getting errors with every method I've tried yet.
The example below is attempting to generate a list of all sales dates for orders after the 21st of March 2000.
DECLARE
BeginDate Orders.PurchaseDate%TYPE :=to_date('21-3-2000', 'dd-mm-yyyy');
Target Orders.PurchaseDate%TYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE(to_char(BeginDate));
SELECT Distinct PurchaseDate from Orders into Target WHERE PurchaseDate>BeginDate;
END;
When running it - it returns
ORA-00933: SQL command not properly ended ORA-06512: at line 8Please advise-- I"m still trying to get a timestamp into an execute immediate statement.
Declare
BeginDate Orders.PurchaseDate%TYPE :=to_date('21-3-2000', 'dd-mm-yyyy');
var_date Orders.PurchaseDate%TYPE ;
BEGIN
DBMS_OUTPUT.PUT_LINE(to_char(BeginDate,'DD.MM.YYYY'));
sql1 = 'SELECT MAX(PurchaseDate) INTO Target from Orders WHERE PurchaseDate> :var_date';
Execute Immediate sql1 Using BeginDate;
DBMS_OUTPUT.PUT_LINE(to_char(Target,'DD.MM.YYYY'));
END;
Thanks again for the replies, I'm still not there yet even after re-reading the documentation that applies to this,
Using what follows below the Execute Immediate line/syntax is the problematic part of this...
to quote the block line still returning errors.
This line which would seem natural...
Execute Immediate sql1 Using BeginDate;returns -- missing keyword
Modified with this line attempts to pass another variable to the block also errors.
Execute Immediate sql1 Using BeginDate, var_date;returns -- ORA-01006: bind variable does not exist
Perhaps I'm not getting some key concept here, but I would think passing a variable into execute immediate would be
as simple as passing a string or int into a *.bat,*.sh file or function/procedure in any other language.
And/or I'm missing a key element or understanding to how this syntax should work.
Thank you very much for your previous replies any other ideas welcome. -
ORACLE SERVER AND UNIX TP MONITOR-2
제품 : ORACLE SERVER
작성날짜 : 1995-01-24
Subject: Oracle Server and UNIX Transaction Processing Monitors-2
Page(3/4)
This file contains commonly asked questions about Oracle7 Server and UNIX
Transaction Processing Monitors (TPMs). The topics covered in this article are
o Oracle Parallel Server and TP Monitors
o Oracle and DCE-based TP Monitors
o Other commonly asked questions
The questions answered in part 3 provide additional detail to the information
provided in part 1.
Oracle Parallel Server and TP Monitors
======================================
How does Oracle Parallel Server (OPS) work with TP Monitors?
If you are using Oracle-managed transactions, there are no special
considerations. But if you are using TPM-managed transactions, and
thus need to use the XA interface, then Oracle requires release 7.1.3
or later and a special version of the Distributed Lock Manager, called
the session-based lock manager. This version of the DLM is not yet
available for all platforms. To understand this restriction, let's take
a look at one of the technical details of XA.
The XA specification requires that the Resource Manager be able to
move a transaction from one process to another, and even to be
able to commit in a separate process. In Oracle, transactions are
attached to sessions, so that means that we also have to be able to
move sessions. Therefore, the session/transaction can't have any state
which is tied to a particular process. The first generation distributed
lock managers were all built to use the process id as the lock owner,
which doesn't work for locks which need to move with the transaction.
Oracle and DCE-based TP Monitors
================================
How does Oracle interface to the Encina TP monitor? To CICS/6000? I've
heard that they require OSF DCE facilities in order to run?
Oracle interfaces to Encina and CICS/6000 just as it does to any other
TP Monitor. The TP Monitor issues XA commands to control transactions, and
Oracle executes the commands. Encina and CICS/6000 do use DCE features for
their own operation. However, this use is transparent to the Oracle Server.
What DCE facilities can Oracle products take advantage of when working with
a DCE-based TP Monitor?
The two most commonly mentioned DCE features which might be useful
to Oracle users are multi-threading and security. We look at these in
the subsequent questions in this section.
Encina documentation suggests that a Resource Manager such as Oracle can
be either single-threaded or multi-threaded? Which way is Oracle XA
implemented?
The Oracle XA implementation is single-threaded, as is any Oracle client.
Within a single process, at most one thread can access Oracle at a time.
Does that mean that only a single Encina application can access an instance
of Oracle transactionally at any given moment?
No. Oracle XA is only single-threaded within a single application server
process. Multiple applications can access Oracle simultaneously using XA
by using different application processes. Encina allows
(1) serial reuse of a single server by different clients. There are
two options for this. The server can use long term reservation
but be defined to be in shared or concurrent access mode, which
allows the server to be used by another client as soon as an RPC
completes. Alternatively, the server can use default reservation
and exclusive mode, which allows the server to be used by another
client as soon as the current transaction ends.
(2) concurrent execution by multiple servers, even if they are accessing
the same Oracle database. These may be executing the same or different
procedures.
These two features should let you get as much concurrency as you need.
Why isn't the Oracle XA library multi-threaded?
The XA specification specifically states that its use of the phrase
"thread of control" means a process. If an RM were to multi-thread its
XA, it would be in violation of the specification. This restriction
was put place in because at the time the specification was written,
there were numerous thread packages: if the TM used one, the application
another, and perhaps the RM yet a third, there's no way it could work.
As threads standards settle down, the later versions of XA will probably
relax this restriction.
Will Oracle change if the XA specification changes?
Very likely. The exact time frame will of course depend on the priority of
all work items at that time.
Does Oracle use DCE security via the TP Monitors?
The integrity of the connection between a DCE TP Monitor client and DCE
TP Monitor server is protected by the DCE security functionality.
Theoretically, the TP Monitor could make the DCE-protected client security
information available to Oracle. Unfortunately, there's no standard way
for a TP Monitor to pass security information information to a Resource
Manager such as Oracle. Oracle is leading an effort to extend the X/Open
model to allow use of the security information provided by the Monitor.
In the meantime, the basic DCE security features such as encryption are
useful within TP Monitors.
Effective use of DCE security would normally also mean that the security of
the TP Monitor client be passed through the TP Monitor, through the Oracle
client (application server), to the Oracle Server, and possibly on
to other Oracle Servers through database links. The ability to transfer
security information to other processes, called delegation, is missing
in DCE version 1.0. DCE version 1.1, expected to emerge in late 1994,
has some delegation features. Oracle is examining these features to see
how they might be used.
Are there any special considerations for CICS/6000?
There are two:
(1) It is inefficient to run without XA. CICS/6000 is designed to
use XA. It uses XA so that the CICS server can log on to Oracle
when it starts, after which it makes that Oracle connection available
to any transaction it executes. If you don't use XA, the CICS server
does not itself log on to Oracle so each transaction has to log on
and log off - a very expensive mode of operation. Also, it is very
un-cics-like in that the application does the log{on,off} and also
commits - in a mainframe CICS database program CICS would implicitly
do these operations. Oracle does not recommend this mode because of the
performance penalty.
(2) CICS servers are generic and dynamically load application modules.
In order for these modules to access the Oracle connection made by
CICS, the applications must be built with a shared object version of
the Oracle libraries. This is an installation option on platforms which
support CICS/6000 and other products using its architecture such as
CICS 9000.
Other commonly asked questions
==============================
What other Resource Managers can be included in an Oracle XA transaction?
Several other relational database vendors have an XA implementation
available or in progress. There is an XA C-ISAM product from
Gresham Telecomputing. There are also Resource Managers contained
within some of the TP Monitors which can be coordinated in the same
transaction. For example, CICS/6000 has VSAM files and other data
stores, Encina has its RQS queuing system, and Tuxedo has its /Q queuing
system.
What is Recoverable Queuing Service (RQS) and how does it interoperate with
Oracle7 and Encina? What about /Q?
Recoverable Queuing Service is a feature provided by Encina which allows
transactional, distributed queuing (enqueue/dequeue). Tuxedo has a similar
product called /Q. Because these products are themselves coordinated by the
TM component of the TP Monitor, their queue operations are atomically
coordinated with with operations on XA Resource Managers such as Oracle7
Server. That is, they can atomically put something on one of their queues
and commit an Oracle transaction, then at some later time dequeue an
entry atomically with doing some other Oracle transaction. The queue
system guarantees that the message will not be lost or transmitted twice.
Can I mix TP Monitor applications with standard Oracle7 Server applications?
Yes, you can have existing Oracle applications connected to the database
with alongside TPM applications against the same database. The TPM does
not manage the whole database, just those transactions which are started
by the TPM. The Oracle Server will properly handle concurrency control
between the transactions managed by itself and those managed by the TPM.
Is Oracle planning to change its tools to be more suitable for TP Monitors?
With Oracle Procedure Builder 1.5, to be available with CDE2,
Oracle will provide a foreign function interface that allows you to
dynamically set up PL/SQL calls that access C functions. In other
words, you can access C routines in Windows DLLs from within your
PL/SQL procedures. This will allow PL/SQL under Windows easy access to
TP Monitor APIs.
Does Oracle7 Server itself use XA-compliant TPMs as the interface to
foreign RMs?
No, for this purpose Oracle Server uses the SQL*Connect products or the new
Transparent and Procedural Gateway products.
Does Oracle7 Server use XA to coordinate Oracle7-only distributed
transactions?
No, it uses an internal mechanism.
Can database links be used with XA?
If an Oracle7 database is running under XA, it can access other Oracle7
databases through database links, with some restrictions. First, the
access to the other database must use SQL*Net V2 and be running MTS.
Second, it must currently be to another Oracle7 database. Assuming those
restrictions, the Oracle 7 database can do distributed update to another
Oracle 7 database by using a database link, whether it is started by an
Oracle application or a TP Monitor application. The TPM will see Oracle
as only a single RM, but Oracle7 will propagate all the transaction
commands to the other database, including the two-phase commit. If
the transaction is started by a TP Monitor application and is using XA,
it can also update non-Oracle resources managed by the TPM. If it
is started from an Oracle application, it can only include resources
managed by Oracle.
Here's a sample configuration:
| TPM | | TPM |
| client | | client |
| |
| |
| TPM |
| |
| |
| Oracle | Forms, Forms, | Oracle | | non-XA | | XA |
| client | Plus, Plus, | client | | TPM | | TPM |
--------- Pro, Pro, --------- | server | | server |
| Financials, Financials, | |(note 1)| ----------
| etc. etc. | ---------- |
| | | |
| SQL | SQL | SQL | XA
| commit | commit | commit | commit
| | | |
| Oracle | | Oracle | | Oracle | | Oracle |
| server | | server | | server | | server |
| | | |
| | | |
| | | |
| Database 1 | | Database 2 |
| | | |
| A | A
| | dblink to database 1 | |
| ------------------------------------ |
| |
dblink to database 2
Note 1: Oracle will work having both XA and non-XA servers but some TPMs
may have restrictions on this.
Are multiple direct connections possible from a Pro* program?
Using XA, you can not only specify multiple direct connections to Oracle7
databases, you can also update them both in the SAME transaction. The
way to do this is to use a precompiler feature called a named database.
When you use a named database, you qualify the SQL statement with the
database name. For example, you write EXEC SQL AT dbname UPDATE emp ....
We have a complementary feature in the xa open string to let the user
associate the name with a particular RM instance, called the DB clause.
You will also want to use the SqlNet clause in the open string so you
can give the two different SIDs. This clause does not require the use of
the SQL*Net product, it is just a naming convention. For more information,
see Oracle7 Server for UNIX Administrator's Reference Guide.
Some TP Monitors may not support having multiple Resource Mangers in the
same server; check with the TPM vendor.
Is there any collateral available for XA or TP Monitors?
Oracle At Work 52684.0692
Oracle7 Server for UNIX Administrator's #A10324-1
Reference Guide
Guide to Oracle's Products and Services #A10560
Oracle7 Server and CICS/6000 #A14200
Where can I get more information on the DTP model?
X/Open's address is
X/Open company Ltd (Publications)
P O Box 109
Penn
High Wycombe
Bucks HP10 8NP
Tel: +44 (0)494 813844
Fax: +44 (0)494 814989
Request
G307 Distributed Transaction Processing: Reference Model Version 2
X/Open Guide G307 ISBN 1-859120-19-9 28cm.44p.pbk.220g.11/93
Page(4/4)
This file contains commonly asked questions about Oracle Server and UNIX
Transaction Processing Monitors (TPMs). The topics covered in this article are
o Performance with Oracle Server and TP monitors
o Performance using Oracle's XA Library
The questions answered in part 4 provide additional detail to the information
provided in part 1.
Performance with Oracle Server and TP Monitors
==============================================
I have heard that Transaction Processing Monitors (TPMs) will increase
Oracle Server performance. Is this true?
Several hardware and TPM vendors have made the claim that TPMs
will increase RDBMS performance. This claim is based on TPC-A
benchmarks. The key point to understand about TPC-A is that it
requires, for every transaction-per-second, ten times that many
users to be connected. For example, to get 600 TPS, you need 6000
users. The next question will answer in more detail how the the
three-tier architecture addresses this requirement, but first let's
look more generally at what TP Monitors can and can't do to improve
performance.
TP Monitors can provide better performance:
(1) When there are more than several hundred users connected.
This is because of the TP Monitor's role in the three-tier
architecture, described in the next question. In this
architecture, terminal handling is offloaded to one or more
separate machines, freeing up those cycles to do database work.
Note that this does NOT mean that Oracle itself runs faster,
just that we've given it more CPU cycles to use.
(2) When, because of the high potential concurrency of requests,
significant resource contention exists. Use of a TP Monitor can
limit the degree of concurrency and thus reduce contention.
TP Monitors can not provide better performance:
(1) For existing applications. The applications must be designed
to fit the TP Monitor architecture.
(2) For applications which are highly interactive in their use of
the database. These applications put many messages
through the transport system, and the TP Monitor is not as
efficient as SQL*Net for point-to-point communication.
(3) For CPU intensive single-query decision support. When executing
a single large command, Oracle query facilities work efficiently,
especially with the use of Oracle Parallel Query, available in 7.1.
How does the three-tier solution help TPC-A, or other situations with
thousands of on-line users?
The TPC-A test calls for a large number of users to produce a given
result. In the high-end results we produced in June, 1992, for example,
6150 terminals were simulated to produce 618 TPC-A transactions.
Thus, terminal concentration accounts for a large portion of the total
processing time used.
First, let's look at how the Multi Threaded Server would work for
this benchmark. In this case, there are many client processes,
but only a few server processes, which handle client requests on a
first-come first serve basis. When they are done with a request,
they take another client's request.
ORACLE7 CLIENT/SERVER ARCHITECTURE WITH MULTI THREADED SERVER
| Client | | Server |
| __________ |______________|_____ _____________ _____________ |
| | Client | | SQL*Net | |_|Dispatcher | | | |
| | Process| | | ____| Process |___| | |
| |________| | | | __|___________| | | |
|____________| | | | | | | | |
| | | | | | Oracle7 | |
______________ | | | __|__|____ | Server | |
| Client | | | | __|_|_____ | | | |
| __________ | | | | | Shared | |____| | |
| | Client | | SQL*Net | | | | Server |_|____| | |
| | Process|_|______________|__| | | Process|_| | | |
| |________| | | | |________| |___________| |
|____________| | | |
| | |
______________ | | |
| Client | | | |
| __________ | | | |
| | Client | | SQL*Net | | |
| | Process|_|______________|____| |
| |________| | | |
|____________| | |
|_______________________________________|
Client processes = N Dispatcher processes >= 1
Shared server processes >= 1
If there are 500 clients in this environment, there will be one or more
dispatcher processes, dynamically tunable, and one or more shared
server processes, dynamically tunable, on the server. The reduction
in the total number of processes handled by the server system
results in more processing time available for RDBMS activity. Thus
higher RDBMS transaction throughput can be obtained on the
server system.
But the problem for the TPC-A, and for certain large customer
configurations, is not the only ability of the Oracle Server to
process transactions, but also the ability of the operating
system to handle huge numbers of incoming connections.
There is one incoming connection for each client. Most UNIX
operating systems have a limit on how many such connections they can
handle. Even if a particular operating system allows a large number of
connections, each takes some amount of overhead to manage.
In order to service all 6150 terminals, we selected a 3-tier hardware
environment where the middle tier, using a TPM, acted as a terminal
concentrator. The high-end TPC-A architecture looked like the following.
The Application Servers, which contain the Pro*C statements used to
perform the transaction also run on the terminal concentrator machine
in order to offload as much work from the database serve as possible.
They send the compiled SQL over SQL*Net to the Oracle7 Server processes.
ORACLE7 TPS-A CLIENT/SERVER ARCHITECTURE
| Client | | Terminal | | Server |
| ________ | | Concentrator | | |
| | Client | |TPM | | | |
| | Process|_|_____|__ _____ | | |
| |________| |Comm | | | | | | |
|____________| | | | | | | |
| |__| | | | |
____________ | | TPM | | | |
| Client | | ___| | _______ | | ________ _______ |
| ________ | | | | |_| |__|_______|__| Oracle | | | |
| | Client | |TPM | | | | |Appl. | |SQL*Net| | Server |__| | |
| | Process|_|_____|_| |_____| |Server | | | | Process| | | |
| |________| |Comm | |_______| | | |________| | | |
|____________| | | | | | |
|_______________________| | | | |
| | | |
____________ _______________________ | |Oracle7| |
| Client | | Terminal | | |Server | |
| ________ | | Concentrator | | | | |
| | Client | |TPM | | | | | |
| | Process|_|_____|__ _____ | | __________ | | |
| |________| |Comm | | | | _______ |SQL*Net| | Oracle | | | |
|____________| | | | |_| |__|_______|__| Server |__| | |
| |__| | |Appl. | | | | Process| | | |
____________ | | TPM | |Server | | | |________| |_______| |
| Client | | ___| | |_______| | | |
| ________ | | | | | | | |
| | Client | |TPM | | | | | | |
| | Process|_|_____|_| |_____| | | |
| |________| |Comm | | | |
|____________| | | | |
|_______________________| |________________________|
Clients = 6150 Terminal concentrators = 17
TP Monitor instances = 17
Application server processes Oracle Server processes
= 17*8 = 17*8
The TPM is the software component of the terminal concentrator. In this role
it offloads terminal handling from the the machine running Oracle Server.
Since more than one terminal concentrator can be configured, whereas the
database in this case had to run on a single machine, concentrator machines
can be added until the performance of the back-end machine was optimized.
This three-tier solution resulted in the outstanding transaction throughput
announced with Oracle7 Server. Even with Oracle Parallel Server, it may pay
to offload the terminal handling so that the cluster can be exclusively used
for database operations.
Can you summarize the performance discussion for me?
Depending on the number of users required, different architectures may be
used in a client/server environment to maximize performance:
1) For a small number of users, the traditional Oracle two-task
architecture can be used. In this case, there is a one-to-one
correspondence between client processes and server processes. It's
simple, straightforward, and efficient.
2) For a large number of users, Multi Threaded Server might be a better
approach. Although some tuning may be required, Multi Threaded Server
can handle a relatively large number of users for each machine size
compared to the traditional Oracle approach. Using this approach,
customers will be able to handle many hundreds of users on many
platforms. Furthermore, current Oracle applications can move to this
environment without change.
3) For a very large number of users, where transactions are simple and
terminal input concentration is the overriding performance issue, a
3-tier architecture incorporating a TPM may be useful. In this case,
terminal concentration is handled by the TPM in the middle tier. As
you might expect, it is a more complex environment requiring more
system management. For existing Oracle customers, significant Oracle
application modifications will be required.
Oracle provides all of these choices.
Performance using Oracle's XA Library
=====================================
Are there any performance implications to using the XA library (in other
words, to using TPM-managed transactions)?
(1) The XA library imposes some performance penalty. You should use
TPM-managed transactions only if you actually need them. Even if you
are getting the one-phase commit optimization, the code path is
longer because we need to map back and forth between external
formats and internal ones. Also, prior to 7.1, XA requires you
to release all cursors at the end of a transaction, which results
in extra parsing. Even with shared cursors, there is time spent
looking up the one you need and re-validating it. This has been
improved for 7.1.
(2) If you need to use two-phase commit, this will incur additional cost
since extra I/Os are required. If you do need 2PC, you need to account
for that when sizing the application.
(3) Although some TPMs allow parallel execution of services (such as Tuxedo's
"tpacall"), this will not normally enhance performance unless different
resource managers are being used. In fact, Oracle Server must serialize
accesses to the same transaction by the same Oracle instance, and the
block/resume code will in fact degrade performance in that case compared
to running the services sequentially.hello,
the role is the same on all plattforms. the reports server takes requests for running reports, spawns an engine that executes the request. in addition to that, the server also provides scheduling services and security features for the reports environment.
regards,
the oracle reports team -
LoadVars-using send to pass a variable from flash to php
For the life of me, I've tried everything:
I've researched LoadVars on Adobe forum, used David Powers'
books, googled 'flash to php', LoadVars, etc. and tried
sendAndLoad, send, and using $_POST, $_GET, $_REQUEST.
$HTTP_POSTVARS but I keep getting this same error. any advice
please?
I have a Unix server running Apache/PHP 4 - LoadVars worked
to load name-value pairs into an array -see thread)
My goal with this simple app is to prototype being able to
pass a variable from flash to a variable in php.
Parse error: syntax error, unexpected T_VARIABLE in
flash_to_SQL.php on line 5
Actionscript 2.0 code:
var c :LoadVars = new LoadVars();
c.testing = "123FOUR";
c.send ("
http://127.0.0.1/flash_to_SQL.php","_self","POST");
php code: (I also tried $_POST, $_GET, $_REQUEST.
$HTTP_POSTVARS)
<?php
//mysql 4.1.2, php 4 , NO mysqli
ecbo $_REQUEST ['testing'];
/?>var formData:LoadVars = new LoadVars();
formData.fname = "Name";
formData.send("
http://www.website.com/flash_php.php",
formData, "POST");
<?php
$name = $_POST['fname'];
echo $name;
?> -
How to pass session variable value with GO URL to override session value
Hi Gurus,
We have below requirement.Please help us at the earliest.
How to pass session variable value with GO URL to override session value. ( It is not working after making changes to authentication xml file session init block creation as explained by oracle (Bug No14372679 : which they claim it is fixed in 1.7 version Ref No :Bug 14372679 : REQUEST VARIABLE NOT OVERRIDING SESSION VARIABLE RUNNING THRU A GO URL )
Please provide step by step solution.No vague answers.
I followed below steps mentioned.
RPD:
****-> Created a session variable called STATUS
-> Create Session Init block called Init_Status with SQL
select 'ACTIVE' from dual;
-> Assigned the session variable STATUS to Init block Init_Status
authenticationschemas.xml:
Added
<RequestVariable source="url" type="informational"
nameInSource="RE_CODE" biVariableName="NQ_SESSION.STATUS"/>
Report
Edit column "Contract Status" and added session variable as
VALUEOF(NQ_SESSION.STATUS)
URL:
http://localhost:9704/analytics/saw.dll?PortalGo&Action=prompt&path=%2Fshared%2FQAV%2FTest_Report_By%20Contract%20Status&RE_CODE='EXPIRED'
Issue:
When I run the URL above with parameter EXPIRED, the report still shows for ACTIVE only. The URL is not making any difference with report.
Report is picking the default value from RPD session variable init query.
could you please let me know if I am missing something.Hi,
Check those links might help you.
Integrating Oracle OBIEE Content using GO URL
How to set session variables using url variables | OBIEE Blog
OBIEE 10G - How to set a request/session variable using the Saw Url (Go/Dashboard) | GerardNico.com (BI, OBIEE, O…
Thanks,
Satya -
Passing Session variable of DATE data type to opaque view filter
Hi Everyone,
Can you guys please help me in passing session variable of DATE data type in RPD's physical layer 'opaque view' filter for Oracle database
I tried following syntax, syntax wise I didn't got getting any error, but at the same time this opaque view is not fetching any records as well. my session variable is "END_DATE" and its value is 1998/12/31:00:00:00(as shown in RPD session windows, datatype is DATETIME)
SELECT AMOUNT_SOLD, CHANNEL_ID, CUST_ID, PROD_ID, PROMO_ID, QUANTITY_SOLD, TIME_ID FROM SH.SALES
WHERE TIME_ID =TO_DATE( 'VALUEOF(NQ_SESSION.END_DATE)','MM/DD/YYYY')
SELECT AMOUNT_SOLD, CHANNEL_ID, CUST_ID, PROD_ID, PROMO_ID, QUANTITY_SOLD, TIME_ID FROM SH.SALES
WHERE TIME_ID = TO_DATE( 'VALUEOF(NQ_SESSION."END_DATE")','MM/DD/YYYY')
SELECT AMOUNT_SOLD, CHANNEL_ID, CUST_ID, PROD_ID, PROMO_ID, QUANTITY_SOLD, TIME_ID FROM SH.SALES
WHERE TRUNC(TIME_ID) = TO_DATE( 'VALUEOF(NQ_SESSION."END_DATE")','MM/DD/YYYY')
In past, I was able to pass a session variable into a opaque view filter using DATEOF function, but that was in DB2.
I appreciate your time and helpFinally, I got right format. here it is
to_date(substr('valueof(NQ_SESSION.END_DATE)',1,10), 'yyyy-mm-dd')
and here is the source from where I got this information
Using OBIEE Session Variables in Select Tables in the Physical Layer -
Passing a variable from one thread to another
Hi. I'm trying to produce a chat program in Java but need to pass a variable between two threads. I have included a snipet of the code.
import java.io.*;
import java.net.*;
class IndividualConnection extends Thread
public Socket clientSocket;
String userName = "";
public IndividualConnection(Socket connectingSocket)
clientSocket = connectingSocket;
public login(String name)
userName = name;
public void messageUser(Socket socket, String msg)
try
Socket newSocket = new Socket("192.168.0.162",5163);
DataOutputStream outToServer = new DataOutputStream(socket.getOutputStream());
outToServer.writeBytes(msg + '\n');
catch(Exception e)
System.out.println("The connection with the client has been closed.");
this.stop();
public void run()
Socket global = clientSocket;
// etc etc
A number of threads are created based on code similar to the above. Each thread communicates to a different client on the chat program. However, I want to be able to send messages between the clients.
Each thread has a method called messageUser(Socket socket, String msg). I should (hopefully) be able to send a message to anyone using the prog if I can access their socket. The problem is that the socket objects for each client is held in the clients own thread. I have tried writing some code to find the Socket object in another thread but to no success. The code I am trying is shown below.
public Socket findContact(String name)
ThreadGroup currentGroup = Thread.currentThread().getThreadGroup();
int numThreads = currentGroup.activeCount();
Thread[] listOfThreads = new Thread[numThreads];
currentGroup.enumerate(listOfThreads);
for (int i = 0; i < numThreads; i++)
String threadName = listOfThreads.getName();
if (threadName.compareTo(name) == 0)
// Socket tempSocket = threadName[i].getClass().getField(clientSocket);
return tempSocket;
The line I have commented out does not work. Please could someone tell me how to carry out this task. I have spent many hours trying to solve this but am not able to. The chat server is nearly complete now. I just need to find a way of obtaining another threads socket.
I hope the problem is comprehensible. I have found it difficult to explain clearly. Many thanks.Really simple, inelegant solution:
class MyThread extends Thread {
Socket socket;
MyThread( Socket s ) { socket = s; }
public Socket getSocket() { return socket; }
}Better: create a master object that includes an array
of sockets. Each time you create a Thread, update the
master object's list of sockets with a reference to
each Thread's socket. Under the current memory model, the socket field should be declared volatile. The proposed new memory model will guarantee that this will work if the socket field is declared final.
Sylvia. -
Pass a variable from an XML to a Javascrip
Aloha Everyone,
What do I make wrong?
Maybe it is just a sintax failure and maybe... . How can I
pass a value to a javascript witch is loads a php code to generate
the text on the button witch is the src of an <img> tag. The
value of @id doesn't reaches the PHP file and the problem is in
spry:region="dsmenus" is a special definition needed to pass the
variables in such a region to a javacript, if so then how to do it
if not than also please help if any of you can!
Here is the code:
<head>
<meta http-equiv="Content-Type" content="text/html;
UTF-8">
<script src="xpath.js"
type="text/javascript"></script>
<script src="SpryData.js"
type="text/javascript"></script>
<script type="text/javascript">
var dsmenus = new Spry.Data.XMLDataSet("menus.xml",
"menuelements/menuelement");
</script>
<script language="javascript" type="text/javascript">
var textid = new string;
function mouseOutImage(textid)
document.getElementById("phbutton").src =
"button2.php?text="+textid;
function mouseOverImage(textid)
document.getElementById("phbutton").src =
"button.php?text="+textid;
</script>
</head>
<body>
<div spry:region="dsmenus"
spry:repeatchildren="dsmenus">
<img id="phbutton" spry:setrow="dsmenus"
src="button2.php?text={@id}&x={x}"
onmouseover="mouseOverImage('{id}');"
onmouseout="mouseOutImage('{id}');"
onmouseenter="mouseOverImage('{id}');"
onmouseleave="mouseOutImage('{id}');">
<a href="button2.php?text={@id}">{@id}</a>
</div>
<div>
<p name=log>
</div>
</body>
</html>
Thank You in advance!Sorry for spamming i just realized what do i make wrong after
3 hours of programig.
..({id'} has a missing @ mark :) -
I met problem when installing Oracle 8.1.6 on Turbo Linux 7.0
I met problem when installing Oracle 8.1.6 on Turbo Linux 7.0.
After setting up environment variables, and successfully
accessed KDE interface, everything was going on well.
The process of installation blocked at 80% in "Database Creation
Process" dialog window.
I have tried two times and got the same result.
The error message is:
Warning: Cannot convert string "-*-Kochi Gothic-medium-r-normal-
*-*100...
Help!I have done some oracle installations over RedHat 7.0 (not certificated):
Let's check some things:
1- You must have changed very few parameters on your shm.h sem.h files which are in /usr/include/linux directory.
2- You need to upgrade the glibc and libstdc libraries (.rpm)
3- You must have installed the jre116_v5 on /usr/jre and made a symbolic link like this
ln -s /usr/jre/jre116_v5 /usr/local/jre
4- You must include in the CLASSPATH parameter the jre116_v5 directory. It should look something like this
CLASSPATH=/usr/jre/jre116_v5:$ORACLE_HOME/jlib
5- Be sure to create and export all the parameters in your .bash_profile.
6- Run the ./runInstaller.sh in a terminal window inside the Xwindow.
You can find the jre116_v5 in www.backdown.org
I hope these tips help you
<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by xx:
Hi every body
when I run ./runInstaller from cdrom
I get this messages :
Initializing Java Virtual Machine from /usr/local/jre/bin/jre.Please wait ...
Error in CreateOUIProcess ():-1
: Bad Address
I use JDK-1-1-6.
Thx<HR></BLOCKQUOTE>
null
Maybe you are looking for
-
My account wont let me download it say contact itunes
what do i do
-
IOS 6.1 destroyed my iPod touch. How can I restore my iPod touch?
I got a push notification about the new release for ios 6.1 and I did the update. After the update my ipod cut off. I assume that is normal but every time I try to cut it on, it either gets stuck on the apple logo or goes to a multi colored screen. I
-
Access form the Application Server
Hi, I have a Invoice in the directory abc/test on the application sever but when the third party is trying to access the same thru FTP it says that Ur not authorised even though he is able to see the file. Could any body tell me what might be the rea
-
Today my adobe 8 standard started corrupting the documents I scanned. I thought I could re-install it but don't know how.
-
General Newbie Menubar question
I am trying to add a horizontal menubar to the web page I developed (created in Fireworks, exported and then "processed" in Dreamweaver CS3). I find the process of adding the menubar "quite" laborious. I tried two ways: create the menubar in Firework