Sunteți pe pagina 1din 20

Oracle Automatic Storage Management (ASM)

-------------------------------------- * An Oracle file system, built specifically for database related files.
-- * Can be used for single or multiple instance architecture (RAC).
-(Eliminates the need for third party Clustered File System)
-- * Enables storage solutions such as Striping & Mirroring (for performance & Survivability)
-- * Stripes and Mirrors at file level (as opposed to volume level)
-- Files are striped more efficiently.
-- Mirroring can be enabled for specific files only, at different levels.
-- * Each DB can have both ASM and regular files. (Can also migrate some files to ASM)
-- * ASM can store all Oracle file types. (Not just Data Files).

ASM Advantages
-------------------------------------- 1. it is aware of the nature of Oracle database files. This means it can make
-- more intelligent decisions about how to manage the files than a third-party product.
-- 2. ASM can handle files individually, whereas all other LVMs work at the
-- volume level: they are not aware of the files within the volume. So with a third-party
-- LVM, you have to specify RAID attributes per volume.
-- ASM can specify the attributes per file, so you can for instance have three-way
-- mirroring for your SYSTEM tablespace datafiles but no mirroring at all for your
-- temporary tablespaces tempfiles, all within the same logical volume.

ASM Basic Concepts


------------------------------------------------------------ * Disk Group (DG)
------------------------ * A group of disks which are managed as a single logical unit:
-* If I need to add more space to a DG, I'll add another disk to it.
-* Although we may be constantly adding ASM Files and Disks to a growing system, the
number of Disk Groups to manage remains constant.
-- * ASM files are assigned to a Disk Group, instead of to a specific disk.
-- * All data will be striped and mirrored between the disks of this DG.
-- * DG >-< DB:
-* Each DG can contain files from multiple DBs.
-* Each DB can store his files on different DGs.
-- * Each DG is self describing, and contains all information about his Disks and Files.
CREATE DISKGROUP DG3
'/devices/diskb3' NAME diskb3,
'/devices/diskb4' NAME diskb4
Allocation Unit (AU)
------------------------ *Each datafile is striped to Allocation Units (AU).
-- * AUs are spread evenly across the disks of the Disk Group.
-- * AUs are rebalanced automatically across the disks whenever disks are added or
removed from the DG.
-- * AU size:

---

* 10g: 1MB
* 11g: Determined at DG creation. (1MB, 2, 4, 8, 16, 32, 64MB)

CREATE DISKGROUP DG3


'/devices/diskb3' NAME diskb3,
'/devices/diskb4' NAME diskb4
ATTRIBUTE 'au_size'='4M';
ASM Instance
------------------------ * ASM metadata is managed by a single ASM instance, which can serve many DBs and
Instances.
-- * The instance mounts his DGs instead of a specific database.
-- * Created and configured via the DBCA. ("Configure ASM")
-- * The instances, however, work directly with the ASM files.
Creating a Disk Group
-- (Performed in the ASM instance)
---------------------------------conn /@ASM AS SYSASM
-- See current Disk Groups:
SELECT GROUP_NUMBER, NAME, TOTAL_MB
FROM v$asm_diskgroup;
col path for a50
-- See available disks:
SELECT GROUP_NUMBER "DG#", PATH
FROM v$asm_disk
ORDER BY path;
-- Join:
SELECT GROUP_NUMBER, dg.name, SUM(d.TOTAL_MB) AS "Size", COUNT(*) AS "Disks"
FROM v$asm_diskgroup dg JOIN v$asm_disk d
USING (GROUP_NUMBER)
GROUP BY GROUP_NUMBER, dg.name ;
-- Create a new disk group DG2:
CREATE DISKGROUP DG2
DISK
'\\.\ORCLDISK_LABEL_G' NAME DG2_0,
'\\.\ORCLDISK_LABEL_H' NAME DG2_1 ;
-- See available disks:
SELECT GROUP_NUMBER "DG#", PATH
FROM v$asm_disk
ORDER BY path;
-- DROP DISKGROUP DG2;

Create a tablespace with ASM file


-- (Performed in the DB instance)
------------------------------------conn sys/oracle@orcl as sysdba
CREATE TABLESPACE ASM_TBS
DATAFILE '+DG2/asm_tbs01.dbf' SIZE 100M;
SELECT name FROM v$datafile;
-- DROP TABLESPACE asm_tbs INCLUDING CONTENTS AND DATAFILES;
-- * Stamp candidate disks / change name and creating disk groups can be done
by using ASMCA
-$oracle_grid_home\BIN\asmca.bat
-- * for stamping and name changing :
-SHUTDOWN ASM => stamp/change names => STARTUP ASM
ASM Templates
-------------------------------------- * A template is a collection of file attributes that are applied to the ASM files.
-- It is associated with a Disk Group.
-- * Whenever a file is created the file attributes specific to the template are applied to
-- the files.
-- * For eg., if we want to create a users tablespace that contains data file we use the
-- DATAFILE template.
-- * Default Template: When you create a disk group, Oracle creates system default
template
-- for the disk group.
Select * From V$ASM_TEMPLATE
ASM Striping
-------------------------------------- * ASM stripes the file to AUs, and devides them between the DG disks.
-- * Two types of striping:
-1. Coarse-based striping:
-- Each stripe size is one AU.
-- Classic striping. Suitable for most file types.
-- Used for load balancing.
-2. Fine-Grained striping
-- Each stripe size is 128KB. (Wider distribution of data)
-- Used for decreasing IO Latency (Waiting for IO).
-- Suitable for small IO operations such as Redo Log Files.
ALTER DISKGROUP DG2
ATTRIBUTE 'template.tname.stripe' = 'COARSE',
'template.tname.redundancy' = 'MIRROR';
ALTER DISKGROUP dg2 MODIFY TEMPLATE ONLINELOG

ATTRIBUTES (FINE);
ALTER DISKGROUP dg2 MODIFY TEMPLATE DATAFILE
ATTRIBUTES (COARSE);
Select * From V$ASM_TEMPLATE
WHERE name = ('DATAFILE', 'ONLINELOG')
AND group_number = 2
Disk Group Dynamic Rebalancing
-------------------------------------- * ASM performs automatic rebalancing online whenever we add / remove disks from a
DG.
-- * ASM_POWER_LIMIT:
-- - Controls IO overhead during rebalancing.
-- - Values are between 1 and 11. (Minimum overhead (1) .. Minumum time (11))
-- - The higher the limit, the faster rebalancing will complete.
-- - Lower values will take longer, but consume fewer processing and I/O resources.
show parameter ASM_POWER_LIMIT
ASM Mirroring & Failure Groups
-------------------------------------- * ASM can protect our files from media failures (disk / disk-controller crash)
--- * Mirroring:
-- - Applied at Extent (AU) level (Not at file or disk level).
-- - When an AU is allocated to a file on a specific disk,
-a mirrored AU is also allocated on another disk in the SAME Disk Group.
-- - Therefore, if a disk is lost, we can restore its contents
-from other disks on its Disk Group.
-- * Failure Group:
-- - A failure group is a subset of the disks in a disk group,
-which could fail at the same time because they share hardware.
-(For example, disks that share the same disk controller)
-- - By default, each ASM disk belongs to his own Failure Group (FG).
-- - However, we can group a few disks in a DG to a single Failure Group.
-- - When an AU is allocated on a FG disk, a mirrored AU is also allocated
-on ANOTHER Failure Group in the SAME Disk Group.
-- - Therefore, if a Failure Group is lost, we can restore its contents
-from other disks on its Disk Group.
-- * types or mirroring:
-1. External Redundancy - No mirroring or FGs. (When using an external tool for -protection).
-2. Normal Redundancy - Two-way mirroring. (Two copies)
-3. High Redundancy
- Triple-mirroring. (Three copies)
DROP DISKGROUP DG2 INCLUDING CONTENTS;

-- A protected disk group:


CREATE DISKGROUP DG2
NORMAL REDUNDANCY
DISK
'//./ORCLDISKDATA3' NAME DG2_0,
'//./ORCLDISKDATA4' NAME DG2_1,
'//./ORCLDISKDATA5' NAME DG2_2,
'//./ORCLDISKDATA6';
col
col
col
col

name for a10


failgroup for a11
path for a20
redundancy for a10

SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP, PATH, OS_MB,


TOTAL_MB, FREE_MB
FROM v$asm_disk;
DROP DISKGROUP DG2 INCLUDING CONTENTS;
-- A Disk Group with 2 Failure Groups (one for each controller):
CREATE DISKGROUP DG2
NORMAL REDUNDANCY
FAILGROUP controller1 DISK
'//./ORCLDISKDATA3' NAME DG2_0,
'//./ORCLDISKDATA4' NAME DG2_1
FAILGROUP controller2 DISK
'//./ORCLDISKDATA5' NAME DG2_2,
'//./ORCLDISKDATA6' NAME DG2_3;
col
col
col
col

name for a10


failgroup for a11
path for a20
redundancy for a10

SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP, PATH, OS_MB,


TOTAL_MB, FREE_MB
FROM v$asm_disk;

ASM Instance Management


-------------------------------------------------------------------------- ASM initialization parameters
-------------------------------------- * Important ASM related Parameters:
-- - INSTANCE_TYPE : should be set to ASM. This is the only parameter that MUST be
-defined.
-- - ASM_DISKGROUPS : List of disk groups to be mounted at startup.
-(Or during ALTER DISKGROUP ALL MOUNT)
-- - ASM_POWER_LIMIT: The speed for a rebalance operation (1-11. default is 1).
-- * Additional parameters can be set...

-------------------------------------- ASM Shutdown / Startup


-------------------------------------------------- STARTUP
-------------- * The options for the STARTUP command are:
-- - NOMOUNT - Starts the ASM instance without mounting any disk groups.
-- - MOUNT - Starts the ASM instance and mounts the disk groups specified
-by the ASM_DISKGROUPS parameter.
-- - FORCE - Performs a SHUTDOWN ABORT before restarting the ASM instance.
-- - OPEN - Not a valid option.
-- - RESTRICT- DB instances cannot use the DGs. (Used for maintenance)
-- * If the ASM_DISKGROUPS parameter is empty, no DGs are mounted.
-- (Can be mounted manually using ALTER DISKGROUP...MOUNT)
-------------- SHUTDOWN
-------------- * ASM instance shutdown is possible only after shutting down all instances connected to it
-(Otherwise: ORA-15097: cannot SHUTDOWN ASM instance with connected RDBMS
instance)
-- * The options for the SHUTDOWN command are:
-- - NORMAL - Waits for all connections to finish (DB instances & SQL sessions)
-- - TRANSACTIONAL - Waits for any active transactions to complete. (Doesn't wait for
sessions)
-- - IMMEDIATE - Same as TRANSACTIONAL.
-- - ABORT
- The ASM instance shuts down instantly (Crash).
-- * Shutdown ABORT will require crash recovery upon next startup:
-- - All connected instances will also shutdown.
-(ORA-15064: communication failure with ASM instance)
-- - Each DG has log files for recovery of ASM metadata.
-- - Actual data is recovered using the DB Redo Logs.
------------------------------- ASM Instance Architecture
----------------------------------------------- MEMORY
------------------ * SGA:
-- - Shared Pool: Used for metadata information
-- - Large Pool : Used for parallel operations
-- - ASM Cache : Used for data blocks during rebalance operations
-- - Free Memory: Unallocated memory available
-- * Minimum recommended size is 256 MB. (Depends on the used disk space size)
-- * AMM (Automatic memory management) is enabled by default.

------------------------------- Background Processes


----------------------------------------------------- In the ASM instance
------------------------ * The ASM instance contains some special ASM background processes:
-- - RBAL - Manages the Rebalancing process across the DG.
-- - ARBn - Perform the actual relocation of the AU during rebalancing.
-- - GMON - (Group Monitor) - Disk-level activities (Offline, Drop etc).
-- - MARK - Marks ASM allocation units as stale when needed
-- - Onnn - pool of connections to the ASM instance for exchanging messages
------------------------ In the DB instance
------------------------ * In addition, each regular instance that uses ASM has some special background
processes:
-- - ASMB - Connects to the ASM instance at startup, and works with it (Data file
management).
Common ASM V$ Views
--------------------------------------------- V$ASM_FILE - Files of disk groups mounted by the ASM instance.
SELECT file_number, name, ROUND(bytes/1024/1024) SIZE_MB
FROM v$asm_alias JOIN v$asm_file
USING (file_number)
ORDER BY file_number, name;
-- V$ASM_CLIENT - DB instances using the ASM instance.
-(In the DB - ASM instance data if the database has open ASM files)
-- V$ASM_DISK
- List of discovered Disks. (even if not part of any disk
group).
-(In the DB - Disks of DGs used by the database instance).
col name for a10
col failgroup for a11
col path for a20
col redundancy for a10
SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP, PATH
FROM v$asm_disk
ORDER BY path;
-- V$ASM_DISKGROUP - List of discovered disk groups.
-(In the DB - DGs mounted by the local ASM instance)
-- V$ASM_OPERATION - Files with executing long running operations.
-- V$ASM_TEMPLATE - Templates of DGs mounted by the ASM instance.
-- V$ASM_ALIAS

- Aliases that belong to mounted disk groups.

--

- Files with aliases will have 2 rows. (Original & alias)

SELECT file_number, name, CASE ALIAS_DIRECTORY WHEN 'Y' THEN 'Directory' ELSE
'File' END Type
FROM v$asm_alias
ORDER BY type, file_number;
SYSASM
-------------------------------------- * Meant for ASM management. (Separate from SYSDBA for security)
-- * As ASM has no Data Dictionary, users are authenticated via OS or password-file.
-- * SYSOPER, enables basic administration, but not CREATE/ALTER/DROP DGs.
-(Startup/Shutdown, Mount/Dismount, Rebalance, Online/Offline disk, v$ASM_*)
-- * SYSDBA enables all SYSASM privs, but will be limited in the future.
-- * Via OEM (Only if connected via SYSASM):
-- ASM => Users => Create/Edit/Delete
-- (Connecting as SYSASM: Preferences => Preferred Credentials => ASM:Set Credentials
=> Specify...
-- In CMD:
SET ORACLE_SID=+ASM
sqlplus /nolog
conn / as sysasm
SELECT GROUP_NUMBER, NAME, TOTAL_MB
FROM v$asm_diskgroup;
-- Or:
CREATE USER asm_mgr IDENTIFIED BY asm_mgr;
GRANT SYSASM TO asm_mgr;
SELECT * FROM v$pwfile_users;
conn asm_mgr/asm_mgr AS SYSASM

Interaction Between Database Instances and ASM


-------------------------------------- * The Database Instance and ASM Instance work together in a coordinated
fashion.
-- A Database instance must interact with ASM to map database files to ASM
extents.
-- * A Database instance also receives a constant stream of messages relating to
ASM operations
-- (such as disk group rebalancing) that may lock or move ASM extents.
-- * Database I/O is not channeled through the ASM instance. In fact, the database
conducts I/O
-- operations directly against ASM files.

Disk Group Maintenance - SYNTAX...


-------------------------------------- * Should be performed from the ASM instance by a user with a SYSASM privilege.

set oracle_sid=+ASM
sqlplus / as sysasm
col name for a10
col path for a30
SELECT GROUP_NUMBER, NAME, STATE, TYPE, TOTAL_MB
FROM V$ASM_DISKGROUP
ORDER BY 1;
SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP, PATH, OS_MB,
TOTAL_MB, FREE_MB
FROM v$asm_disk;
CREATE DG
------------------------ * We can optionally name and size each disk.
-- (Otherwise a system generated name is given, and ASM determines its size
automatically)
-- * FORCE - Move the disk from another DG to this one.
CREATE DISKGROUP DG2
NORMAL REDUNDANCY
DISK
'//./ORCLDISKDATA3'
'//./ORCLDISKDATA4'
'//./ORCLDISKDATA5'
'//./ORCLDISKDATA6'

NAME
NAME
NAME
NAME

DG2_0,
DG2_1,
DG2_2,
DG2_3;

DROP DG
------------------------ * INCLUDING CONTENTS - Must be specified if it contains files.
-- * The DG must be mounted, and its files inactive.
-- * The header of each disk is formatted, so it will be available
-to other DGs or to the OS.
DROP DISKGROUP DG2 INCLUDING CONTENTS;
Adding disks to a DG
------------------------------ * Disks are added and Rebalaced online while data is fully accessible.
-- * The rebalancing load is determined according to ASM_POWER_LIMIT.
SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP, PATH, OS_MB,
TOTAL_MB, FREE_MB
FROM v$asm_disk

WHERE group_number=0
ORDER BY path;
-- Add two disks to a "DG1":
ALTER DISKGROUP DG1 ADD DISK
'//./ORCLDISKDATA3' NAME DG1_3,
'//./ORCLDISKDATA4' NAME DG2_4;
-- Special discovery characters can be used to add a group of disks.
ALTER DISKGROUP DG1 ADD DISK '//./ORCLDISKDATA*';
ASM DG Compatability
------------------------------- * Determines which Oracle version can run the ASM or work with him.
-- * Determined at Disk Group level.
-- * Two types:
-- 1. RDBMS Compatibility (Compatible.RDBMS)
-- Refers to the regular instances which work with the ASM.
-- The compatability version of the instance must be equal or higher.
-- Determines the format of the massages between the ASM and the regular instance.
-- ASM can operate with instances of different compatability versions.
-- 2. ASM Compatability (Compatible.ASM)
-- The compatability version of the ASM instance (ASM Metadata).
-- Must be greater or equal to the RDBMS comp. of the FG.
------------------------------- ASM DG Attributes
------------------------------- * We can specify DG attributes when creating and altering the DG in the ATTRIBUTE
clause.
-- - AU_SIZE (C)
- Allocation Unit size (1MB ,2, 4, 8, 16, 32, 64MB)
-- - COMPATIBLE.RDBMS (AC) - Minimal Oracle version for the regular instances using the
DG.
-- - COMPATIBLE.ASM (AC) - Minimal Oracle version for the ASM instance mounting the
DG.
-- - DISK_REPAIR_TIME (AC) - Length of time before removing a disk once OFFLINE
-- - TEMPLATE.t-name.REDUNDANCY (A) - Redundancy level of a specifid template.
-(UNPROTECTED / MIRROR / HIGH)
-- - TEMPLATE.t-name.STRIPE (A) - Striping attribute of specified template. (COARSE /
FINE)

ALTER DISKGROUP DG2


ATTRIBUTE 'compatible.asm'='11.1';
-- * We can view all attributes of the DGs in the V$ASM_ATTRIBUTE view.
-- * Via the OEM: Create/Edit DG => Advanced Attributes
col name for a15
col value for a10
SELECT group_number DG#, name, value
FROM v$asm_attribute;

ASM Fast Mirror Resync


--------------------------------- * Reduces the time required to resynchronize failed disk data.
-- * When a disk goes offline due to a failure, his mirrored extents are still available.
-- * ASM tracks the extents that were modified during the outage using a bitmap
-- (Bit for each extent), and resynchronizes only these extents when the disk is back
online.
--- * When a disk becomes unavailable due to a failure, ASM places him OFFLINE
automatically.
-- * DISK_REPAIR_TIME - Determines the length of time before removing a disk once
OFFLINE.
-(Length of outage which still enables auto-recovery of the disk).
-- * To manually place a DG or FG Offline/Online via the OEM (For maintenance):
-- ASM Management => Click the DG usage pie-chart => View by disk/FG => Offline
-- We can override the default value of DISK_REPAIR_TIME here.

Bad block repair (11g)


--------------------------------------------- * Performed automatically when in Normal/High Redundancy.
-- * When a block access fails, ASM recovers it automatically from its mirror.
-- * If recovery to the original location fails, its recovered to an alternative location.
-- * Can perform manually from ASMCMD using repair/remap.

Miscellaneous ALTER Commands


--------------------------------------------- Remove a disk from a DG:
ALTER DISKGROUP dgroupA DROP DISK A5;
-- Removing and adding disks in a single statement (Efficient for
rebalancing):
ALTER DISKGROUP dgroupA
DROP DISK A6
ADD FAILGROUP fred
DISK '/dev/rdsk/c0t8d0s2' NAME A9;
-- Cancel a disk drop operation (Only if the drop operationis not yet
completed)
ALTER DISKGROUP dgroupA UNDROP DISKS;
-- Manually rebalance a DG:
-- Useful to change the default Power level.
-(Also for a rebalace that is already active in the background)
-- Setting the Power level to 0, stop the rebalancing.
ALTER DISKGROUP dgroupB REBALANCE POWER 5;
-- Mount/Dismount a DG:
-- Makes it unavailable to the DB.
ALTER DISKGROUP DG1 DISMOUNT;
ALTER DISKGROUP DG1 MOUNT;
ALTER DISKGROUP ALL DISMOUNT;
ASMCMD

--------------------------------------------- * Manage ASM from the command prompt.


-- * Works with ASM Files, Directories & Aliases.
-- * Like other file systems, ASM also has directories which contain the ASM
Files.
-- * Each file has a "Fully Qualified File Name", which is the path to it:
-- The + sign represents the Root directory of the Disk Group:
ASMCMD> ls -l +DGROUP1/ORCL/DATAFILE
-- * mkdir - Add new directories:
ASMCMD> mkdir +dgroup1/sample/mydir
-- * md_backup / md_restore - backup and
-- This enables us to recreate a DG
templates (attributes):
ASMCMD> md_backup b /tmp/dgbackup070222
ASMCMD> md_restore t full g asmdsk1 i

restore ASM Metadata:


with the same directories and
g admdsk1 g asmdsk2
backup_file

-- * lsdsk - Displays ASM disk information.


-- When connected - uses V$/GV$ tables.
-- When not-connected - scans the disk headers to get the information.
-(can use a disk string to limit the discovery set)
ASM Scalability and Performance
---------------------------------------------------------------------------------------- ASM Directories
--------------------------------------------- * A directory heirarchy can be defined using the ALTER DISKGROUP statement
-to support ASM file aliasing:
-- Create a directory
ALTER DISKGROUP DG1 ADD DIRECTORY '+DG1/my_dir';
ALTER DISKGROUP DG1 ADD DIRECTORY '+DG1/emps';
-- Rename a directory.
ALTER DISKGROUP DG1 RENAME DIRECTORY '+DG1/emps' TO '+DG1/employees';
-- Delete a directory and all its contents.
ALTER DISKGROUP DG1 DROP DIRECTORY '+DG1/employees';
Aliases
--------------------------------------------- * Aliases allow you to reference ASM files using user-friendly names,
-rather than the fully qualified ASM filenames.
-- *
SELECT name FROM v$datafile;
-- Create an alias using the fully qualified filename.
ALTER DISKGROUP DG1 ADD ALIAS '+DG1/my_dir/my_file.dbf'
FOR '+DG1/mydb/datafile/asm_tbs.256.718138495';

-- Create an alias using the numeric form filename.


ALTER DISKGROUP DG1 ADD ALIAS '+DG1/my_dir/my_file.dbf'
FOR '+DG1.256.718138495';
-- Rename an alias.
ALTER DISKGROUP DG1 RENAME ALIAS '+DG1/my_dir/my_file.dbf'
TO '+DG1/my_dir/my_file2.dbf';
-- Delete an alias.
ALTER DISKGROUP DG1 DROP ALIAS '+DG1/my_dir/my_file2.dbf';
Attempting to drop a system alias results in an error
Create an ASM-based tablespace
-------------------------------------------conn /@orcl as sysdba
CREATE TABLESPACE ASM_TBS DATAFILE '+DG1/asm_tbs01.dbf' size 10m;
ALTER TABLESPACE ASM_TBS ADD DATAFILE '+DG1' size 10m;
SELECT name FROM v$datafile;

ASM Intallation Guidelines


--------------------------------------------- 1. Using Third-Party tools such as EASEUS Partition Master 8.0.1 Home
Edition
-Create Unallocated space on your hard drive
-- 2. Create free space out of the anallocated space
-- 3. Create at least 2 raw devices (without any file-system)
-- 4. download Oracle Grid Infrastructure from oracle.com
-- 5. Install Oracle Grid Infrastructure must be installed before Oracle
Database
-NOTE : Oracle Grid Infrastructure must be installed before Oracle
Database
-- 6. Install Oracle Database
-- * Networking (tnsnames / listener / sqlnet) should be configured in
grid_home
-- TNSNAMES.ORA Should look something like this:
/*
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OWNER-3WSG9BKMD)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
ASM =

(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OWNER-3WSG9BKMD)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = +ASM)
)
)

*/

-- Listener should look something like this :


/*
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = +ASM)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\grid)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = OWNER-3WSG9BKMD)(PORT = 1521))
)
)
*/
DEMO!
-----------------------------------------------SQL*Plus: Release 11.2.0.1.0 Production on Thu Jul 21 08:04:08 2012
Copyright (c) 1982, 2010, Oracle.

All rights reserved.

@> conn /@ASM AS SYSASM


Connected.
SYS@ASM>
SYS@ASM> -- See current Disk Groups:
SYS@ASM> SELECT GROUP_NUMBER, NAME, TOTAL_MB
2 FROM v$asm_diskgroup;
GROUP_NUMBER NAME
TOTAL_MB
------------ ------------------------------ ---------1 DG1
9998
SYS@ASM> col path for a50
SYS@ASM> -- See available disks:
SYS@ASM> SELECT GROUP_NUMBER "DG#", PATH
2 FROM v$asm_disk
3 ORDER BY path;

DG#
---------1
1
0
0

PATH
-------------------------------------------------\\.\ORCLDISK_LABEL_E
\\.\ORCLDISK_LABEL_F
\\.\ORCLDISK_LABEL_G
\\.\ORCLDISK_LABEL_H

SYS@ASM>
SYS@ASM> -- DG#=0 means that specific path does not have any Disk Group
SYS@ASM>
SYS@ASM> -- Join:
SYS@ASM> SELECT GROUP_NUMBER, dg.name, SUM(d.TOTAL_MB) AS "Size", COUNT(*) AS
"Disks"
2 FROM v$asm_diskgroup dg JOIN v$asm_disk d
3 USING (GROUP_NUMBER)
4 GROUP BY GROUP_NUMBER, dg.name ;
GROUP_NUMBER NAME
Size
Disks
------------ ------------------------------ ---------- ---------1 DG1
9998
2
SYS@ASM>
SYS@ASM> -- Create a new disk group DG2:
SYS@ASM> CREATE DISKGROUP DG2
2 DISK
3 '\\.\ORCLDISK_LABEL_G' NAME DG2_0,
4 '\\.\ORCLDISK_LABEL_H' NAME DG2_1 ;
Diskgroup created.
SYS@ASM> -- See available disks:
SYS@ASM> SELECT GROUP_NUMBER "DG#", PATH
2 FROM v$asm_disk
3 ORDER BY path;
DG#
---------1
1
2
2

PATH
-------------------------------------------------\\.\ORCLDISK_LABEL_E
\\.\ORCLDISK_LABEL_F
\\.\ORCLDISK_LABEL_G
\\.\ORCLDISK_LABEL_H

SYS@ASM>
SYS@ASM> -- DROP DISKGROUP DG2;
SYS@ASM>
SYS@ASM> ------------------------------------SYS@ASM> -- Create a tablespace with ASM file
SYS@ASM> -- (Performed in the DB instance)
SYS@ASM> ------------------------------------SYS@ASM>
SYS@ASM> conn sys/oracle@orcl as sysdba
Connected.
SYS@orcl>
SYS@orcl> CREATE TABLESPACE ASM_TBS
2
DATAFILE '+DG2/asm_tbs01.dbf' SIZE 100M;

Tablespace created.
SYS@orcl> SELECT name FROM v$datafile;
NAME
------------------------------------------------------------------------------C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF
+DG2/asm_tbs01.dbf
6 rows selected.
SYS@orcl>
SYS@orcl> -SYS@orcl>
SYS@orcl>
SYS@orcl> -- *
can be done by
SYS@orcl> -SYS@orcl> -- *
SYS@orcl> -ASM => STARTUP
SYS@orcl> -- *
SYS@orcl>

DROP TABLESPACE asm_tbs INCLUDING CONTENTS AND DATAFILES;


Stamp candidate disks / change name and creating disk groups
using ASMCA
$oracle_grid_home\BIN\asmca.bat
for stamping and name changing :
SHUTDOWN DB => SHUTDOWN ASM => stamp/change names => STARTUP
DB
SHUTDOWN ASM => stamp/change names => STARTUP ASM

SYS@orcl> ------------------------SYS@orcl> -- ASM Templates


SYS@orcl> ------------------------SYS@orcl>
SYS@orcl> -- * A template is a collection of file attributes that are applied
to the ASM files.
SYS@orcl> -It is associated with a Disk Group.
SYS@orcl> -- * Whenever a file is created the file attributes specific to the
template are applied to
SYS@orcl> -the files.
SYS@orcl> -- * For eg., if we want to create a users tablespace that contains
data file we use the
SYS@orcl> -DATAFILE
SYS@orcl> -template.
SYS@orcl> -- * Default Template: When you create a disk group, Oracle creates
system default template
SYS@orcl> -for the disk group.
SYS@orcl>
SYS@orcl> SELECT GROUP_NUMBER , NAME , STRIPE, REDUNDANCY
2 FROM V$ASM_TEMPLATE ;
GROUP_NUMBER
-----------1
1
1

NAME
STRIPE REDUND
------------------------------ -----PARAMETERFILE
COARSE
ASMPARAMETERFILE
COARSE
ASMPARAMETERBAKFILE
COARSE

-----MIRROR
MIRROR
MIRROR

1
1
1
1
1
1
1
1

DUMPSET
CONTROLFILE
FLASHFILE
ARCHIVELOG
ONLINELOG
DATAFILE
TEMPFILE
BACKUPSET

COARSE
FINE
COARSE
COARSE
COARSE
COARSE
COARSE
COARSE

MIRROR
HIGH
MIRROR
MIRROR
MIRROR
MIRROR
MIRROR
MIRROR

GROUP_NUMBER
-----------1
1
1
1
1
1
1
1
2
2
2

NAME
STRIPE REDUND
------------------------------ -----AUTOBACKUP
COARSE
XTRANSPORT
COARSE
CHANGETRACKING
COARSE
FLASHBACK
COARSE
DATAGUARDCONFIG
COARSE
OCRFILE
COARSE
OCRBACKUP
COARSE
ASM_STALE
COARSE
PARAMETERFILE
COARSE
ASMPARAMETERFILE
COARSE
ASMPARAMETERBAKFILE
COARSE

-----MIRROR
MIRROR
MIRROR
MIRROR
MIRROR
MIRROR
MIRROR
HIGH
MIRROR
MIRROR
MIRROR

GROUP_NUMBER
-----------2
2
2
2
2
2
2
2
2
2
2

NAME
STRIPE REDUND
------------------------------ -----DUMPSET
COARSE
CONTROLFILE
FINE
FLASHFILE
COARSE
ARCHIVELOG
COARSE
ONLINELOG
COARSE
DATAFILE
COARSE
TEMPFILE
COARSE
BACKUPSET
COARSE
AUTOBACKUP
COARSE
XTRANSPORT
COARSE
CHANGETRACKING
COARSE

-----MIRROR
HIGH
MIRROR
MIRROR
MIRROR
MIRROR
MIRROR
MIRROR
MIRROR
MIRROR
MIRROR

GROUP_NUMBER
-----------2
2
2
2
2

NAME
STRIPE REDUND
------------------------------ -----FLASHBACK
COARSE
DATAGUARDCONFIG
COARSE
OCRFILE
COARSE
OCRBACKUP
COARSE
ASM_STALE
COARSE

-----MIRROR
MIRROR
MIRROR
MIRROR
HIGH

38 rows selected.
SYS@orcl>
SYS@orcl>
SYS@orcl>
SYS@orcl>
SYS@orcl>
SYS@orcl>
disks.
SYS@orcl>

------------------------- ASM Striping


------------------------- * ASM stripes the file to AUs, and devides them between the DG
-- * Two types of striping:

SYS@orcl> -1. Coarse-based striping:


SYS@orcl> -- Each stripe size is one AU.
SYS@orcl> -- Classic striping. Suitable for most file types.
SYS@orcl> -- Used for load balancing.
SYS@orcl> -2. Fine-Grained striping
SYS@orcl> -- Each stripe size is 128KB. (Wider distribution of
data)
SYS@orcl> -- Used for decreasing IO Latency (Waiting for IO).
SYS@orcl> -- Suitable for small IO operations such as Redo Log
Files.
SYS@orcl>
SYS@orcl> -- ONLINELOG
SYS@orcl> ALTER DISKGROUP dg2 MODIFY TEMPLATE ONLINELOG
2 ATTRIBUTES (FINE);
Diskgroup altered.
SYS@orcl> ALTER DISKGROUP dg2 MODIFY TEMPLATE DATAFILE
2 ATTRIBUTES (COARSE);
Diskgroup altered.
1 Select * From V$ASM_TEMPLATE
2 WHERE name IN ('DATAFILE', 'ONLINELOG')
3* AND group_number = 2
SYS@orcl> /
GROUP_NUMBER ENTRY_NUMBER REDUND STRIPE
------------ ------------ ------ --------2
7 MIRROR FINE
COLD
2
8 MIRROR COARSE
COLD

S NAME
PRIM MIRR
- ------------------------------ ---Y ONLINELOG

COLD

Y DATAFILE

COLD

SYS@orcl> SELECT GROUP_NUMBER , NAME , STRIPE, REDUNDANCY


2 FROM V$ASM_TEMPLATE
3 WHERE name IN ('DATAFILE', 'ONLINELOG')
4 AND group_number = 2 ;
GROUP_NUMBER
-----------2
2

NAME
STRIPE REDUND
------------------------------ ------ -----ONLINELOG
FINE
MIRROR
DATAFILE
COARSE MIRROR

SYS@orcl>
SYS@orcl> CONN /@ASM AS SYSASM
SYS@ASM> DROP DISKGROUP DG2 INCLUDING CONTENTS;
ASM Mirroring & Failure Groups
--------------------------------------------------------------------------------------------- * ASM can protect our files from media failures (disk / disk-controller
crash)
--

-- * Mirroring:
-- Applied at
-- When an AU
also allocated on
-- Therefore,
disks on its Disk

Extent (AU) level (Not at file or disk level).


is allocated to a file on a specific disk, a mirrored AU is
another disk in the SAME Disk Group.
if a disk is lost, we can restore its contents from other
Group.

-- * Failure Group:
-- A failure group is a subset of the disks in a disk group, which could
fail at the same time because they share hardware. (For example, disks that
share the same disk controller)
-- By default, each ASM disk belongs to his own Failure Group (FG).
-- However, we can group a few disks in a DG to a single Failure Group.
-- When an AU is allocated on a FG disk, a mirrored AU is also allocated
on ANOTHER Failure Group in the SAME Disk Group.
-- Therefore, if a Failure Group is lost, we can restore its contents from
other disks on its Disk Group.
-- *
types or mirroring:
-1. External Redundancy - No mirroring or FGs. (When using an external
tool for protection).
-2. Normal Redundancy
- Two-way mirroring.
(Two copies)
-3. High Redundancy
- Triple-mirroring.
(Three copies)
SYS@ASM> col path for a50
SYS@ASM> -- See available disks:
SYS@ASM> SELECT GROUP_NUMBER "DG#", PATH
2 FROM v$asm_disk
3 ORDER BY path;
DG#
---------1
1
0
0

PATH
-------------------------------------------------\\.\ORCLDISK_LABEL_E
\\.\ORCLDISK_LABEL_F
\\.\ORCLDISK_LABEL_G
\\.\ORCLDISK_LABEL_H

-- A protected disk group:


SYS@ASM>
1
2
3
4

CREATE DISKGROUP DG2


NORMAL REDUNDANCY
DISK
'\\.\ORCLDISK_LABEL_G',
'\\.\ORCLDISK_LABEL_H' ;

Diskgroup created.
SYS@ASM> SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP
2 FROM v$asm_disk;
DG#
DSK# NAME
FAILGROUP
---------- ---------- ---------- ----------2
0 DG2_0000
DG2_0000
2
1 DG2_0001
DG2_0001
1
0 DG1_0000
DG1_0000
1
1 DG1_0001
DG1_0001

SYS@ASM> DROP DISKGROUP DG2 INCLUDING CONTENTS;


Diskgroup dropped.
SYS@ASM> CREATE DISKGROUP DG2
2
NORMAL REDUNDANCY
3
FAILGROUP controller1 DISK
4
'\\.\ORCLDISK_LABEL_G'
5
FAILGROUP controller2 DISK
6
'\\.\ORCLDISK_LABEL_H' ;
Diskgroup created.
SYS@ASM> SELECT GROUP_NUMBER "DG#", DISK_NUMBER "DSK#", NAME, FAILGROUP
2 FROM v$asm_disk;
DG#
DSK# NAME
FAILGROUP
---------- ---------- ---------- ----------2
0 DG2_0000
CONTROLLER1
2
1 DG2_0001
CONTROLLER2
1
0 DG1_0000
DG1_0000
1
1 DG1_0001
DG1_0001

S-ar putea să vă placă și