Oracle Parallelism and parallel_automatic_tuning

Hello,
if parallel_automatic_tuning is set to TRUE and then large_pool_size is set to certain value, in this case parallel processes will use large_pool_size instead of shared_pool_size.Now, parallel_automatic_tuning is deprecated then how large_pool_size will be used for parallel processes.
Thanks,
S.Mann

I'm reading from multiple sources(book=> torubleshooting Oracle performance by christian antognini ;Paper=> Exploiting Parallel operation with a RAC by Kevin Conlon ;Oracle Documentation .
The version of Oracle is following
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
Thanks,
-S.Mann

Similar Messages

  • Newbie question about Oracle Parallel Server and Real Application Cluster

    I am trying to find out what kind of storage system is supported by the 9i Real Applicaton cluster. I have looked at the 8i Oracle Parallel Server which requires raw partitions and therefore NAS (network attached storage) that provides an interface at the file level will not work. Does anyone know if the 9i Real Application cluster has a similar requirement for raw partitions? any suggestions of whether SAN or other technology will be suitable? pointers to more information is appreciated.
    Robert

    Hi Derik,
    I know this is a really broad question. No, it happens all the time! Here is a similar issue:
    http://blog.tuningknife.com/2008/09/26/oracle-11g-performance-issue/
    +"In the end, nothing I tried could dissuade 11g from emitting the “PARSING IN CURSOR #d+” message for each insert statement. I filed a service request with Oracle Support on this issue and they ultimately referred the issue to development as a bug. Note that Support couldn’t reproduce the slowness I was seeing, but their trace files did reflect the parsing messages I observed."+
    I would:
    1 - Start by examining historical SQL execution plans (stats$sql_plan or dba_hist_sql_plan). Try to isolate the exact nature of the decreased performance.
    Are different indexes being used? Are you geting more full-table scans?
    2 - Migrate-in your old 10g CBO statistics
    3 - Confirm that all init.ora parms are identical
    4 - Drill into each SQL with a different execution plan . . .
    Raid 5 Don't believe that crap that all RAID-5 is evil. . . .
    http://www.dba-oracle.com/t_raid5_acceptable_oracle.htm
    But at the same time, consider using the Oracle standard, RAID-10 . . .
    Hope this helps . . .
    Donald K. Burleson
    Oracle Press author
    Author of "Oracle Tuning: The Definitive Reference"
    http://www.rampant-books.com/t_oracle_tuning_book.htm
    "Time flies like an arrow; Fruit flies like a banana".

  • 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

  • What is Oracle ACFS and ADVM

    Hi, I am trying to get my head around exactly what Oracle ACFS and ADVM are in relation to ASM ( the Oracle manuals are less than clear ! )
    Q1. To my mind, ACFS extends the ability of ASM to manage and present file systems which are not simply provided from a single server but where a file system itself could be distributed over a cluster of servers - is that correct ?
    Q2. ADVM on the otherhand is stumping me a bit. I know that ACFS sits on top of ADVM but I am trying to workout what ADVM gives you above the usual volume management capability of ASM in the first place ?
    Q3. What is ASMLib for ?
    Q4. I believe oracleasm is the command line interface to ASMLib - is that correct ?
    any help would be warmly appreciated,
    Jim

    In regards to OCFS and ACFS. I understand that they are different Cluster File systems, both developed by Oracle but with OCFS being the older open source, general purpose Cluster File System and ACFS being the licensed one they have developed in 11gR2 for GRid Infrastructure / ASM to use.
    OCFS and ACFS are separate products by different teams for different purposes. One should not compare the two as they have different pros and cons.
    Q1. Is ACFS, Oracle's default for Grid Infrastructure ( ASM + Clusterware ) from 11.2 onwards ? The image you previously referred to would appear to show this ( or does the box showing the use of a 3rd party file system include OCFS as a possibility ? )
    I believe that it shows that ASM is modular with defined call interfaces allowing 3rd party integration - and that this has no bearing to OCFS specifically.
    Q2. The same image appears to show RAC only using ACFS. Again is this the default from 11.2 onwards ?
    ACFS is recommended when using ASM and a cluster file system is needed. You do not need any additional moving parts to have a clustered file system. But this does not mean that other cluster file systems are not supported.
    Q3. Prior to 11.2 what did RAC use as it clustered file system ? Was it OCFS or were there a number of options ?
    In the days of OPS (Oracle Parallel Server), a cluster was build on raw devices (seen by all nodes), with the o/s providing a DLM (Distributed Lock Manager) to allow concurrent access by different processes on different servers to the same disks.
    This was very clunky and had minimal management tools. I recall requesting a DBA to add another scsi disk to a tablespace and he accidentally entered the disk size to add as 2MB instead of 2GB. The disk was toast as we had no means to reclaim the rest of the storage, and removing the disk from the tablespace was not possible. OPS also had other issues like a TCP Interconnect and so on.
    When RAC was introduced, Oracle addressed a lot of the OPS cons. Like requiring a 3rd party DLM. Like having the DBA directly dealing with raw scsi devices. Like using TCP for the Interconnect. Etc.
    ASM was introduced to do the storage management for the database stack. Oracle RAC has an underlying component called the cluster (CRS) stack - and this specifically needs cluster storage for the OCR and Voting files (no db storage). As ASM was part of the db stack, you had to use something else for the CRS stack's storage. That something else being OCFS for example, or a raw scsi devices, etc.
    With 11gr2 Oracle extended ASM to support the CRS stack and provide for storage for the CRS. Which is why one now installs ASM with CRS (and it runs as the o/s grid user), and not with the db s/w (running as the oracle user). As part of the feature set of providing CRS storage, cluster file system storage is also provided (for example, to install the db stack in a single shared cluster Oracle home).
    ASM's new features simply continued the trend of reducing CRS/RAC dependency on 3rd party components - even if said 3rd party (external) component happens to be from a different division from the same company and called OCFS.
    By the same token, the entire CRS/RAC s/w stack has been further modularised, allowing you to integrate your own stuff with it. You can for example use CRS to run a series of Apache web servers as a cluster, with load balancing, redundancy and failover. Or if you feel the need, build your own cluster file system driver for ASM.

  • ORACLE PARALLEL SERVER (OPS)

    제품 : ORACLE SERVER
    작성날짜 : 2004-08-13
    ORACLE PARALLEL SERVER (OPS)
    ==============================
    PURPOSE
    다음은 OPS(ORACLE PARALLEL SERVER) 의 구조에 대해서 알아본다.
    SCOPE
    Standard Edition 에서는 Real Application Clusters 기능이 10g(10.1.0) 이상 부터 지원이 됩니다.
    Explanation
    1. Parallel Server Architecture
    OPS는 다수의 Loosely Coupled System들 간의 원활한 Resource
    Sharing을 위해 제공하는 DLM(PCM)을 이용하여 동시에 다수의
    사용자가 각 Node를 통해 한 Database를 Access함으로써 System의
    가용성과 전체적인 성능을 극대화시키기 위한 다중처리 System
    구성이다.
    (1) Loosely Coupled System
    SMP Machine과 같이 Tightly Coupled System들 간에 Data Files,
    Print Queue 같은 Resource를 공유하기 위한 Shared Disk
    Architecture로 Node간의 정보전송은 Common High-Speed Bus를
    이용한다.
    (2) Distributed Lock Manager(DLM)
    Loosely Coupled System에서 Resource Sharing을 조정,관리하는
    Software로 Application들이 같은 Resource에 대해 동시에 Access를
    요구할 때 서로간의 Synchronization을 유지하며 Conflict가
    발생하지 않도록 하는 기능을 담당한다.
    다음은 DLM의 주요 Service이다
    - Resource에 대한 Current "ownership" 유지 관리
    - Application Process들의 Resource Request Accept
    - 요구한 Resource가 가용할 경우 해당 Process에 공지
    - Resource에 대한 Exclusive Access 허용
    (3) Parallel Cache Management(PCM)
    Data File내의 하나 이상의 Data Block을 관리하기 위해
    할당되는 Distributed Lock을 PCM Lock이라 하며 어떤 Instance가
    특정 Resource를 Access하기 위해서는 반드시 그 Resource의 Master
    Copy의 "owner"가 되어야 한다.
    이는 곧 그 Resource를 Cover하는 Distributed Lock의 "owner"가
    됨을 의미한다. 이러한 "owner ship"은 다른 Instance가 동일
    Data Block 또는 그 PCM Lock에 의해 Cover되고 있는 다른 Data
    Block에 대한 Update 요구가 있을때까지 계속 유지된다.
    "owner ship"이 한 Instance에 다른 Instance로 전이 되기 전에
    변경된 Data Block은 반드시 Disk로 "write"하므로 각 Node의
    Instance간 Cache Coherency는 철저하게 보장된다.
    2. Parallel Server의 특성
    - Network상의 각 Node에서 Oracle Instance 기동 가능
    - 각 Instance는 SGA + Background Processes로 구성
    - 모든 Instance는 Control File과 Datafile들을 공유
    - 각 Instance는 자신의 Redo Log를 보유
    - Control File, Datafiles, Redo Log Files는 하나 이상의
    Disk에 위치
    - 다수의 사용자가 각 Instance를 통해 Transaction 실행 가능
    - Row Locking Mode 유지
    3. Tuning Focus
    서로 다른 Node를 통해서 하나의 Database 구성하의 Resource를
    동시에 사용하는 OPS 환경에서 Data의 일관성과 연속성을 위한
    Instance간의 Lock Managing은 불가피한 현실이다. 즉, 위에서
    언급한 Instance간의 Resource "owner ship"의 전이(pinging 현상)
    와 같은 Overhead를 최소화하기 위해선 효율적인 Application
    Partition(Job의 분산)이 가장 중요한 현실 Factor이다.
    다시 말해 서로 다른 Node를 통한 동일 Resource에의 Cross-Access
    상황을 최소화해야 함을 의미한다.
    다음은 OPS 환경에서 Database Structure 차원의 Tuning Point로서
    PCM Lock 관련 GC(Global Constant) Parameters와 Storage에 적용할
    Options 및 기타 필요한 사항이다.
    (1) Initial Parameters
    OPS 환경에서 PCM Locks를 의해 주는 GC(Global Constant)
    Parameters는 Lock Managing에 절대적인 영향을 미치며 각 Node마다
    반드시 동일한 Value로 설정(gc_lck_procs 제외)되어야 한다.
    일반적인 UNIX System에서 GC Parameters로 정의하는 PCM Locks의
    총합은 System에서 제공하는 DLM Configuration 중 "Number of
    Resources"의 범위 내에서 설정 가능하다.
    - gc_db_locks
    PCM Locks(DistributedLocks)의 총합을 정의하는 Parameter로
    gc_file_to_locks Parameter에 정의한 Locks의 합보다 반드시
    커야 한다.
    너무 작게 설정될 경우 하나의 PCM Lock이 관리하는 Data Blocks가
    상대적으로 많아지므로 Pinging(False Pinging) 현상의 발생
    가능성도 그만큼 커지게 되며 그에 따른 Overhead로 인해 System
    Performance도 현격히 저하될 가능성이 크다. 따라서 가능한
    최대의 값으로 설정해야 한다.
    - False Pinging
    하나의 PCM Lock이 다수의 Data Blocks를 관리하므로 자신의
    Block이 아닌 같은 PCM 관할하의 다른 Block의 영향으로 인해
    Pining현상이 발생할 수 있는 데 이를 "False Pinging"이라 한다.
    Database Object별 발생한 Pinging Count는 다음과 같이 확인할 수
    있으며 sum(xnc) > 5(V$PING) 인 경우에 더욱 유의해야 한다.
    - gc_file_to_locks
    결국 gc_db_locks에 정의된 전체 PCM Locks는 각 Datafile 당
    적절히 안배가 되는데 전체 Locks를 운용자의 분석 결과에 의거
    각 Datafile에 적절히 할당하기 위한 Parameter이다.
    운용자의 분석 내용은 각 Datafile 내에 존재하는 Objects의 성격,
    Transaction Type, Access 빈도 등의 세부 사항을 포함하되 전체
    PCM Locks 대비 Data Blocks의 적절하고도 효율적인 안배가
    절대적이다.
    이 Parameter로 각 Datafile당 PCM Locks를 안배한 후 Status를
    다음의 Fixed Table로 확인할 수 있다.
    Sample : gc_db_locks = 1000
    gc_file_to_locks = "1=500:5=200"
    X$KCLFI ----> 정의된 Bucket 확인
    Fileno      Bucket     
    1     1     
    2      0      
    3     0     
    4      0     
    5     2     
    X$KCLFH ----> Bucket별 할당된 Locks 확인
    Bucket     Locks     Grouping     Start     
    0     300     1     0     
    1     500     1     300     
    2     200     1     800     
    gc_files_to_locks에 정의한 각 Datafile당 PCM Locks의 총합은 물론
    gc_db_locks의 범위를 초과할 수 없다.
    다음은 각 Datafile에 할당된 Data Blocks의 수를 알아보는 문장이다.
    select e.file_id id,f.file_name name,sum(e.blocks) allocated,
    f.blocks "file size"
    from dba_extents e,dba_data_files f
    where e.file_id = f.file_id
    group by e.file_id,f.file_name,f.blocks
    order by e.file_id;
    - gc_rollback_segments
    OPS로 구성된 각 Node의 Instance에 만들어진 Rollback Segment
    (Init.ora의 rollback_segments에 정의한)의 총합을 정의한다.
    다수의 Instance가 Rollback Segment를 공용으로 사용할 수는 있으나
    OPS 환경에서는 그로 인한 Contention Overhead가 엄청나므로 반드시
    Instance당 독자적인 Rollback Segment를 만들어야 하며 Instance간
    동일한 이름의 부여는 불가하다.
    select count(*) from dba_rollback_segs
    where status='ONLINE';
    위의 결과치 이상의 값으로 정해야 한다.
    - gc_rollback_locks
    하나의 Rollback Segment에서 동시에 변경되는 Rollback Segment
    Blocks에 부여하는 Distributed Lock의 수를 정의한다.
    Total# of RBS Locks = gc_rollback_locks * (gc_rollback_segments+1)
    위에서 "1"을 더한 것은 System Rollback Segment를 고려한 것이다.
    전체 Rollback Segment Blocks 대비 적절한 Locks를 정의해야 한다.
    다음은 Rollback Segment에 할당된 Blocks의 수를 알아보는 문장이다.
    select s.segment_name name,sum(r.blocks) blocks
    from dba_segments s,dba_extents r
    where s.segment_name = r.segment_name
    and s.segment_type = 'ROLLBACK'
    group by s.segment_name;
    - gc_save_rollback_locks
    특정 시점에서 어떤 Tablespace 내의 Object를 Access하고 있는
    Transaction이 있어도 그 Tablespace를 Offline하는 것은 가능하다.
    Offline 이후에 발생된 Undo는 System Tablespace내의 "Differred
    Rollback Segment"에 기록, 보관 됨으로써 Read Consistency를
    유지한다. 이 때 생성되는 Differred Rollback Segment에 할당하는
    Locks를 정의하는 Parameter이다.
    일반적으로 gc_rollback_locks의 값과 같은 정도로 정의하면 된다.
    - gc_segments
    모든 Segment Header Blocks를 Cover하는 Locks를 정의한다. 이 값이
    작을 경우에도 Pinging 발생 가능성은 그 만큼 커지므로 해당
    Database에 정의된 Segments 이상으로 설정해야 한다.
    select count(*) from dba_segments
    where segment_type in ('INDEX','TABLE','CLUSTER');
    - gc_tablespaces
    OPS 환경에서 동시에 Offline에서 Online으로 또는 Online에서
    Offline으로 전환 가능한 Tablespace의 최대값을 정의하는 것으로
    안전하게 설정하기 위해서 Database에 정의된 Tablespace의 수만큼
    설정한다.
    select count(*) from dba_tablespaces;
    - gc_lck_procs
    Background Lock Process의 수를 정하는 것으로 최대 10개까지
    설정(LCK0-LCK9)할 수 있다. 기본적으로 하나가 설정되지만 필요에
    따라 수를 늘려야 한다.
    (2) Storage Options
    - Free Lists
    Free List는 사용 가능한 Free Blocks에 대한 List를 의미한다.
    Database에서 새롭게 가용한 Space를 필요로 하는 Insert나
    Update시엔 반드시 Free Space List와 관련 정보를 가지고 있는
    Blocks Common Pool을 검색한 후 필요한 만큼의 충분한 Blocks가
    확보되지 않으면 Oracle은 새로운 Extent를 할당하게 된다.
    특정 Object에 동시에 다수의 Transaction이 발생한 경우 다수의
    Free Lists는 그만큼 Free Space에 대한 Contention을 감소시킨다.
    결국 Free List의 개수는 Object의 성격과 Access Type에 따라
    적절히 늘림으로써 커다란 효과를 거둘 수 있다.
    예를 들면 Insert나 크기가 늘어나는 Update가 빈번한 Object인
    경우엔 Access 빈도에 따라 3 - 5 정도로 늘려줘야 한다.
    - freelist groups
    Freelist group의 수를 정의하며 전형적으로 OPS 환경에서
    Instance의 수만큼 설정한다. 특정 Object의 Extent를 특정
    Instance에 할당하여 그 Instance에 대한 Freelist Groups를
    유지하므로 Instance별 Free List 관리도 가능하다.
    (3) 기타
    - Initrans
    동시에 Data Block을 Access할 때 필요한 Transaction Entries에
    대한 초기치를 의미하며 Entry당 23Byte의 Space를 미리 할당한다.
    기본값은 Table이 "1" 이고 Index와 Cluster는 "2" 이다. Access가
    아주 빈번한 Object인 경우 Concurrent Transactions를 고려하여
    적절히 설정한다.
    4. Application Partition
    OPS Application Design의 가장 중요한 부분으로 Partitioning의
    기본 원리는 다음과 같다.
    . Read Intensive Data는 Write Intensive Data로부터 다른
    Tablespaces로 분리한다.
    . 가능한 한 하나의 Application은 한 Node에서만 실행되도록
    한다. 이는 곧 다른 Application들에 의해 Access되는 Data에
    대한 Partition을 의미한다.
    . 각 Node마다 Temporary Tablespaces를 할당한다.
    . 각 Node마다 Rollback Segments를 독립적으로 유지한다.
    5. Backup & Recovery
    일반적으로 OPS 환경의 Sites는 대부분 24 * 365 Online 상황이므로
    전체적인 Database 운영은 Archive Log Mode & Hot Backup으로 갈
    수에 없으며 Failure 발생시 얼마나 빠른 시간 안에 Database를
    완벽하게 복구 할 수 있는 지가 최대 관건이라 하겠다.
    모든 Backup & Recovery에 관한 일반적인 내용은 Exclusive Mode
    Database 운영 환경에서와 동일하다.
    (1) Backup
    - Hot Backup Internal
    Archive Mode로 DB를 정상적으로 운영하며 Online Data Files를
    Backup하는 방법으로 Tablespace 단위로 행해진다.
    alter tablespace - begin backup이 실행되면 해당 Tablespace를
    구성하는 Datafiles에 Checkpoint가 발생되어 Memory상의 Dirty
    Buffers를 해당 Datafiles(Disk)에 "Write"함과 동시에 Hot Backup
    Mode에 있는 모든 Datafiles의 Header에 Checkpoint SCN을 Update
    하는데 이는 Recovery시에 중요한 Point가 된다.
    또한 alter tablespace - end backup이 실행되기 전까지 즉,
    Hot Backup이 행해지는 동안 해당 Datafiles는 "fuzzy" Backup
    Data가 생성되며 특정 Record의 변형 시에도 해당 Block이 Redo
    Log에 기록 되므로 다수의 Archive File이 더 생성되는 것을 볼 수
    있다. 따라서 Admin이 해당 Datafiles를 모두 Backup하고도 end
    backup을 실행하지 않으면 전체 인 System 성능에 심각한 영향을
    미치게 되므로 특히 주의해야 한다.
    Hot Backup 중인지의 여부는 다음 문장을 통해 확인할 수 있다.
    select * from v$backup; -> status 확인
    - Hot Backup Step (Recommended)
    ① alter system archive log current
    ② alter tablespace tablespacename begin backup
    ③ backup the datafiles,control files,redo log files
    ④ alter tablespace tablespacename end backup
    ⑤ alter database backup controlfile to 'filespec'
    ⑥ alter database backup controlfile to trace noresetlogs(safety)
    ⑦ alter system archive log current
    (2) Recovery
    - Instance Failure시
    OPS 환경에서 한 Instance의 Failure시 다른 Instance의 SMON이
    즉시 감지하여 Failed Instance에 대한 Recovery를 자동으로
    수행한다. 이 때 운영중인 Instance는 Failed Instance가 생성한
    Redo Log Entries와 Rollback Images를 이용하여 Recovery한다.
    Multi-Node Failure시엔 바로 다음에 Open 된 Instance가 그 역할을
    담당하게 된다. 아울러 Failed Instance가 Access하던 모든 Online
    Datafiles에 대한 Recovery도 병행되는 데 이런 과정의 일부로
    Datafiles에 관한 Verification이 실패하여 Instance Recovery가 되지
    않을 경우엔 다음 SQL Statement를 실행시키면 된다.
    alter system check datafiles global;
    - Media Failure시
    다양한 형태로 발생하는 Media Failure시엔 Backup Copy를
    Restore한 후 Complete 또는 Incomplete Media Recovery를 행해야
    하며 이는 Exclusive Mode로 Database를 운영할 때와 전혀 다르지
    않다.
    Node별 생성된 즉, Thread마다 생성된 모든 Archived Log Files는
    당연히 필요하며 많은 OPS Node 중 어디에서든지 Recovery 작업을
    수행할 수 있다.
    - Parallel Recovery
    Instance 또는 Media Failure시 ORACLE 7.1 이상에서는 Instance
    Level(init.ora) 또는 Command Level(Recover--)에서 Parallel
    Recovery가 가능하다. 여러 개의 Recovery Processes를 이용하여
    Redo Log Files를 동시에 읽어 해당 After Image를 Datafiles에
    반영시킬 수 있다. Recovery_Parallelism Parameter는 Concurrent
    Recovery Processes의 수를 정하며 Parallel_Max_Servers Parameter의
    값을 초과할 수는 없다.
    (3) 운영 시 발생 가능한 Error
    - ORA-1187 발생
    ORA-1187 : can not read from file name because it
    failed verification tests.
    (상황) 하나의 Node에서 create tablespace ... 한 상태에
    정상적으로 운영하던 중 다른 Node를 통해 특정 Object를
    Access하는데 ORA-1187 발생.
    (원인) 다른 Node에서 raw disk의 owner, group, mode 등을
    Tablespace가 생성된 후 뒤늦게 전환.
    (Admin의 Fault)
    (조치) SQL> alter system check datafiles global;
    Reference Documents
    --------------------

    hal lavender wrote:
    Hi,
    I am trying to achieve Load Balancing & Failover of Database requests to two of the nodes in 8i OPS.
    Both the nodes are located in the same data center.
    Here comes the config of one of the connection pools.
    <JDBCConnectionPool CapacityIncrement="5" ConnLeakProfilingEnabled="true"
    DriverName="oracle.jdbc.driver.OracleDriver" InactiveConnectionTimeoutSeconds="0"
    InitialCapacity="10" MaxCapacity="25" Name="db1Connection598011" PasswordEncrypted="{3DES}ARaEjYZ58HfKOKk41unCdQ=="
    Properties="user=ts2user" Targets="ngusCluster12,ngusCluster34" TestConnectionsOnCreate="false"
    TestConnectionsOnRelease="false" TestConnectionsOnReserve="true" TestFrequencySeconds="0"
    TestTableName="SQL SELECT 1 FROM DUAL" URL="jdbc:oracle:thin:@192.22.11.160:1421:dbinst01" />
    <JDBCConnectionPool CapacityIncrement="5" ConnLeakProfilingEnabled="true"
    DriverName="oracle.jdbc.driver.OracleDriver" InactiveConnectionTimeoutSeconds="0"
    InitialCapacity="10" MaxCapacity="25" Name="db2Connection598011" PasswordEncrypted="{3DES}ARaEjYZ58HfKOKk41unCdQ=="
    Properties="user=ts2user" Targets="ngusCluster12,ngusCluster34" TestConnectionsOnCreate="false"
    TestConnectionsOnRelease="false" TestConnectionsOnReserve="true" TestFrequencySeconds="0"
    TestTableName="SQL SELECT 1 FROM DUAL" URL="jdbc:oracle:thin:@192.22.11.161:1421:dbinst01" />
    <JDBCMultiPool AlgorithmType="Load-Balancing" Name="pooledConnection598011"
    PoolList="db1Connection598011,db2Connection598011" Targets="ngusCluster12,ngusCluster34" />
    Please let me know , if you need further information
    HalHi Hal. All that seems fine, as it should be. Tell me how you
    enact a failure so that you'd expect one pool to still be good
    when the other is bad.
    thanks,
    Joe

  • Regarding ORACLE HINTS and PARLLELISM

    Hi,
    Basically i am in ETL tester..Most of clients are asking about experience in ORACLE HINTS and PARALLELISM...Do any one please give basic idea what are those..why are those useful....and if you have any good site with examples with easy understanding...please send it...

    Is there any link which is easy to understand...when i see above links i assume i need to know some thing before learning these things....is there any thing i need to learn before learning oracle hints directly

  • Oracle Parallel Server

    This is a question about availability of
    Oracle Parallel Server on linux. I tried to
    ask OTN but their answer was really strange :
    they adviced me to go to discussion board!
    I suppose that Parallel was not realized
    for linux oficially yet but this is a possibility
    to use server compiled for another OS as
    it was with Informix on SCO. Please, could you clarify this question for me?

    This is a lie on behalf of Oracle.
    What they mean to say is they supply some of the underlying sub-systems such as Parallel server manager.
    If you mean parallel server and not Oracle Failsafe, you need an OSD layer. This is a certified layer tested by Oracle for parallel operation. The guidelines for the exact kit will will run on are strick and it comes from your hardware suppliers. Compaq's is around 4k for example.
    Hope this helps,
    Pete

  • How to run DBMS_JOB in parallel and Serial

    I have total 8 procedure to run in parallel . and after that my 9th procedure should run.
    below is my job submission procedure
    create or replace procedure DURATION_ALARM_WEEKLY as
    l_job number ;
    begin
    dbms_job.submit(l_job,'begin ALARMS_WEEKLY_CALL_OUT ; end;');
    dbms_job.submit(l_job,'begin ALARMS_WEEKLY_CALL_IN ; end;');
    dbms_job.submit(l_job,'begin ALARMS_WEEKLY_DURATIN_OUT ; end;');
    dbms_job.submit(l_job,'begin ALARMS_WEEKLY_DURATIN_IN ; end;');
    dbms_job.submit(l_job,'begin ALARMS_WEEKLY_SMS_OUT ; end;');
    dbms_job.submit(l_job,'begin ALARMS_WEEKLY_SMS_IN ; end;');
    dbms_job.submit(l_job,'begin ALARMS_WEEKLY_SHORT_CALL_OUT ; end;');
    dbms_job.submit(l_job,'begin ALARMS_WEEKLY_IMEI_CHANGE ; end;');
    dbms_job.submit(l_job,'begin FINALE ; end;');
    COMMIT;
    end;
    what is the syntax I have to do in my FINALE procedure . using DBMS_ALERT.REGISTER , DBMS_ALERT.WAITANY .....?
    I read many article , but i did not understand where and which order I have to write the syntax.
    Edited by: OraFighter on Jul 26, 2012 11:31 AM

    All process on Oracle runs serial. There is no threading inside a process. So a DBMS_JOB process is a serial process. It is started by the system. It executes. It terminates.
    Parallel processing means running a number of these serial processes in parallel. Typically you will break up the unit of work to do into smaller units. And then run a serialised process to do a unit of work - by starting a number of these at the same time, you have parallel processing.
    So if you start 9 jobs (processes) at the same time, and there is sufficient job processing capacity, all 9 processes will run at the same time.
    If you want to have the 9th process wait for the others to finish first, you need some kind of logic to either start the 9th process after the other 8 have completed - or you need logic in the 9th process so that it could spin and wait for the 8 others to complete, before it starts its processing.
    The first method is fairly easy. Your code start each of the 8 job processes. The DBMS_JOB.Submit() call gives you the job number of that process. You will thus have 8 job numbers. You can now loop in your code, wait a minute or more, and then check the dictionary view user_jobs to determine if these 8 job numbers still exist. If so, the job is still scheduled and/or executing.
    If none of the 8 job numbers exist in the view, the 9th job process can be started.
    Other methods are more complex. For example, the 8 job processes can send a notification that they are completed to the 9th process. This requires additional logic and code in all 9 processes. And you also need to deal with issues like one of the 8 processes completing before the 9th process started - so how will it then know that one of the 8 processes as completed? Etc.

  • Oracle, Null and empty Strings

    Currently I'm facing problems with a class, which contains a String, which
    is set to "" (empty String).
    When the class is persistent, oracle writes null to the table column
    (which seems to be common oracle behaviour) and when retrieving the class,
    the field is set to null as well, giving me a lot of null-pointer
    exceptions.
    Anyway ... I can cope with that (just a lot of extra work)
    far worse is the problem, wenn searching objects, that have this field set
    to "" oder null.
    Oracle can't find the records because JDO creates Querys "where
    string=null" or "where string=''" , where oracle expects "where string is
    null" to find the records.
    Is there a workaround or solution ?

    Yeah, that would work as well, thx, but since I have to cope with
    null-Strings now everywhere in my program, it doesn't hurt just to forbid
    empty strings on the program side.
    In future times I'll test on Oracle first, then porting to DB/2 - this way
    I suppose work is far less to garant compability.
    Nevertheless ... having to set the bankcode into quotes is a kodo bug in
    my opinion.
    Kodo knows the type of classfields (in this case string) and shouldn't
    send the parameter as a BigDecimal to the database.
    Given that, and having only bankcodes of null (only neccesary when using
    Oracle), the method would look like:
    public Collection getAccounts (String bankCode)
    throws Exception
    return getAccounts (Account.class, "bankcode=="+bankcode);
    which is how a transparent persistent layer, um, should be , um , I mean
    ... just transparent ;-D
    Marc Prud'hommeaux wrote:
    Stefan-
    Couldn't you just do something like:
    public Collection getAccounts (String bankCode)
    throws Exception
    String filter;
    if (bankCode == null || bankCode.length () == 0)
    filter = "(bankCode == null || bankCode == "")";
    else
    filter = "bankCode == "" + bankCode + """;
    return getAccounts (Account.class, filter);
    If I understand the problem correctly, this should work for all the
    databases.
    In article <[email protected]>, Stefan wrote:
    What operations are you performing to cause this SQL to be issued? You
    say you are having trouble removing objects, but this is clearly not a
    DELETE statement. Is this the SQL that is issued when looking up
    objects by identity?I'm not removing objects, I was removing just quotes from parameters ;-)
    A string column... is it also represented as a string field in your class?Yeah ... just to give you an impression of the code:
    First we have a class, representing a bank account:
    public class Account {
    private AccountMgr myAccountMgr;
    private String bankCode;
    private String id;
    Note, that in nearly all cases bankCode will be a number or null.
    I have a second class "AccountMgr", which does all of the persistant stuff
    (seaching, making persistent etc.)
    This class has two methods, one versatile (protected) to retrieve accounts
    by a given filterString and one who just returns accounts by bankCode,
    building the expected filterstring. Here is my current working version:
    public class AccountMgr {
    public Collection getAccounts(String bankCode) throws Exception {
    if (bankCode!=null) {
    if (bankCode.equals("")) {
    throw new Exception("check code, bankCode='' not allowed to get
    same behavior from DB2 and Oracle");
    // if set, quote the bankCode
    bankCode="""+bankCode+""";
    return getAccounts(Account.class,"bankCode=="+bankCode);
    protected Collection getAccounts(Class accountClass, String filterAdd)
    throws Exception {
    PersistenceManager pm = MyHelper.getPersistenceManager();
    String filter="";
    if (filterAdd!=null && !filterAdd.trim().equals("")) {
    filter+=filterAdd + " && ";
    filter += "myAccountMgr==_accMgr";
    Query query = pm.newQuery(accountClass, filter);
    query.declareParameters("AccountMgr _accMgr");
    return (Collection) query.execute(this);
    As you can see, in the first method I have to set the bankCode into
    quotes, when it's not null.
    This is because otherwise a filter like "bankCode=1234" will be translated
    in a way, where 1234 is send as a BigDecimal to the database:
    [...] executing statement <4239745>: (SELECT [...] FROM JDO_ACCOUNT t0
    WHERE t0.BANKCODE = ? : [reused=1;params={(BigDecimal) 1234}]
    Marc Prud'hommeaux [email protected]
    SolarMetric Inc. http://www.solarmetric.com

  • Select query differences between oracle 9 and oracle 8.

    Hi,
    I have a problem using the select query between oracle 7 and oracle 9i I don't have the same result :
    ex:
    With oracle7
    SQL> select 'champ1','champ2' from DUAL;
    'CHAMP 'CHAMP
    champ1 champ2
    With Oracle 9
    SQL> select 'champ1','champ2' from DUAL;
    'CHAMP1' 'CHAMP2'
    champ1 champ2
    So Can someone tell me how to solve this problem ? Is there a parameter in oracle 9 to set?
    Thanx.

    Whenever you are posting anything over internet forums like this - you should be very careful about not just posting the details which requires to solve the problem - also should be sensible about your question.
    This is not at all desired when you are posting such question. It may be because - you may not well aware of the fact.
    My suggestion is -> First Go through the basics Of SQL in general.
    Then go for any specific product like Oracle/ SQL Server/ Sybase etc.
    And, finally learn the advanced commands of that DB.
    You asked it - may be you thought the difference in output in terms of lines. But, that is not your actual output. That is the graphical display part only.
    Anyway,
    You can get the quite familier output by first type the following command ->
    set lin 310Regards.
    Satyaki De.

  • What is the Diffrence between Oracle 11 and 11i

    What is the Diffrence between Oracle 11 and Oracle11i ?.
    With Rgds
    Arun J.Isaac

    Oracle 11i is internet based and run with java platform where we can see the applets downloading alongwith oracle forms and it refreshes all the jar files in oracle default directory.
    Oracle 11 is not intergrated with Java its an Oracle standalone platform.
    Regards,
    Arumugam S.

  • Oracle Forms and Reports Installation - Creating domain failed

    I installed the weblogic 10.3.6 (Oracle WebLogic Server 11gR1 (10.3.6) + Coherence + OEPE - Package Installer) in my Microsoft Windows(32-bit JVM) system first.
    But there was an error occorred when the package of forms and reports (Oracle Forms and Reports 11gR2 (11.1.2.2.0)) was installing.
    Please find the following error message for your reference.
    Do you have any idea? Please kindly advise.
    Thanks a lot!
    2014-04-02 14:11:14,099 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - read template from "C:/Users/GZ/AppData/Local/Temp//tmp1396419069239wls.jar"
    2014-04-02 14:11:16,185 INFO  [main] com.oracle.cie.domain.template.catalog.impl.ComponentsXMLConverter - C:\Oracle\Middleware\wlserver_10.3\common\lib\components.xml does not contain component elements and will be skipped
    2014-04-02 14:11:17,556 INFO  [main] com.oracle.cie.domain.WLSTemplateBuilder - No config-groups.xml found in template
    2014-04-02 14:11:17,556 INFO  [main] com.oracle.cie.domain.WLSTemplateBuilder - No template-database.xml found in template
    2014-04-02 14:11:18,205 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: read template from "C:/Users/GZ/AppData/Local/Temp//tmp1396419069239wls.jar"
    2014-04-02 14:11:18,477 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - set config option ServerStartMode to "prod"
    2014-04-02 14:11:18,477 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: set config option ServerStartMode to "prod"
    2014-04-02 14:11:18,490 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - create Machine "PC-42A26D.GZAD.MSAD.LOCAL" as obj0
    2014-04-02 14:11:18,604 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: create Machine "PC-42A26D.GZAD.MSAD.LOCAL" as obj0
    2014-04-02 14:11:18,612 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - find Server "AdminServer" as obj1
    2014-04-02 14:11:18,652 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: find Server "AdminServer" as obj1
    2014-04-02 14:11:18,698 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - set obj1 attribute Machine to "PC-42A26D.GZAD.MSAD.LOCAL"
    2014-04-02 14:11:18,705 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: set obj1 attribute Machine to "PC-42A26D.GZAD.MSAD.LOCAL"
    2014-04-02 14:11:18,706 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - set obj1 attribute ListenPort to "7002"
    2014-04-02 14:11:18,716 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: set obj1 attribute ListenPort to "7002"
    2014-04-02 14:11:18,716 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - create Server!SSL "AdminServer!AdminServer" as obj2
    2014-04-02 14:11:18,724 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: create Server!SSL "AdminServer!AdminServer" as obj2
    2014-04-02 14:11:18,735 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - set obj2 attribute HostnameVerificationIgnored to "true"
    2014-04-02 14:11:18,739 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: set obj2 attribute HostnameVerificationIgnored to "true"
    2014-04-02 14:11:18,739 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - find User "weblogic" as obj3
    2014-04-02 14:11:18,755 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: find User "weblogic" as obj3
    2014-04-02 14:11:18,755 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - delete obj3
    2014-04-02 14:11:18,763 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: delete obj3
    2014-04-02 14:11:18,764 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - create User "weblogic" as obj4
    2014-04-02 14:11:18,768 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: create User "weblogic" as obj4
    2014-04-02 14:11:18,771 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - set obj1 attribute PeriodLength to "200000"
    2014-04-02 14:11:18,807 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: set obj1 attribute PeriodLength to "200000"
    2014-04-02 14:11:18,807 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - set obj1 attribute IdlePeriodsUntilTimeout to "20"
    2014-04-02 14:11:18,815 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: set obj1 attribute IdlePeriodsUntilTimeout to "20"
    2014-04-02 14:11:18,815 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - set obj1 attribute DGCIdlePeriodsUntilTimeout to "21"
    2014-04-02 14:11:18,821 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: set obj1 attribute DGCIdlePeriodsUntilTimeout to "21"
    2014-04-02 14:11:18,822 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - set obj1 attribute IdleConnectionTimeout to "1000"
    2014-04-02 14:11:18,830 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: set obj1 attribute IdleConnectionTimeout to "1000"
    2014-04-02 14:11:18,833 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - set obj4 attribute Password to "********"
    2014-04-02 14:11:18,837 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: set obj4 attribute Password to "********"
    2014-04-02 14:11:18,837 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - set config option OverwriteDomain to "true"
    2014-04-02 14:11:18,837 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: set config option OverwriteDomain to "true"
    2014-04-02 14:11:18,837 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - set config option JavaHome to "C:/Oracle/Middleware/jdk160_29"
    2014-04-02 14:11:18,837 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: set config option JavaHome to "C:/Oracle/Middleware/jdk160_29"
    2014-04-02 14:11:18,948 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - validateConfig "KeyStorePasswords"
    2014-04-02 14:11:18,953 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: validateConfig "KeyStorePasswords"
    2014-04-02 14:11:18,954 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - write Domain to "C:/Oracle/Middleware/user_projects/domains/base_domain"
    2014-04-02 14:11:19,441 INFO  [main] com.oracle.cie.domain.DomainChecker - ListenPort internal Validation result= [null]
    2014-04-02 14:11:19,441 INFO  [main] com.oracle.cie.domain.DomainChecker - ListenPort external Validation result= [null]
    2014-04-02 14:11:21,609 INFO  [Thread-1] com.oracle.cie.domain.StartMenu - Creating start menu program=C:\Oracle\Middleware\user_projects\domains\base_domain\bin\startWebLogic.cmd link=Start Admin Server for Weblogic Server Domain
    2014-04-02 14:11:21,659 INFO  [Thread-1] com.oracle.cie.domain.StartMenu - Creating start menu program=C:\Oracle\Middleware\user_projects\domains\base_domain\bin\stopWebLogic.cmd link=Stop Admin Server
    2014-04-02 14:11:21,667 INFO  [Thread-1] com.oracle.cie.domain.StartMenu - Creating start menu program=C:\Windows\system32\rundll32.exe link=Admin Server Console
    2014-04-02 14:11:21,759 INFO  [Thread-1] com.oracle.cie.domain.DomainRegistryWrapper - need to initialize domainRegistrydocument object
    2014-04-02 14:11:21,777 INFO  [Thread-1] com.oracle.cie.domain.DomainGenerator - Domain Generation Successful!
    2014-04-02 14:11:21,783 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: write Domain to "C:/Oracle/Middleware/user_projects/domains/base_domain"
    2014-04-02 14:11:21,784 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - close template
    2014-04-02 14:11:21,784 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: close template
    2014-04-02 14:11:21,784 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - read domain from "C:/Oracle/Middleware/user_projects/domains/base_domain"
    2014-04-02 14:11:21,967 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - succeed: read domain from "C:/Oracle/Middleware/user_projects/domains/base_domain"
    2014-04-02 14:11:21,967 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - add template C:/Oracle/Middleware/oracle_common/common/templates/applications/jrf_template_11.1.1.jar to domain
    2014-04-02 14:11:22,011 WARN  [main] com.oracle.cie.domain.template.dependency.TemplateSelectionTarget - Catalog does not have matching template for location C:\Users\GZ\AppData\Local\Temp\tmp1396419069239wls.jar
    2014-04-02 14:11:22,071 INFO  [main] com.oracle.cie.domain.WLSTemplateBuilder - No template-database.xml found in template
    2014-04-02 14:11:22,100 INFO  [main] com.oracle.cie.domain.WLSTemplateBuilder - No template-database.xml found in template
    2014-04-02 14:11:22,101 ERROR [main] com.oracle.cie.domain.ConfigGroupsEngine$ConfigTopology - Multiple definitions of server-group BI-ADF-ADMIN-SVR are not allowed
    2014-04-02 14:11:22,101 INFO  [main] com.oracle.cie.domain.script.ScriptExecutor - fail: add template C:/Oracle/Middleware/oracle_common/common/templates/applications/jrf_template_11.1.1.jar to domain
    2014-04-02 14:11:22,101 ERROR [main] com.oracle.cie.domain.script.ScriptExecutor - fail: add template C:/Oracle/Middleware/oracle_common/common/templates/applications/jrf_template_11.1.1.jar to domain
    com.oracle.cie.domain.ConfigGroupsException: Multiple definitions of server-group BI-ADF-ADMIN-SVR are not allowed
    at com.oracle.cie.domain.ConfigGroupsEngine$ConfigTopology.merge(ConfigGroupsEngine.java:2762)
    at com.oracle.cie.domain.ConfigGroupsEngine.mergeTopology(ConfigGroupsEngine.java:551)
    at com.oracle.cie.domain.ConfigGroupsEngine.merge(ConfigGroupsEngine.java:479)
    at com.oracle.cie.domain.AbstractTemplate.addConfigGroups(AbstractTemplate.java:314)
    at com.oracle.cie.domain.script.ScriptExecutor.addTemplate(ScriptExecutor.java:605)
    at com.oracle.cie.domain.script.jython.WLScriptContext.addTemplate(WLScriptContext.java:416)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.python.core.PyReflectedFunction.__call__(Unknown Source)
    at org.python.core.PyMethod.__call__(Unknown Source)
    at org.python.core.PyObject.__call__(Unknown Source)
    at org.python.core.PyInstance.invoke(Unknown Source)
    at org.python.pycode._pyx3.addTemplate$20(C:\Users\GZ\AppData\Local\Temp\WLSTOfflineIni364664194239939514.py:89)
    at org.python.pycode._pyx3.call_function(C:\Users\GZ\AppData\Local\Temp\WLSTOfflineIni364664194239939514.py)
    at org.python.core.PyTableCode.call(Unknown Source)
    at org.python.core.PyTableCode.call(Unknown Source)
    at org.python.core.PyFunction.__call__(Unknown Source)
    at org.python.pycode._pyx15.f$0(C:\Users\GZ\AppData\Local\Temp\tmp1396419069304.py:42)
    at org.python.pycode._pyx15.call_function(C:\Users\GZ\AppData\Local\Temp\tmp1396419069304.py)
    at org.python.core.PyTableCode.call(Unknown Source)
    at org.python.core.PyCode.call(Unknown Source)
    at org.python.core.Py.runCode(Unknown Source)
    at org.python.util.PythonInterpreter.execfile(Unknown Source)
    at weblogic.management.scripting.WLST.main(WLST.java:139)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at weblogic.WLST.main(WLST.java:29)

    hi user ...
    on windows there are some steps in front of installation and configuration.
    1) cleare the Windows Env (Path .. Programme x86 )
         no Blank in Path and so on
    2) insert into your local host file your server and IP Adress
    3) in Windows 32 setup of WLS is JDK included so you don't have to install the jdk in front of WLS
    4) verify if you are using the right installation medium (jdk 32 bit, wls 32 bit , fmw 32 bit
    in your OraInventory/logs directory is a *.out file for your installation please can you put this file in the forum
    is there a nodemanager up and running (if so please stop)
    Jan-Peter

  • Oracle Portal and Discoverer Integration

    Portal Version: 9.0.2.0.1
    RDBMS Versjion: 9.0.1.3
    OS/Vers. Where Portal is Installed:: Suse 7 SLES
    Error Number(s)::
    Oracle Portal and Discoverer Integration
    We're trying to integrate Discoverer with Portal unsuccessfully.
    We made many things in accordance with oracle's documentation until add discoverer portlets (worksheet and list of workbooks) in a test page.
    In view mode, the worksheet portlet shows the error:
    "The portlet has not been defined. The publisher must define the portlet by clicking on Edit Defaults for the portlet on the edit mode of this page. Please contact the publisher of this page."
    We think we have to edit properties before. Is this? Anyway edit worksheet portlet crashes between step 1 and 2. The error is: "The listener returned the following Message: 500 Internal Server Error".
    We have a public conection created in EM and a discoverer application which can be viewed using plus or viewer.
    Furthermore, it's not possible delete the added portlets neither the page that contain it. The error at delete is:
    Error: An unexpected error occurred: User-Defined Exception (WWC-44082)
    (WWC-00000)
    An unexpected error has occurred in portlet instances: User-Defined Exception (WWC-
    44846)
    An unexpected error occurred: User-Defined Exception (WWC-43000)
    The following error occurred during the call to Web provider:
    oracle.portal.provider.v2.PortletNotFoundException
    at oracle.portal.utils.v2.ContainerException.fillInStackTrace(Unknown Source)
    at java.lang.Throwable.<init>(Throwable.java:78)
    at java.lang.Exception.<init>(Exception.java:29)
    at oracle.portal.utils.v2.ContainerException.<init>(Unknown Source)
    at oracle.portal.provider.v2.PortletException.<init>(Unknown Source)
    at oracle.portal.provider.v2.PortletNotFoundException.<init>(Unknown Source)
    at oracle.disco.portlet.provider.DiscoPortletPersonalizationMgr.destroy
    (DiscoPortletPersonalizationMgr.java:65)
    at oracle.portal.provider.v2.DefaultPortletInstance.deregister(Unknown Source)
    at oracle.webdb.provider.v2.adapter.soapV1.ProviderAdapter.deregisterPortlet
    (Unknown Source)
    at java.lang.reflect.Method.invoke(Native Method)
    at oracle.webdb.provider.v2.utils.soap.SOAPProcessor.doMethodCall(Unknown Source)
    at oracle.webdb.provider.v2.utils.soap.SOAPProcessor.processInternal(Unknown Source)
    at oracle.webdb.provider.v2.utils.soap.SOAPProcessor.process(Unknown Source)
    at oracle.webdb.provider.v2.adapter.SOAPServlet.doSOAPCall(Unknown Source)
    at oracle.webdb.provider.v2.adapter.SOAPServlet.service(Unknown Source)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:336)
    at com.evermind.server.http.ResourceFilterChain.doFilter
    (ResourceFilterChain.java:59)
    at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:283)
    at com.evermind.server.http.ServletRequestDispatcher.invoke
    (ServletRequestDispatcher.java:523)
    at com.evermind.server.http.ServletRequestDispatcher.forwardInternal
    (ServletRequestDispatcher.java:269)
    at com.evermind.server.http.HttpRequestHandler.processRequest
    (HttpRequestHandler.java:735)
    at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:151)
    at com.evermind.util.ThreadPoolThread.run(ThreadPoolThread.java:64)
    (WWC-43147)
    Edit properties for portlet List of Workbook works but in view mode we have the error in the portlet area:
    "Failed to refresh portlet. Please verify that the information used to create the
    portlet instance or customization is still valid. Otherwise, please contact your
    iAS administrator. oracle.discoiv.controller.FatalControllerException:
    DiscoNetworkException - Nested exception: org.omg.CORBA.OBJECT_NOT_EXIST: minor
    code: 0 completed: No null"
    Any ideas?
    Thanks

    Hi there,
    Have you applied any patches to 9ias since it was first installed? We had the same problem and had to apply a couple of patches to get the portlets working.
    1. Apply the 9.0.2.53.16 one-off patch for Oracle 9iAS Discoverer which takes Discoverer up to 9.0.2.53.16. This patch appears to be password protected and you need to get someone at Oracle support to give you a password.
    2. Apply the Discoverer Portlet Provider: 9.0.2.53.00c patch (patch no. 2595444) which gives you a new discportal.xsl file that actually works. It's this second step that solves your problem but you need to do step 1 before this. This is password protected as well.
    3. As you've upgraded Disco on the server to 9.0.2.53, you'll need to upgrade Disco Admin & Desktop within your 9iDS installation using patch no. 2555265. This is because Disco 9.0.2.53 uses an upgraded EUL that Disco Admin & Desktop need to be patched to use.
    This was the course of action Oracle support advised us about nine months ago. Of course they may have released a further patch to Disco that does 1 & 2 in one go, but we regularly carry out steps 1 and 2 on servers we use and we can use the Disco portlets successfully.
    Hope this helps
    Mark Rittman
    [email protected]

  • Oracle optimizer and heterogeneous services (Transparent Gateway for ODBC)

    Hi everyone!
    We have the following configuration:
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production.
    Oracle Database Gateway for ODBC 11.2.0.2.0 on the same machine as Oracle DB.
    Non-Oracle DB installed on a different hardware accessed through Oracle Gateway for ODBC via dblink.
    Now, we have to query the remote non-Oracle system and retrieve some data. For the sake of brevity let's suppose we have the following table in our non-Oracle DB:
    create table test (
         ip_address varchar(15),
         start_time datetime,
         end_time datetime
    And we run the following SQL query against the remote table on our Oracle DB:
    SELECT start_time,end_time,ip_address
    FROM remote_table@db_link
    WHERE
    end_time >= to_date('2011-10-11 00:00:00','rrrr-mm-dd hh24:mi:ss')
    OR (
    end_time IS NULL AND start_time >= to_date('2011-10-11 00:00:00','rrrr-mm-dd hh24:mi:ss')
    AND start_time <= to_date('2011-10-12 00:00:00','rrrr-mm-dd hh24:mi:ss')
    AND ip_address = '127.0.0.1';
    But, having query monitoring on the remote DB enabled, we see that the actual query on the remote site looks like this:
    SELECT "START_TIME","END_TIME","IP_ADDRESS"
    FROM "REMOTE_TABLE"
    WHERE "IP_ADDRESS"='127.0.0.1' AND "START_TIME"<=?
    All references to END_TIME column are gone from WHERE clause for whatever reason.
    However, Oracle execution plan shows us the following:
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Inst |IN-OUT|
    | 0 | SELECT STATEMENT | | 1 | 27 | 200 (0)| 00:00:03 | | |
    |* 1 | FILTER | | 1 | 27 | 200 (0)| 00:00:03 | | |
    | 2 | REMOTE | REMOTE_TABLE | | | | | DB_LINK | R->S |
    Predicate Information (identified by operation id):
    1 - filter("END_TIME">=TO_DATE('2011-10-11 00:00:00','rrrr-mm-dd hh24:mi:ss') OR
    "END_TIME" IS NULL AND "START_TIME">=TO_DATE('2011-10-11 00:00:00','rrrr-mm-dd hh24:mi:ss'))
    Remote SQL Information (identified by operation id):
    2 - SELECT "END_TIME","IP_ADDRESS","START_TIME" FROM "REMOTE_TABLE" WHERE
    "IP_ADDRESS"='127.0.0.1' AND "START_TIME"<=:1 (accessing 'DB_LINK' )
    This actually means that Oracle CBO decided that it will apply filter on END_TIME column after having retrieved the data from the remote site. We don't want this behaviour but have no idea how to affect execution plan in this case.
    So, the question is: How can we force Oracle CBO to not change the initial query and pass it to the remote site "as is"? Is there any way we can achieve this goal?
    Edited by: user12024904 on 28-Oct-2011 04:05

    Hi,
    Our Oracle DB and Gateway are running on the following system:
    HP-UX B.11.31 U ia64
    The following SQL code is executed in SQLPlus:
    SELECT start_time,end_time,ip_address
    FROM ip_acc_complete@gr_link
    WHERE
    END_TIME >= to_date('2010-10-21 00:00:00','rrrr-mm-dd hh24:mi:ss')
    OR (
    END_TIME is null AND START_TIME >= to_date('2010-10-21 00:00:00','rrrr-mm-dd hh24:mi:ss')
    AND START_TIME <= to_date('2010-10-22 00:00:00','rrrr-mm-dd hh24:mi:ss')
    AND IP_ADDRESS = '127.0.0.1';
    Gateway debug trace shows the following:
    Oracle Corporation --- TUESDAY NOV 01 2011 14:59:15.254
    Heterogeneous Agent Release
    11.2.0.2.0
    Oracle Corporation --- TUESDAY NOV 01 2011 14:59:15.254
    Version 11.2.0.2.0
    HOSGIP for "HS_FDS_TRACE_LEVEL" returned "ON"
    HOSGIP for "HS_FDS_SHAREABLE_NAME" returned "/usr/local/greenwich64/lib/libodbc.so.1"
    HOSGIP for "HS_OPEN_CURSORS" returned "50"
    HOSGIP for "HS_FDS_FETCH_ROWS" returned "100"
    HOSGIP for "HS_LONG_PIECE_TRANSFER_SIZE" returned "65536"
    HOSGIP for "HS_NLS_NUMERIC_CHARACTER" returned ".,"
    HOSGIP for "HS_KEEP_REMOTE_COLUMN_SIZE" returned "OFF"
    HOSGIP for "HS_FDS_DELAYED_OPEN" returned "TRUE"
    HOSGIP for "HS_FDS_WORKAROUNDS" returned "0"
    HOSGIP for "HS_FDS_MBCS_TO_GRAPHIC" returned "FALSE"
    HOSGIP for "HS_FDS_GRAPHIC_TO_MBCS" returned "FALSE"
    HOSGIP for "HS_FDS_RECOVERY_ACCOUNT" returned "RECOVER"
    HOSGIP for "HS_FDS_TRANSACTION_LOG" returned "HS_TRANSACTION_LOG"
    HOSGIP for "HS_FDS_TIMESTAMP_MAPPING" returned "DATE"
    HOSGIP for "HS_FDS_DATE_MAPPING" returned "DATE"
    HOSGIP for "HS_FDS_MAP_NCHAR" returned "TRUE"
    HOSGIP for "HS_FDS_RESULTSET_SUPPORT" returned "FALSE"
    HOSGIP for "HS_FDS_RSET_RETURN_ROWCOUNT" returned "FALSE"
    HOSGIP for "HS_FDS_PROC_IS_FUNC" returned "FALSE"
    HOSGIP for "HS_FDS_REPORT_REAL_AS_DOUBLE" returned "FALSE"
    using query as default value for "HS_FDS_DEFAULT_OWNER"
    HOSGIP for "HS_SQL_HANDLE_STMT_REUSE" returned "FALSE"
    SQL text from hgopars, id=1, len=117 ...
    00: 53454C45 43542022 454E445F 54494D45 [SELECT "END_TIME]
    10: 222C2249 505F4144 44524553 53222C22 [","IP_ADDRESS","]
    20: 53544152 545F5449 4D452220 46524F4D [START_TIME" FROM]
    30: 20224950 5F414343 5F434F4D 504C4554 [ "IP_ACC_COMPLET]
    40: 45222057 48455245 20224950 5F414444 [E" WHERE "IP_ADD]
    50: 52455353 223D2731 32372E30 2E302E31 [RESS"='127.0.0.1]
    60: 2720414E 44202253 54415254 5F54494D [' AND "START_TIM]
    70: 45223C3D 3F [E"<=?]
    Deferred open until first fetch.
    Performing delayed open.
    The non-Oracle DB is CopperEye Retrieval Server with its own custom ODBC driver.
    CopperEye query log shows that the following query is received from Oracle Gateway:
    01/11/2011 14:26:31 - NEW QUERY :
    SELECT "END_TIME","IP_ADDRESS","START_TIME" FROM "IP_ACC_COMPLETE" WHERE "IP_ADDRESS"='127.0.0.1' AND "START_TIME"<=?
    which complies with the information in Oracle Gateway trace file.
    So, it seems that it's Oracle DB decision to split the original WHERE clause into two parts, delegate one part to the remote site, retrieve the data and then apply the remaining filter locally.

  • Oracle XE and character set

    Hello all,
    I installed Oracle XE on RHEL 4 Linux and I found out that database character set is AL32UTF8. Does anyone know why oracle choose this character set? Maybe because of NLS_LANG env variable? Is it possible to change it to EE8ISO8859P2? Since database is still empty I can drop it and crate new database.
    Do you think it is possible to set some env variables and do new oracle xe instalation including database with iso charset?
    I want to have EE8ISO8859P2 charset because of doing exp/imp from another oracle iso db to oracle xe and it is much easier to do this without charset conversion.
    Any help will be appreciated.
    regards,
    Miha

    When you download XE, you have a choice - take the 'western european' character set download, or the 'unicode' download.
    No other choices.
    Join us over in the XE forum where people have discussed this and found workarounds. Info about finding that forum at Re: Oracle XE Installation failed

Maybe you are looking for

  • Scared to update to Yosemite, If it doesn't work can you get everything back?

         I am currently on 10.6.8. I wanted to update to Yosemite but I am scared to because I do not want to lose all of my files. Is there anyway if it doesn't work and freezes that I can get all of my files back and 10.6.8 back? And if you can get the

  • Is there a way to delete or at least change default calender lists?

    I have just realised I have two Calander lists one is Exchange which I assume set itselt automatically with my work exchange account but I would rather use the iCloud account. When I put in reminders in the iCloud list and close the app then re-open

  • Links in object states don't work

    I have an object state with several text boxes, hyperlinks and buttons works fine, UNTIL i create buttons to control the object states appearance. Then the integrated links in the mso don't work. Have tried with new document, new folio etc. As soon a

  • Sync arbitrary number of episodes of podcasts (not 1, 3, 5, 10 or all)

    Hi - I'd like to synchronize a user-defined number of episodes of podcasts with my iPod and not be restricted to 1, 3, 5 10 or all (whatever is the sync logic). This is strange that this is not just a parameter for users to decide. Did I miss somethi

  • Hardrive Problem

    I have an MSI P35 Mobo.                     Intel core 2 Duo.                     Asus 4850                     Creative X-FI Sound Card.                     Seagate 500 GB hard drive.                     WD 500 GB Hard drive.                     Ant