博客 / 詳情

返回

ORACLE---oracle_ASM管理二

一、檢查磁盤組狀況信息

1、查詢磁盤組故障組分配

SELECT G.NAME,D.disk_number,D.STATE,D.redundancy,D.NAME,D.PATH,D.FAILGROUP,D.FAILGROUP_TYPE FROM V$asm_diskgroup g,v$asm_disk d where g.group_number=d.group_number;

2、查看磁盤組,(空間情況)

select name name2,state,type,free_mb,total_mb,usable_file_mb from v$asm_diskgroup;

3、查看磁盤情況

select GROUP_NUMBER,free_mb,total_mb,disk_number,MOUNT_STATUS,mode_status,STATE,HEADER_STATUS,name name2,PATH from v$asm_disk order by 4,5;

二、創建磁盤組

獲取磁盤列表信息查看磁盤狀態:

CANDIDATE-該磁盤從來沒有分配給任何ASM磁盤組;
MEMBER-該磁盤分配給ASM磁盤組;
PROVISIONED-正在使用ASMLib,並且該磁盤尚未分配給磁盤組。

1、取消刪除的操作

提到的ASM自動平衡的特性,上述語句返回後並不代表磁盤已經被刪除,此時後台可能由於正忙碌地執行着IO重平衡的工作,因此如果在這個當口,DBA忽然意識到操作失誤,其實磁盤並不需要被刪除,那也可以馬上通過alter diskgroup dgname undrop disks語句來取消刪除的操作,例如:

SQL> alter diskgroup asmdisk2 drop disk asmdisk2; 
SQL> alter diskgroup asmdisk2 undrop disks; 
Diskgroup altered.

只要刪除操作還沒有真正完成,任何就會被取消,否則的話,上述語句也挽回不了什麼了,如果希望挽回,那DBA只能再通過ADD語句將該磁盤重新加入到磁盤組了。

三、AU與條帶

AU和條帶就是一個分配單位,數據會被以一定單位分割,存儲在多個磁盤中。分割單位的大小由AU、條帶來決定。

1、ASM有兩種條帶

  1. 不可調粗粒度:相當於ASM沒有條帶,或者説AU就是條帶,條帶就是AU。條帶寬度永遠為1,不可改變。條帶大小等於AU大小。
  2. 可調細粒度:條帶大小為128kb,條帶寬度為8 這是oracle默認的細粒度條帶設置。條帶的寬度不一定等於磁盤數。
    a、在DG上創建細粒度模板:

    alter diskgroup data add template stp_fine attributes (unprotected fine);

    b、創建使用細粒度可調條帶的表空間

    create tablespace test datafile '+data(stp_fine)/test.dbf' size 10m;

    總結下小條帶的優缺點:

    小條帶的優點是數據更分散,有助於分散熱點。
    小條帶的缺點是過小的AU、條帶,導致連續數據太小,OLAP系統性能受影響。
    
    大AU、大條帶的優點是數據連續存儲,顯著提高OLAP類操作性能。
    大AU、大條帶的缺點是過大的AU、條帶,可導致數據分散度不夠高。
    
    在OLTP環境下,使用較小的條帶分散熱點,可以減少競爭、提高性能。
    但在OLAP環境下,全掃描操作較多,這時數據的連續性是關鍵。連續的IO越多,IO性能越佳,為了讓數據連續的存儲,儘量使用大的AU.

    四、最大I/O與最小IO

    ORACLE 最大IO取決於連續的數據有多大,當然還有OS和硬件的限制。
    ORACLE 最小IO 取決於塊大小,數據文件最小I/O是8kb,redo文件最小IO是512byte,ASM元數據文件大小是4kb,很多操作系統、硬件層都有一個單次IO最大大小限制通常都是1MB.

    五、AU與條帶的總結

    AU是針對DG的,條帶是針對文件的,一個DG只能有一種大小的AU,但可以有多個條帶大小不一的文件。
    例:

    1、在data 磁盤組上創建一個細粒度可調條帶的表空間(數據文件)

    create tablespace test1 datafile '+data(stp_fine)/test1.dbf' size 10m;

    2、在這個data磁盤組上創建粗粒度不可調條帶的表空間(數據文件)

    create tablespace test2 datafile '+data' size 10m;

    3、在OLAP環境下:不用考慮條帶大小,用大AU,大小為4MB或8MB為宜,甚至可以考慮更大。但大的AU唯一的缺點會浪費一點點空間。

    4、在OLTP環境下:如果併發插入的數據比較多,可以使用小條帶進一步分割數據。

六、ASM常用命令

--------查看磁盤組,(空間情況)
select name,state,free_mb,total_mb,usable_file_mb from v$asm_diskgroup;

--------查看磁盤情況
select GROUP_NUMBER,free_mb,total_mb,disk_number,MOUNT_STATUS,mode_status,
HEADER_STATUS,name,PATH
from v$asm_disk order by 4,5;

select g.group_number,g.name,d.name,d.path from v$asm_diskgroup g,v$asm_disk d where g.group_number=d.group_number;

select GROUP_NUMBER,free_mb,total_mb,disk_number,
HEADER_STATUS,name,PATH
from v$asm_disk order by 4;


---查看是否有數據庫實例連接上ASM實例
select instance_name,db_name,status from v$asm_client;

--------查看asm存儲文件的層次圖(樹狀)
select lpad(' ', 4*(level-1))||name name ,REFERENCE_INDEX,PARENT_INDEX,GROUP_NUMBER
from v$asm_alias
start with ALIAS_INDEX = 0
connect by  prior REFERENCE_INDEX=PARENT_INDEX ;

--------查看層次圖-類型和大小
select a.GROUP_NUMBER,b.name,a.file_number,a.bytes,a.type ,a.modification_date
from v$asm_file a ,v$asm_alias b
where a.file_number=b.file_number
  and a.GROUP_NUMBER = b.GROUP_NUMBER
order by 1,5;

--------查看及修改asm重新平衡速度
show parameter power

alter diskgroup data check all repair ;;--檢測一致性,並修復錯誤

ALTER DISKGROUP data REBALANCE POWER 11;--設置最高速度來做平衡的操作

--------查看asm實例操作變化平衡的進度(只記錄結構變化操作)
 select group_number,operation,power,est_minutes from v$asm_operation;

#####################################################################################3

---手動平衡磁盤組
alter diskgroup data rebalance power 5;

--------創建磁盤組
create diskgroup DATA2 external redundancy disk
    '/dev/vx/rdmp/Disk_0s2',
    '/dev/vx/rdmp/Disk_4s2',  
    '/dev/vx/rdmp/Disk_5s2'

create diskgroup DATA2 external redundancy disk
    '/dev/rdisk/ora_data_01' ATTRIBUTE  'compatible.asm' = '11.2';;


--------刪除磁盤組的某個磁盤
alter diskgroup datadg drop disk  DATADG_0000  ;
alter diskgroup datadg drop disk  DATADG_0001  ;

SQL> alter diskgroup DATA drop disk A4; 
SQL> alter diskgroup DATA undrop disks; 

--------修改asm實例搜索可用asm磁盤路徑,不同路徑用逗號隔開
ALTER SYSTEM SET
asm_diskstring=
'/dev/vx/rdsk/oradata122/*','/dev/vx/rdmp/emc*'
scope=both sid='+ASM1';

使用asmlib時磁盤的格式:
alter diskgroup  DATA2 add disk 'ORCL:ASMDISK09';
SQL> alter diskgroup fra add disk 'ORCL:ASMDISK06' NAME A6;

--卸載所有磁盤組
SQL> alter diskgroup all dismount; 
SQL> select group_number,name,state,total_mb,free_mb from v$asm_diskgroup; 

--掛載所有磁盤組
SQL> alter diskgroup all mount;
select group_number,name,state,total_mb,free_mb from v$asm_diskgroup; 

--如果當前磁盤組有實例在訪問,則不能被卸載 
SQL> alter diskgroup data dismount; 

#############################################################################
a、在DG上創建細粒度模板:
   alter diskgroup data add template stp_fine attributes (unprotected fine);
   
   b、創建使用細粒度可調條帶的表空間
   create tablespace test datafile '+data(stp_fine)/test.dbf' size 10m;

c、創建非標準大小AU的磁盤組,一般在OLAP系統上建議使用。
CREATE DISKGROUP DATA2 external redundancy DISK '/dev/raw/raw11', '/dev/raw/raw10',
'/dev/raw/raw9' ATTRIBUTE 'au_size' = '16M', 'compatible.asm' = '11.2';

CREATE DISKGROUP DATA external redundancy DISK 'ORCL:ASMDISK01', 'ORCL:ASMDISK02'
 ATTRIBUTE  'compatible.asm' = '11.2';

select name,state,compatibility,ALLOCATION_UNIT_SIZE from v$asm_diskgroup;




######################################################################################3
實驗一:

啓動Gi服務
cd /u01/app/oracle/product/11.2.0/grid/bin

./crsctl start has   --啓動高可用服務
./crsctl stop has --停止高可用服務

./crsctl enable has --重啓操作系統會自動啓動HAS服務。

如果創建了ASM實例,我們就可以通過. oraenv 命令來切換環境變量(+ASM),然後直接運行srvctl,crsctl這些命令

******************************************************************
. oraenv  PROD4切換到數據庫的環境變量,執行下面操作註冊數據庫和監聽到has服務中去:
srvctl add  database -d PROD4  -o /u01/app/oracle/product/11.2.0/db_1   --註冊數據庫到GI
srvctl remove database -d PROD4
srvctl start database -d PROD4 --啓動數據庫
srvctl stop database -d PROD4  --閉關數據庫
srvctl config database --查看哪些數據庫已經註冊
srvctl status database -d PROD4/EMREP


lsnrctl stop listener
srvctl add  listener -l listener -p 1521 -o /u01/app/oracle/product/11.2.0/db_1
srvctl config listener --查看監聽是否註冊成功
srvctl start listener  啓動監聽


srvctl remove listener -l listener如果註冊錯誤可以使用該命令刪除
*******************************************************************************


crs_stat -t
target是資源所在目標的狀態,state是資源是否可用



####################
crs_stat -p ora.cssd --查看cssd資源狀態

crs_stat -p ora.diskmon --查看

crsctl start resource ora.cssd --手工重啓cssd

#########################################################################################
實驗:二


1、會創建ASM實例
cd /u01/app/oracle/product/11.2.0/grid/bin

單機環境:要先啓動has服務
./crsctl start has

2、會使用./asmca 創建磁盤組


3、會使用sqlplus 命令創建管管理磁盤組
create diskgroup DATA2 external/normal/high redundancy disk 'ORCL:ASMDISK03','ORCL:ASMDISK04'(v$asm_disk裏的path) ATTRIBUTE  'compatible.asm'(版本兼容性) = '11.2';--創建磁盤組

alter diskgroup data2 add disk 'ORCL:ASMDISK06';--添加磁盤
alter diskgroup data2 add disk 'ORCL:ASMDISK07';
alter diskgroup data2 add disk 'ORCL:ASMDISK11';

alter diskgroup data2 drop disk 'ASMDISK04';--刪除磁盤


 
SQL> drop diskgroup data2  including contents;--刪除磁盤組


4、會使用ASMCMD命令管理asm文件

5、會刪除第一個磁盤組
SQL>sqlplus / as sysasm
SQL> alter diskgroup data dismount force;
SQL> drop diskgroup data force including contents;

########################################################################################

實驗三:文件系統遷移到ASM



1、首先打開歸檔,確認歸檔路徑

2、查詢下數據庫文件結構
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD4/PROD4/system01.dbf
/u01/app/oracle/oradata/PROD4/PROD4/sysaux01.dbf
/u01/app/oracle/oradata/PROD4/PROD4/undotbs01.dbf
/u01/app/oracle/oradata/PROD4/PROD4/users01.dbf
/u01/app/oracle/oradata/PROD4/PROD4/example01.dbf


SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD4/PROD4/control01.ctl
/u01/app/oracle/oradata/PROD4/PROD4/control02.ctl
/u01/app/oracle/oradata/PROD4/PROD4/control03.ctl

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD4/PROD4/redo03.log
/u01/app/oracle/oradata/PROD4/PROD4/redo02.log
/u01/app/oracle/oradata/PROD4/PROD4/redo01.log

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PROD4/PROD4/temp01.dbf


3、全庫做備份:open狀態就可以
[oracle@edsir1p8-PROD4 ~]$ rman target /

RMAN> BACKUP as copy database format '+DATA';
RMAN> EXIT

PROD4創建一個測試表:
SQL> create table t1 as select * from dba_objects;

Table created.

SQL>alter system switch logfile;

4、 在生產庫查看asm磁盤組中備份的控制文件的路徑

RMAN> list backup of controlfile;

specification does not match any backup in the repository

RMAN> list copy of controlfile;

List of Control File Copies
===========================

Key     S Completion Time Ckp SCN    Ckp Time       
------- - --------------- ---------- ---------------
5       A 17-MAY-16       871730     17-MAY-16      
        Name: +DATA/prod4/controlfile/backup.260.912089587
        Tag: TAG20160517T141203


修改spfile文件中控制文件的路徑信息
create pfile='/home/oracle/pfile' from spfile
修改文件中*.control_files='+DATA/prod4/controlfile/backup.262.940489201'
刪除$ORACLE_HOME/dbs/lkPROD4文件
使用另一個實例 將數據庫開啓到mount
export ORACLE_SID=p4
startup pfile='/home/oracle/pfile' mount;
進入rman修改控制文件指針 恢復數據
rman target /
RMAN> catalog start with '+data';
RMAN> switch database to copy;
RMAN> recover database;
恢復後 開啓數據庫
[oracle@edsir1p8-P4 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Thu May 19 09:57:03 2016

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> alter database open resetlogs;

  
指定resetlogs,會執行下列操作:
    1)將當前的在線重做日誌文件歸檔,然後清空其內容並將日誌文件序列號重置為1
      2)重置控制文件中關於在線重做日誌文件的元數據
    3)更新數據文件和在線重做日誌文件的resetlogs scn等信息


6、創建新的臨時表空間文件,並刪除舊的
SQL> alter tablespace temp add tempfile '+DATA' size 200M;
SQL> alter database  tempfile '/u01/app/oracle/oradata/PROD4/PROD4/temp01.dbf' drop ; 或
alter tablespace temp drop tempfile '/u01/app/oracle/oradata/PROD4/PROD4/temp01.dbf';

7、把redo添加新的成員,刪除老的成員,查看原來有多少組,就添加多少成員
 select member from v$logfile;
 alter database add logfile member '+data' to group 1;
 alter database add logfile member '+data' to group 2;
 alter database add logfile member '+data' to group 3;
select group#,status,member from v$logfile;

初始化新加的logfile
SQL> alter system switch logfile;--最少執行三遍

select group#,status,member from v$logfile;--查詢下日誌成員狀態


刪除舊的logfile member(如果無法刪除,説明該文件還在使用,我們可以進行手工切換之後,再刪除)
SQL> select group#,members,status from v$log;

    GROUP#    MEMBERS STATUS
---------- ---------- ----------------
         1          2 CURRENT
         2          2 INACTIVE
         3          2 INACTIVE



alter database drop logfile member '/u01/app/oracle/oradata/PROD4/PROD4/redo03.log';
alter database drop logfile member '/u01/app/oracle/oradata/PROD4/PROD4/redo02.log';
SQL> alter system switch logfile;
alter database drop logfile member '/u01/app/oracle/oradata/PROD4/PROD4/redo01.log';

8、可以根據實際情況重新設置歸檔路徑
alter system set log_archive_dest_1='location=+arch'
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.