Simulating ASM with 10g Database by faking the hardware

Pankaj Chandiramani's picture
articles: 

Caution: This method is for Testing & Learning purposes only.

Most of the Oracle 10g databases are using ASM for storage as it's very simple to maintain the storage w.r.t. to Disks, Datafiles etc.

You can get most of the ASM details & implementation details from OTN here: http://www.oracle.com/technology/asm/index.html

When I started to learn ASM, the real difficult part was to get a test hardware to play with, I looked are to find ways to simulate the asm env & have documented the procedure as below:

Simulating Asm by faking hardware:
1. Faking Hardware
2. Installing ASM Lib
3. Configuring the disks
4. Install DB & ASM instance

Faking Hardware:

Step 1) Here we create 4 zero-filed files using the DD comand

As "root" run the following commands, this will create 4 files of 2Gb each.

mkdir /asmdisk
dd if=/dev/zero of=/asmdisk/disk1 bs=1024k count=2000
dd if=/dev/zero of=/asmdisk/disk2 bs=1024k count=2000
dd if=/dev/zero of=/asmdisk/disk3 bs=1024k count=2000
dd if=/dev/zero of=/asmdisk/disk4 bs=1024k count=2000

Step 2) Use the loopback device to assign these disks.

/sbin/losetup /dev/loop1 /asmdisk/disk1
/sbin/losetup /dev/loop2 /asmdisk/disk2
/sbin/losetup /dev/loop3 /asmdisk/disk3
/sbin/losetup /dev/loop4 /asmdisk/disk4

Now we need to configure entries to the file "/etc/rc.local" so that these divices are re-initialised on reboot also.

Add the following entries to the file "/etc/rc.local"

/sbin/losetup /dev/loop1 /asmdisk/disk1
/sbin/losetup /dev/loop2 /asmdisk/disk2
/sbin/losetup /dev/loop3 /asmdisk/disk3
/sbin/losetup /dev/loop4 /asmdisk/disk4
/etc/init.d/oracleasm createdisk ASM1 /dev/loop1
/etc/init.d/oracleasm createdisk ASM2 /dev/loop2
/etc/init.d/oracleasm createdisk ASM3 /dev/loop3
/etc/init.d/oracleasm createdisk ASM4 /dev/loop4

Instaling ASM Lib

ASMLib is a support library for the Automatic Storage Management feature of Oracle Database 10g. ASMLib allows an Oracle Database using ASM more efficient and capable access to the disk groups it is using. ASMlib are provided by Oracle from below link : http://www.oracle.com/technology/tech/linux/asmlib/index.html

Please download the Lib files according to your OS & kernel version.

[root@csstage root]# uname -r
2.4.21-27.EL

It gives 3 rpms for download as per the version , pls install then using below command

[root@csstage asm]# rpm –ivh *.rpm

After this completes we go to next step of configuring the disks.

Configuring the ASM Lib & disks

Now we need to use the ASM Lib, configure it & configure the disks accordingly.

[root@csstage root]# /etc/init.d/oracleasm configure

Configuring the Oracle ASM library driver:

This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting without typing an answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: oinstall
Start Oracle ASM library driver on boot (y/n) [n]: y
Fix permissions of Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration:           [  OK  ]
Creating /dev/oracleasm mount point:                       [  OK  ]
Loading module "oracleasm":                                [  OK  ]
Mounting ASMlib driver filesystem:                         [  OK  ]
Scanning system for ASM disks:                             [  OK  ]

Now as the ASM Lib are configured, we will configure the disks:

[root@csstage root]# /etc/init.d/oracleasm createdisk ASM1 /dev/loop1
Marking disk "/dev/loop1" as an ASM disk:                  [  OK  ]

[root@csstage root]# /etc/init.d/oracleasm createdisk ASM2 /dev/loop2
Marking disk "/dev/loop2" as an ASM disk:                  [  OK  ]

[root@csstage root]# /etc/init.d/oracleasm createdisk ASM3 /dev/loop3
Marking disk "/dev/loop3" as an ASM disk:                  [  OK  ]

[root@csstage root]# /etc/init.d/oracleasm createdisk ASM4 /dev/loop4
Marking disk "/dev/loop4" as an ASM disk:                  [  OK  ]

So, now our hardware is all set to go & we need to install 10g database on the server using the above disks.

Install DB & ASM instance

Now we install the Database with ASM option

Create the ASM Instance
ASM runs as a separate Oracle instance, which can be created and configured using OUI. Now that ASMLib is installed and the disks are marked for use, you can create an ASM instance.
Log in as oracle and start runInstaller:

$ ./runInstaller

1. Select Installation Method
- Select Advanced Installation
- Click on Next

2. Specify Inventory Directory and Credentials
- Inventory Directory: /u01/app/oracle/oraInventory
- Operating System group name: oinstall
- Click on Next

3. Select Installation Type
- Select Enterprise Edition
- Click on Next

4. Specify Home Details
- Name: Ora10gAsm
- Path: /u01/app/oracle/product/10.2.0/asm

Note:Oracle recommends using a different ORACLE_HOME for ASM than the ORACLE_HOME used for the database for ease of administration.

- Click on Next

5. Product-specific Prerequisite Checks
- If you've been following the steps in this guide, all the checks should pass without difficulty. If one or more checks fail, correct the problem before proceeding.
- Click on Next

6. Select Configuration Option
- Select Configure Automatic Storage Management (ASM)
- Enter the ASM SYS password and confirm
- Click on Next

7. Configure Automatic Storage Management
Disk Group Name: DATA
- Redundancy
-- High mirrors data twice.
-- Normal mirrors data once. This is the default.
-- External does not mirror data within ASM. This is typically used if an external RAID array is providing redundancy.
- Add Disks
The disks you configured for use with ASMLib are listed as Candidate Disks. Select each disk you wish to include in the disk group.
- Click on Next

8. Summary
- A summary of the products being installed is presented.
- Click on Install.

9. Execute Configuration Scripts
- At the end of the installation, a pop up window will appear indicating scripts that need to be run as root. Login as root and run the indicated scripts.
- Click on OK when finished.

10. Configuration Assistants
- The Oracle Net, Oracle Database, and iSQL*Plus configuration assistants will run automatically

11. End of Installation
- Make note of the URLs presented in the summary, and click on Exit when ready.

12. Congratulations! Your new Oracle ASM Instance is up and ready for use.

Create the Database:

Once the ASM instance has been created, create a database that uses ASM for storage:

Log in as oracle and start runInstaller:
$ ./runInstaller

1. Select Installation Method
- Select Advanced Installation
- Click on Next

2. Select Installation Type
- Select Enterprise Edition
- Click on Next

3. Specify Home Details
- Name: OraDb10g
- Path: /u01/app/oracle/product/10.2.0/db
Note:Oracle recommends using a different ORACLE_HOME for the database than the ORACLE_HOME used for ASM.
- Click on Next

4. Product-specific Prerequisite Checks
- If you've been following the steps in this guide, all the checks should pass without difficulty. If one or more checks fail, correct the problem before proceeding.
- Click on Next

5. Select Configuration Option
- Select Create a Database
- Click on Next

6. Select Database Configuration
- Select General Purpose
- Click on Next

7. Specify Database Configuration Options
- Database Naming: Enter the Global Database Name and SID
- Database Character Set: Accept the default
- Database Examples: Select Create database with sample schemas
- Click on Next

8. Select Database Management Option
- Select Use Database Control for Database Management
- Click on Next

9. Specify Database Storage Option
- Select Automatic Storage Management (ASM)
- Click on Next

10. Specify Backup and Recovery Options
- Select Do not enable Automated backups
- Click on Next

11. Select ASM Disk Group
- Select the DATA disk group created in the previous section
- Click on Next

12. Specify Database Schema Passwords
- Select Use the same password for all the accounts
- Enter the password and confirm
- Click on Next

13. Summary
- A summary of the products being installed is presented.
- Click on Install.

14. Configuration Assistants
- The Oracle Net, Oracle Database, and iSQL*Plus configuration assistants will run automatically

15. Execute Configuration Scripts
- At the end of the installation, a pop up window will appear indicating scripts that need to be run as root. Login as root and run the indicated scripts.
- Click on OK when finished.

16. End of Installation
- Make note of the URLs presented in the summary, and click on Exit when ready.

17. Congratulations! Your new Oracle Database is up and ready for use.

Note: In between the installation , You might be asked to start CSS Deamon , if you havent already done.
To start the CSS daemon and configure the host to always start the daemon upon reboot, do the following:

1. Log in to the host as root.
2. Ensure that $ORACLE_HOME/bin is in your PATH environment variable.
3. Enter the following command: localconfig add

Start the ASM instance:

$ export ORACLE_SID=+ASM
$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Sep 3 00:28:09 2006
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> startup
ASM instance started
Total System Global Area   83886080 bytes
Fixed Size                  1217836 bytes
Variable Size              57502420 bytes
ASM Cache                  25165824 bytes
ASM diskgroups mounted

SQL> select group_number,disk_number,name,state,mode_status,mount_status,total_mb, from v$asm_disk;

G# D# NAME  STATE    MODE_ST MOUNT_S   TOTAL_MB    
---- ---------- ----------
 1  0 ASM1 NORMAL   ONLINE  CACHED        2000        
 1  1 ASM2 NORMAL   ONLINE  CACHED        2000        
 1  2 ASM3 NORMAL   ONLINE  CACHED        2000        
 1  3 ASM4 NORMAL   ONLINE  CACHED        2000        
 1  4 ASM5 NORMAL   ONLINE  CACHED        2000        
 2  0 ASM6 NORMAL   ONLINE  CACHED        2000        
 2  1 ASM7 NORMAL   ONLINE  CACHED        1000

You can get most of the ASM details & implementation details from OTN at: http://www.oracle.com/technology/asm/index.html

References:

This article is a derivative work based on Laptop ASM on Linux by Howard J. Rogers.

Comments

saibal's picture

This is a nice article and will certainly help people wanting to play around with ASM, perhaps on their laptops. However, I would appreciate if you can write a 'windows version' of this article.
Great work. Keep it up!

Very good article - especially for unix-like systems.

Another good and simply way to test ASM is VMWare virtual machine (or using other virtualization software)

...of this technique is available from http://www.dizwell.com/prod/node/33.

There is also a Linux version that doesn't bother using the ASMLib libraries available at http://www.dizwell.com/prod/node/35

It is well organize and clean procedure for linux platform users. is there any way for you to post the same kind of procedure for window platform users as well.

Thanks

Lamar

Thanks for sharing! Done Great!