-- ORACLE ASM 自动存储管理
-- 1、磁盘组的创建与删除
sqlplus / as sysasm
create diskgroup data normal redundancy failgroup f1 disk
'/dev/data1',
'/dev/data2',
failgroup f2 disk
'/dev/data3',
'/dev/data4';
删除磁盘组:
alter drop diskgroup data dismount;
drop diskgroup data;
如果磁盘组中还包含文件,那么上述命令将执行失效。则需要在删除磁盘组命令中指定 including contents 语句
drop diskgroup data including contents;
-- 2、磁盘的添加与删除
添加磁盘:
alter diskgroup data add disk '/dev/data5' name ds5, '/dev/data6' name ds6;
删除磁盘:
alter diskgroup data drop disk ds5;
删除失败组 f2 中的所有磁盘:
alter diskgroup data drop disks in failgroup f2;
取消还未完成的删除操作:
alter diskgroup data undrop disks;
-- 3、查询磁盘组相关信息
select name,state,type,total_mb,free_mb from v$asm_diskgroup;
select group_number,path,state,total_mb,free_mb from v$asm_disk;
select group_number,instance_name,db_name,status from v$asm_client;
-- 4、磁盘重平衡
平衡级别 0-11(0停止重平衡,11最快重平衡)平衡默认级别由初始化参数 ASM_POWER_LIMIT 限制
alter diskgroup data rebalance power 3;
alter diskgroup data rebalance power 3 wait;
-- 5、磁盘组的挂载和卸载
alter diskgroup data(all) mount;
alter diskgroup data(all) dismount force;
-- 6、磁盘组中文件和目录的管理
在ASM磁盘组中创建目录
alter diskgroup data add directory '+data/d1';
alter diskgroup data rename directory '+data/d1' to '+data/d2';
alter diskgroup data drop directory '+data/d2' force;
alter diskgroup data add alias '+data/d2/tmp01.dbf' for '+/data/orcl/datafile/tmp01.421.3';
alter diskgroup data rename alias '+data/d2/tmp01.dbf' to '+data/d2/tmp01_1.dbf';
alter diskgroup data delete alias '+data/d2/tmp01_1.dbf';
-- 7、自动文件管理功能 OMF
使用Oracle自动文件管理时,需要设置如下参数:
DB_CREATE_FILE_DEST
DB_CREATE_ONLINE_LOG_DEST_n
DB_RECOVERY_FILE_DEST
-- 8、创建OMF数据库 不指定local则为字典管理:
DB_CREATE_FILE_DEST = '+DATA'
DB_CREATE_ONLINE_LOG_DEST_1 = '+DATA'
DB_CREATE_ONLINE_LOG_DEST_2 = '+DATA'
create database test_db extent management local;
如指定参数创建数据库:
create database test_db
datafile size 500m autoextend on next 20m
sysaux datafile size 200m autoextend on next 20m
undo tablespace uts1 datafile size 20m autoextend on next 10m
default temporary tablespace temp tempfile size 50m;
-- 9、创建OMF表空间(Oracle Managed Files)
alter system set DB_CREATE_FILE_DEST = '+data';
create tablespace tbs datafile size 200m maxsize 30g autoextend on;:
alter system set DB_CREATE_FILE_DEST = '+data';
alter tablespace tbs add datafile size 200m autoextend on next 2m maxsize 30g;
select file_name,tablespace_name from dba_data_files;
-- 10、创建OMF重做日志文件
DB_CREATE_ONLINE_LOG_DEST_1 = '+data'
DB_CREATE_ONLINE_LOG_DEST_2 = '+fra'
alter database add logfile size 50m;
select * from v$logfile;
-- 11、存储归档日志
归档日志存储位置由初始化参数 LOG_ARCHIVE_DEST_n 决定 (n->1-31),名称由 LOG_ARCHIVE_FORMAT 指定。
-- 12、ASMCMD 命令的用法
ASMCMD> startup --nomount --pfile asm_init.ora
shutdown
shutdown --abort
lspwusr
orapwusr
orapwusr --add --privilege sysasm usr
sqlplus usr/123456 as sysasm
select * from v$pwfile_users;
orapwusr --modify --password usr
orapwusr --delete usr
ASM 参数管理:
ASMCMD> spget
spset +DATA/asm/asmparameterfile/asmspfile.ora
spbackup +DATA/asm/asmparameterfile/asmspfile.ora /u01/backuppfile.ora
spcopy -u /u01/backuppfile.ora +DATA/backuppfile.ora
spmove /u01/backuppfile.ora +DATA/testspfileASM.ora
管理磁盘组:
lsdg data --查看磁盘组信息(==v$asm_diskgroup)
lsdsk -G data --查看磁盘组中的磁盘 (v$asm_disk v$asm_disk_stat)
lsdsk --statistics -G data --获得磁盘组中所有磁盘的I/O信息
lsdsk --candidate -p --获取系统中的候选磁盘(不属于任何磁盘组的磁盘)
lsod --查看磁盘组中被打开的磁盘
使用方式如下:
lsod -G data --process LGWR --查看LGWR后台进程正在访问的磁盘
lsod --process LGWR disk --查看LGWR后台进程正在访问并且名称中包含字符 disk 的磁盘。
lsattr -l -G data --查看磁盘组的属性信息
setattr --用于修改磁盘组属性值
setattr -G data compatible.rdbms 11.2.0.0.0
磁盘组的创建与删除:
ASMCMD> mkdg /u01/app/data.xml
mkdg '<dg name="data"><dsk string="/dev/sdb[4-5]"/></dg>'
删除磁盘组:
dropdg -r -f data
磁盘组的卸载与挂载:
mount -a
mount data
umount -a
umount data
使磁盘组脱机:-t 参数可以指定脱机时间
offline -G data -D data_0001 -t 2h
使磁盘组联机:
online -G data -a
online -G data -D data_0001
磁盘重平衡:
rebal --power 4 data -w
lsop --查看磁盘组上正在运行的操作
下面命令获取磁盘组data中各个磁盘的读写数据量、所用时间、发生错误次数、读写次数:
iostat -G data
iostat -t -G data
iostat -e -G data
iostat --io -G data
通过ASMCMD管理磁盘组中的文件:
find +data ttmp0121.dbf --用于在磁盘组中查找文件
find --type controlfile +data/orcl * --查找类型为controlfile 的所有文件
lsof -G data --查看磁盘组data中被打开的文件
lsof -C orcl1 --查看所有被orcl1实例打开的文件
lsof --dbname orcl --查看属于数据库orcl的被打开的问件
-- 13、ACFS文件系统管理:
在ADVM(ASM Dynamic Volume Manager)中创建ACFS文件系统:
#/u01/app/grid/bin scfsload start
volcreate -G data -s 500m v1
volinfo -a
volinfo -G data v1
volinfo -G data -a
volinfo --show_diskgroup /dev/asm/v1_303
volinfo --show_volume /dev/asm/v1_303
volresize -G data -s 1000M v1
voldisable -a
voldisable -G data -a
voldisable -G data v1
volenable -a
volenable -G data -a
volenable-G data v1
voldelete -G data v1
select volume_name,volume_device from v$asm_volume where volume_name='V1';
SQL>alter diskgroup ORADG enable volume 'V1';
$/sbin/mkfs -t acfs /dev/asm/v1-123
#/bin/mount -t acfs /dev/asm/v1-123 /u01/app/grid/myacfs
$/sbin/acfsutil registry -a /dev/asm/v1-123 /u01/app/grid/myacfs
$/sbin/acfsutil registry -d /u01/app/grid/myacfs
#/bin/umount /u01/app/grid/myacfs
$/sbin/acfsutil rmfs /dev/asm/v1-123
-- 14、ACFSUTIL 工具的用法
$ asmcmd volinfo -G DATA -a
$ asmcmd lsdg
$/sbin/acfsutil size 30G /u01/app/grid/myacfs --把文件系统扩展到30GB
$/sbin/acfsutil size +500M /u01/app/grid/myacfs --把文件系统扩展500M的存储空间
$/sbin/acfsutil size -500M /u01/app/grid/myacfs --把文件系统减小500M的存储空间
$/sbin/acfsutil registry -a /dev/asm/v1-123 /u01/app/grid/myacfs --对文件系统进行注册,使其随集群启动而启动
$/sbin/acfsutil registry -d /u01/app/grid/myacfs --删除注册信息
$/sbin/acfsutil registry -m /dev/asm/v1-123 --查看文件系统挂接在那个目录下
$/sbin/acfsutil info fs /u01/app/grid/myacfs --查看文件系统的详细信息
$/sbin/acfsutil info info /u01/app/grid/myacfs --查看详细信息
$/sbin/acfsutil rmfs /dev/asm/v1-123 --删除卷上的文件系统
注意:该文件系统删除后文件并没有真正删除,文件系统所在卷也没有被删除,只要该卷没有再次创建文件系统并使用,以前文件系统的数据可以通过 fsck 命令进行恢复。
-- 15、磁盘状态
MEMBER -- 属于当前diskgroup的disk
FORMER -- 这个disk以前属于一个diskgroup,现在这个diskgroup被删除了
CANDIDATE -- 当使用裸设备,一个新的可以被diskgroup所用的disk
PROVISIONED-- 当使用asmlib,一个新的可以被diskgroup所用的disk
-- 16、磁盘组状态
•CONNECTED - Disk group is in use by the database instance
•BROKEN - Database instance lost connectivity to the Automatic Storage Management instance that mounted the disk group
•UNKNOWN - Automatic Storage Management instance has never atttmp01ted to mount the disk group
•DISMOUNTED - Disk group was cleanly dismounted by the Automatic Storage Management instance following a successful mount
•MOUNTED - Instance is successfully serving the disk group to its database clients
--------------------------------------------------------------------------------------
•CONNECTED -- 数据库实例正在使用磁盘组
•BROKEN -- 数据库实例失去了与挂载磁盘组的自动存储管理实例的连接
•UNKNOWN -- 自动存储管理实例从未尝试挂载磁盘组
•DISMOUNTED -- 成功挂载之后,自动存储管理实例干净地卸载了磁盘组
•MOUNTED -- 实例正在成功地将磁盘组服务于其数据库客户端