Friday, May 29, 2020

How to identify any parameter as static or dynamic?



Answer: Check for v$parameter we can find one column ie. ISSYS_MODIFIABLE

set pages 1000
set lines 200
col name for a35
col value for a25
select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter;

1. Parameters basics:

In general, parameter is a placeholder for a variable that contains some value of some type.
We can call it as key-value pair

db_block_siz(key)=8K(value)
db_name(key)=DEVDB(value)

2. How to Identify the parameter as stic or dynamic

SQL> select ISSYS_MODIFIABLE from v$parameter where name like '%utl_file_dir%';
ISSYS_MOD
---------
FALSE=======================================>static 

Other examples are:
select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='processes';
select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='sessions';

alter system set processes=200 scope=spfile;
alter system set sessions=500 scope=spfile;

3. Check the current value for a parameter processes & sessions

SQL> select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='processes';

NAME                                VALUE                     ISSES ISSYS_MOD
----------------------------------- ------------------------- ----- ---------
processes                           150                       FALSE FALSE

SQL> select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='sessions';

NAME                                VALUE                     ISSES ISSYS_MOD
----------------------------------- ------------------------- ----- ---------
sessions                            248                       FALSE FALSE

4. Try to change staic parameter with scope=both it will fail

SQL> alter system set processes=200 scope=both;
alter system set processes=200 scope=both
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified


SQL> alter system set sessions=500 scope=both;
alter system set sessions=500 scope=both
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified

5. Try to change static parameter with scope=memory it will fail

SQL> alter system set processes=200 scope=memory;
alter system set processes=200 scope=memory
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified


SQL> alter system set sessions=500 scope=memory;
alter system set sessions=500 scope=memory
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified


6. Try to change static parameter with scope=spfile it will be successful

SQL> alter system set processes=200 scope=spfile;

System altered.

SQL> alter system set sessions=500 scope=spfile;

System altered.

7. After changing the parameter re verify the values still pointing to old values since these static parameter takes effect only after database bounce
 
SQL> select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='processes';

NAME                                VALUE                     ISSES ISSYS_MOD
----------------------------------- ------------------------- ----- ---------
processes                           150                       FALSE FALSE

SQL> select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='sessions';

NAME                                VALUE                     ISSES ISSYS_MOD
----------------------------------- ------------------------- ----- ---------
sessions                            248                       FALSE FALSE

10. Shutdown the database

SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

11. Start the database

SQL> startup;
ORACLE instance started.

Total System Global Area 1570009088 bytes
Fixed Size                  2253584 bytes
Variable Size            1023413488 bytes
Database Buffers          536870912 bytes
Redo Buffers                7471104 bytes
Database mounted.
Database opened.

12. Verify the static parameter and now poiting to new values

SQL> select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='processes';

NAME                                VALUE                     ISSES ISSYS_MOD
----------------------------------- ------------------------- ----- ---------
processes                           200                       FALSE FALSE

SQL> select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='sessions';

NAME                                VALUE                     ISSES ISSYS_MOD
----------------------------------- ------------------------- ----- ---------
sessions                            500                       FALSE FALSE

SQL>


13. How to Identify the parameter as static or dynamic

SQL>  select ISSYS_MODIFIABLE from v$parameter where name like '%log_archive_dest_2';
ISSYS_MOD
---------
IMMEDIATE====================================>dynamic 

Other examples are:
select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='log_archive_dest_2';
select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='open_cursors';
select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='awr_snapshot_time_offset';

alter system set open_cursors=500 scope=both;
alter system set awr_snapshot_time_offset=2 scope=both;

14. Check the current value for a parameter open_cursors & awr_snapshot_time_offset

SQL> select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='open_cursors';

NAME                                VALUE                     ISSES ISSYS_MOD
----------------------------------- ------------------------- ----- ---------
open_cursors                        300                       FALSE IMMEDIATE

SQL> select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='awr_snapshot_time_offset';

NAME                                VALUE                     ISSES ISSYS_MOD
----------------------------------- ------------------------- ----- ---------
awr_snapshot_time_offset            0                         FALSE IMMEDIATE

SQL>

15. Try to change these dynamic parameter with scope=both it will be successful

SQL> alter system set open_cursors=500 scope=both;

System altered.

SQL> alter system set awr_snapshot_time_offset=2 scope=both;

System altered.

12. Verify the these dynamic parameter and now pointing to new values immediately without bouncing the database.

SQL> select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='open_cursors';

NAME                                VALUE                     ISSES ISSYS_MOD
----------------------------------- ------------------------- ----- ---------
open_cursors                        500                       FALSE IMMEDIATE

SQL> select name,value,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='awr_snapshot_time_offset';

NAME                                VALUE                     ISSES ISSYS_MOD
----------------------------------- ------------------------- ----- ---------
awr_snapshot_time_offset            2                         FALSE IMMEDIATE


Please refer the YoutTube video for more information

https://youtu.be/hSntn8Gfedo


Regards,
Mallik


No comments:

Post a Comment

Automation Script | Archivelog Generation Hourly Monitoring

1. List out all the running databases and pic one database where we want to monitore the archive log generation from last 1 month. [oracle@o...