The Oracle spfile is a binary representation of the text0based init.ora file. By default, a new Oracle database will be working on a pfile, so the spfile must be created from the pfile at the SQL prompt.
Also see my notes on using spfile and pfile.
If you want to make a change to a parameter in the spfile without affecting the current instance, you can do so using the SCOPE=SPFILE option of the ALTER SYSTEM statement. This is useful when you want to make a change starting from the next startup and not for the current instance.
Also see my notes on using spfile and pfile.
The spfile is created using the CREATE SPFILE statement; this requires connecting as SYSDBA.
Connect system/manager as sysdba;
CREATE SPFILE FROM PFILE;
This command creates an spfile in a non-default location ($ORACLE_HOME/database). However, you can fully-qualify the path name is the “create spfile” statement:
CREATE SPFILE='/u01/admin/prod/pfile/file_mydb.ora'
FROM
PFILE=/u01/admin/prod/pfile/initprod.ora';
Warning - After an spfile is created, when you bounce the database you may encounter an error. To get around this, you have to reconnect as SYSDBA and use the STARTUP command.
The addition of the spfile has changed the search path for the Oracle startup deck. Oracle now uses the following path:
- Search for the spfile$ORACLE_SID.ora file in the default location,
- Look for the spfile.ora; and
- Search for the pfile by name init$ORACLE_SID.ora.
Once you have an spfile, you can change any initialization parameter with the “alter system” command. However, there is an important SCOPE parameter that you need to understand.
The SCOPE parameter has three values MEMORY, SPFILE and BOTH. Let’s look at an example of each:
Alter system set db_2k_cache_size=100m SCOPE=SPFILE;
Alter system set db_2k_cache_size=100m SCOPE=MEMORY;
In the example above, the SCOPE=MEMORY tells Oracle to make the change for the life of the instance, and to change it back to the default value the next time the database is bounced.
Alter system set db_2k_cache_size=100m SCOPE=BOTH;
When you specify SCOPE=BOTH, the change will be made immediately, and Oracle will also make the change permanent, even after the database is bounced
No comments:
Post a Comment