Thursday, April 4, 2013

Automatic Storage Management (ASM) lessons 4

Using ASM Storage
We have discussed management of an ASM instance. This section covers how to actually
use ASM from an Oracle instance. You can put all sorts of Oracle-related files into an
ASM instance, including these:
  • Oracle datafiles
  • Database tempfiles
  • Online redo logs
  • Archived redo logs
  • Control files
  • Spfiles
  • RMAN backup sets
  • The flash recovery area (FRA)
  • Data-pump dump sets

What Are ASM Files?

We have already created ASM disk groups. To actually use the ASM disk groups, we have
to populate them with ASM files. In this section, we will discuss what ASM files are and
then we will discuss the different kinds of ASM filenames that you might deal with.

ASM Files
ASM files are created in a number of different ways; for example, when you execute the
create tablespace command and you indicate that the resulting datafile(s) should be
stored in an ASM disk group, the result will be the creation of ASM files in that ASM
disk group.A goodly number of Oracle file types can be stored in ASM, including datafiles, controlfiles, redo logs, and archived redo logs. There are some Oracle files that cannot be stored inan ASM group. These are mostly the administrative files like trace files, the alert log, andso on.

ASM Filename Types
When a file is created on an ASM disk, the filename is generated by ASM. There is a number of different kinds of ASM filename types:
  • Fully qualified ASM filenames
  • Numeric ASM filenames
  • Alias ASM filenames
  • Alias filenames with templates
  • Incomplete filenames
  • Incomplete filenames with templates .
For example,
  • 1. Fully Qualified ASM Filename: +group/dbname/file_type/file_type_tag.file.incarnation
    Example:
    +dgroup2/sample/controlfile/Current.256.541956473
  • 2. Numeric ASM Filename: +group.file.incarnation
    Example:
    +dgroup2.257.541956473
  • 3. Alias ASM Filenames: +group/dir_1/…/dir_n/filename
    Example:
    +dgroup1/myfiles/control_file1
    +dgroup2/mydir/second.dbf
  • 4. Alias ASM Filename with Template: +group(template_name)/alias
    Example:
    +dgroup1(my_template)/config1
  • 5. Incomplete ASM Filename:+group
    Example:
    +dgroup1
  • 6. Incomplete ASM Filename with Template: +group(template_name)
    Example:
    +dgroup1(my_template)
Note:- Incomplete ASM file names are most  commonly used by DBA.  Incomplete ASM file names are used only for file creation operations. They consist of a disk group name only. ASM will then use the appropriate default template to translate the incomplete ASM file name, as defined by its file type. For example, here is the SQL command I executed originally to create the TBSASM tablespace in the ASM1DG1 disk group:

SQL> CREATE TABLESPACE tbsasm DATAFILE '+ASM1DG1' SIZE 32M;

Defining ASM as the Default Destination for Database Files

If you decide you want to allow Oracle to create all file types as ASM file types, you can set the values of various parameters such that ASM will automatically be employed. One of the big benefits of this feature is the standardization of your database, ensuring that all files get placed where they belong and in the ASM structure to which they belong. You can define default ASM destinations be defining incomplete ASM filenames. The following database parameters take incomplete ASM filenames:

  • DB_CREATE_FILE_DEST
  • DB_CREATE_ONLINE_LOG_DEST_n
  • DB_RECOVERY_FILE_DEST
  • CONTROL_FILES
  • LOG_ARCHIVE_DEST_n (log_archive_dest_format will be ignored)
  • LOG_ARCHIVE_DEST (log_archive_dest_format will be ignored)
  • STANDBY_ARCHIVE_DEST

Here is an example of using an incomplete name when setting the DB_CREATE_FILE_DEST
parameter so that it will use the ASM disk group +sp_dgroup1:

SQL> alter system set db_create_file_dest=’+cooked_dgroup1’ scope=both;

Creating a Tablespace Using an ASM Disk Group as the Destination
There are different ways to create tablespaces using ASM disks. In this section, we will first look at creating an ASM tablespace, allowing the default ASM disk location to be used (as a result of having set the DB_CREATE_FILE_DEST parameter as we did earlier). We will then look at how to create a tablespace datafile by explicitly referencing the ASM disk group that it is supposed to be assigned to.

Creating Tablespaces Using Default ASM Assignments

Now that you have seen how to define a default ASM location, you can use the create
tablespace command to create a tablespace that will have a file in the ASM disk group by
default, as shown in this example:

SQL> create tablespace test_rgf datafile size 100k;
Let’s see where Oracle put the datafile now by querying the DBA_DATA_FILES view:

SQL> Select tablespace_name, file_name
from dba_data_files Where tablespace_name=’TEST_RGF’;
TABLESPACE FILE_NAME
---------- ---------------------------------------------------------
TEST_RGF +COOKED_DGROUP1/11gDB/datafile/test_rgf.256.613064385


You can have a mix of ASM datafiles and normal datafiles assigned to a tablespace, as shown in this create table statement:
SQL> Create tablespace part_asm_tbs Datafile ’c:\oracle\oradata\11gDB\part_asm_tbs_01.dbf’ size 10m, ’+COOKED_DGROUP1’ size 100k;

Let’s look and see where the datafiles were created:
SQL> Select tablespace_name, file_name from dba_data_files Where tablespace_name=’PART_ASM_TBS’;
TABLESPACE_NAME FILE_NAME
--------------- ------------------------------------------------------------
PART_ASM_TBS C:\ORACLE\ORADATA\11GDB\PART_ASM_TBS_01.DBF
PART_ASM_TBS +COOKED_DGROUP1/11GDB/datafile/part_asm_tbs.256.613066047


Note:- if you drop the PART_ASM_TBS tablespace, only the ASM files
related to that tablespace would be removed from the disk when you issue the drop
tablespace command. In cases such as these, you need to make sure you include the
including contents and datafiles parameter with the drop tablespace command.

Creating Tablespaces Referencing Specific ASM Disk Groups
There are going to be many times when you will not want to define a default ASM disk
group to write all tablespaces to. In this case, you will want to reference the specific ASM
disk group that you want a datafile created in when you issue the create tablespace command. Here is an example:
SQL> create tablespace another_test datafile ’+COOKED_DGROUP1’ size 100k;


Wednesday, April 3, 2013

Automatic Storage Management (ASM) lessons 3

Manually rebalancing disks within ASM is typically not required since ASM will perform
this operation automatically. However, in cases where you might want to have some more
granular control over the disk-rebalance process, you can use the alter diskgroup command
along with the rebalance parameter to manually rebalance ASM disks.

When we discuss rebalancing disks in ASM, we often discuss the power level that is
assigned to that rebalance operation. Setting power with regard to a rebalance operation
really defines the urgency of that operation with respect to other operations occurring on
the system (for example, other databases or applications). When a rebalance operation
occurs with a low power (for example, 1, the typical default), then that operation is not
given a high priority on the system As a result, the rebalance operation can take some time.When a higher power setting is used (for example, 11, the maximum), the ASM is given higher priority.

Note: what is re balancing ? 
ASM ensures that file extents are evenly distributed across all disks in a disk group. This is true for the initial file creation and for file resize operations. That means we should always have a balanced space distribution across all disks in a disk group.

You can set the default power limit for the ASM instance by changing the asm_power_limit parameter. Here is an example of starting a manual rebalance of a disk group:

SQL> alter diskgroup cooked_dgroup1 rebalance power 5 wait;

In this example, you will notice that we used the wait parameter. This makes this rebalance operation synchronous for our session. Thus, when the SQL prompt returns, we know that the rebalance operation has completed. The default is nowait, which will cause the operation to be synchronous in nature. You can check the status of the rebalance operation using the V$ASM_OPERATION view during asynchronous rebalance operations.

Finally, you can also use the rebalance parameter along with the power parameter when
adding, dropping, or resizing disks within a disk group, as shown in this example:
SQL> alter diskgroup cooked_dgroup1 resize all rebalance power 5;

Note:- ASM automatically initiates a rebalance after storage configuration changes, such as when you add, drop, or resize disks. The power setting parameter determines the speed with which rebalancing operations occur.

Checking the Consistency of a Disk Group
On occasion you might wonder if there is some problem with an ASM disk group, and you
will want to check the consistency of the ASM disk group metadata. This need might arise
because of an error that occurs when the ASM instance is started or as the result of an Oracle database error that might be caused by some ASM corruption. To perform this check, simply use the alter diskgroup command with the check all parameter, as shown in this example:
SQL> alter diskgroup sp_dgroup2 check all;
When you execute the alter diskgroup check all command the results are written to
the alert log of the instance. ASM will attempt to correct any errors that are detected.

Creating ASM Disk Group Directories
When you create an ASM disk group, it includes a system-generated directory structure for
the ASM files that will be stored in that disk group. The system-generated directory structure takes on the following format, where disk_group is the root of the directory hierarchy:
+disk_group/database_name/object_type/ASM_file_name
for Eg, +DATA/oracle/datafile/system.259.724180831
The database name will be the name of the database that the data is associated with. The
object_type is the type of object being stored (for example, datafile) and the ASM_file_
name is the system-generated filename assigned to that ASM file.
ASM allows you to create your own directories within these predefined structures. This
allows you to give alias names to the ASM files that you will create. This can make working
with ASM files easier.
To create a directory structure within a diskgroup, you use the alter diskgroup command with the add directory parameter, as shown in this example:
SQL> ALTER DISKGROUP cooked_dgroup1 ADD DIRECTORY ‘+cooked_dgroup1/stuff’;

Using the ASMCMD Command-Line Utility

The ASMCMD tool is a command-line utility that allows you to manage ASM instances
and the disk structures and files within those instances. With ASMCMD, you can do the
following:
  • List contents of ASM disk groupNN s
  • Perform searches (like directory listings)
  • Add or remove directories
  • Display space availability and utilization 

Starting ASMCMD
To start ASMCMD, simply set your ORACLE_SID to +ASM and then type asmcmd from the
command line, as shown here:
C:\>set ORACLE_SID=+ASM
C:\>asmcmd
Or from Unix:
/opt/oracle>export ORACLE_SID=+ASM
/opt/oracle>asmcmd

Note:- You will need to make sure that perl.exe is in the path before you run ASMCMD. If you have installed more than one ORACLE_HOME, it may take some setup to get the environment to  set correctly. Make sure the following is set to the correct 
ORACLE_HOME, PATH, PERL5LIB,PERLBIN .

ASMCMD Commands
ASMCMD has a basic set of commands, many of which mimic Unix commands. You can
see these commands from the ASMCMD prompt if you type in help. The commands are
pretty straightforward and easy to use.Below Table  lists the different ASMCMD commands
and their purposes. Reference summary of commonly used asmcmd commands:

cd Changes the current directory to the specified directory.

du Displays the total disk space occupied by ASM files in the
specified ASM directory and all its subdirectories, recursively.

exit Exits ASMCMD.

find Lists the paths of all occurrences of the specified name (with
wildcards) under the specified directory.

help Displays the syntax and description of ASMCMD commands.

ls Lists the contents of an ASM directory, the attributes of the
specified file, or the names and attributes of all disk groups.

lsct Lists information about current ASM clients.

lsdg Lists all disk groups and their attributes.

mkalias Creates an alias for a system-generated filename.

mkdir Creates ASM directory.

pwd Displays the path of the current ASM directory.

rm Deletes the specified ASM files or directories.

rmalias Deletes the specified alias, retaining the file that the alias points to.

Overview of ASM Data Dictionary Views


Several data dictionary views exist to help manage ASM. These data dictionary views are available both when connected to the ASM instance as well as any Oracle 10g database. Each view is slightly different in its presentation depending on whether the instance you are looking at is an ASM instance or a database instance (and some views are only used in the ASM instance). The table below shows these views.


View NameDescription
V$ASM_DISKGROUP
In an ASM Instance: This view will describe a given disk group.
In a Database: This view contains a single row for each ASM disk group that is mounted by the local ASM instance.Note that discovery will occur each time you query thisview. This can have performance impacts.
V$ASM_DISK
In an ASM Instance: This view describes each disk that was discovered by the ASM instance. All disks are reported, even those not assigned to disk groups.
In a Database: This view describes each disk that is assigned to that database.Note that discovery will occur each time you query thisview. This can have performance impacts.
V$ASM_DISKGROUP_STAT
This view is equivalent to the V$ASM_DISKGROUP view. However, this view will not cause discovery to occur. This can help with performance, but the data in the view may not be accurate.
V$ASM_FILE
In an ASM Instance: Displays each ASM file contained in the ASM instance.
In a Database: Not used in a database instance.
V$ASM_DISK_STATThis view is equivalent to the V$ASM_DISK view. However, this view will not cause discovery to occur. This can help with performance, but the data in the view may not be accurate.
V$ASM_TEMPLATE
In an ASM Instance: Displays each ASM template contained in the ASM instance by disk group.
In a Database: Not used in a database instance.
V$ASM_ALIAS
In an ASM Instance: Displays each alias contained in the ASM instance by disk group.
In a Database: Not used in a database instance.
V$ASM_OPERATION
In an ASM Instance: Displays each long running operation occurring on the ASM instance.
In a Database: Not used in a database instance
V$ASM_CLIENT
In an ASM Instance: Displays each database that is using at least one disk group managed by the ASM instance.
In a Database: Not used in a database instance.

Saturday, March 30, 2013

Basic of raids must know

Every article that i posted related to dba only, here is a diversion .Here i am giving a good notes about RAID. As we are using raids in different purpose in IT industry , a dba should know atleast the basic functioning of RAID.Hope it will helps to somebody. :)

A Redundant Array of Independent Drives (or Disks), also known as Redundant Array of  Inexpensive Drives (or Disks) (RAID) is an term for data storage schemes that divide and/or replicate data among multiple hard drives. RAID can be designed to provide increased data reliability or increased I/O performance, though one goal may compromise the other. Raid provide fault tolerance by stripping , mirroring or parity .

RAID can be implemented on a hardware or software level. On a hardware level, you can have hard disks connected to a RAID hardware controller, usually a special PC card. Your operating system then accesses storage through the RAID hardware controller. Alternatively, you can implement RAID as a software controller,IN a software RAID controller ,special program manage access to hard disks treated as RAID devices. The software version lets you use IDE hard disks as RAID disks. Linux uses the MD driver, supported in the 2.4 kernel, to implement a software RAID controller. Linux software RAID supports five levels (linear, 0, 1, 4, 5, and 6), whereas hardware RAID supports many more. Hardware RAID levels, such as 7–10, provide combinations of greater performance and reliability. Before you can use RAID on your system, make sure the RAID levels you want to use. If not, you will have for the kernel. Check the Multi-Driver Support component specify support for any or all of the RAID levels.

Note: we will get redundancy only when parity or mirroring  is present on RAID.

Commonly used RAID levels for UNIX / Linux and Windows server
RAID 0 (Striping)
This level is achieved by grouping 2 or more hard disks into a single unit with the total size equaling that of all disks used. Practical example: 3 disks, each 80GB in size can be used in a 240GB RAID 0 configuration. You can also use disk having different sizes.
RAID 0 works by breaking data into fragments and writing to all disk simultaneously. Read and write operations are improved as compared to single disk system, since the load is shared across many channel and are done in parallel on the disks.On the other hand, no single disk contains the entire information for any bit of data committed. This means that if one of the disks fails, the entire RAID is rendered inoperable, with unrecoverable loss of data.
However since there is no redundancy, it doesn't provide fault tolerance. If even one drive fails, data across the drive array will be lost.
RAID 0 is suitable for non-critical operations that require good performance, like the system partition or the /tmp partition where lots of temporary data is constantly written. It is not suitable for data storage.

Suggested application:- Video Production and Editing , Image Editing etc

RAID 1 (Mirroring

This level is achieved by grouping 2 or more hard disks into a single unit with the total size equaling that of the smallest of disks used. This is because RAID 1 keeps every bit of data replicated on each of its devices in the exactly same fashion, create identical clones. Hence the name, mirroring. Practical example: 2 disks, each 80GB in size can be used in a 80GB RAID 1 configuration.
Because of its configuration, RAID 1 reduced write performance, as every chunk of data 
has to be written n times, on each of the paired devices. The read performance is identical to single disks. Redundancy is improved, as the normal operation of the system can be maintained as long as any one disk is functional. Of Course, the disks must be of equal size. If one disk is larger than another, your RAID device will be the size of the smallest disk.
If there are spare disks available, and if the system survived the crash, reconstruction of the mirror will immediately begin on one of the spare disks, after detection of the drive fault.
RAID 1 is suitable for data storage, especially with non-intensive I/O tasks.

RAID4   (striping with parity) 
This RAID level is not used very often. It can be used on three or more disks. Instead of completely mirroring the information, it keeps parity information on one drive, and writes data to the other disks in a RAID-0 like way .If one of the data drives in array fails, the parity information can be used to reconstruct all data. However if more than one disks fail, whole of the data is lost.
The reason this level is not more frequently used, is because the parity information is kept on one drive. This information must be updated every time one of the other disks are written to. Thus, the parity disk will become a bottleneck, if it is not a lot faster than the other disks. However, if you just happen to have a lot of slow disks and a very fast one, this RAID level can be very useful.

RAID 5 (Stripping with distributed parity)

Raid 5 support both striping as well as redundancy in terms of parity. RAID 5 improves on RAID 4 by striping the parity data between all the disks in the RAID set. RAID-5 can be used on three or more disks, with zero or more spare-disks.

This is a more complex solution, with a minimum of three devices used. If one of the RAID 0 devices malfunctions, the array will continue operating, using the parity device as a backup. If spare disks are available, reconstruction will begin immediately after the device failure. If two disks fail simultaneously, all data are lost.Like raid 4 RAID-5 can survive one disk failure, but not two or more.

RAID 5 improves the write performance than raid 4, as well as redundancy and is useful in mission-critical scenarios, where both good throughput and data integrity are important.


In this configuration 25% of the combined dik space is used to store the parity information
And around 75% of the total disk capacity is available for use.

Linear RAID
This is a less common level, although fully usable. Linear is similar to RAID 0, except that data is written sequentially rather than in parallel. Linear RAID is a simple grouping of several devices into a larger volume, the total size of which is the sum of all members. For instance, three disks the sizes of 40, 60 and 250GB can be grouped into a linear RAID the total size of 350GB. 
Linear RAID provides no read/write performance, not does it provide redundancy; a loss of any member will render the entire array unusable. It merely increases size. It's very similar to LVM. Linear RAID is suitable when large data exceeding the individual size of any disk or partition must be used. 

RAID6
RAID-6 is an extension of RAID-5 to provide additional fault tolerance by using dual distributed parity schemes. Dual parity scheme helps survive two disk failures at a time without data loss. It extends RAID 5 by adding an additional parity block, thus it uses block-level striping with two parity blocks distributed across all member disks.  The read performance is same as RAID 5. However, its write performance is poorer than RAID 5 due to overhead associated with the additional parity calculations. But it does better than RAID 5 on file data protection because RAID 6 provides protection against double disk failures and failures while a single disk is rebuilding. RAID 5 fails to do so.






RAID 10 
RAID 10 or RAID 1+0 - Combination of RAID 0 (data striping) and RAID 1 (mirroring). 

  • RAID 10 is also called as RAID 1+0
  • It is also called as “stripe of mirrors”
  • It requires minimum of 4 disks
  • To understand this better, group the disks in pair of two (for mirror). For example, if you have a total of 6 disks in RAID 10, there will be three groups–Group 1, Group 2, Group 3 as shown in the above diagram.
  • Within the group, the data is mirrored. In the above example, Disk 1 and Disk 2 belongs to Group 1. The data on Disk 1 will be exactly same as the data on Disk 2. So, block A written on Disk 1 will be mirroed on Disk 2. Block B written on Disk 3 will be mirrored on Disk 4.
  • Across the group, the data is striped. i.e Block A is written to Group 1, Block B is written to Group 2, Block C is written to Group 3.
  • This is why it is called “stripe of mirrors”. i.e the disks within the group are mirrored. But, the groups themselves are striped.  
RAID 01
  • RAID 01 is also called as RAID 0+1
  • It is also called as “mirror of stripes”
  • It requires minimum of 3 disks. But in most cases this will be implemented as minimum of 4 disks.
  • To understand this better, create two groups. For example, if you have total of 6 disks, create two groups with 3 disks each as shown below. In the above example, Group 1 has 3 disks and Group 2 has 3 disks.
  • Within the group, the data is striped. i.e In the Group 1 which contains three disks, the 1st block will be written to 1st disk, 2nd block to 2nd disk, and the 3rd block to 3rd disk. So, block A is written to Disk 1, block B to Disk 2, block C to Disk 3.
  • Across the group, the data is mirrored. i.e The Group 1 and Group 2 will look exactly the same. i.e Disk 1 is mirrored to Disk 4, Disk 2 to Disk 5, Disk 3 to Disk 6.
  • This is why it is called “mirror of stripes”. i.e the disks within the groups are striped. But, the groups are mirrored.
Main difference between RAID 10 vs RAID 01
  • Performance on both RAID 10 and RAID 01 will be the same.
  • The storage capacity on these will be the same.
  • The main difference is the fault tolerance level. On most implememntations of RAID controllers, RAID 01 fault tolerance is less. On RAID 01, since we have only two groups of RAID 0, if two drives (one in each group) fails, the entire RAID 01 will fail. In the above RAID 01 diagram, if Disk 1 and Disk 4 fails, both the groups will be down. So, the whole RAID 01 will fail.
  • RAID 10 fault tolerance is more. On RAID 10, since there are many groups (as the individual group is only two disks), even if three disks fails (one in each group), the RAID 10 is still functional. In the above RAID 10 example, even if Disk 1, Disk 3, Disk 5 fails, the RAID 10 will still be functional.
  • So, given a choice between RAID 10 and RAID 01, always choose RAID 10.
Before You start 

Specially built hardware-based RAID disk controllers are available for both IDE and SCSI drives. They usually have their own BIOS, so you can configure them right after your system's the power on self test (POST). Hardware-based RAID is transparent to your operating system; the hardware does all the work. 
If hardware RAID isn't available, then you should be aware of these basic guidelines to follow when setting up software RAID. 

IDE Drives
To save costs, many small business systems will probably use IDE disks, but they do have some limitations.
  • The total length of an IDE cable can be only a few feet long, which generally limits IDE drives to small home systems.
  • IDE drives do not hot swap. You cannot replace them while your system is running.
  • Only two devices can be attached per controller.
  • The performance of the IDE bus can be degraded by the presence of a second device on the cable.
  • The failure of one drive on an IDE bus often causes the malfunctioning of the second device. This can be fatal if you have two IDE drives of the same RAID set attached to the same cable.
For these reasons, I recommend you use only one IDE drive per controller when using RAID, especially in a corporate environment.

Serial ATA Drives
Serial ATA type drives are rapidly replacing IDE drives as the preferred entry level disk storage option because of a number of advantages:
  • The drive data cable can be as long as 1 meter in length versus IDE's 18 inches.
  • Serial ATA has better error checking than IDE.
  • There is only one drive per cable which makes hot swapping, or the capability to replace components while the system is still running, possible without the fear of affecting other devices on the data cable.
  • There are no jumpers to set on Serial ATA drives to make it a master or slave which makes them simpler to configure.
  • IDE drives have a 133Mbytes/s data rate whereas the Serial ATA specification starts at 150 Mbytes/sec with a goal of reaching 600 Mbytes/s over the expected ten year life of the specification.
If you can't afford more expensive and faster SCSI drives, Serial ATA would be the preferred device for software and hardware RAID

SCSI Drives
SCSI hard disks have a number of features that make them more attractive for RAID use than either IDE or Serial ATA drives.
  • SCSI controllers are more tolerant of disk failures. The failure of a single drive is less likely to disrupt the remaining drives on the bus.
  • SCSI cables can be up to 25 meters long, making them suitable for data center applications.
  • Much more than two devices may be connected to a SCSI cable bus. It can accommodate 7 (single-ended SCSI) or 15 (all other SCSI types) devices.
  • Some models of SCSI devices support "hot swapping" which allows you to replace them while the system is running.
  • SCSI currently supports data rates of up to 640 Mbytes/s making them highly desirable for installations where rapid data access is imperative.

Thursday, March 28, 2013

Automatic Storage Management (ASM) lessons 1
Automatic Storage Management (ASM) provides a centralized way to manage Oracle Database disk storage.ASM is somewhat like a logical volume manager, allowing you to reduce the management of Oracle files into ASM disk groups. It also provides redundancy configurations, rebalancing operations, and, when installed on top of clusterware, the ability to share database-related files.

Here are some features of ASM:
  • Automatic software data striping (RAID-0)
  • Load balancing across physical disks 
  • Software RAID-1 data redundancy with double or triple mirrors 
  • Elimination of fragmentation 
  • Simplification of file management via support for Oracle Managed Files (OMF) 
  • Ease of maintenance

Creating the ASM Instance
1. Creating the ASM Instance with the DBCA:- 
Before going with dbca we need to install CSS service .  ASM cannot be used until Oracle CSS service is started.
C:\Windows\system32>localconfig add
Step 1:  creating new OCR repository
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'admin', privgrp ''..
Operation successful.
Step 2:  creating new CSS service
successfully created local CSS service
successfully added CSS to home
C:\Windows\system32>

To create the ASM instance with the DBCA, do the following:
1. Start the Oracle DBCA.
2. The DBCA presents a list of options for you to choose from. Select Configure Automatic
Storage Management and click Next.
3. The DBCA then prompts you for the SYS password for the new ASM instance to be
created. Enter the password for the SYS account.
4. Oracle then creates the ASM instance. A new window appears giving you the option
to create new disk groups. You can choose to create disk groups (we will cover that
shortly) or you can click Finish to complete the ASM instillation.
5. The name of the resulting instance will be +ASM. You can log into the ASM instance
from SQL*Plus, as shown in this example:

C:\Windows\system32>sqlplus
SQL*Plus: Release 10.2.0.4.0 - Production on Tue Mar 26 12:06:14 2013
Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
Enter user-name: sys as sysdba
Enter password:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
+asm

SQL>

In 11g we will use sys as sysasm for connecting to asm instance.

Creating the ASM Instance Manually
Manual creation of an ASM instance is fairly straightforward. If you have ever manually
created a database, then manually creating an ASM instance should be easy for you. To
manually create an ASM instance, you would follow these steps:
1. Create directories for the ASM instance.
2. Create the instance parameter file.
3. Perform any Microsoft Windows–specific configuration.
4. Start the ASM instance.
5. Create the ASM server parameter file (spfile).
Let’s look at each of these steps in a bit more detail

The following steps can be used to create a fully functional ASM instance named +ASM. The node I am using in this example also has a regular 10g database running named TESTDB. These steps should all be carried out by the oracle UNIX user account:
  1. Create Admin DirectoriesWe start by creating the admin directories from the ORACLE_BASE. The admin directories for the existing database on this node, (TESTDB), is located at $ORACLE_BASE/admin/TESTDB. The new +ASM admin directories will be created alongside the TESTDB database:
    UNIX
    mkdir -p $ORACLE_BASE/admin/+ASM/bdump
    mkdir -p $ORACLE_BASE/admin/+ASM/cdump
    mkdir -p $ORACLE_BASE/admin/+ASM/hdump
    mkdir -p $ORACLE_BASE/admin/+ASM/pfile
    mkdir -p $ORACLE_BASE/admin/+ASM/udump
    Microsoft Windows
    mkdir %ORACLE_BASE%\admin\+ASM\bdump
    mkdir %ORACLE_BASE%\admin\+ASM\cdump
    mkdir %ORACLE_BASE%\admin\+ASM\hdump
    mkdir %ORACLE_BASE%\admin\+ASM\pfile
    mkdir %ORACLE_BASE%\admin\+ASM\udump
  2. Create Instance Parameter FileIn this step, we will manually create an instance parameter file for the ASM instance. This is actually an easy task as most of the parameters that are used for a normal instance are not used for an ASM instance. Note that you should be fine by accepting the default size for the database buffer cache, shared pool, and many of the other SGA memory sructures. The only exception is the large pool. I like to manually set this value to at least 12MB. In most cases, the SGA memory footprint is less then 100MB. Let's start by creating the file init.ora and placing that file in$ORACLE_BASE/admin/+ASM/pfile. The initial parameters to use for the file are:
    UNIX
    $ORACLE_BASE/admin/+ASM/pfile/init.ora
    ###########################################
    # Automatic Storage Management
    ###########################################
    # _asm_allow_only_raw_disks=false
    # asm_diskgroups='TESTDB_DATA1'
    
    # Default asm_diskstring values for supported platforms:
    #     Solaris (32/64 bit)   /dev/rdsk/*
    #     Windows NT/XP         \\.\orcldisk*
    #     Linux (32/64 bit)     /dev/raw/*
    #     HPUX                  /dev/rdsk/*
    #     HPUX(Tru 64)          /dev/rdisk/*
    #     AIX                   /dev/rhdisk/*
    # asm_diskstring=''
    
    ###########################################
    # Diagnostics and Statistics
    ###########################################
    background_dump_dest=/u01/app/oracle/admin/+ASM/bdump
    core_dump_dest=/u01/app/oracle/admin/+ASM/cdump
    user_dump_dest=/u01/app/oracle/admin/+ASM/udump
    
    ###########################################
    # Miscellaneous
    ###########################################
    instance_type=asm
    compatible=10.1.0.4.0
    
    ###########################################
    # Pools
    ###########################################
    large_pool_size=12M
    
    ###########################################
    # Security and Auditing
    ###########################################
    remote_login_passwordfile=exclusive
    Microsoft Windows
    %ORACLE_BASE%\admin\+ASM\pfile\init.ora
    ###########################################
    # Automatic Storage Management
    ###########################################
    # _asm_allow_only_raw_disks=false
    # asm_diskgroups='TESTDB_DATA1'
    
    # Default asm_diskstring values for supported platforms:
    #     Solaris (32/64 bit)   /dev/rdsk/*
    #     Windows NT/XP         \\.\orcldisk*
    #     Linux (32/64 bit)     /dev/raw/*
    #     HPUX                  /dev/rdsk/*
    #     HPUX(Tru 64)          /dev/rdisk/*
    #     AIX                   /dev/rhdisk/*
    # asm_diskstring=''
    
    ###########################################
    # Diagnostics and Statistics
    ###########################################
    background_dump_dest=C:\oracle\product\10.1.0\admin\+ASM\bdump
    core_dump_dest=C:\oracle\product\10.1.0\admin\+ASM\cdump
    user_dump_dest=C:\oracle\product\10.1.0\admin\+ASM\udump
    
    ###########################################
    # Miscellaneous
    ###########################################
    instance_type=asm
    compatible=10.1.0.4.0
    
    ###########################################
    # Pools
    ###########################################
    large_pool_size=12M
    
    ###########################################
    # Security and Auditing
    ###########################################
    remote_login_passwordfile=exclusive

    After creating the $ORACLE_BASE/admin/+ASM/pfile/init.ora file, UNIX users should create the following symbolic link:
    $ ln -s $ORACLE_BASE/admin/+ASM/pfile/init.ora $ORACLE_HOME/dbs/init+ASM.ora


Identify RAW Devices
Before starting the ASM instance, we should identify the RAW device(s) (UNIX) or logical drives (Windows) that will be used as ASM disks. For the purpose of this article, I have four RAW devices setup on Linux:
# ls -l /dev/raw/raw[1234]
crw-rw----  1 oracle dba 162, 1 Jun  2 22:04 /dev/raw/raw1
crw-rw----  1 oracle dba 162, 2 Jun  2 22:04 /dev/raw/raw2
crw-rw----  1 oracle dba 162, 3 Jun  2 22:04 /dev/raw/raw3
crw-rw----  1 oracle dba 162, 4 Jun  2 22:04 /dev/raw/raw4

   Attention Linux Users!This article does not use Oracle's ASMLib I/O libraries. If you plan on using Oracle's ASMLib, you will need to install and configure ASMLib, as well as mark all disks using:
/etc/init.d/oracleasm createdisk <ASM_VOLUME_NAME> <LINUX_DEV_DEVICE>
. For more information on using Oracle ASMLib, see "Installing Oracle10g Release 1 (10.1.0) on Linux - (RHEL 4)".


   Attention Windows Users!A task that must to be performed for Microsoft Windows users is to tag the logical drives that you will want to use for ASM storage. This is done using a new utility that is included with Oracle Database 10g called asmtool. This tool can be run either before or after creating the ASM instance. asmtool is responsible for initializing the drive headers and marks drives for use by ASM. This really assists in reducing the risk of overwriting a usable drive that is being used for normal operating system files.


Starting the ASM Instance
Once the instance parameter file is in place, it is time to start the ASM instance. It is important to note that an ASM instance never mounts an actual database. The ASM instance is responsible for mounting and managing disk groups.
   Attention Windows Users!If you are running in Microsoft Windows, you will need to manually create a new Windows service to run the new instance. This is done using the ORADIM utility which allows you to create both the instance and the service in one command.

UNIX

# su - oracle
$ ORACLE_SID=+ASM; export ORACLE_SID
$ sqlplus "/ as sysdba"

SQL> startup
ASM instance started
Total System Global Area   75497472 bytes
Fixed Size                   777852 bytes
Variable Size              74719620 bytes
Database Buffers                  0 bytes
Redo Buffers                      0 bytes
ORA-15110: no diskgroups mounted

SQL> create spfile from pfile='/u01/app/oracle/admin/+ASM/pfile/init.ora';

SQL> shutdown
ASM instance shutdown

SQL> startup
ASM instance started
Microsoft Windows
C:\> oradim -new -asmsid +ASM -syspwd change_on_install 
    -pfile C:\oracle\product\10.1.0\admin\+ASM\pfile\init.ora -spfile 
    -startmode manual -shutmode immediate
Instance created.
C:\> oradim -edit -asmsid +ASM -startmode a
C:\> set oracle_sid=+ASM
C:\> sqlplus "/ as sysdba"

SQL> startup pfile='C:\oracle\product\10.1.0\admin\+ASM\pfile\init.ora';
ASM instance started
Total System Global Area    125829120 bytes
Fixed Size                    769268 bytes
Variable Size               125059852 bytes
Database Buffers                   0 bytes
Redo Buffers                       0 bytes
ORA-15110: no diskgroups mounted 

SQL> create spfile from pfile='C:\oracle\product\10.1.0\admin\+ASM\pfile\init.ora';
File created.
SQL> shutdown
ASM instance shutdown
SQL> startup
ASM instance started
You will notice when starting the ASM instance, we received the error:
ORA-15110: no diskgroups mounted
This error can be safely ignored.Notice also that we created a server parameter file (SPFILE) for the ASM instance. This allows Oracle to automatically record new disk group names in the asm_diskgroups instance parameter, so that those disk groups can be automatically mounted whenever the ASM instance is started.
Now that the ASM instance is started, all other Oracle database instances running on the same node will be able to find it.
Note the following Oracle parameters that are specific to ASM instances,
INSTANCE_TYPE  : Used only with an ASM instance, this parameter indicated to Oracle
that this is an ASM instance. The default value is RDBMS, which indicates the instance is
an Oracle database instance. This parameter is not dynamic and is the only mandatory
parameter in an ASM instance.
ASM_DISKSTRING  : This parameter indicates where Oracle should search for disk devices
to be used by ASM. We will discuss this parameter in more detail later in this section.
This parameter can be dynamically changed.
ASM_DISKGROUPS  : This parameter lists ASM disk groups that ASM should mount when
it is started. You can also use the alter diskgroup all mount command to cause
these disk groups to be mounted. This parameter can be dynamically changed.
ASM_POWER_LIMIT  : This parameter controls the rate at which ASM can rebalance disks by
increasing or decreasing the degree of parallelism used. Lower values will slow rebalancing
but will also result in less of an IO impact by those operations. Higher values may
speed up rebalancing by parallelizing the rebalance operation. The default is 1, and this
is typically sufficient. This parameter can be set dynamically.