Oracle Database 12c Architecture – POSTER

The Oracle Database 12c: Interactive Quick Reference is a multimedia tool for various terms and concepts used in the Oracle Database 12c release. Built as a multimedia web page, this diagram provides descriptions of database architectural components, as well as references to relevant documentation. Use this helpful reference as a cheat sheet for writing custom data dictionary scripts, locating views pertinent to a specific database component or category, understanding the database architecture, and more.

This essential reference includes:

  • DBA Views: Key DBA static data dictionary views and dynamic performance views organized by product feature areas
  • Performance Views: Dynamic performance views organized by product feature areas. Click on a view and see the details for that view.
  • Architecture Views: A single diagram that illustrates the relationships between key database dictionary views. Click on a view and see the definition for that view.
  • Database Architecture: A single diagram that illustrates the relationships between key database memory structures, processes, and storage. Click on the diagram to find out detailed information.
  • Multitenant Architecture: A single diagram that illustrates the architecture for a multitenant container database. Click on the diagram to find out detailed information.
  • Background Processes: A comprehensive list that categorizes the background processes and flags which are new in Oracle Database 12c

Download Information

You can download and unzip this file to run the poster locally.  Open the file poster.html file located in the OUTPUT_poster folder.

Additional Information:

  • Please note that initial loading of the poster may take 20-30 seconds. If you experience performance problems, see the Download Information section above.
  • Firefox v22 or later is the recommended browser. Earlier versions may work as well.
  • Browser / device support varies from device to device.
  • We welcome your feedback to help us improve this tool.

 

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/r1/poster/OUTPUT_poster/poster.html


Plugging an Unplugged Pluggable Database

Purpose

This tutorial covers the steps required to plug an unplugged pluggable database (PDB) from a container database (CDB) into another CDB.

Time to Complete

Approximately 20 minutes

Introduction

You can disassociate or unplug a PDB from a CDB and reassociate or plug the PDB into the same CDB or into another CDB. This capability is suitable for the following situations:

    • You have to upgrade a PDB to the latest Oracle version, but you do not want to apply it on all PDBs. Instead of upgrading a CDB from one release to another, you can unplug a PDB from one Oracle Database release, and then plug it into a newly created CDB from a later release.
    • You want to test the performance of the CDB without a particular PDB. You unplug the PDB, test the performance without the PDB and, if necessary, replug the PDB into the CDB.
    • You want to maintain a collection of PDB “gold images” as unplugged PDBs.
Scenario

In this tutorial, you perform a PDB unplugging operation from a CDB. Next, you perform a plugging operation of the same PDB into another CDB by using SQL*Plus.

Different plugging scenarios are allowed:

      • Plug the unplugged PDB by using the data files of the unplugged PDB. The unplugged PDB is disassociated from the source CDB.
        • The source data files are used with or without any copy.
        • The source data files are used after being moved to another location.
      • Plug the unplugged PDB as a clone to:
        • Allow developers and testers to rapidly and repeatedly provision a well-known starting state
        • Support self-paced learning
        • Provide a new way to deliver a brand-new application
Prerequisites

Before starting this tutorial, you should:

  • Install Oracle Database 12c.
  • Create two CDBs with two PDBs in the first CDB.

The environment used in the development of this tutorial is as follows:

    • ORACLE_HOME: /u01/app/oracle/product/12.1.0
    • TNS Listener port: 1521
    • Container databases:
      • SID: cdb1
      • SID: cdb2
    • Pluggable databases (in cdb1):
      • pdb1
      • pdb2

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/r1/pdb/pdb_unplug_plug/pdb_unplug_plug.html


Performing Basic Tasks in Oracle Multitenant

Purpose

This tutorial covers the steps to perform basic tasks on container databases (CDBs) and pluggable databases (PDBs).

Time to Complete

Approximately 45 minutes

Introduction

This tutorial shows you how to:

    • Connect to a CDB and to a PDB.
    • Create a PDB from the seed PDB.
    • Manage CDBs and PDBs.
      • Start a CDB, understand the different open modes of PDBs, and shut down a CDB.
      • Open and close PDBs.
      • Change the name of a PDB.
    • Manage the storage in a CDB and its PDBs.
      • Manage permanent tablespaces.
      • Manage temporary tablespaces.
    • Manage the security in PDBs.
      • Create common and local users.
      • Create common and local roles.
      • Grant common and local privileges.
    • Drop PDBs.

Note: For readability, formatting was applied to some columns shown in the output.

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/r1/pdb/pdb_basics/pdb_basics.html


Oracle Database 12c RELEASED… Download Available

After a long wait, finally the Oracle released the commercial version of Oracle Database 12c.


Oracle Database Products are:

  • Oracle Database 12c Release 1
  • Oracle Database 12c Release 1 Grid Infrastructure (12.1.0.1.0)
    Contains the Grid Infrastructure Software including Oracle Clusterware, Automated Storage Management (ASM), and ASM Cluster File System. Download and install prior to installing Oracle Real Application Clusters, Oracle Real Application Clusters One Node, or other application software in a Grid Environment

  • Oracle Database 12c Release 1 Global Service Manager (GSM/GDS) (12.1.0.1.0)
  • Oracle Database Gateways 12c Release 1 (12.1.0.1.0)
    Contains the Oracle Database Gateways to non-Oracle Databases. Download if you want to set up a heterogeneous data integration environment

  • Oracle Database 12c Release 1 Examples
    Contains examples of how to use the Oracle Database. Download if you are new to Oracle and want to try some of the examples presented in the Documentation

  • Oracle Database 12c Release 1 Client (12.1.0.1.0)
    Contains the Oracle Client Libraries for Linux. Download if you want the client libraries only


    Major New Oracle Database 12c Features and Products

    • Adaptive Execution Plans
    • Application Continuity
    • Automatic Data Optimization (ADO)
    • Data Guard Far Sync
    • Data Redaction
    • Global Data Services
    • Heat Map
    • Multitenant (Pluggable Databases)
    • Pattern Matching
    • SQL Translation Framework

    http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

    Download Available only to:

  • Linux x86-64
    Linux Download

  • Solaris Sparc64
    Solaris Sparc64 Download

  • Solaris (x86-64)
    Solaris x64 Download

    Plug into the Cloud with Oracle Database 12c

    Enjoy…


  • Use SHARED SERVER over POLICY-MANAGED Database is supported?


    Helping colleagues in OTN Forum I found a issue that have not been solved yet, but we must be aware of this issue before performing implementation.

    When you are using policy-managed database Oracle Manage all instance automatically on demand without dba intervention. For the whole thing work well is mandatory use SCAN (IP and SCAN Listeners) and VIP (IP and Local Listeners) database use these resource to automatically register it's own services and that's way how the Oracle client will find a Oracle Instance.

    When you Configure a SHARED SERVER on Policy-Managed Dababase one question arise:
    SHARED SERVER don't use Parameter LOCAL_LISTENER to register database on Listener, but it use DISPATCHERS parameter.

    DISPATCHERS parameter is NOT Like LOCAL_LISTENER parameter which automatically updated by Database Agent. Then you must set DISPATCHERS manually using VIP of current Node on each Instance. As explained in note How To Configure Shared Server Dispatchers For RAC Environment [ID 578524.1]. BUT this will work only if you have a ADMIN-MANAGED database because instance is fixed on that node.

    Policy-managed database has not fixed a instance on specific node and also has not a specific INSTANCE_NAME, because INSTANCE_NAME can be changed automatically on demand or when you change configuration of your SERVER POOL.

    The BIG QUESTION:
    How configure DISPATCHERS parameter when database is POLICY-MANAGED ? Since DISPATCHERS can't be automatically configured dynamically, but the INSTANCE is dynamic and can be reloacated to any node on that server pool.

    When I get the anwser I'll post here Oracle Solution. (If someone already has the answer please post here)


    What is slow RMAN or Media Management Library?

    Backup execution time  is slow.. where is the problem?

    When we perform backup using third party software and backup of database is slow, there always is some uncertain who is causing the slowness.

    The Database Administrator (DBA) says: is Media Management Library (aka MML) and Backup Operator says: is RMAN.

    To end this conflict I ​​will show how to identify where is the problem.

    I'll use the term RMAN (like RMAN spend time), but actually means Database spend time. Because RMAN is only a client. So typically the database is slow and not RMAN Client is slow.

    Note: I will not diagnose what is causing it, I will only  help you  identify whether the problem is, in  MML or RMAN.

    Media Management

    The Oracle Media Management Layer (MML) API lets third-party vendors build a media manager, software that works with RMAN and the vendor's hardware to allow backups to sequential media devices such as tape drives. A media manager handles loading, unloading, and labeling of sequential media such as tapes.

    RMAN Interaction with a Media Manager

    RMAN does not issue specific commands to load, label, or unload tapes. When backing up, RMAN gives the media manager a stream of bytes and associates a unique name with this stream. When RMAN must restore the backup, it asks the media manager to retrieve the byte stream. All details of how and where that stream is stored are handled entirely by the media manager. For example, the media manager labels and keeps track of the tape and names of files on each tape, and automatically loads and unloads tapes, or signals an operator to do so.

    RMAN provides a list of files requiring backup or restore to the media manager, which in turn makes all decisions regarding how and when to move the data.

    Before RMAN making a call to any of functions in the media management API, the server create a EVENT WAIT. So, These with  EVENT WAIT  is possible to get the number of  wait (in seconds or number) that the server has been waiting for this call to return.

    So, we can calculate it and find out how much time RMAN spend waiting MML (e.g writing  or querying a backup piece filename) processing request and return to RMAN.

    Complete list  EVENT of MML

    Oracle 11.2 or above:

    SELECT NAME
    FROM   V$EVENT_NAME
    WHERE  NAME LIKE '%MML%';
    NAME
    ----------------------------------------
    Backup: MML initialization
    Backup: MML v1 open backup piece
    Backup: MML v1 read backup piece
    Backup: MML v1 write backup piece
    Backup: MML v1 close backup piece
    Backup: MML v1 query backup piece
    Backup: MML v1 delete backup piece
    Backup: MML create a backup piece
    Backup: MML commit backup piece
    Backup: MML command to channel
    Backup: MML shutdown
    Backup: MML obtain textual error
    Backup: MML query backup piece
    Backup: MML extended initialization
    Backup: MML read backup piece
    Backup: MML delete backup piece
    Backup: MML restore backup piece
    Backup: MML write backup piece
    Backup: MML proxy initialize backup
    Backup: MML proxy cancel
    Backup: MML proxy commit backup piece
    Backup: MML proxy session end
    Backup: MML datafile proxy backup?
    Backup: MML datafile proxy restore?
    Backup: MML proxy initialize restore
    Backup: MML proxy start data movement
    Backup: MML data movement done?
    Backup: MML proxy prepare to start
    Backup: MML obtain a direct buffer
    Backup: MML release a direct buffer
    Backup: MML get base address
    Backup: MML query for direct buffers
    

    Previous version of Oracle Database 11.2 the Event name MML does not exists because it’s was changed on version 11.2 from %STB% to %MML%.

    So, If you are using Oracle 11.1 or previous you can query V$EVENT_NAME where NAME like '%sbt%'.

    SELECT NAME
    FROM   V$EVENT_NAME
    WHERE  NAME LIKE '%sbt%';
    
    Backup: sbtinit
    Backup: ssbtopen
    Backup: ssbtread
    Backup: ssbtwrite
    Backup: ssbtbackup
    .
    .
    .
    

    So, lets start...
    Oracle store statistics (cumulative, since database was started) of these wait on v$system_event. I always use GV$ because is very common we admin RAC env on this days.

    Before start backup I'll take a snapshot intial of gv$system_event...by creating a table RMAN_MML_EVENT_T1.

    Click on icon "View Source" to see formated text.

    CREATE TABLE  RMAN_MML_EVENT_T1 AS
    SELECT inst_id,
      event,
      TOTAL_WAITS,
      TOTAL_TIMEOUTS,
      TIME_WAITED,
      AVERAGE_WAIT,
      TIME_WAITED_MICRO,
      sysdate as SNAPSHOT_TIME
    FROM gv$system_event
    WHERE event LIKE 'Backup%';
    
    SQL> select * from RMAN_MML_EVENT_T1;
    
       INST_ID EVENT                                   TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED AVERAGE_WAIT TIME_WAITED_MICRO SNAPSHOT_TIME
    ---------- --------------------------------------- ----------- -------------- ----------- ------------ ----------------- -----------------
             1 Backup: MML initialization                      371              0       54365       146.54         543651136 08-08-12 17:11:05
             1 Backup: MML create a backup piece               450              0        4827        10.73          48270960 08-08-12 17:11:05
             1 Backup: MML commit backup piece                 450              0        7417        16.48          74172281 08-08-12 17:11:05
             1 Backup: MML shutdown                            371              0          47          .13            469267 08-08-12 17:11:05
             1 Backup: MML query backup piece                  894              0       11222        12.55         112222166 08-08-12 17:11:05
             1 Backup: MML extended initialization             371              0           0            0              3655 08-08-12 17:11:05
             1 Backup: MML delete backup piece                 444              0        5348        12.05          53480530 08-08-12 17:11:05
             1 Backup: MML write backup piece              1378078              0     3053683         2.22        3.0537E+10 08-08-12 17:11:05
    
    8 rows selected.
    

    I started backup using RMAN and MML (Tivoli Storage Manager). When backup finished you can query V$RMAN_BACKUP_JOB_DETAILS to get accurate time of backup

    SELECT START_TIME,
      END_TIME,
      ROUND(INPUT_BYTES  /1024/1024/1024,2) IMPUT_GBYTES ,
      ROUND(OUTPUT_BYTES /1024/1024/1024,2) OUTPUT_GBYTES,
      INPUT_TYPE,
      ELAPSED_SECONDS
    FROM V$RMAN_BACKUP_JOB_DETAILS
    WHERE TRUNC(START_TIME) = TRUNC(SYSDATE)
    AND INPUT_TYPE LIKE 'DB%';
    
    START_TIME        END_TIME          IMPUT_GBYTES OUTPUT_GBYTES INPUT_TYPE    ELAPSED_SECONDS
    ----------------- ----------------- ------------ ------------- ------------- ---------------
    08-08-12 17:23:44 08-08-12 17:26:38        12.85         10.06 DB FULL                   174
    

    In my case the backup full take 174 seconds to backup read 12.85GB and Write on MML 10.06GB of data

    So, after backup finish I take the 2nd snapshot by creating the table RMAN_SNAPSHOT_T2.

    
    CREATE TABLE  RMAN_SNAPSHOT_T2 AS
    SELECT inst_id,
      event,
      TOTAL_WAITS,
      TOTAL_TIMEOUTS,
      TIME_WAITED,
      AVERAGE_WAIT,
      TIME_WAITED_MICRO,
      sysdate as SNAPSHOT_TIME
    FROM gv$system_event
    WHERE event LIKE 'Backup%';
    
    SQL> select * from RMAN_MML_EVENT_T2;
    
       INST_ID EVENT                                   TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED AVERAGE_WAIT TIME_WAITED_MICRO SNAPSHOT_TIME
    ---------- --------------------------------------- ----------- -------------- ----------- ------------ ----------------- -----------------
             1 Backup: MML initialization                      373              0       54665       146.56         546652333 08-08-12 17:27:45
             1 Backup: MML create a backup piece               454              0        4860        10.71          48604759 08-08-12 17:27:45
             1 Backup: MML commit backup piece                 454              0        7482        16.48          74820999 08-08-12 17:27:45
             1 Backup: MML shutdown                            373              0          47          .13            471590 08-08-12 17:27:45
             1 Backup: MML query backup piece                  900              0       11281        12.53         112808077 08-08-12 17:27:45
             1 Backup: MML extended initialization             373              0           0            0              3665 08-08-12 17:27:45
             1 Backup: MML delete backup piece                 446              0        5373        12.05          53727006 08-08-12 17:27:45
             1 Backup: MML write backup piece              1419274              0     3067298         2.16        3.0673E+10 08-08-12 17:27:45
    
    8 rows selected.
    

    Now I can calculate the values from RMAN_MML_EVENT_T2 minus RMAN_MML_EVENT_T1 to get the real time spend on MML.
    Note:
    EVENT: Name of the wait event
    TOTAL_WAITS: Total number of waits for the event
    TOTAL_TIMEOUTS: Total number of timeouts for the event
    TIME_WAITED: Total amount of time waited for the event (in hundredths of a second)
    AVERAGE_WAIT: Average amount of time waited for the event (in hundredths of a second)
    TIME_WAITED_MICRO: Total amount of time waited for the event (in microseconds)

    SELECT t1.inst_id,
      t1.event,
      t2.total_waits       - t1.total_waits total_waits,
      t2.total_timeouts    -t1.total_timeouts total_timeouts,
      t2.time_waited       - t1.time_waited time_waited,
      t2.time_waited_micro - t1.time_waited_micro time_waited_micro
    FROM RMAN_MML_EVENT_T1 T1,
      RMAN_MML_EVENT_T2 T2
    WHERE t1.inst_id = t2.inst_id
    AND t1.event     = t2.event;
    
       INST_ID EVENT                                   TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED TIME_WAITED_MICRO
    ---------- --------------------------------------- ----------- -------------- ----------- -----------------
             1 Backup: MML initialization                        2              0         300           3001197
             1 Backup: MML create a backup piece                 4              0          33            333799
             1 Backup: MML commit backup piece                   4              0          65            648718
             1 Backup: MML shutdown                              2              0           0              2323
             1 Backup: MML query backup piece                    6              0          59            585911
             1 Backup: MML extended initialization               2              0           0                10
             1 Backup: MML delete backup piece                   2              0          25            246476
             1 Backup: MML write backup piece                41196              0       13615         136141912
    
    8 rows selected.
    
    

    As I can see above the MML spend more time writing backup piece.

    So, I'll sum the time to get total time spend on MML.

    SELECT SUM (total_waits) total_waits,
      SUM(total_timeouts) total_timeouts ,
      SUM (time_waited)/100 time_waited_in_second,
      SUM (time_waited_micro) time_waited_micro
    FROM
      (SELECT t1.inst_id,
        t1.event,
        t2.total_waits       - t1.total_waits total_waits,
        t2.total_timeouts    -t1.total_timeouts total_timeouts,
        t2.time_waited       - t1.time_waited time_waited,
        t2.time_waited_micro - t1.time_waited_micro time_waited_micro
      FROM RMAN_MML_EVENT_T1 T1,
        RMAN_MML_EVENT_T2 T2
      WHERE t1.inst_id = t2.inst_id
      AND t1.event     = t2.event
      )
    
    TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED_IN_SECOND TIME_WAITED_MICRO
    ----------- -------------- --------------------- -----------------
          41218              0                140.97         140960346
    
    

    Calculating time total of backup window, time spend on MML and time spend of RMAN.

    Note: TIME_SPEND_BY_RMAN = (ELAPSED_SECOND_BACKUP-TIME_SPEND_BY_MML_SECOND)

    ELAPSED_SECONDS_BACKUP          TIME_SPEND_BY_MML_SECOND       TIME_SPEND_BY_RMAN_SECOND
    ------------------------------ ------------------------------ -------------------
    174                             140.97                         33.03
    
    

    Summarizing:
    Total time of backup : 174
    Time spend by MML: 141
    Time spend by RMAN : 33

    If this backup is slow is because MML take (141*100/174) 81% of time spend of backup window.

    Additional info:
    As my backup was done over Lan:
    (10.06GB * 1024 = 10301MB)
    10301MB / 144 = 71Mbytes/second

    As I'm using network interface of 1 Gbit I can consider a normal throughput.

    Also you can monitoring in real time where is wait.

    Just execute this script above:

    Note : if you are using previous version of 11.2 change %MML% to %sbt%.

    vi monitoring_mml.sh
    sqlplus -s sys/<password>@<db_name> as sysdba<<EOF
    set echo off
    COLUMN EVENT FORMAT a17
    COLUMN SECONDS_IN_WAIT FORMAT 999
    COLUMN STATE FORMAT a15
    COLUMN CLIENT_INFO FORMAT a30
    set linesize 200
    
    select to_char(sysdate,'dd-mm-yyyy hh24:mi:ss') actual_date from dual;
    
    SELECT p.SPID, sw.EVENT, sw.SECONDS_IN_WAIT AS SEC_WAIT, 
           sw.STATE, CLIENT_INFO
    FROM   gV\$SESSION_WAIT sw, gv\$SESSION s, gV\$PROCESS p
    WHERE  sw.EVENT LIKE '%MML%'
    AND    s.SID=sw.SID
    AND    s.PADDR=p.ADDR;
    EOF
    exit
    

    Using shell execute the command above, and you will see in real time the wait on MML.

    while true
    do
    sh monitoring_mml.sh
    sleep 1
    done
    

    .

    Find us on Google+


    What should I use “srvctl add serverpool” or “crsctl add serverpool”

    I saw some doubts as to which utility to use and in what situation we should use.

    I searched on some sites related to Oracle and saw that the people is still a bit confused about  which command we should use.

    But before start there is a rule to a Clusterware Envorinment:

    The “srvctl” is to be used to managed  resources with the prefix  ora.* resources and “crsctl” is to be used  to query or start/stop resources with prefix ora.*, but crsctl is not supported to modify or edit resources with prefix ora.* .

    See this note on MOS:

    Oracle Clusterware and Application Failover Management [ID 790189.1]

    Using crs_* or crsctl commands on resources with the prefix ora.* (resources provided by Oracle) remains unsupported.

     

    So, if you created a resource with “srvctl” this resource should be managed only by “srvctl”. If you create a resource with “crsctl” this resource should be managed using “crsctl” command.

    Let’s talk about  the concept Policy-Based Cluster.

    Oracle Clusterware 11g release 2 (11.2) introduces a different method of managing nodes and resources used by a database called policy-based management.

    With Oracle Clusterware 11g release 2 (11.2) and later, resources managed by Oracle Clusterware are contained in logical groups of servers called server pools. Resources are hosted on a shared infrastructure and are contained within server pools. The resources are restricted with respect to their hardware resource (such as CPU and memory) consumption by policies, behaving as if they were deployed in a single-system environment.

    Policy-based management:

    • Enables dynamic capacity assignment when needed to provide server capacity in accordance with the priorities you set with policies
    • Enables allocation of resources by importance, so that applications obtain the required minimum resources, whenever possible, and so that lower priority applications do not take resources from more important applications
    • Ensures isolation where necessary, so that you can provide dedicated servers in a cluster for applications and databases

    Applications and databases running in server pools do not share resources. Because of this, server pools isolate resources where necessary, but enable dynamic capacity assignments as required. Together with role-separated management, this capability addresses the needs of organizations that have standardized cluster environments, but allow multiple administrator groups to share the common cluster infrastructure.

    This is only a concept.

    Therefore Oracle divided this concept to be used for two types of configuration

    Policy-Managed Database and  Policy-Based Management to non-database.

    Policy-Managed Database

    A database that you define as a cluster resource. Management of the database is defined by how you configure the resource, including on which servers the database can run and how many instances of the database are necessary to support the expected workload.

    To configure Policy managed database, Oracle already have pre-defined configuration for that.

    So, the options are limited and specific to Database resources (such as Services,Database).

    For that reason Oracle provided “srvctl add serverpool”.

     $ srvctl add serverpool -h
    
    Adds a server pool to the Oracle Clusterware.
    
    Usage: srvctl add srvpool -g <pool_name> [-l <min>] [-u <max>] [-i <importance>] [-n "<server_list>"] [-f]
     -g <pool_name> Server pool name
     -l <min> Minimum size of the server pool (Default value is 0)
     -u <max> Maximum size of the server pool (Default value is -1 for unlimited maximum size)
     -i <importance> Importance of the server pool (Default value is 0)
     -n "<server_list>" Comma separated list of candidate server names
     -f Force the operation even though some resource(s) will be stopped
     -h Print usage
     

    http://docs.oracle.com/cd/E11882_01/rac.112/e16795/srvctladmin.htm#BAJDJFCJ

     Policy-Based Management to non-database.

    To configure Non-Database resources, Oracle provided another command with much more options “crsctl add serverpool”.

    This allow the DBA explore all options which Policy Managed can supply.

     $ crsctl add serverpool -h
     Usage:
     crsctl add serverpool <spName> [[-file <filePath>] | [-attr "<attrName>=<value>[,...]"]] [-i]
     where
     spName Add named server pool
     filePath Attribute file
     attrName Attribute name
     value Attribute value
     -i Fail if request cannot be processed immediately
     -f Force option
    
    

    http://docs.oracle.com/cd/E11882_01/rac.112/e16794/crsref.htm#CWADD92179

    So, we NEVER should not mix the serverpool used by database resource and serverpool used by non-database resource.

    Also never use “crsctl” command to change Database Server Pool wich was created by “srvctl”.  Never put a database  in a serverpool created by using “crsctl” command.

    Server Pool to database resource must be created by using “srvctl”.

    Server Pool to non-database resource must be created by using “crsctl”

    Question: Is possible change ora.* resources with “crsctl”?

    Yes, It’s possible but not supported by Oracle.

    Hope make this clear.

    Enjoy…