Thursday, 13 December 2018

CELL-01548: Error in Exadata Cell Storage Server

The reason for error CELL-01548 is that diskgroup DATA1 is still mounted, hence you get the message CELL-01548: Unable to shut down CELLSRV because disk group DATA1 may be forced to dismount due to reduced redundancy

       

           [root@cell ~]# cellcli
CellCLI: Release 12.1.1.1.1 - Production on Thu Dec 13 16:36:20 IST 2018

Copyright (c) 2007, 2013, Oracle.  All rights reserved.
Cell Efficiency Ratio: 1

CellCLI> alter cell shutdown services all

Stopping the RS, CELLSRV, and MS services...
The SHUTDOWN of ALL services was not successful.
CELL-01548: Unable to shut down CELLSRV because disk group DATA1 may be forced to dismount due to reduced redundancy.
Getting the state of CELLSRV services...  running
Getting the state of MS services...  running
Getting the state of RS services...  running


       
 
After i dismounted the diskgroup with command SQL> Alter diskgroup data1 dismount;, i was able to shutdown the cell services
       

       [root@cell ~]# cellcli
CellCLI: Release 12.1.1.1.1 - Production on Thu Dec 13 16:41:22 IST 2018

Copyright (c) 2007, 2013, Oracle.  All rights reserved.
Cell Efficiency Ratio: 1

CellCLI>  alter cell shutdown services all

Stopping the RS, CELLSRV, and MS services...
The SHUTDOWN of services was successful.

CellCLI>


       
 

CELLSRV in Exadata


Being an Exadata guy, many times i had been asked what CELLSRV is and what it does and how it is invoked ? Cell Server (CELLSRV) services iDB requests for disk I/O and advanced Oracle Exadata Storage Server services, such as predicate processing offload. CELLSRV is implemented as a multithreaded process and should be expected to use the largest portion of processor cycles on a storage cell. Cellsrv is launched by cellrsomt by executable /opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/cellsrv/bin/cellrsomt. Lets see how it works, in below output process id 3673 is parent of cellsrv (3682) and hence proved 3673 is cellrsomt which actually launched cellsrv


       

       [root@cell ~]# ps -ef |grep "/cellsrv "
root      3682  3673  2 13:25 ?        00:02:39 /opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/cellsrv/bin/cellsrv 100 5000 9 5042
root      6983  6437  0 14:54 pts/0    00:00:00 grep /cellsrv
[root@cell ~]#
[root@cell ~]# ps -ef |grep 3673
root      3673  3665  0 13:25 ?        00:00:06 /opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/cellsrv/bin/cellrsomt -rs_conf /opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/cellsrv/deploy/config/cellinit.ora -ms_conf /opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/cellsrv/deploy/config/cellrsms.state -cellsrv_conf /opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/cellsrv/deploy/config/cellrsos.state -debug 0
root      3682  3673  2 13:25 ?        00:02:40 /opt/oracle/cell12.1.1.1.1_LINUX.X64_140712/cellsrv/bin/cellsrv 100 5000 9 5042
root      6986  6437  0 14:54 pts/0    00:00:00 grep 3673
[root@cell ~]#


       
 

I/O Resource Management Profiles in Exadata

I/O Resource Management (IORM) interdatabase plans support profiles to ease management, and configuration of interdatabase plans for hundreds of databases.
Profiles introduce a way to allocate I/O resources for a database. This is done using the database initialization parameter db_performance_profile. Database administrators can classify different databases as, GOLDSILVERBRONZE, by setting the db_performance_profile parameter. As with Oracle Database Resource Manager plans, the db_performance_profile information is automatically pushed to all the storage servers (cells). The following SQL command displays how the profile parameter can be set for a database:
SQL> ALTER SYSTEM SET db_performance_profile=gold SCOPE=spfile;
Profiles are specified as directives for the interdatabase plan, and are configured using the CellCLIutility. A profile directive consists of an identifier (name), and a set of attributes. To differentiate between a database directive and a profile directive, a qualifier attribute called type is used. The type attribute can be set to either database or profile. The following is an example of the type attribute syntax:
CellCLI> ALTER IORMPLAN DBPLAN=((name=gold, share=10, limit=100, type=profile),  \
(name=silver, share=5, limit=60, type=profile), (name=bronze, share=1, limit=20, \
 type=profile))

METRIC DEFINITION About GRIDDISK in Exadata


METRIC DEFINITION About GRIDDISK in Exadata can be found from command line of cellcli as below


CellCLI> LIST METRICDEFINITION WHERE objectType = 'GRIDDISK'

         GD_BY_FC_DIRTY
         GD_IO_BY_R_LG
         GD_IO_BY_R_LG_SEC
         GD_IO_BY_R_SCRUB
         GD_IO_BY_R_SCRUB_SEC
         GD_IO_BY_R_SM
         GD_IO_BY_R_SM_SEC
         GD_IO_BY_W_LG
         GD_IO_BY_W_LG_SEC
         GD_IO_BY_W_SM
         GD_IO_BY_W_SM_SEC
         GD_IO_ERRS
         GD_IO_ERRS_MIN
         GD_IO_ERRS_SCRUB
         GD_IO_RQ_R_LG
         GD_IO_RQ_R_LG_SEC
         GD_IO_RQ_R_SCRUB
         GD_IO_RQ_R_SCRUB_SEC
         GD_IO_RQ_R_SM
         GD_IO_RQ_R_SM_SEC
         GD_IO_RQ_W_LG
         GD_IO_RQ_W_LG_SEC
         GD_IO_RQ_W_SM
         GD_IO_RQ_W_SM_SEC

Exadata Cell Server CL_CPUT DETAIL

CL_CPUT DETAIL is the Percentage of time over the previous minute that the system CPUs were not idle, as can be seen from below snapshot




Wednesday, 15 August 2018

Lambda function in Python

To understand Lambda function we need to see a normal function in Python first, Lets begin:

Lets define a function first and then we will convert it to Lambda function

-----------------------
def add(x, y):
    return x + y

print(add(2, 3))
-----------------------

Above function name is add, it expects two arguments x and y and returns their sum. Notice how we are printing and calling add function in last line

The output of above program is below:

-----------------------
5
-----------------------

# Now let us convert this function to Lambda function in Python

----------------------------------
add = lambda x, y : x + y

print (add(2, 3))

----------------------------------

The output of above code is below :

--------------
5
--------------

So what on earth is Lambda then ?

Basically lambda function is used for creating small, one-time and anonymous function objects in Python. In lambda x, y: x + y; x and y are arguments to the function and x + y is the expression which gets executed and its values is returned as output. Lambda functions can be used wherever function objects are required. They are syntactically restricted to a single expression. Semantically, they are just syntactic sugar for a normal function definition. Like nested function definitions, lambda functions can reference variables from the containing scope.



Function in Python

We will now write a function in Python :

-----------------------
def add(x, y):
    return x + y

print(add(2, 3))
-----------------------

Above function name is add, it expects two arguments x and y and returns their sum. Notice how we are printing and calling add function in last line

The output of above program is below:

-----------------------
5
-----------------------