Invalidation of model and value nodes
Hii,
I have a RFC which fetch values for me after giving some input values.The code for fetching is
ResultNode : model node containing values fetched from RFC execution.
OutputDetailsNode : value node for populating the fetched values to the table in View.
OutputDetailsNode.invalidate();
wdThis.wdGetTdc_DataCustController().execute_zsm_actual_allocation_input();
if(ResultNode.size()!=0)
wdComponentAPI.getMessageManager().reportSuccess(""ResultNode.size() "resultnode's size");
for(int i=0;i<ResultNode.size();i++)
ResultElement = ResultNode.getT_ResultElementAt(i);
OutputDetailsElement = OutputDetailsNode.createCtx_vn_OutputDetailsElement();
OutputDetailsElement.setTeam(ResultElement.getTeam());
OutputDetailsElement.setESA(ESA);
OutputDetailsElement.setUtilization(utilization);
OutputDetailsElement.setPercent_Sum(Percent_Sum);
OutputDetailsElement.setPercent_Alloc(percent_alloc);
OutputDetailsNode.addElement(OutputDetailsElement);
if(BapiNode.size()!=0)
for(int i =0;i<BapiNode.size();++i)
BapiElement = BapiNode.getBapiReturn_T_MessageElementAt(i);
wdComponentAPI.getMessageManager().reportSuccess(""
BapiElement.getMessage_V1()""+BapiElement.getMessage_V2());
OutputDetailsNode.invalidate();
BapiNode.invalidate();
//ResultNode.invalidate();
The problem lies : When at cases ResultNode size is 0, that is it does not fetch any values and BapiNode prints the message
"Data does not exist" ....after that when it is expected to fetch values, evrytime the ResultNode size prints to 0 and no
data is displayed.....
invalidating both ResultNode and OutputDetailsNode did not help.
Please do suggest.
Hi,
u can write like this na,
OutputDetailsNode.invalidate();
wdThis.wdGetTdc_DataCustController().execute_zsm_actual_allocation_input();
if(ResultNode.size()!=0)
wdComponentAPI.getMessageManager().reportSuccess(""ResultNode.size() "resultnode's size");
for(int i=0;i<ResultNode.size();i++)
ResultElement = ResultNode.getT_ResultElementAt(i);
OutputDetailsElement = OutputDetailsNode.createCtx_vn_OutputDetailsElement();
OutputDetailsElement.setTeam(ResultElement.getTeam());
OutputDetailsElement.setESA(ESA);
OutputDetailsElement.setUtilization(utilization);
OutputDetailsElement.setPercent_Sum(Percent_Sum);
OutputDetailsElement.setPercent_Alloc(percent_alloc);
OutputDetailsNode.addElement(OutputDetailsElement);
}else{
// here give error message.
use external debugging to know the rfc returns the value or not ?
why you using the bapinode to check the no data exists ?
Regards,
ramesh
Similar Messages
-
Model and Value node data in one form...?
Hello,
I have a requirement where the adobe form is expected to have model data available and then in the same form teh user provides data, which is maintained in value node.
Now the problem we are facing is, we are unable to maintain both value node and model node(i.e,attributes) under one type of node.(Invalid node type error appears when tried to place both attributes under one node).
How do we provide them to data source, as it takes only one node.
Thanks & Regards,
SharathHi,
you could try to add a some calculated attributes in the node which is bound to the interactive form. In the getter and setter methods of these calculated attributes you can read and set the value of your model attributes.
Regards
Sebastian -
Value Nodes vs. Model Nodes
Hi,
why model nodes have to be initialized via Service Controller and needs to be bound to a model class instance and value nodes don't need that?
Thank you,
PietroHi Pietro,
A model node is similar to value node in respect to it's API.
The main diff are:-
Value node
1.It maintains it's own elemnet collection,each element holding the actual runtime data.
2.While creating new element for a value node ,the node can create element object using metadata stored within it.
3.the children of a value node only be value nodes or value atrributes.It can't be a mix value and model nodes or attribute if the
parent is a value node.
Model Node
1.The element collection maintains by a model node is simply a collection of reference to model object instances.
2.Actual runtime data is stored in model object, not in model node's element collection.
Hope this will help you. if you want more check this.
http://help.sap.com/saphelp_webas630/helpdata/en/b8/cd96edb9c8794aa362e6e8b4236a1f/frameset.htm
Thanks & Regards,
Bhargava. -
Invalidate concept for value node and model node
Hello everybody,
We have invalidate method for value node and model node.
I want to know basic concept behind this method.
What this method acually does?
Regards,
BhavikHi Pran and all,
I figured out the problem. Input parameters are going multple times. So, depending upon that it gives multiple values.
My scenario is:
Root Node
|_ Input_node1
|_Attr1
|_ Input_Node2
|_Attr2
|_Output_node
|_Result
I am passing values in Attr1 and Attr2 attributes.
For this, first of all, i wrote following code.
In controller, i have initialized Root node:
Root_Node model = new Root_Node();
wdcontext.nodeRoot_Node().bind(model);
In view, I set values for attr1 and attr2 using following code:
Ipublic<View>.IInput_node1Element ele = wdcontext.createInput_node1Element();
ele.setAttr1("<value>");
wdcontext.nodeInput_node1().addElement(ele);
Ipublic<View>.IInput_node2Element ele1 = wdcontext.createInput_node2Element();
ele1.setAttr2("<value>");
wdcontext.nodeInput_node2().addElement(ele);
But this code didnt work. Model was executed without data in this case.
So, i thought that these elements were created at view level only. And corresponding model objects were not created.
So, I have changed code like following way:
I have removed initialization code for Input_Node1 and Input_Node2 from view. Now, I am getting input values in two different value nodes. And before calling custom controller's method to execute model, I am making two ArrayLists and filling data in it. Now, i am passing these ArrayList objects as parameters to controller's method.
In this method, i am setting both values as follows:
wdcontext.currentRoot_NodeElement().modelObject().setInput_Node1(List1);
wdcontext.currentRoot_NodeElement().modelObject().setInput_Node2(List2);
Then i am executing my model.
But, When i am setting values for Input_Node1 and Input_Node2 as shown above, values are appended instead of overwritting the value. Because of this appended values, it gives mupltiple results.
Means, Both ways are not proper. What should be the proper and best way to pass values in this case?
Thanks,
Bhavik -
Difference between value node,model node and recursion node?.
Hi all,
this is to ask you the difference between modal node, value node and recurrsion node?
please explain
Anhitya Kashyaphi Anhit,
node can be classified as a value node or model node. The difference between value nodes and model nodes is that a value node can store the data itself, whereas the model node only references an external model object that stores the data.
more on nodes check this
http://help.sap.com/saphelp_webas630/helpdata/en/b8/cd96edb9c8794aa362e6e8b4236a1f/frameset.htm
thanks,
Saloni -
Issue in invalidating the model output node
Hi All,
I have a problem in invalidating the model output node. Below is the description of my approach and problem statement.
REQUIREMENT: We have had the requirement to develop a custom WD java application in MSS which will fetch the appraisal data for each employee selection.
APPROACH: To acheive the same, I have developed the custom WD java application and have associated it with the Standard Employee Search application. I have established the eventing between both the applications, such that on each employee selection in Employee Search, I get the PERNR for the selected employee.
I have mapped a local valude node to the UI elements of my custom application. I am having TWO RFCs; one to Read data based on PERNR and the other to Update/Save to R/3.
I read the RFC based on PERNR and save it to local value node which is binded to the UI elements. If the end user is editing the read data, I am passing the entire local value node to the Save RFC import parameter on click of Save button in my application.
Every thing is working as expected. I am able to Read and Save the data and its also updating the backend. But, in the same session, if I go back to the previously selected employee for whom the updation has happened, i am not able to see the new data.
Only when I refresh the session, I see the new data on employee selection. When I try to invalidate the Read Output Model node, on Save button, I do not see anything happening. The Read Output Model node always holds the old value.
I have currently binded the Read model output node to a table in the view to see what it holds in runtime. And what I see is , its always having the old record for the same employee, in the same session even after invalidating the same on Save button.
I request you all to pleae try to understand the issue and let me know as how to get the new values in the same session.
Regards
DKHi,
When you are executing the read rfc ?? At the time of executing the read rfc try to bind the new object every time you execute and see what happens.
Like..
wdContext.node<READ_RFC_NODE>().bind(OBJECT of READ RFC);
then execute it.
Is there some kind of table which shows the employees and on selection you are showing the data? Can you give some more input on how you are reading the data?
Best Wishes
Idhaya R -
How to populate a Value Attribute of a Value Node inside Model Node
Hello
I have my context like this.
Context
.. - ModelNode
.... - Model Attr1
.... - Model Attr2
.... - Model Attr3
.... - Model Attr4
.... - Value Node
...... |
...... - Value Attr1
Model Node is of Cardinality 0..N
Value Node is of Cardinality 1..1
I want to create multiple records in my Model Node and one record for every Model Node in Value Node.
How to do this?
All good suggestions are welcome.
Regards,
ShubhamHi Shubham,
With your context structure the code will be
for(int i = wdContext.nodeModelNode().size()-1 ; i>=0 ; i--)
IPublic<comp name>.IModelNodeElement ele = wdContext.nodeModelNode().getModelNodeElementAt(i);
IPublic<comp name>.IValNodeElement valEle = wdContext.nodeModelNode().nodeValNode().createValNodeElement();
valele.setValAttr("");
ele.nodeValNode().addElement( valEle);
Your val node should be non singleton (singleton property = false)
Regards,
Jaydeep -
Problem while copying from model node to value node!!
Hi All,
I am trying to copy the contents of model table to newly created value table. For this i have written following code -
IWDNode targetnode = wdContext.nodeZhress_Firstday_Service_ValueNode();
IWDNode sourcenode = wdContext.nodeOutput().nodeT_Zhress_Firstday_output();
WDCopyService.copyElements(sourcenode,targetnode);
tagetnode is the node which is created in root context and sourcenode is the node which the node that shows the output when RFC runs.
After that by using copyService i m trying to copy from source to targetnode.
This target node is also binded to table, for getting the output.
When i copied the things from source to target it's size is equivalent to source node but its not getting any data from source node and showing blank in the table.
When i have tried to get whats it showing, its showing me null .
Please help me on this problem.
Regards,
Roshan Guptahi
check out this threads
Re: WDCopyService - copy model node to Value node
WDCOPYSERVICE
Value of attribute not copied after WDCopyService.copyElements
Regards,
Gopi -
How to get the name and value of an attribute on a node/element that is not a child
Hello,
Can someone shed some wisdom on how I can compare 2 xml nodes for differences.
My main challenge is I need to use the attributes/values of 'ProductDescription' and 'Features' as 'key' to identify the same node in
another doc with the same layout, but different content.
I am having trouble getting the name of the attribute on the node, 'ProductDescription' and 'Features'. I can only seem to get the node names, but not the attributes on the node. I need the name, because it can be different from doc to doc, so
I can't hardcode this.
Can someone please help with how to retrieve an attribute name/value on a node that is not a child. Here's an example of what
my xml looks like:
DECLARE
@myDoc1 xml
,@mydoc2 xml
DECLARE
@ProdID int
SET @myDoc1 ='<ProductDescription ProductID="1" ProductName="Road Bike">
<Features featureID = "1" featureName = "body">
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
<features featureID = "2" featureName = "seat">
<Warranty>1 year parts and labor</Warranty>
<Maintenance>2 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
SET @myDoc2 ='<ProductDescription ProductID="1" ProductName="Road Bike">
<Features featureID = "1" featureName = "body">
<Warranty>2 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
<features featureID = "2" featureName = "wheel">
<Warranty>1 year parts and labor</Warranty>
<Maintenance>2 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
I need to compare the attributes of 'ProductDescription' and 'Features' from @mydoc1 against @mydoc2 to see if they are the same based on those 2 nodes first. If they are, then i want to show the difference in the child elements.
This will eventually be an outer join to give me the differences betw the 2 docs based on those key values (node attributes).
I used node('//*') for the path, and value('local-name(../.)', 'varchar(50)') as element
,value('.[not(@xsi:nil = "true")]','VARCHAR(255)') AS new_value
...etc...
but that only gives me the node names, and the child elements. It does not give me back the attribute names and values from the node itself.
Thanks in advance for your help.
ceeAre you looking for something like this:
DECLARE @myDoc1 xml
SET @myDoc1 ='<ProductDescription ProductID="1" ProductName="Road Bike">
<Features featureID = "1" featureName = "body">
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
<Features featureID = "2" featureName = "seat">
<Warranty>1 year parts and labor</Warranty>
<Maintenance>2 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>'
SELECT T.c.value('local-name(.)', 'nvarchar(50)') AS name,
T.c.value('.', 'nvarchar(50)') AS value
FROM @myDoc1.nodes('ProductDescription/@*') AS T(c)
Erland Sommarskog, SQL Server MVP, [email protected] -
Attributes iteration of a value node bound to a structure invalid?
A context value node bound to a structure always delivers all attributes of the structure bound instead of the attributes, which were selected from the available structure attributes.
For example, if structure S has the attributes A, B and C and the value node V is bound to S, but "inherits" attribute A only, the code
wdContext.nodeV().getNodeInfo().iterateAttributes()
delivers an iterator which loops 3 times and returns A, B and C as attribute infos.
Is this a wanted behaviour? I would expect that only the attributes, which are bound to the corresponding structure attributes (A in the sample) are returned.
Regards
Stefan
Just to be a little bit more accurate: the term "structure" means a complex type defined unter "Structures" in the "Local Dictionary" for example. Attributes and nodes are Value Attributes/Nodes.
Message was edited by: Stefan KlenschYes, it is the intended behaviour. These <i>are</i> the attributes at run time. And I don't see why the additional structure attributes should be hidden from the application (besides the fact that iterateAttributes() is used internally, too).
If you are interested whether an attribute was originally declared or was automatically added due to the structure binding, look at IWDAttributeInfo.isDeclared(). -
Custom component Search and Result view using value node :pls help
Hi Experts,
I am creating a Custom component with Search and Result view using value nodes.
This is the code I wrote in the Search button event handler method.
The data which gets in lv_search I need to put in lv_col .
Can somebody guide me for this.
Points will be awarded .
METHOD eh_onsearch.
DATA : lv_current TYPE REF TO if_bol_bo_property_access,
lv_search TYPE zcrm_orgstruct_search, "Search value node structure
lv_result TYPE zcrm_orgstruct_result, "Result value node structure
lv_col TYPE REF TO if_bol_bo_col.
lv_current ?= me->typed_context->search->collection_wrapper->get_current( ).
CALL METHOD lv_current->get_properties
IMPORTING
es_attributes = lv_search.
me->typed_context->searchresult->collection_wrapper->set_collection( lv_col ).
op_toresultview( ).
ENDMETHOD.
Regards,
LakshmiHi Lakshmi,
Could you please share with us how it was solved.
"CALL METHOD lv_current->get_properties
IMPORTING
es_attributes = lv_search."
Did you get any values in lv_search ?
Because while using value nodes for search view (which inherits from advance search controller class), the above method does not return any search values entered in the fields.
Please let me know how did you solve it.
Thanks & Regards
Vidhya -
LOV query is invalid, a display and a return value are needed
hello - i am having this issue and can't get around this when creating a popup LOV based on sql.
below is LOV query. as you see the view has only two columns. I tried various ways by giving alias to columns in query but nothing works. What did I miss here?
select description,inventory_item_id from xx_apex_inv_v
1 error has occurred
LOV query is invalid, a display and a return value are needed, the column names need to be different. If your query contains an in-line query, the first FROM clause in the SQL statement must not belong to the in-line query.Did you try it like this?
select description d, inventory_item_id v from xx_apex_inv_v -
Difference between value attribute and value attribute under Node in contex
I have very basic question..it might be very simple but it is giving me a problem.
I have created one Node name "Input" and value attribute "Input1" under it.
I have just created one more value attribute named "in1" not under any Node.
I have created two input filed in the my view.One first I have mapped the value in properties
to variables "Input.Input1" and on another "in1".
When I deploy and run the application one Input box is coming as readonly and other is working fine .Will anybody tell me why it is so?There is no major difference between value attribute and inside a node.
It is a separation of attributes. Usually all the attributes belongs to same purpose will create in one value node. Like, calling one BAPI - requestListBAPI - it contains all the bapi related value attributes.
For your question, one field is read only(Input.Input1), bcz that context is not created. see the context properties.....cardinality will be 0..n. Change the cardinality to 1...n (<b>or</b>) create that context element .
In your implementation create that value node like this in your init method.
wdContext.createInputElement();
It will solve your problem.
in1 - is a value attribute, which is mapped to your input element. It wont have any problem.
Regards,
Sri -
Question regarding IWDTree and context Value Node naming
Hi,
I have a question regarding the IWDTree / IWDTreeNodeType components.
I have a context looking like this:
Context
+ ResponseNode
+ PersonNode (1..1)
+ PersonAddressNode (empty node, placeholder)
| + AdresNode (0..n)
+ PersonChildNode (empty node, placeholder)
| + PersonNode (0..n)
| + PersonAddressNode (empty node, placeholder)
| + AddressNode (0..n)
+ PersonParentsNode (empty node, placeholder)
+ PersonNode (0..n)
+ PersonAddressNode (empty node, placeholder)
+ AddressNode (0..n)
The context represents a person, a person's address, and a person's children and parents with their respective addresses.
As a result, on different branches, a PersonNode and AddressNode can appear.
And for some strange reason, all PersonNodes and AddressNodes link to the same ResponseNode.PersonNode.PersonParentsNode.PersonNode and ResponseNode.PersonNode.PersonParentsNode.PersonNode.PersonAddressNode.AddressNode respectively, irregardless of their branch...
Is it illegal to have multiple PersonNode and AddressNode node names, and should they be named uniquely?Generally, node names need to be unique inside the context, attributes in different nodes can have same names. I wonder if the context structure you described will result in code without compile errors.
The WD Tree can only be used with recursive context nodes or with a hierarchy of non-singleton child nodes.
Can you give an example how your tree should look like at runtime? -
Install instructions for Search Modeler and integrating with Apps 11i
Below are all the steps I took for creating integrating Search Modeler with an Oracle E-Business Suite 11.5.10.2 ATG RUP 7 instance called ERNIE.
Much thanks to Oracle Support ( Rajesh Ghosh, Vikas Soolapani and Roger Ford), as this simply wouldn't have been possible without them.
There are a few things in this document that may not be pertinent to your environment if you're doing this. I've made attempts to clarify those possibly optional sections in the documentation.
I've broken the document down into the following multiple parts
o Setting up a new RedHat 4.8 x86 server called ausSEARCHdev (The server is in AUStin, TX, is dedicated to SEARCH, and is for our DEV environment)
o SES (Secure Enterprise Search 10.1.8.2 install
o SES 10.1.8.4 patchset install
o SES CPU patch apply
o Standalone OC4J and ADF installation
o Search Modeler installation and configuration
o Configure ERNIE Apps instance to be on valid self-signed SSL certificate
o Import ERNIE SSL certificate into SES and Search Modeler
using aussearchdev initially
rh4 x86, default oracle build
** htop and collectl are open source free performance monitoring packages we utilize**
--start
install htop and collectl
wget http://dag.wieers.com/rpm/packages/htop/htop-0.7-1.el4.rf.i386.rpm
rpm -ivh htop-0.7-1.el4.rf.i386.rpm
wget http://downloads.sourceforge.net/project/collectl/collectl/collectl-3.4.0-4/collectl-3.4.0-4.noarch.rpm?use_mirror=voxel
rpm -ivh collectl-3.4.0-4.noarch.rpm
chkconfig collectl on
service collectl start
**We still need to install the necessary rpms so that collectl logs are compressed
--end
useradd -u 501 oracle
groupadd -g 504 dba
usermod -G 504 oracle
verification:
[root@aussearchdev ~]# su - oracle
[oracle@aussearchdev ~]$ id
uid=501(oracle) gid=501(oracle) groups=501(oracle),504(dba)
passwd oracle
** /mnt/oraclebackup is a network dumpspot we use to hold Software installs, RPMs, etc
** /mnt/rpms is a network dumpspot we use to hold ISOs for OS software such as Redhat Linux
mkdir /mnt/oraclebackup
mkdir /mnt/rpms
add the following to /etc/fstab
XXXXXXX:/patches/oraclebackup /mnt/oraclebackup nfs defaults,hard,nolock 0 0
XXXXXXX:/esxpress/nfs /mnt/rpms nfs rw,addr=XXX.XXX.XXX.XXX 0 0
mount /mnt/rpms
Next need to install various oracle needed RPMs.
cd /mnt/rpms/rh40_upd8/RedHat/RPMS/
rpm -ivh perl-Compress-Zlib-1.42-1.el4.i386.rpm
rpm -ivh libaio-devel-0.3.105-2.i386.rpm
rpm -ivh sysstat-5.0.5-25.el4.i386.rpm
rpm -ivh unixODBC-devel-2.2.11-1.RHEL4.1.i386.rpm
service collectl restart
cd /tmp
wget http://oss.oracle.com/el4/oracle-validated/oracle-validated-1.0.0-18.el4.i386.rpm
rpm -ivh oracle-validated-1.0.0-18.el4.i386.rpm
Now we should have all the RPMs we need.
cd /etc/sysconfig/oracle-validated
./oracle-validated-verify
cd /var/log/oracle-validated/results
more orakernel.log
uname -a
should return 2.6.9 or higher
rpm -qa|grep gcc-
should return 3.4.3 or higher
rpm -qa|grep glibc
should return 2.3.4-2.9 or higher
rpm -qa|grep make
should return 3.80 or higher
rpm -qa|grep binutils
should return 2.15.92.0.2 or higher
rpm -qa|grep openmotif
should return 2.2.3-9.RHEL4.1 or higher
rpm -qa|grep compat-db
should return 4.1.25-9 or higher
rpm -qa|grep setarch
should return 1.6-1 or higher
cat /proc/sys/kernel/sem
should return 250 32000 100 128 or higher (250 32000 100 142 in our case)
cat /proc/sys/kernel/shmall (1073741824 in our case)
should return 2097152 or higher
cat /proc/sys/kernel/shmmax
should return half the size of physical memory (4294967295 in our case - NO LARGER on 32-bit OS)
cat /proc/sys/kernel/shmmni
should return 4096
cat /proc/sys/fs/file-max
should return 65536 (327679 in our case)
cat /proc/sys/net/ipv4/ip_local_port_range
should return 1024 65000
values in /etc/security/limits.conf set by oracle-validated rpm, no changes necessary
add the following line to /etc/pam.d/login
session required /lib/security/pam_limits.so
add the following to /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
mkdir -p /d01/oracle
chmod 777 /d01/oracle
init 6 the box (aka reboot)
Time to start the SES 10.1.8.2 installer
running SES 10.1.8.2 installer
as oracle
cd /mnt/oraclebackup/deathstar_patches/SES/SES10182
./runInstaller
search server name sesprod
administrative password XXXXXXXX for dev,
http port 7777
destination path /d01/oracle/10.1.8/sesdev (dev)
data storage path /d01/oracle/sesdevdata (dev)
next
inventory /d01/oracle/oraInventory
dba group
run orainstroot.sh as requested
continue
all tests should pass, continue
finished clean
tried logging in to admin console at http://aussearchdev:7777/search/admin - worked fine
tried bringing up search query at http://aussearchdev:7777/search/query/search - worked fine
Now we need to get to 10.1.8.4 of SES
(yes, you need to keep the system up)
cd /mnt/oraclebackup/deathstar_patches/SES/SES10184/ses_10184pst_linux/
./runInstaller
Destination, choose sesdev
Next
Patchset successful
tried logging in to admin console at http://aussearchdev:7777/search/admin - worked fine
tried bringing up search query at http://aussearchdev:7777/search/query/search - worked fine
Apply CPU Patch to SES
CPU JAN 10 says patch 9119261 is required - but patch requires extended support contract
CPU OCT 09 says patch 8836540 is required - but patch requires extended support contract
CPU JUL 09 says patch 8534394 is required - but patch requires extended support contract
CPU APR 09 says patch 8290534 is required - and you can actually download it
Need opatch from 6880880
cp -r /mnt/oraclebackup/deathstar_patches/SES/CPUAPR09/OPatch $ORACLE_HOME
export PATH=$ORACLE_HOME/OPatch:$PATH
shut down everything
cd $ORACLE_HOME/bin
./searchctl stopall
cd /mnt/oraclebackup/deathstar_patches/SES/CPUAPR09/8290534
opatch apply
cd $ORACLE_HOME/cpu/CPUApr2009
**Note: your sys password is what you set for your administrative password above
sqlplus "sys/XXXXXX" as sysdba;
startup
@catcpu
@?/rdbms/admin/utlrp
shutdown immediate
exit
cd /d01/oracle/10.1.8/sesdev/cpu/view_recompile/
sqlplus "sys/XXXXXXX" as sysdba;
startup upgrade;
@view_recompile_jan2008cpu.sql
@?/rdbms/admin/utlrp
shutdown immediate
cd /d01/oracle/10.1.8/sesdev/jdk/jre/lib/ext
mv mail.jar $HOME/mail.jar.backup02222010
mv mailapi.jar $HOME/mailapi.jar.back02222010
cp /d01/oracle/10.1.8/sesdev/search/lib/mail.jar .
SES 10.1.8.4 is now installed and updated with latest available CPU
tried logging in to admin console at http://aussearchdev:7777/search/admin - worked fine
tried bringing up search query at http://aussearchdev:7777/search/query/search - worked fine
we're going to go with the standalone OC4j 10.1.3.3 and Oracle ADF 10.1.3.3 method
The URLs for these products are
http://blogs.oracle.com/ebssearch/2009/10/available_now_oracle_search_modeler_11_for_oracle_e-business_suite_11i.html
and specifically
OC4J - http://download.oracle.com/otn/java/oc4j/101330/oc4j_extended_101330.zip
ADF - http://www.oracle.com/technology/software/products/jdev/htdocs/adfinstaller10133.html
OC4J install
First you need to have Java 1.5 on the machine. Latest is 1.5.0_22. Package is in /mnt/oraclebackup/deathstar_patches/SES
as root on aussearchdev
cd /usr/local
cp /mnt/oraclebackup/deathstar_patches/SES/jdk-1_5_0_22-linux-i586.bin .
chmod 700 jdk-1_5_0_22-linux-i586.bin
./jdk-1_5_0_22-linux-i586.bin
yes
install OC4J just by copying over the directory
as oracle on aussearchdev
mkdir -p /d01/oracle/oc4j
cd /d01/oracle/oc4j
cp -r /mnt/oraclebackup/deathstar_patches/SES/oc4j/* .
ADF install
vi /mnt/oraclebackup/deathstar_patches/SES/adf/adfinstaller.properties
change the following
OracleHome = /mnt/oraclebackup/deathstar_patches/SES/adf
DesHome = /d01/oracle/oc4j/
type = OC4J
as root
cd /usr/bin
rm java
(yes)
ln -s /usr/local/jdk1.5.0_22/bin/java
su - oracle
java -version should now return 1.5.0_22
export JAVA_HOME=/usr/local/jdk1.5.0_22
cd /mnt/oraclebackup/deathstar_patches/SES/adf
java -jar runinstaller.jar -version
returns The version for the ADF libraries being installed is 10.1.3.41.57 - yes, that is apparently 10.1.3.3.
java -jar runinstaller.jar adfinstaller.properties
output looks good, do not be concerned by
WARNING: 'Could not delete: /d01/oracle/oc4j/BC4J/redist/bc4j' whilst deleting bc4j application
WARNING: 'Could not delete: /d01/oracle/oc4j/BC4J/redist/datatags' whilst deleting datatags application
as it was trying to delete the old version that didn't exist
Start OC4J
as oracle on aussearchdev
export JAVA_HOME=/usr/local/jdk1.5.0_22
export ORACLE_HOME=/d01/oracle/oc4j
cd $ORACLE_HOME/bin
./oc4j -start
you will be prompted for password - we're setting it. use XXXXXXXXXX
after it's up, kill it (ctrl-c) and restart it with
nohup ./oc4j -start &
last lines in nohup.out is
Starting OC4J from /d01/oracle/oc4j/j2ee/home ...
10/02/23 03:22:38 Oracle Containers for J2EE 10g (10.1.3.3.0) initialized
So now on to search modeler installation, going by Installation steps in Note 781366.1
8326128 - This is not a patch to be applied to the Apps, keep reading
as oracle on aussearchdev
cd /mnt/oraclebackup/deathstar_patches/SES/8326128
mkdir -p /d01/oracle/oc4j/uploaded
vi build.properties, changing
installation.type=OC4J
oracle.home=/d01/oracle/oc4j
deploy.server=aussearchdev.domainname.com
deploy.port=23791
web.port=7777
password=XXXXXXXXX
extra.classpath=/d01/oracle/oc4j/uploaded
now set the following environment values in your ssh session
export ORACLE_HOME=/d01/oracle/oc4j
export JAVA_HOME=/usr/local/jdk1.5.0_22
export PATH=$ORACLE_HOME/ant/bin:$ORACLE_HOME/bin:$PATH
ant main
whole bunch of stuff to screen, errors due to undeploy something that doesn't exist. Finished after a minute with
BUILD SUCCESSFUL
Total time: 58 seconds
Now on to post install steps
restart OC4j
cd $ORACLE_HOME/bin
./modeler.sh -shutdown -port 23791 -password r*l*r*0*
export ORACLE_HOME=/d01/oracle/oc4j
export JAVA_HOME=/usr/local/jdk1.5.0_22
export PATH=$ORACLE_HOME/ant/bin:$ORACLE_HOME/bin:$PATH
nohup ./modeler.sh -start &
end of nohup.out should show
Starting OC4J from /d01/oracle/oc4j/j2ee/home ...
Try going to http://aussearchdev:8888/modeler/faces/ModelerHome.jsp
Should get login screen, but wait, we haven't installed Oracle Apps interface yet...
Next let's do the Apps side of things
Going by note 953378.1
Using ERNIE (a development instance of E-Business Suite running 11.5.10.2 ATG RUP 7)
as applmgr on ausernieapp (ausernieapp is our app tier)
shut down apps services
apps patch 8225631
verify all the pre-req patches are in ERNIE
select * from ad_bugs where bug_number = '5903765';
select * from ad_bugs where bug_number = '6372396';
select * from ad_bugs where bug_number = '3219567';
select * from ad_bugs where bug_number = '3264822';
select * from ad_bugs where bug_number = '3261254';
select * from ad_bugs where bug_number = '5161676';
select * from ad_bugs where bug_number = '3036401';
select * from ad_bugs where bug_number = '3263588';
select * from ad_bugs where bug_number = '3264818';
select * from ad_bugs where bug_number = '3218526';
select * from ad_bugs where bug_number = '3263645';
select * from ad_bugs where bug_number = '4206794';
select * from ad_bugs where bug_number = '3262486';
select * from ad_bugs where bug_number = '3261243';
select * from ad_bugs where bug_number = '2614213';
select * from ad_bugs where bug_number = '3262159';
select * from ad_bugs where bug_number = '2819091';
select * from ad_bugs where bug_number = '3412795';
patch went in smooth
Log in to ERNIE Apps GUI as sysadmin user responsibility
Give users such as sysadmin FND Search Crawler responsibility
Go to system profile options, set
set FND: Search Enabling Flag to Y at site level
as applmgr on ausernieapp
cd /d01/oracle/ernieappl/fnd/11.5.0/patch/115/sql
sqlplus apps/$APPS_PWD @AFSRCHCF
Enter SES endpoint URL [e.g. http://ap637atg.us.oracle.com:7780]: http://aussearchdev.domainname.com:7777
Enter Apps Admin username [e.g. sysadmin]: sysadmin
Enter Apps Admin password: sysadmin_password
Enter SES Admin username [e.g. eqsys]: eqsys
Enter SES Admin password: eqsyspassword <-- This is the same as sys's password
on aussearchdev as oracle
had to kill modeler and start all the processes, so
kill -9 the modeler oc4j process, then
cd $ORACLE_HOME/bin
./searchctl startall
enter the password when prompted
in IE browser go to
http://aussearchdev.domainname.com:7777/search/admin
log in with eqsys password
global settings tab
identity management setup
click circle next to oracle.search.plugin.security.identity.ebs.EBS12IdentityPliginMgr
(yes, we're going with 12 even though we use Oracle Apps 11i)
http end point https://ausernieapp.domainname.com:8443/webservices/AppSearch/SecurityService
username sysadmin
password XXXXXXX
finish
Global Settings
Federation Trusted Entitites
####entity name sysadmin
####Entity Password XXXXXXXX
According to web conference with Oracle, this should NOT be eqsys but instead be sysadmin from above.
Select the Use Entity Plug-in for authentication check box
add
Trying to go to http://aussearchdev.domainname.com:7777/search/query/search and login (sysadmin / password)
stop midtier on both SES and Apps
cd $ORACLE_HOME/bin
./searchctl stopall
./adstpall.sh apps/$APPS_PWD on EBS app tier
start midtier on both SES and Apps
cd $ORACLE_HOME/bin
./searchctl startall
./adstrtal.sh apps/$APPS_PWD on EBS app tier
Now try and log in to Oracle SES user interface to verify the configuration
http://aussearchdev.domainname.com:7777/search/query
Now start up modeler again
export JAVA_HOME=/usr/local/jdk1.5.0_22
export ORACLE_HOME=/d01/oracle/oc4j
export PATH=$ORACLE_HOME/bin:$PATH
cd $ORACLE_HOME/bin
nohup ./modeler.sh -start &
Works now.
Now go to http://aussearchdev.domainname.com:8888/modeleradmin/AdminHome.jsp log in as oc4jadmin/XXXXXXX
Configure new target
Target Type 11i
Description ERNIE
Name ERNIE
EBS Database Host Name auserniedb
EBS Database Port 1521
EBS Database SID ERNIE
username apps
password XXXXXXXXx
oc4jadmin XXXXXXXx
export JAVA_HOME=/usr/local/jdk1.5.0_22
export ORACLE_HOME=/d01/oracle/oc4j
export PATH=$ORACLE_HOME/bin:$PATH
cd $ORACLE_HOME/j2ee/home
java -jar admin_client.jar deployer:oc4j:aussearchdev oc4jadmin XXXXXXXXX -addDataSourceConnectionPool -name "ERNIE2-pool" -factoryClass "oracle.jdbc.pool.OracleDataSource" -dbUser "apps" -dbPassword "XXXXXXX" -url "jdbc:oracle:thin:@auserniedb.domainname.com:1521:ERNIE" -applicationName appsearch
java -jar admin_client.jar deployer:oc4j:aussearchdev oc4jadmin XXXXXXX -addManagedDataSource -name "ERNIEDS" -jndiLocation "jdbc/ERNIEDS" -connectionPoolName "ERNIE2-pool" -applicationName appsearch
http://aussearchdev.domainname.com:8888/modeler/faces/ModelerHome.jsp
So, creating a self signed SSL certificate for ERNIE EBS instance (this will not work if you use an SSL certificate for another server like say, PROD)
doing this on ausernieapp
openssl genrsa -des3 -out ausernieapp.key 1024
PEM key is ausernieapp
openssl req -new -key ausernieapp.key -out ausernieapp.csr
PEM key is ausernieapp
Country US
State Texas
Locality Austin
Organization Name Corporation
Organizational Unit Name Information Technology
Common Name ausernieapp.domainname.com
Email address [email protected]
No challenge password
No optional company name
Now let's remove the passphrase from the key
cp ausernieapp.key ausernieapp.key.orig
openssl rsa -in ausernieapp.key.orig -out ausernieapp.key
Now let's generate a self-signed certificate
openssl x509 -req -days 1000 -in ausernieapp.csr -signkey ausernieapp.key -out ausernieapp.crt
Install the private key and certificate
cd $IAS_ORACLE_HOME/Apache/Apache/conf/ssl.crt
cp server.crt server.crt.backup.03102010
chown applmgr:applmgr server.crt.backup.03102010
cp $HOME/ausernieapp.crt /d01/oracle/ernieora/new/iAS/Apache/Apache/conf/ssl.crt/server.crt
cd $IAS_ORACLE_HOME/Apache/Apache/conf/ssl.key/
cp server.key server.key.backup.03102010
cp $HOME/ausernieapp.key /d01/oracle/ernieora/new/iAS/Apache/Apache/conf/ssl.key/server.key
chown applmgr:applmgr server.key.backup.03102010
bounce apache as applmgr
cd /d01/oracle/erniecomn/admin/scripts/ERNIE_ausernieapp
./adapcctl.sh stop
./adapcctl.sh start
In IE
https://ausernieapp.domainname.com:8443
Continue
Click on Certificate Error next to URL bar
Install Certificate -> Next-> Place all certificates in the following store -> trusted root certificate authorities ->finish
close browser, back to https://ausernieapp.domainname.com:8443
no errors,
Next step will be to import key into the SES and Search modelers
as oracle on aussearchdev
cd /d01/oracle/10.1.8/sesdev/jdk/jre/lib/security/
cp cacerts cacerts.backup.03102010
scp root@ausernieapp:/root/ausernieapp.crt .
export LANG=c
export PATH=$ORACLE_HOME/jdk/bin:$PATH
keytool -keystore ./cacerts -storepass changeit -alias rootausernieapp -import -trustcacerts -file ausernieapp.crt
--output
Owner: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
Issuer: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
Serial number: b4e92089cf73076f
Valid from: Wed Mar 10 13:22:38 CST 2010 until: Tue Dec 04 13:22:38 CST 2012
Certificate fingerprints:
MD5: 2C:6B:EE:1A:63:6D:XX:A6:05:90:F6:XX:DD:88:F7:80
SHA1: F8:DC:E5:2A:3E:68:XX:E1:EA:E4:75:AE:CC:4F:4A:10:2F:8A:FE:9B
Trust this certificate? [no]: yes
Certificate was added to keystore
Now load our cert
keytool -keystore ./cacerts -import -trustcacerts -file ausernieapp.crt
keytool -list -v -keystore ./cacerts now shows
Alias name: rootausernieapp
Creation date: Mar 10, 2010
Entry type: trustedCertEntry
Owner: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
Issuer: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
Serial number: b4e92089cf73076f
Valid from: Wed Mar 10 13:22:38 CST 2010 until: Tue Dec 04 13:22:38 CST 2012
Certificate fingerprints:
MD5: 2C:6B:EE:1A:63:6D:CB:XX:05:90:F6:78:DD:88:F7:80
SHA1: F8:DC:E5:2A:3E:68:9C:CE:EA:4E:75:AE:CC:FA:9E:10:2F:8A:FE:9B
Now we need to load it into the search modeler keystore
as root on aussearchdev
export JAVA_HOME=/usr/local/jdk1.5.0_22/
export PATH=$JAVA_HOME/bin:$PATH
cd /usr/local/jdk1.5.0_22/jre/lib/security/
scp root@ausernieapp:/root/ausernieapp.crt .
output
keytool -keystore ./cacerts -import -trustcacerts -file ausernieapp.crt
Enter keystore password: changeit
Owner: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
Issuer: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
Serial number: b4e92089cf73076f
Valid from: Wed Mar 10 13:22:38 CST 2010 until: Tue Dec 04 13:22:38 CST 2012
Certificate fingerprints:
MD5: 2C:6B:EE:1A:63:6D:CB:A1:05:90:F6:78:DD:88:F7:80
SHA1: F8:DC:E5:2A:3E:68:9C:CE:EA:4E:75:AE:CC:4F:9E:10:2F:8A:FE:9B
Trust this certificate? [no]: yes
Certificate was added to keystore
[root@aussearchdev security]#
output
For troubleshooting, if you go to end of /d01/oracle/10.1.8/sesdev/search/data/config/crawler.dat
you can modify the logLevel from the default of 4 to 2 to get better debug data. No services need to be restarted, it will become active with the next crawl.
While talking with Oracle, they mentioned the following patches
The patches identified 8321527 and 7586924 are SES patches to help with indexing
They also identified patch 9103851 which is an apps patch dealing with responsibilities <-- This is not yet available
Applying patch 7586924
as oracle on aussearchdev
cd $ORACLE_HOME/bin
./searchctl stopall
cd /mnt/oraclebackup/deathstar_patches/SES/post_patches/7586924
opatch apply
cd $ORACLE_HOME/bin
./searchctl startall
sqlplus eqsys/XXXXXX@SESDEV
define SCH_NAME=EQSYS
define PROXY_USER=EQPROXY
define INST_USER=EQ_TEST
@$ORACLE_HOME/search/admin/eq0pkh.sql
@$ORACLE_HOME/search/admin/eq0plb.sql
@$ORACLE_HOME/search/admin/eq0bug_7586924.sql
cd $ORACLE_HOME/search/data/config/
cp crawler.dat crawler.dat.backup.03102010
vi crawler.dat
We're using the Oracle E-Business Suite R12 crawler, so we will add the line
USE_IN_MEMORY_QUEUE Oracle E-Business Suite R12
as the line immediately preceding IMPORT -
so the end of the file looks like this:
# system properies: separated by space for multiple system properties or define multiple SYSTEM_PROPERTIES
# logLevel values: DEBUG(2), INFO(4), WARN(6), ERROR(8), FATAL(10)
SYSTEM_PROPERTIES -Doracle.search.logLevel=4 -Doracle.search.log=oracle.search.util.Log4jImpl
USE_IN_MEMORY_QUEUE Oracle E-Business Suite R12
IMPORT -
Now on to patch 8321527
cd /mnt/oraclebackup/deathstar_patches/SES/post_patches/8321527
cd $ORACLE_HOME/bin
./searchctl stopall
cd -
opatch apply
cd $ORACLE_HOME/bin
./searchctl startall
sqlplus eqsys/XXXXXXX@SESDEV
define SCH_NAME=EQSYS
define PROXY_USER=EQPROXY
select object_name from user_objects where status = 'INVALID';
--should be no rows selected
@$ORACLE_HOME/search/admin/eq0pkh.sql
@$ORACLE_HOME/search/admin/eq0plb.sql
--should be no rows selected
restart SES
cd -
./searchctl stopall
./searchctl startallBelow are all the steps I took for creating integrating Search Modeler with an Oracle E-Business Suite 11.5.10.2 ATG RUP 7 instance called ERNIE.
Much thanks to Oracle Support ( Rajesh Ghosh, Vikas Soolapani and Roger Ford), as this simply wouldn't have been possible without them.
There are a few things in this document that may not be pertinent to your environment if you're doing this. I've made attempts to clarify those possibly optional sections in the documentation.
I've broken the document down into the following multiple parts
o Setting up a new RedHat 4.8 x86 server called ausSEARCHdev (The server is in AUStin, TX, is dedicated to SEARCH, and is for our DEV environment)
o SES (Secure Enterprise Search 10.1.8.2 install
o SES 10.1.8.4 patchset install
o SES CPU patch apply
o Standalone OC4J and ADF installation
o Search Modeler installation and configuration
o Configure ERNIE Apps instance to be on valid self-signed SSL certificate
o Import ERNIE SSL certificate into SES and Search Modeler
using aussearchdev initially
rh4 x86, default oracle build
** htop and collectl are open source free performance monitoring packages we utilize**
--start
install htop and collectl
wget http://dag.wieers.com/rpm/packages/htop/htop-0.7-1.el4.rf.i386.rpm
rpm -ivh htop-0.7-1.el4.rf.i386.rpm
wget http://downloads.sourceforge.net/project/collectl/collectl/collectl-3.4.0-4/collectl-3.4.0-4.noarch.rpm?use_mirror=voxel
rpm -ivh collectl-3.4.0-4.noarch.rpm
chkconfig collectl on
service collectl start
**We still need to install the necessary rpms so that collectl logs are compressed
--end
useradd -u 501 oracle
groupadd -g 504 dba
usermod -G 504 oracle
verification:
[root@aussearchdev ~]# su - oracle
[oracle@aussearchdev ~]$ id
uid=501(oracle) gid=501(oracle) groups=501(oracle),504(dba)
passwd oracle
** /mnt/oraclebackup is a network dumpspot we use to hold Software installs, RPMs, etc
** /mnt/rpms is a network dumpspot we use to hold ISOs for OS software such as Redhat Linux
mkdir /mnt/oraclebackup
mkdir /mnt/rpms
add the following to /etc/fstab
XXXXXXX:/patches/oraclebackup /mnt/oraclebackup nfs defaults,hard,nolock 0 0
XXXXXXX:/esxpress/nfs /mnt/rpms nfs rw,addr=XXX.XXX.XXX.XXX 0 0
mount /mnt/rpms
Next need to install various oracle needed RPMs.
cd /mnt/rpms/rh40_upd8/RedHat/RPMS/
rpm -ivh perl-Compress-Zlib-1.42-1.el4.i386.rpm
rpm -ivh libaio-devel-0.3.105-2.i386.rpm
rpm -ivh sysstat-5.0.5-25.el4.i386.rpm
rpm -ivh unixODBC-devel-2.2.11-1.RHEL4.1.i386.rpm
service collectl restart
cd /tmp
wget http://oss.oracle.com/el4/oracle-validated/oracle-validated-1.0.0-18.el4.i386.rpm
rpm -ivh oracle-validated-1.0.0-18.el4.i386.rpm
Now we should have all the RPMs we need.
cd /etc/sysconfig/oracle-validated
./oracle-validated-verify
cd /var/log/oracle-validated/results
more orakernel.log
uname -a
should return 2.6.9 or higher
rpm -qa|grep gcc-
should return 3.4.3 or higher
rpm -qa|grep glibc
should return 2.3.4-2.9 or higher
rpm -qa|grep make
should return 3.80 or higher
rpm -qa|grep binutils
should return 2.15.92.0.2 or higher
rpm -qa|grep openmotif
should return 2.2.3-9.RHEL4.1 or higher
rpm -qa|grep compat-db
should return 4.1.25-9 or higher
rpm -qa|grep setarch
should return 1.6-1 or higher
cat /proc/sys/kernel/sem
should return 250 32000 100 128 or higher (250 32000 100 142 in our case)
cat /proc/sys/kernel/shmall (1073741824 in our case)
should return 2097152 or higher
cat /proc/sys/kernel/shmmax
should return half the size of physical memory (4294967295 in our case - NO LARGER on 32-bit OS)
cat /proc/sys/kernel/shmmni
should return 4096
cat /proc/sys/fs/file-max
should return 65536 (327679 in our case)
cat /proc/sys/net/ipv4/ip_local_port_range
should return 1024 65000
values in /etc/security/limits.conf set by oracle-validated rpm, no changes necessary
add the following line to /etc/pam.d/login
session required /lib/security/pam_limits.so
add the following to /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
mkdir -p /d01/oracle
chmod 777 /d01/oracle
init 6 the box (aka reboot)
Time to start the SES 10.1.8.2 installer
running SES 10.1.8.2 installer
as oracle
cd /mnt/oraclebackup/deathstar_patches/SES/SES10182
./runInstaller
search server name sesprod
administrative password XXXXXXXX for dev,
http port 7777
destination path /d01/oracle/10.1.8/sesdev (dev)
data storage path /d01/oracle/sesdevdata (dev)
next
inventory /d01/oracle/oraInventory
dba group
run orainstroot.sh as requested
continue
all tests should pass, continue
finished clean
tried logging in to admin console at http://aussearchdev:7777/search/admin - worked fine
tried bringing up search query at http://aussearchdev:7777/search/query/search - worked fine
Now we need to get to 10.1.8.4 of SES
(yes, you need to keep the system up)
cd /mnt/oraclebackup/deathstar_patches/SES/SES10184/ses_10184pst_linux/
./runInstaller
Destination, choose sesdev
Next
Patchset successful
tried logging in to admin console at http://aussearchdev:7777/search/admin - worked fine
tried bringing up search query at http://aussearchdev:7777/search/query/search - worked fine
Apply CPU Patch to SES
CPU JAN 10 says patch 9119261 is required - but patch requires extended support contract
CPU OCT 09 says patch 8836540 is required - but patch requires extended support contract
CPU JUL 09 says patch 8534394 is required - but patch requires extended support contract
CPU APR 09 says patch 8290534 is required - and you can actually download it
Need opatch from 6880880
cp -r /mnt/oraclebackup/deathstar_patches/SES/CPUAPR09/OPatch $ORACLE_HOME
export PATH=$ORACLE_HOME/OPatch:$PATH
shut down everything
cd $ORACLE_HOME/bin
./searchctl stopall
cd /mnt/oraclebackup/deathstar_patches/SES/CPUAPR09/8290534
opatch apply
cd $ORACLE_HOME/cpu/CPUApr2009
**Note: your sys password is what you set for your administrative password above
sqlplus "sys/XXXXXX" as sysdba;
startup
@catcpu
@?/rdbms/admin/utlrp
shutdown immediate
exit
cd /d01/oracle/10.1.8/sesdev/cpu/view_recompile/
sqlplus "sys/XXXXXXX" as sysdba;
startup upgrade;
@view_recompile_jan2008cpu.sql
@?/rdbms/admin/utlrp
shutdown immediate
cd /d01/oracle/10.1.8/sesdev/jdk/jre/lib/ext
mv mail.jar $HOME/mail.jar.backup02222010
mv mailapi.jar $HOME/mailapi.jar.back02222010
cp /d01/oracle/10.1.8/sesdev/search/lib/mail.jar .
SES 10.1.8.4 is now installed and updated with latest available CPU
tried logging in to admin console at http://aussearchdev:7777/search/admin - worked fine
tried bringing up search query at http://aussearchdev:7777/search/query/search - worked fine
we're going to go with the standalone OC4j 10.1.3.3 and Oracle ADF 10.1.3.3 method
The URLs for these products are
http://blogs.oracle.com/ebssearch/2009/10/available_now_oracle_search_modeler_11_for_oracle_e-business_suite_11i.html
and specifically
OC4J - http://download.oracle.com/otn/java/oc4j/101330/oc4j_extended_101330.zip
ADF - http://www.oracle.com/technology/software/products/jdev/htdocs/adfinstaller10133.html
OC4J install
First you need to have Java 1.5 on the machine. Latest is 1.5.0_22. Package is in /mnt/oraclebackup/deathstar_patches/SES
as root on aussearchdev
cd /usr/local
cp /mnt/oraclebackup/deathstar_patches/SES/jdk-1_5_0_22-linux-i586.bin .
chmod 700 jdk-1_5_0_22-linux-i586.bin
./jdk-1_5_0_22-linux-i586.bin
yes
install OC4J just by copying over the directory
as oracle on aussearchdev
mkdir -p /d01/oracle/oc4j
cd /d01/oracle/oc4j
cp -r /mnt/oraclebackup/deathstar_patches/SES/oc4j/* .
ADF install
vi /mnt/oraclebackup/deathstar_patches/SES/adf/adfinstaller.properties
change the following
OracleHome = /mnt/oraclebackup/deathstar_patches/SES/adf
DesHome = /d01/oracle/oc4j/
type = OC4J
as root
cd /usr/bin
rm java
(yes)
ln -s /usr/local/jdk1.5.0_22/bin/java
su - oracle
java -version should now return 1.5.0_22
export JAVA_HOME=/usr/local/jdk1.5.0_22
cd /mnt/oraclebackup/deathstar_patches/SES/adf
java -jar runinstaller.jar -version
returns The version for the ADF libraries being installed is 10.1.3.41.57 - yes, that is apparently 10.1.3.3.
java -jar runinstaller.jar adfinstaller.properties
output looks good, do not be concerned by
WARNING: 'Could not delete: /d01/oracle/oc4j/BC4J/redist/bc4j' whilst deleting bc4j application
WARNING: 'Could not delete: /d01/oracle/oc4j/BC4J/redist/datatags' whilst deleting datatags application
as it was trying to delete the old version that didn't exist
Start OC4J
as oracle on aussearchdev
export JAVA_HOME=/usr/local/jdk1.5.0_22
export ORACLE_HOME=/d01/oracle/oc4j
cd $ORACLE_HOME/bin
./oc4j -start
you will be prompted for password - we're setting it. use XXXXXXXXXX
after it's up, kill it (ctrl-c) and restart it with
nohup ./oc4j -start &
last lines in nohup.out is
Starting OC4J from /d01/oracle/oc4j/j2ee/home ...
10/02/23 03:22:38 Oracle Containers for J2EE 10g (10.1.3.3.0) initialized
So now on to search modeler installation, going by Installation steps in Note 781366.1
8326128 - This is not a patch to be applied to the Apps, keep reading
as oracle on aussearchdev
cd /mnt/oraclebackup/deathstar_patches/SES/8326128
mkdir -p /d01/oracle/oc4j/uploaded
vi build.properties, changing
installation.type=OC4J
oracle.home=/d01/oracle/oc4j
deploy.server=aussearchdev.domainname.com
deploy.port=23791
web.port=7777
password=XXXXXXXXX
extra.classpath=/d01/oracle/oc4j/uploaded
now set the following environment values in your ssh session
export ORACLE_HOME=/d01/oracle/oc4j
export JAVA_HOME=/usr/local/jdk1.5.0_22
export PATH=$ORACLE_HOME/ant/bin:$ORACLE_HOME/bin:$PATH
ant main
whole bunch of stuff to screen, errors due to undeploy something that doesn't exist. Finished after a minute with
BUILD SUCCESSFUL
Total time: 58 seconds
Now on to post install steps
restart OC4j
cd $ORACLE_HOME/bin
./modeler.sh -shutdown -port 23791 -password r*l*r*0*
export ORACLE_HOME=/d01/oracle/oc4j
export JAVA_HOME=/usr/local/jdk1.5.0_22
export PATH=$ORACLE_HOME/ant/bin:$ORACLE_HOME/bin:$PATH
nohup ./modeler.sh -start &
end of nohup.out should show
Starting OC4J from /d01/oracle/oc4j/j2ee/home ...
Try going to http://aussearchdev:8888/modeler/faces/ModelerHome.jsp
Should get login screen, but wait, we haven't installed Oracle Apps interface yet...
Next let's do the Apps side of things
Going by note 953378.1
Using ERNIE (a development instance of E-Business Suite running 11.5.10.2 ATG RUP 7)
as applmgr on ausernieapp (ausernieapp is our app tier)
shut down apps services
apps patch 8225631
verify all the pre-req patches are in ERNIE
select * from ad_bugs where bug_number = '5903765';
select * from ad_bugs where bug_number = '6372396';
select * from ad_bugs where bug_number = '3219567';
select * from ad_bugs where bug_number = '3264822';
select * from ad_bugs where bug_number = '3261254';
select * from ad_bugs where bug_number = '5161676';
select * from ad_bugs where bug_number = '3036401';
select * from ad_bugs where bug_number = '3263588';
select * from ad_bugs where bug_number = '3264818';
select * from ad_bugs where bug_number = '3218526';
select * from ad_bugs where bug_number = '3263645';
select * from ad_bugs where bug_number = '4206794';
select * from ad_bugs where bug_number = '3262486';
select * from ad_bugs where bug_number = '3261243';
select * from ad_bugs where bug_number = '2614213';
select * from ad_bugs where bug_number = '3262159';
select * from ad_bugs where bug_number = '2819091';
select * from ad_bugs where bug_number = '3412795';
patch went in smooth
Log in to ERNIE Apps GUI as sysadmin user responsibility
Give users such as sysadmin FND Search Crawler responsibility
Go to system profile options, set
set FND: Search Enabling Flag to Y at site level
as applmgr on ausernieapp
cd /d01/oracle/ernieappl/fnd/11.5.0/patch/115/sql
sqlplus apps/$APPS_PWD @AFSRCHCF
Enter SES endpoint URL [e.g. http://ap637atg.us.oracle.com:7780]: http://aussearchdev.domainname.com:7777
Enter Apps Admin username [e.g. sysadmin]: sysadmin
Enter Apps Admin password: sysadmin_password
Enter SES Admin username [e.g. eqsys]: eqsys
Enter SES Admin password: eqsyspassword <-- This is the same as sys's password
on aussearchdev as oracle
had to kill modeler and start all the processes, so
kill -9 the modeler oc4j process, then
cd $ORACLE_HOME/bin
./searchctl startall
enter the password when prompted
in IE browser go to
http://aussearchdev.domainname.com:7777/search/admin
log in with eqsys password
global settings tab
identity management setup
click circle next to oracle.search.plugin.security.identity.ebs.EBS12IdentityPliginMgr
(yes, we're going with 12 even though we use Oracle Apps 11i)
http end point https://ausernieapp.domainname.com:8443/webservices/AppSearch/SecurityService
username sysadmin
password XXXXXXX
finish
Global Settings
Federation Trusted Entitites
####entity name sysadmin
####Entity Password XXXXXXXX
According to web conference with Oracle, this should NOT be eqsys but instead be sysadmin from above.
Select the Use Entity Plug-in for authentication check box
add
Trying to go to http://aussearchdev.domainname.com:7777/search/query/search and login (sysadmin / password)
stop midtier on both SES and Apps
cd $ORACLE_HOME/bin
./searchctl stopall
./adstpall.sh apps/$APPS_PWD on EBS app tier
start midtier on both SES and Apps
cd $ORACLE_HOME/bin
./searchctl startall
./adstrtal.sh apps/$APPS_PWD on EBS app tier
Now try and log in to Oracle SES user interface to verify the configuration
http://aussearchdev.domainname.com:7777/search/query
Now start up modeler again
export JAVA_HOME=/usr/local/jdk1.5.0_22
export ORACLE_HOME=/d01/oracle/oc4j
export PATH=$ORACLE_HOME/bin:$PATH
cd $ORACLE_HOME/bin
nohup ./modeler.sh -start &
Works now.
Now go to http://aussearchdev.domainname.com:8888/modeleradmin/AdminHome.jsp log in as oc4jadmin/XXXXXXX
Configure new target
Target Type 11i
Description ERNIE
Name ERNIE
EBS Database Host Name auserniedb
EBS Database Port 1521
EBS Database SID ERNIE
username apps
password XXXXXXXXx
oc4jadmin XXXXXXXx
export JAVA_HOME=/usr/local/jdk1.5.0_22
export ORACLE_HOME=/d01/oracle/oc4j
export PATH=$ORACLE_HOME/bin:$PATH
cd $ORACLE_HOME/j2ee/home
java -jar admin_client.jar deployer:oc4j:aussearchdev oc4jadmin XXXXXXXXX -addDataSourceConnectionPool -name "ERNIE2-pool" -factoryClass "oracle.jdbc.pool.OracleDataSource" -dbUser "apps" -dbPassword "XXXXXXX" -url "jdbc:oracle:thin:@auserniedb.domainname.com:1521:ERNIE" -applicationName appsearch
java -jar admin_client.jar deployer:oc4j:aussearchdev oc4jadmin XXXXXXX -addManagedDataSource -name "ERNIEDS" -jndiLocation "jdbc/ERNIEDS" -connectionPoolName "ERNIE2-pool" -applicationName appsearch
http://aussearchdev.domainname.com:8888/modeler/faces/ModelerHome.jsp
So, creating a self signed SSL certificate for ERNIE EBS instance (this will not work if you use an SSL certificate for another server like say, PROD)
doing this on ausernieapp
openssl genrsa -des3 -out ausernieapp.key 1024
PEM key is ausernieapp
openssl req -new -key ausernieapp.key -out ausernieapp.csr
PEM key is ausernieapp
Country US
State Texas
Locality Austin
Organization Name Corporation
Organizational Unit Name Information Technology
Common Name ausernieapp.domainname.com
Email address [email protected]
No challenge password
No optional company name
Now let's remove the passphrase from the key
cp ausernieapp.key ausernieapp.key.orig
openssl rsa -in ausernieapp.key.orig -out ausernieapp.key
Now let's generate a self-signed certificate
openssl x509 -req -days 1000 -in ausernieapp.csr -signkey ausernieapp.key -out ausernieapp.crt
Install the private key and certificate
cd $IAS_ORACLE_HOME/Apache/Apache/conf/ssl.crt
cp server.crt server.crt.backup.03102010
chown applmgr:applmgr server.crt.backup.03102010
cp $HOME/ausernieapp.crt /d01/oracle/ernieora/new/iAS/Apache/Apache/conf/ssl.crt/server.crt
cd $IAS_ORACLE_HOME/Apache/Apache/conf/ssl.key/
cp server.key server.key.backup.03102010
cp $HOME/ausernieapp.key /d01/oracle/ernieora/new/iAS/Apache/Apache/conf/ssl.key/server.key
chown applmgr:applmgr server.key.backup.03102010
bounce apache as applmgr
cd /d01/oracle/erniecomn/admin/scripts/ERNIE_ausernieapp
./adapcctl.sh stop
./adapcctl.sh start
In IE
https://ausernieapp.domainname.com:8443
Continue
Click on Certificate Error next to URL bar
Install Certificate -> Next-> Place all certificates in the following store -> trusted root certificate authorities ->finish
close browser, back to https://ausernieapp.domainname.com:8443
no errors,
Next step will be to import key into the SES and Search modelers
as oracle on aussearchdev
cd /d01/oracle/10.1.8/sesdev/jdk/jre/lib/security/
cp cacerts cacerts.backup.03102010
scp root@ausernieapp:/root/ausernieapp.crt .
export LANG=c
export PATH=$ORACLE_HOME/jdk/bin:$PATH
keytool -keystore ./cacerts -storepass changeit -alias rootausernieapp -import -trustcacerts -file ausernieapp.crt
--output
Owner: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
Issuer: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
Serial number: b4e92089cf73076f
Valid from: Wed Mar 10 13:22:38 CST 2010 until: Tue Dec 04 13:22:38 CST 2012
Certificate fingerprints:
MD5: 2C:6B:EE:1A:63:6D:XX:A6:05:90:F6:XX:DD:88:F7:80
SHA1: F8:DC:E5:2A:3E:68:XX:E1:EA:E4:75:AE:CC:4F:4A:10:2F:8A:FE:9B
Trust this certificate? [no]: yes
Certificate was added to keystore
Now load our cert
keytool -keystore ./cacerts -import -trustcacerts -file ausernieapp.crt
keytool -list -v -keystore ./cacerts now shows
Alias name: rootausernieapp
Creation date: Mar 10, 2010
Entry type: trustedCertEntry
Owner: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
Issuer: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
Serial number: b4e92089cf73076f
Valid from: Wed Mar 10 13:22:38 CST 2010 until: Tue Dec 04 13:22:38 CST 2012
Certificate fingerprints:
MD5: 2C:6B:EE:1A:63:6D:CB:XX:05:90:F6:78:DD:88:F7:80
SHA1: F8:DC:E5:2A:3E:68:9C:CE:EA:4E:75:AE:CC:FA:9E:10:2F:8A:FE:9B
Now we need to load it into the search modeler keystore
as root on aussearchdev
export JAVA_HOME=/usr/local/jdk1.5.0_22/
export PATH=$JAVA_HOME/bin:$PATH
cd /usr/local/jdk1.5.0_22/jre/lib/security/
scp root@ausernieapp:/root/ausernieapp.crt .
output
keytool -keystore ./cacerts -import -trustcacerts -file ausernieapp.crt
Enter keystore password: changeit
Owner: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
Issuer: [email protected], CN=ausernieapp.domainname.com, OU=Information Technology, O=Corporation, L=Austin, ST=Texas, C=US
Serial number: b4e92089cf73076f
Valid from: Wed Mar 10 13:22:38 CST 2010 until: Tue Dec 04 13:22:38 CST 2012
Certificate fingerprints:
MD5: 2C:6B:EE:1A:63:6D:CB:A1:05:90:F6:78:DD:88:F7:80
SHA1: F8:DC:E5:2A:3E:68:9C:CE:EA:4E:75:AE:CC:4F:9E:10:2F:8A:FE:9B
Trust this certificate? [no]: yes
Certificate was added to keystore
[root@aussearchdev security]#
output
For troubleshooting, if you go to end of /d01/oracle/10.1.8/sesdev/search/data/config/crawler.dat
you can modify the logLevel from the default of 4 to 2 to get better debug data. No services need to be restarted, it will become active with the next crawl.
While talking with Oracle, they mentioned the following patches
The patches identified 8321527 and 7586924 are SES patches to help with indexing
They also identified patch 9103851 which is an apps patch dealing with responsibilities <-- This is not yet available
Applying patch 7586924
as oracle on aussearchdev
cd $ORACLE_HOME/bin
./searchctl stopall
cd /mnt/oraclebackup/deathstar_patches/SES/post_patches/7586924
opatch apply
cd $ORACLE_HOME/bin
./searchctl startall
sqlplus eqsys/XXXXXX@SESDEV
define SCH_NAME=EQSYS
define PROXY_USER=EQPROXY
define INST_USER=EQ_TEST
@$ORACLE_HOME/search/admin/eq0pkh.sql
@$ORACLE_HOME/search/admin/eq0plb.sql
@$ORACLE_HOME/search/admin/eq0bug_7586924.sql
cd $ORACLE_HOME/search/data/config/
cp crawler.dat crawler.dat.backup.03102010
vi crawler.dat
We're using the Oracle E-Business Suite R12 crawler, so we will add the line
USE_IN_MEMORY_QUEUE Oracle E-Business Suite R12
as the line immediately preceding IMPORT -
so the end of the file looks like this:
# system properies: separated by space for multiple system properties or define multiple SYSTEM_PROPERTIES
# logLevel values: DEBUG(2), INFO(4), WARN(6), ERROR(8), FATAL(10)
SYSTEM_PROPERTIES -Doracle.search.logLevel=4 -Doracle.search.log=oracle.search.util.Log4jImpl
USE_IN_MEMORY_QUEUE Oracle E-Business Suite R12
IMPORT -
Now on to patch 8321527
cd /mnt/oraclebackup/deathstar_patches/SES/post_patches/8321527
cd $ORACLE_HOME/bin
./searchctl stopall
cd -
opatch apply
cd $ORACLE_HOME/bin
./searchctl startall
sqlplus eqsys/XXXXXXX@SESDEV
define SCH_NAME=EQSYS
define PROXY_USER=EQPROXY
select object_name from user_objects where status = 'INVALID';
--should be no rows selected
@$ORACLE_HOME/search/admin/eq0pkh.sql
@$ORACLE_HOME/search/admin/eq0plb.sql
--should be no rows selected
restart SES
cd -
./searchctl stopall
./searchctl startall
Maybe you are looking for
-
I need help in resolving a problem that prevents me from accessing the iTunes store. Message reads " iTunes cannot contact the iTunes store" and also says that my laptop is no longer authorized to access my account. Help!
-
Text in tables shifting in different browsers...
I have set up a page using tables. In the middle of the page are 4 images pulled in and lined up horizontally separated by table cells (for some space). The tables immediately underneath the photos are for adding text. I center aligned the text and a
-
Collect Reponses Online tab in the Adobe FormsCentral desktop app
Where is the "Collect Reponses Online tab in the Adobe FormsCentral desktop app" ?
-
Connect to Mac from iPhone?
There seems to be quite a few programs/services for Windows users to connect to their desktop PC from their iPhone, but I'm yet to see similar for the Mac. The Google 'telekinesis' project seems to be the only one. Are there any solutions further adv
-
How to add Project 365 to existing Office 365 subscribed through GoDaddy
We subscribe to Office 365 through our GoDaddy account. Is there a way to add Project 365 to this subscription? If not (meaning we have to go through Microsoft) is there a way to merge these accounts? It appears we would need a different sign in t