Skip to Main Content

Infrastructure Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

VM Manager Dsicover Server fails with "Unauthorized access attempt from"

BruceAug 31 2011 — edited Sep 6 2011
Hi,
I am trying to discover my newly installed VM Server and getting an error (see below). Connectivity is there, what authorization is required to discover?

Thanks!


warning icon
Job Construction Phase
----------------------
begin()
Appended operation 'Discover Manager Server Discover' to object 'OVM Foundry : Discover Manager'.
commit()
Completed Step: COMMIT

Objects and Operations
----------------------
Object (IN_USE): [DiscoverManager] OVM Foundry : Discover Manager
Operation: Discover Manager Server Discover

Job Running Phase at 14:06 on Wed, Aug 31, 2011
----------------------------------------------
Job Participants: []


Actioner
--------
Starting operation 'Discover Manager Server Discover' on object 'OVM Foundry : Discover Manager'
Setting Context to model only in job with id=1314821199282
Job Internal Error (Operation)com.oracle.ovm.mgr.api.exception.FailedOperationException: OVMAPI_4010E Attempt to send command: discover_server to server: 10.144.144.14 failed. OVMAPI_4004E Server Failed Command: discover_server , Status: org.apache.xmlrpc.client.XmlRpcHttpTransportException: HTTP server returned unexpected status: Unauthorized access attempt from ('10.144.144.3', 33927)!
Wed Aug 31 14:06:39 MDT 2011
Wed Aug 31 14:06:39 MDT 2011
at com.oracle.ovm.mgr.action.ActionEngine.sendCommandToServer(ActionEngine.java:474)
at com.oracle.ovm.mgr.action.ActionEngine.sendDiscoverCommand(ActionEngine.java:283)
at com.oracle.ovm.mgr.action.ServerAction.getServerInfo(ServerAction.java:95)
at com.oracle.ovm.mgr.discover.ovm.ServerBasicDiscoverHandler.query(ServerBasicDiscoverHandler.java:131)
at com.oracle.ovm.mgr.discover.ovm.ServerBasicDiscoverHandler.query(ServerBasicDiscoverHandler.java:61)
at com.oracle.ovm.mgr.discover.ovm.DiscoverHandler.execute(DiscoverHandler.java:50)
at com.oracle.ovm.mgr.discover.DiscoverEngine.handleDiscover(DiscoverEngine.java:433)
at com.oracle.ovm.mgr.discover.DiscoverEngine.discoverNewServer(DiscoverEngine.java:345)
at com.oracle.ovm.mgr.discover.DiscoverEngine.discoverServer(DiscoverEngine.java:265)
at com.oracle.ovm.mgr.op.manager.DiscoverManagerServerDiscover.action(DiscoverManagerServerDiscover.java:48)
at com.oracle.ovm.mgr.api.job.JobEngine.operationActioner(JobEngine.java:191)
at com.oracle.ovm.mgr.api.job.JobEngine.objectActioner(JobEngine.java:257)
at com.oracle.ovm.mgr.api.job.InternalJobDbImpl.objectCommitter(InternalJobDbImpl.java:1019)
at com.oracle.odof.core.AbstractVessel.invokeMethod(AbstractVessel.java:211)
at com.oracle.odof.core.BasicWork.invokeMethod(BasicWork.java:136)
at com.oracle.odof.command.InvokeMethodCommand.process(InvokeMethodCommand.java:100)
at com.oracle.odof.core.BasicWork.processCommand(BasicWork.java:81)
at com.oracle.odof.core.TransactionManager.processCommand(TransactionManager.java:751)
at com.oracle.odof.core.WorkflowManager.processCommand(WorkflowManager.java:395)
at com.oracle.odof.core.WorkflowManager.processWork(WorkflowManager.java:453)
at com.oracle.odof.io.AbstractClient.run(AbstractClient.java:42)
at java.lang.Thread.run(Thread.java:662)
Caused by: com.oracle.ovm.mgr.api.exception.IllegalOperationException: OVMAPI_4004E Server Failed Command: discover_server , Status: org.apache.xmlrpc.client.XmlRpcHttpTransportException: HTTP server returned unexpected status: Unauthorized access attempt from ('10.144.144.3', 33927)!
Wed Aug 31 14:06:39 MDT 2011
at com.oracle.ovm.mgr.action.ActionEngine.sendAction(ActionEngine.java:748)
at com.oracle.ovm.mgr.action.ActionEngine.sendCommandToServer(ActionEngine.java:470)
... 25 more

Comments

gdarling - oracle
I know virtually nothing about DAAB, but this works fine for me using ODP directly.. can you break it?

Greg
/* 
 CREATE OR REPLACE PROCEDURE defPROC
(
p1 IN VARCHAR2 DEFAULT 'foo',
p2 IN VARCHAR2 DEFAULT 'bar',
p3 IN VARCHAR2 DEFAULT 'baz',
p4 out varchar2
) AS
begin
 p4 := 'p1='||p1||', p2='||p2||', p3='||p3;
 end;
 /
 */
using System;
using System.Data;
using Oracle.DataAccess.Client;

class testdefvals
{
    static void Main(string[] args)
    {
        using (OracleConnection con = new OracleConnection("data source=orcl;user id=scott;password=tiger"))
        {
            con.Open();
            using (OracleCommand cmd = new OracleCommand("defProc", con))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.BindByName = true;
                cmd.Parameters.Add("p2", "secondval");
                OracleParameter outval = new OracleParameter("p4", OracleDbType.Varchar2, 4000);
                outval.Direction=ParameterDirection.Output;
                cmd.Parameters.Add(outval);
                cmd.ExecuteNonQuery();
                Console.WriteLine(outval.Value.ToString());

            }
        }
    }
}
MY OUTPUT
=======
p1=foo, p2=secondval, p3=baz
Press any key to continue . . .
872745
Hi Greg

Thanks for the sample but what I'v done is

DbCommand command = GetStoredProcCommand("Myproc");

public virtual DbCommand GetStoredProcCommand(string storedProcedureName)
{
if (string.IsNullOrEmpty(storedProcedureName)) throw new ArgumentException(Resources.ExceptionNullOrEmptyString, "storedProcedureName");

return CreateCommandByCommandType(CommandType.StoredProcedure, storedProcedureName);
}

DbCommand CreateCommandByCommandType(CommandType commandType,
string commandText)
{
DbCommand command = dbProviderFactory.CreateCommand();
command.CommandType = commandType;
command.CommandText = commandText;

BindParametersByName(command, true);
return command;
}

public override void BindParametersByName(DbCommand command, bool bindingFlag)
{
((OracleCommand)command).BindByName = bindingFlag;
}

the parameter collection is populated using the OracleCommandBuilder.DeriveParameters((OracleCommand)command).

Now I'm just assigning the values to the parameters that I need and calling

DataSet ds = ExecuteDataSet(command);

public virtual DataSet ExecuteDataSet(DbCommand command)
{
DataSet dataSet = new DataSet();
dataSet.Locale = CultureInfo.InvariantCulture;
DoLoadDataSet(command, dataSet);
return dataSet;
}

void DoLoadDataSet(DbCommand command, DataSet dataSet)
{
using (OracleDataAdapter adapter = (OracleDataAdapter)GetDataAdapter(UpdateBehavior.Standard))
{
adapter.SelectCommand = (OracleCommand)command;
adapter.Fill(dataSet);
}
}

This works fine if I explicitly specify the value again to the parameters which have default values but fails if I skip the parameter with the default value.
gdarling - oracle
Hi,

I think what it boils down to is that DervieParameters is deriving parameters for all of the proc params, even though they have default values, and that seems to me to be the correct behavior. Once you have parameters in the collection, if you don't assign a value to them, null will be passed.

What you probably need to do is

1) the best option, is not to use deriveparameters in the first place, and manually build the parameters collection, adding parameters for only the things you don't want to have default values:

http://download.oracle.com/docs/cd/B28359_01/win.111/b28375/OracleCommandBuilderClass.htm#CHDGJBGD
<snip>
DeriveParameters incurs a database round-trip and should only be used during design time. To avoid unnecessary database round-trips in a production environment, the DeriveParameters method itself should be replaced with the explicit parameter settings that were returned by the DeriveParameters method at design time.
</snip>

2) If you want to continue using DeriveParameters, remove the unwanted parameters from the OracleParameters collection.

Hope it helps,
Greg

UPDATED SAMPLE
----------------------------
/* 

CREATE OR REPLACE PROCEDURE defPROC
 (
 p1 IN VARCHAR2 DEFAULT 'foo',
 p2 IN VARCHAR2 DEFAULT 'bar',
 p3 IN VARCHAR2 DEFAULT 'baz',
 p4 out varchar2
 ) AS
 begin
  p4 := 'p1='||nvl(p1,'p1null')||', p2='||nvl(p2,'p2null')||', p3='||nvl(p3,'p3null');
  end;
 */
using System;
using System.Data;
using Oracle.DataAccess.Client;

class testguid
{
    static void Main(string[] args)
    {
        using (OracleConnection con = new OracleConnection("data source=orcl;user id=scott;password=tiger"))
        {
            con.Open();
            using (OracleCommand cmd = new OracleCommand("defProc", con))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.BindByName = true;
                OracleCommandBuilder.DeriveParameters(cmd);
                cmd.Parameters[1].Value = "secondval";
                cmd.ExecuteNonQuery();
                Console.WriteLine(cmd.Parameters[3].Value.ToString());

            }
        }

        using (OracleConnection con = new OracleConnection("data source=orcl;user id=scott;password=tiger"))
        {
            con.Open();
            using (OracleCommand cmd = new OracleCommand("defProc", con))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.BindByName = true;
                OracleCommandBuilder.DeriveParameters(cmd);
                // remove the first param
                cmd.Parameters.RemoveAt(0);
                // the third param is now the second param, remove it too.
                cmd.Parameters.RemoveAt(1);
                // this is the second value of the proc, but the first param of the collection, jsut
                // as it was when we coded it manually
                cmd.Parameters[0].Value = "secondval";
                cmd.ExecuteNonQuery();
                // the 4th proc param is now the second in the collection
                Console.WriteLine(cmd.Parameters[1].Value.ToString());

            }
        }
    }
}
OUTPUT
==============
p1=p1null, p2=secondval, p3=p3null
p1=foo, p2=secondval, p3=baz
Press any key to continue . . .


Edited by: gdarling on Jul 5, 2011 12:03 PM

Edited by: gdarling on Jul 5, 2011 12:04 PM
1 - 3
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Oct 4 2011
Added on Aug 31 2011
3 comments
4,782 views