Thursday, 13 December 2018

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
-----------------------

Python if Statement

Lets write a Python code where we see how if statement is used

-----------------------------------
num = 3
if num > 0:
    print(num, "is a positive number.")
print("This is always printed.")

num = -1
if num > 0:
    print(num, "is a positive number.")
print("This is also always printed.")

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

The output of above code will be below

-----------------------------------
3 is a positive number.
This is always printed.
This is also always printed.
-----------------------------------

Explanation of the code :- Watch how we use num variable 3 and print it as positive, notice the second time positive is not printed because -1 is negative not > 0

The range() Function in Python

Lets use Range function of Python to write below code to print range of numbers between 0 to 4

------------------------------
for i in range(5):
    print(i)

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

The output of above code will be :

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

0
1
2
3
4
------------------------------

Now lets use Range function again of Python to see another scenario where 10 is not printed in the range of 5,10 but 5 is printed so it includes first number not the last
------------------------------

for i in range(5,10):
     print(i)

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

The output of above code is below

------------------------------
5
6
7
8
9

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

The given end point is never part of the generated sequence; range(10) generates 10 values, the legal indices for items of a sequence of length 10. It is possible to let the range start at another number, or to specify a different increment (even negative; sometimes this is called the ‘step’):

So lets take a scenario of below code :

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

for i in range(0,10,3):
    print(i)
---------------------------------


The output of above code is 

------------------------------
0
3
6
9
------------------------------