Thursday 1 May, 2008

How to manage Control Files in Oracle

How to manage Control Files??
+++++++++++++++++++++++++++++++++++++++++++++++++
The control file of an Oracle database is created at the same time as the database.
A control file is a small binary file that records the physical structure of the database and
includes:

The database name
Names and locations of associated data files and online redo log files.
If RMAN is configured additional records as required for RMAN are also stored (such as archive log records and various backup records).
The timestamp of the database creation
The current log sequence number
Checkpoint information

The maximum control file size is operating system specific. See your operating system-specific Oracle documentation for more information and try to manage the control file size always within those limits.

The size of the control file can be limited by setting the initialization parameter CONTROL_FILE_RECORD_KEEP_TIME.

The default value is 7. Set it to 0.

CONTROL_FILE_RECORD_KEEP_TIME specifies the minimum number of days before a reusable record in the control file can be reused. In the event a new record needs to be added to a reusable section and the oldest record has not aged enough, the record section expands. If this parameter is set to 0, then reusable sections never expand, and records are reused as needed.

Note:
This parameter applies only to records in the control file that are circularly
reusable (such as archive log records and various backup records). It does not
apply to records such as datafile, tablespace, and redo thread records, which are
never reused unless the corresponding object is dropped from the tablespace.

Check v$controlfile_record_section for your knowledge

Remember that the control file is to be always available to Oracle for an OPEN Database.

You specify control file names using the CONTROL_FILES initialization parameter in the database's initialization parameter file. The instance startup procedure recognizes and opens all the listed files. The instance writes to and maintains all listed control files during database operation.

If you do not specify files for CONTROL_FILES before database creation, and you are not using the Oracle Managed Files (OMF is to be discussed at a later point) feature, Oracle creates a control file and uses a default filename. The default name is operating system specific.

Every Oracle database should have at least two control files, each stored on a different disk. If a control file is damaged due to a disk failure, the associated instance must be shut down. Once the disk drive is repaired, the damaged control file can be restored using the intact copy of the control file from the other disk and the instance can be restarted. In this case, no media recovery is required.

Never ever forget to multiplex the control files.

Recreating Control files

Only recreate the control file under very special circumstances:

(1) All current copies of the control file have been lost or are corrupted.
(2) You need to change a "hard" database parameter that was set when the database was first created, such as MAXDATAFILES, MAXLOGFILES, MAXLOGHISTORY, etc.
(3) You are restoring a backup in which the control file is corrupted or missing.
(4) Oracle Customer Support advises you to do so.
(5) If you are moving your database to another machine, which is running the same operating system, but the location of the data files, log files is not the same. This is also understood as cloning database.

Note: Never attempt to clone the database

(1) If the OS is different. Ex source on Sun, HP, AIX and you want to clone on different OS. This kind of problem is not seen on Windows flavors if the version of Oracle is certified for that OS version of Windows
(2) If oracle data block size is to be different than the source database.

What are the default values of MAXDATAFILES??

The default and the range of values of maxdatafiles and db_files are
operating system specific. Please refer to your operating system specific
Oracle manuals.

Oracle Version 7.3.4 8.0.5 8.1.6 9.2.1 10.1
UNIX 30 30 30 30 30
VMS 32 32 - 32 -
Windows 32 254 254 32 32

Why is there a limit on MAXDATAFILES?

Each platform uses a port-specific number of bits to store the ORACLE file numbers. Thus, this number limits MAXDATAFILES.

What are the limits on MAXDATAFILES?

Oracle Version 7.3.4 8.0.5 8.1.6 9.2.1 10.1
UNIX 1022 1022 per TS 65536 per DB 1022 per TS 65536 per DB 65534 65534
VMS 1022 1022 per TS 65536 per DB - (999999999) -
Windows 1022 1022 per TS 65536 per DB 1022 per TS 65536 per DB 65534 65534

Why would one set MAXDATAFILES to anything less than the port-specific maximum?

Increasing the value of MAXDATAFILES increases the size of the CONTROL FILE

Why would one set DB_FILES to anything less than MAXDATAFILES?

Increasing the value of DB_FILES increases the size of the PGA, or Program Global Area, which is allocated for every user process connected to ORACLE.
How can I determine my machine's maximum limit on MAXDATAFILES?

Check your ORACLE Installation and User's Guide. The index should point to a port-specific limit.

How can I determine where my CONTROL FILE(s) are?

In SVRMGR (if you are using Oracle 8.1.7 or lesser version) or SQL*PLUS depending on the version (hope you know that SVRMGR is not available in Oracle 9 or higher versions),

type:

show parameter control_files;

If you have multiple control files, you may find that some of them may be cut off in the output from show parameter. In this case, you can query from V$CONTROLFILE;

What common error messages I may get if I exceed the limits???

ORA-01118: cannot add any more database files: limit of 32 exceeded
ORA-01165: MAXDATAFILES may not exceed when attempting to add data files to the database.

Then, how can I resolve them??

There are various options. Metalink Doc ID 119507.1 is best suggested for a close reading.

RAM Funda - SAP (RAM Recommendation for SAP)

RAM:
========
UNIX: Note 146528
-----------------
A swap space size of 3 to 4 times the RAM size is recommended, even though a swap space of 10 GB or more might have to be created. The virtual memory available for a process is divided into "shared memory" and "local memory". All processes of an instance can access the shared memory, while only one process can access the local memory.

Most memory used in the R/3 environment is shared memory. Experiences has shown that the memory used is divided into 80% shared memory and 20% local memory.

In individual cases, there might be exceptions to this rule. Shared memory restrictions by the operating system affect the configuration options of the R/3 System drastically. The shared memory includes all R/3 buffers, such as program, table, roll buffers and R/3 extended memory.

The local memory includes the local memory of the work processes or heap.

In the 32-bit technology used so far, it is theoretically possible to address a maximum of 4 GB of memory from one process. Since a lot of memory cannot be used at all due to fragmentation effects, the memory that is actually available to an R/3 work process is much smaller in practice. The following sections specify the restrictions for some operating systems.

With the 64-bit technology, the above problems are solved. In 64-bit technology, an address space of many terabytes is available to a work process. To be able to use the 64-bit technology, you need a 64-bit operating system, a 64-bit version of the database software, and a 64-bit version of the R/3 kernel.

Compared to the 32-bit version, the 64-bit R/3 kernel has no new functions.
Compared to the 32-bit version, using the 64-bit version remains the same for users and administrators. Memory management becomes considerably simpler when you use the 64-bit kernel as compared to the 32-bit version.

Details can be found in Note 146289.

SAP Work Process Calculation

Work Process Calculation
=======================================================

SAPinst installs SAP systems with a minimum number of work processes, which
are calculated using the following formula:

- Number of dialog work processes = RAM/256 (min 2, max 18)
- Number of update work processes = RAM/768 (min 1, max 6)
- Number of update2 work processes = RAM/1024 (min 1, max 3)
- Number of batch work processes = RAM/1024 (min 2, max 3)
- Number of enqueue work processes = 1
- Number of spool work processes = 1

UNIX (AIX HP-UX) : Setting Environment Variables (setenv,set,export...)

UNIX (AIX, HP-UX): Setting Environment Variables
====================================
- SAPinst needs the JAVA_HOME environment variable to be set on the
host(s) where SAPinst will run.
- Set the JAVA_HOME environment variable for the root user to
.
- Ensure that your DISPLAY environment variable is set to :0.0,
where is the host on which the SAPinst GUI will be displayed.
- Only for a Unicode installation:
Add /sapmnt//profile to the library path environment variable.

=================================

Use the following commands, based on your shell, to set the environment variables:
- Bourne Shell (bsh) JAVA_HOME= export JAVA_HOME
DISPLAY=:0.0 export DISPLAY
- C Shell (csh) setenv JAVA_HOME
setenv DISPLAY :0.0
- Korn Shell (ksh) export JAVA_HOME=
export DISPLAY=:0.0
Name of the library path environment variable:
- AIX: LIB_PATH
- HP-UX:SHLIB_PATH
- LD_LIBRARY_PATH (for all other UNIX operating systems)

NFS Mount...Start..Stop NFS Service...

NFS Mounting (AIX and other Unix flavors)

MAKE ENTRY IN /etc/exports file and also check the NFS service whether started or not...

===================================
exportfs Lists all exported filesystems

exportfs -a Exports all fs's in /etc/exports file

exportfs -u (filesystem) Un-exports a filesystem

mknfs Configures and starts NFS services

rmnfs Stops and un-configures NFS services

mknfsexp -d /directory Creates an NFS export directory

mknfsmnt Creates an NFS mount directory

***mknfsmnt -f filesys -d remotedir -h host

mount hostname:/filesystem /mount-point Mount an NFS filesystem

nfso -a Display NFS Options
nfso -o option=value Set an NFS Option
nfso -o nfs_use_reserved_port=1

=====================================

Example
----------
To add the mount of a remote directory, enter:

mknfsmnt -f /usr/share/man -d /usr/share/man -h host1

In this example, the mknfsmnt command mounts the remote directory /usr/share/man on the /usr/share/man directory that resides on host1.

Files
------
/etc/filesystems -- Lists the remote file systems to be mounted during the system restart.

=======================================

The output of exportfs command should be
/usr/sap/trans -public,sec=sys,rw,root=142.147.101.33

This will give the same group of the folder which is NFS mounted as in Source system.

======================================

Logon Load Balancing (SMLG) - SAP....

Go to transaction code SMLG and create Logon Group and do assignments of the instances as required by you...

Users workstation 'services' file requires an entry defining the serviceport of the new logon group. (ex. sapmsSID 3602)
where SID is your system ID. Port # can change, I believe the default is 3600.

User uses 'groups' button on SAP GUI to create new logon pad entry.Enter SID and message server hostname.

Click 'generate list' and thelogon group you defined should appear in the white box below. Choosethe correct group and click button 'add and logon'. Usually no AProuter string is required (depending on your network setup).

Logon groups appear with a different icon (in the SAP Logon Pad list)than single server logons. Single servers show a little orange manbeside an SAP logo, logon groups show 3 boxes (supposed to representservers I guess) close together.

If you create multiple logon groups to segregate users by user group(ex. FI users in FI_GROUP and SD users in SD_GROUP), then you adjust thedesktop settings (as above) accordingly.

==========================

Check in DEFAULT profile rdisp/mshost
You need enter this server's I.P address in the group selection --> message server i.p

You need to add the service port sapmsSID 3600/tcp in services file..
(you may need to give an additional ENTER after this entry else it doesn't work at times :) )

If it still doesn't work, create a file sapmsg.ini in

c:\windows or c:\winnt for the presentation machine and add the following entry

[Message Server]
SID= I.P address of message server

======================


You need to define the sapms in the windows services files located
under "C:\Windows\System32" or "C:\Windows\System32\drivers\etc" (WinXP)

Add the line at the end of the file
sapmsSID port number of the message server/tcp

Example

sapmsPRD 3602/tcp

===========================