ASM 管理篇
1、asm_diskstring 引數
該引數用來指定asm磁碟的搜尋模式,簡單的理解就是控制ASM檢索磁碟的規則
指定asm_diskstring的值為’ORCL:ASM*’
SQL> alter system set asm_diskstring='ORCL:ASM*' scope=both;
System altered.
SQL> show parameter asm_diskstring
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskstring string ORCL:ASM*
SQL> col NAME for a10
SQL> col PATH for a15
SQL> select GROUP_NUMBER,DISK_NUMBER,NAME,PATH,TOTAL_MB,FREE_MB from v$asm_disk;
GROUP_NUMBER DISK_NUMBER NAME PATH TOTAL_MB FREE_MB
------------ ----------- ---------- --------------- ---------- ----------
1 0 ASM_DISK_1 ORCL:ASM_DISK_1 8189 7372
1 1 ASM_DISK_2 ORCL:ASM_DISK_2 8189 7373
1 2 ASM_DISK_3 ORCL:ASM_DISK_3 8189 7370
/*需要注意的是,在訪問v$asm_disk檢視時,會檢索所以磁碟,而在訪問v$asm_disk_stat檢視時不需要檢索磁碟,在磁碟沒有更新的情況下,後者更加“廉價”*/
asm_diskstring的值設定的必須是ASM組中磁碟當前例項所能檢索到的值,其他值將無法設定
SQL> alter system set asm_diskstring='ORCL:ASM_abc' scope=both;
alter system set asm_diskstring='ORCL:ASM_abc' scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-15014: location 'ORCL:ASM_DISK_1' is not in the discovery set
2、磁碟管理
新增刪除硬碟
首先介紹一下幾個概念
a)、ASM提供了3種冗餘方法:
external redundancy 表示Oracle不幫你管理映象,功能由外部儲存系統實現。
normal redundancy (預設方式)表示Oracle提供2路映象來保護資料。
high redundancy 表示Oracle提供3路映象來保護資料。
b)、ASM failure group:
Oracle透過failure group來提供資料的高可用性。ASM使用的映象演算法並不是映象整個disk,而是作extent級的映象。所以很明顯如果為各個failure group使用不同容量的disk是不明智的,因為這樣在Oracle分配下一個extent的時候可能就會出現問題。在normal redundancy模式下,ASM環境中每分配一個extent都會有一個primary copy和一個second copy,ASM的演算法保證了second copy和primary copy一定是在不同的failure group中,這就是failure group的意義。透過這個演算法,ASM保證了即使一個failure group中的所有disk都損壞了,資料也是毫髮無傷的。
Oracle在分配extent的時候,所有failure group中的這個將擁有相同資料的extent稱為一個extent set,當Oracle將資料寫入檔案的時候,primary copy可能在任何一個failure group中,而second copy則在另外的failure group中,當Oracle讀取資料的時候,除非是primary copy不可用,否則將優先從primary copy中讀取資料,透過這種寫入無序,讀取有序的演算法,Oracle保證了資料讀取儘量分佈在多個disk中。
以下測試僅為了測試fileglure group,不是正常刪除硬碟的方式
現在我的環境中group1中有兩塊硬碟,冗餘方式是預設的normal redundancy,資料庫orcle安裝在該disk_grup中
SQL> col FAILGROUP for a15
SQL> col name for a10
SQL> col path for a15
SQL> select GROUP_NUMBER,DISK_NUMBER,FAILGROUP,FREE_MB,NAME,PATH from v$asm_disk;
GROUP_NUMBER DISK_NUMBER FAILGROUP FREE_MB NAME PATH
------------ ----------- --------------- ---------- ---------- ---------------
1 0 ASM_DISK_1 7001 ASM_DISK_1 ORCL:ASM_DISK_1
1 1 ASM_DISK_2 7001 ASM_DISK_2 ORCL:ASM_DISK_2
為了模擬損壞,我直接在vmware中將第二塊硬碟刪除,兩塊8g硬碟現在僅剩一塊
正常啟動系統,啟動css服務後,scandisk後asm會自動將損壞的硬碟清理掉
[oracle@orclasm ~]$ oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
[oracle@orclasm ~]$ oracleasm listdisks
ASM_DISK_1
此時對資料庫無影響,也就是說兩塊filedisk中刪除任何塊,資料庫均可正常執行
[oracle@orclasm ~]$ export ORACLE_SID=orcl
[oracle@orclasm ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Fri Aug 1 10:42:51 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 79694068 bytes
Database Buffers 83886080 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
新增硬碟
新增兩塊新的硬碟到系統,方便測試
[root@orclasm ~]# fdisk /dev/sdc
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1044, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044):
Using default value 1044
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@orclasm ~]# fdisk /dev/sdd
[root@orclasm ~]# oracleasm createdisk asm_disk_2 /dev/sdc1
Writing disk header: done
Instantiating disk: done
[root@orclasm ~]# oracleasm createdisk asm_disk_3 /dev/sdd1
Writing disk header: done
Instantiating disk: done
[root@orclasm ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
[root@orclasm ~]# oracleasm listdisks
ASM_DISK_1
ASM_DISK_2
ASM_DISK_3
[oracle@orclasm ~]$ export ORACLE_SID=+ASM
[oracle@orclasm ~]$ sqlplus / as sysdba
指定failgroup新增硬碟
SQL> alter diskgroup data add failgroup asm_disk_f_2 disk 'ORCL:ASM_DISK_2' name asm_disk_2;
Diskgroup altered.
在不指定failgroup的情況先,預設的disk name將是failgroup
SQL> alter diskgroup data add disk 'ORCL:ASM_DISK_3' name asm_disk_3;
Diskgroup altered
當加入一塊磁碟時,ASM從磁碟組內已有的各塊磁碟上讀出部分AU寫入到新加入的磁碟中。以實現各盤資料量均衡。
SQL> select count(*) from v$asm_operation;
COUNT(*)
----------
1
SQL> select GROUP_NUMBER,DISK_NUMBER,NAME,PATH,FREE_MB,TOTAL_MB from v$asm_disk;
GROUP_NUMBER DISK_NUMBER NAME PATH FREE_MB TOTAL_MB
------------ ----------- ------------ --------------- ---------- ----------
1 0 ASM_DISK_1 ORCL:ASM_DISK_1 7371 8189
1 1 ASM_DISK_2 ORCL:ASM_DISK_2 7372 8189
1 2 ASM_DISK_3 ORCL:ASM_DISK_3 7372 8189
刪除硬碟
當刪除一塊磁碟時,ASM從即將刪除的磁碟上讀出所有的AU,然後平均寫入到組內其它的磁碟上。以實現各盤資料量均衡。
SQL> alter diskgroup data drop disk asm_disk_3;
Diskgroup altered.
此時ASM會自動將被刪除的硬碟中的資料寫入其他兩組磁碟中
SQL> select count(*) from v$asm_operation;
COUNT(*)
----------
1
SQL> select GROUP_NUMBER,DISK_NUMBER,NAME,PATH,FREE_MB,TOTAL_MB from v$asm_disk;
GROUP_NUMBER DISK_NUMBER NAME PATH FREE_MB TOTAL_MB
------------ ----------- ------------ --------------- ---------- ----------
1 0 ASM_DISK_1 ORCL:ASM_DISK_1 7371 8189
1 1 ASM_DISK_2 ORCL:ASM_DISK_2 7372 8189
1 2 ASM_DISK_3 ORCL:ASM_DISK_3 7422 8189
SQL> select GROUP_NUMBER,DISK_NUMBER,NAME,PATH,FREE_MB,TOTAL_MB from v$asm_disk;
GROUP_NUMBER DISK_NUMBER NAME PATH FREE_MB TOTAL_MB
------------ ----------- ------------ --------------- ---------- ----------
1 0 ASM_DISK_1 ORCL:ASM_DISK_1 7252 8189
1 1 ASM_DISK_2 ORCL:ASM_DISK_2 7251 8189
1 2 ASM_DISK_3 ORCL:ASM_DISK_3 7662 8189
SQL> select count(*) from v$asm_operation;
COUNT(*)
----------
0
SQL> select GROUP_NUMBER,DISK_NUMBER,NAME,PATH,FREE_MB,TOTAL_MB from v$asm_disk;
GROUP_NUMBER DISK_NUMBER NAME PATH FREE_MB TOTAL_MB
------------ ----------- ------------ --------------- ---------- ----------
0 0 ORCL:ASM_DISK_3 0 8189
1 0 ASM_DISK_1 ORCL:ASM_DISK_1 7001 8189
1 1 ASM_DISK_2 ORCL:ASM_DISK_2 7001 8189
需要注意的是ASM為了保護磁碟的正常冗餘,如果因為刪除磁碟導致不滿足最少冗餘磁碟個數,該磁碟將等到有新的磁碟加入磁碟組,把資料轉移到新的磁碟上之後再進行刪除。
比如冗餘度為normal,至少需要兩塊硬碟,而我刪除了其中的一個,那麼ASM將等待新增一塊新的硬碟後,把被刪除的硬碟資料轉移到這塊新的硬碟上,再去刪除該硬碟。
新增磁碟組
create diskgroup diskgroup_name
failgroup failgroup_name disk 'disk_nmae' name asm_disk_name
failgroup的個數的限制:
HIGH---------- failgroup >= 3
NORMAL---------- failgroup >= 2
EXTERNAL-------- failgroup == 0 (指定外部冗餘)
此處使用的三塊硬碟(sdd1、sde1、sdf1)來做高度冗餘的一個磁碟組DATA2,硬碟新增方法跟上面相似
[root@orclasm ~]# oracleasm createdisk asm_disk_3 /dev/sdd1
Writing disk header: done
Instantiating disk: done
[root@orclasm ~]# oracleasm createdisk asm_disk_4 /dev/sde1
Writing disk header: done
Instantiating disk: done
[root@orclasm ~]# oracleasm createdisk asm_disk_5 /dev/sdf1
Writing disk header: done
Instantiating disk: done
[root@orclasm ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
[root@orclasm ~]# oracleasm listdisks
ASM_DISK_1
ASM_DISK_2
ASM_DISK_3
ASM_DISK_4
ASM_DISK_5
SQL> select GROUP_NUMBER,NAME,PATH from v$asm_disk;
GROUP_NUMBER NAME PATH
------------ ------------------------------ ---------------
0 ORCL:ASM_DISK_3
0 ORCL:ASM_DISK_4
0 ORCL:ASM_DISK_5
1 DATA_ASM_DISK_2 ORCL:ASM_DISK_2
1 DATA_ASM_DISK_1 ORCL:ASM_DISK_1
SQL> create diskgroup data2
2 high redundancy
3 failgroup data2_fail_1 disk 'ORCL:ASM_DISK_3' name data2_asm_disk_1
4 failgroup data2_fail_2 disk 'ORCL:ASM_DISK_4' name data2_asm_disk_2
5 failgroup data2_fail_3 disk 'ORCL:ASM_DISK_5' name data2_asm_disk_3
6 /
Diskgroup created.
SQL> select GROUP_NUMBER,NAME,FREE_MB,TOTAL_MB,STATE from v$asm_diskgroup;
GROUP_NUMBER NAME FREE_MB TOTAL_MB STATE
------------ ---------- ---------- ---------- -----------
1 DATA 14002 16378 MOUNTED
2 DATA2 24414 24567 MOUNTED
解除安裝掛載磁碟組
SQL> alter diskgroup data2 dismount;
Diskgroup altered.
SQL> select GROUP_NUMBER,NAME,FREE_MB,TOTAL_MB,STATE from v$asm_diskgroup;
GROUP_NUMBER NAME FREE_MB TOTAL_MB STATE
------------ ---------- ---------- ---------- -----------
1 DATA 14002 16378 MOUNTED
0 DATA2 0 0 DISMOUNTED
SQL> alter diskgroup data2 mount;
Diskgroup altered.
/*或者使用alter diskgroup all mount; 掛載所以磁碟組*/
SQL> select GROUP_NUMBER,NAME,FREE_MB,TOTAL_MB,STATE from v$asm_diskgroup;
GROUP_NUMBER NAME FREE_MB TOTAL_MB STATE
------------ ---------- ---------- ---------- -----------
1 DATA 14002 16378 MOUNTED
2 DATA2 24414 24567 MOUNTED
刪除磁碟組
SQL> drop diskgroup data2;
Diskgroup dropped.
3、目錄管理
目錄概念
A)、+ 表示根目錄
B)、目錄不能遞迴建立
C)、不能直接刪除非空目錄,需要先刪目錄下的內容,然後再刪上層目錄
目錄的操作
直接遞迴新增目錄將報錯
SQL> alter diskgroup data add directory '+data/test_dir1/test_dir2';
alter diskgroup data add directory '+data/test_dir1/test_dir2'
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15173: entry 'test_dir1' does not exist in directory '/'
SQL> alter diskgroup data add directory '+data/test_dir1';
Diskgroup altered.
SQL> alter diskgroup data add directory '+data/test_dir1/test_dir2';
Diskgroup altered.
刪除目錄
SQL> alter diskgroup data drop directory '+data/test_dir1/test_dir2';
Diskgroup altered.
SQL> alter diskgroup data drop directory '+data/test_dir1';
Diskgroup altered.
ASMCMD管理目錄
[oracle@orclasm ~]$ asmcmd
ASMCMD> help
commands:
--------
cd
du
find
help
ls
lsct
lsdg
mkalias
mkdir
pwd
rm
rmalias
ASMCMD> cd + //+是ASM根目錄
ASMCMD> ls
DATA/
ASMCMD> mkdir +DATA/test_dir1 //建立目錄
ASMCMD> mkdir +DATA/test_dir1/test_dir2
ASMCMD> cd +DATA/test_dir1/
ASMCMD> ls
test_dir2/
ASMCMD> rm test_dir2 //刪除目錄
ASMCMD> ls
ASMCMD> cd +
ASMCMD> rm +DATA/test_dir1
ASMCMD> cd +DATA
ASMCMD> ls
ORCL/
建立刪除別名
ASMCMD> mkalias '+DATA/ORCL/datafile/SYSTEM.256.854421493' system.dbf
ASMCMD> rmalias system.dbf
/*注意別名建立保留在當前目錄,刪除時也要到當前目錄刪除*/
檔案管理
ASM檔案概述
ASM檔案的命名不同於普通檔案的命名,它的檔名一般不直接指定,由ASM系統自己生成,並且其管理方式是OMF。如果人為指定,則檔案的管理方式就不再是OMF。
檔案的命名規則
1)、完全命名:
格式:+diskgroup_name/database_name/filetype/file_name.xxx.xxxx
作用:只能用於引用,不能在建立ASM檔案時指定。
說明:xxx表示數字,是唯一的。
例如:+dgdata/info/datafile/system.256.78684974
2)、數字命名:
格式:file_name.xxx.xxxx
作用:只能用於引用,不能在建立ASM檔案時指定。
說明:xxx表示數字,是唯一的。
例如:system.256.78684974
3)、不完全命名:
格式:+diskgroup_name
作用:用於建立ASM檔案,在建立檔案時指定,由ASM 自動生成對應的檔名。
說明:檔案是OMF。
例如:
SQL> create tablespace test01 datafile '+data' size 10m;
Tablespace created.
SQL> select name,file# from v$datafile;
NAME FILE#
------------------------------------------------- ----------
+DATA/orcl/datafile/system.256.854421493 1
+DATA/orcl/datafile/undotbs1.258.854421495 2
+DATA/orcl/datafile/sysaux.257.854421493 3
+DATA/orcl/datafile/users.259.854421495 4
+DATA/orcl/datafile/test01.270.854505245 5
4)、帶模板的不完全命名:
格式:+diskgroup_name (template_name)
作用:用於建立ASM檔案,在建立檔案時指定,由ASM 自動生成對應的檔名。
說明:檔案是OMF。
例如:create tablespace test datafile ‘+dgdata(my_template)’ size 100m;
建立一個模板
[oracle@orclasm ~]$ export ORACLE_SID=+ASM
[oracle@orclasm ~]$ sqlplus / as sysdba
SQL> alter diskgroup data add template my_temp attributes(high fine);
Diskgroup altered.
/*alter diskgroup data drop template my_temp;用來刪除模板*/
[oracle@orclasm ~]$ export ORACLE_SID=orcl
[oracle@orclasm ~]$ sqlplus / as sysdba
SQL> create tablespace test02 datafile '+data(my_temp)' size 10m;
Tablespace created.
SQL> select name,file# from v$datafile;
NAME FILE#
-------------------------------------------------- ----------
+DATA/orcl/datafile/system.256.854421493 1
+DATA/orcl/datafile/undotbs1.258.854421495 2
+DATA/orcl/datafile/sysaux.257.854421493 3
+DATA/orcl/datafile/users.259.854421495 4
+DATA/orcl/datafile/test01.270.854505245 5
+DATA/orcl/datafile/test02.271.854505671 6
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29320885/viewspace-1243621/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11gR2 ASM例項記憶體管理OracleASM記憶體
- 【ASM】Oracle asm刪除磁碟組注意事項ASMOracle
- 【ASM】ASM磁碟頭被重寫,如何修復ASM
- Oracle Linux 7使用syslog來管理Oracle ASM的審計檔案OracleLinuxASM
- gnu inline asminlineASM
- goldengate + asm + racGoASM
- DRBD常用管理篇
- 【ASM】ASM啟動無法找到spfile問題原因ASM
- 從定位資料塊所在ASM磁碟到ASM strippingASM
- 零零信安:攻擊面管理(ASM)技術詳解和實現ASM
- ASM叢集檔案系統ACFS(ASM Cluster File System)ASM
- ASM磁碟組限制ASM
- 4.5.1.1 srvctl add asmASM
- ASM(Automatic Storage Management)ASM
- Android Transform + ASM 初探AndroidORMASM
- ASM Metadata Dump UtilityASM
- RAC+ASM+DATAGUARDASM
- ASM Fast Mirror ResyncASMAST
- 【ASM】asm常用命令及主要功能介紹ASM
- 【ASM】Oracle asm磁碟被格式化,如何掛載該磁碟組ASMOracle
- Oracle ASM神書《撥雲見日 解密Oracle ASM核心》出版了OracleASM解密
- Oracle Linux 7使用cron來管理Oracle ASM審計檔案目錄的增長OracleLinuxASM
- 遷移ASM磁碟組ASM
- Oracle ASM擴容(NFS)OracleASMNFS
- Java ASM學習(2)JavaASM
- Automatic Storage Management (ASM)(轉)ASM
- ASM下遷移spfileASM
- Multi-path handling for asmASM
- Databricks 第7篇:管理Secret
- MaxCompute安全管理指南-案例篇
- Nginx-執行管理篇Nginx
- 記憶體管理篇——線性地址的管理記憶體
- ASM 翻譯系列第十三彈:ASM 高階知識 - Forcing the issueASM
- 【ASM】ORA-27504 ORA-27300 ORA-27303 while starting ASM (Doc ID 2281441.1)ASMWhile
- 【ASM】ASM資料檔案和OS檔案(FILESYSTEM)轉移方法總結ASM
- 【ASM_ORACLE】Library Cache最佳化篇(二)Library cache load lock的概念和解決辦法ASMOracle
- 作業系統篇-程式管理作業系統
- Flutter | 狀態管理指南篇——ProviderFlutterIDE
- 【32asm】04 - 重定位ASM