2015年9月7日 星期一

IBM AIX 主機重新抓取硬碟 PVID wth error 0516-052 、 0514-516




昨天客戶因為大樓機電系統保養停電,機房主機及 Storage 設備都關機了
保養完後今天來協助客戶把機房內的主機及 Storage 設備開機
發現其中一台AIX P550主機開機後,有個重要的filesystem 沒有自動被  mount
手動 mount 也失敗

查看 lspv 

lspv
hdisk0   00034229eee733csda             rootvg          active
hdisk1   00034dd9e3e734er44             rootvg          active
hdisk3   00034dd9e3e734er4a             ora            
hdisk4          none                                None            
hdisk5          none                                None            
hdisk6          none                                None            
hdisk7          none                                None            
hdisk8          none                                None            
hdisk9          none                                None            


發現該重要的 filesystem 所在的 ora VG 沒有被 active

使用varyonvg指令來手動 active VG

root > varyonvg ora

出現了以下錯誤

0516-052 varyonvg: Volume group cannot be varied on without a
       quorum. More physical volumes in the group must be active.

表示這個 VG 是由多數個 Disk 組成的, 可是這邊看到其他的Disk 都是 none

我翻了一下上個月維護的系統紀錄,看到是由hdisk3、hdisk4、hdisk5組成ora VG
如下列

lspv
hdisk0   00034229eee733csda             rootvg          active
hdisk1   00034dd9e3e734er44             rootvg          active
hdisk3   00034dd9e3e734er4a             ora             active
hdisk4   00034dd9e3e734er4b             ora             active
hdisk5   00034dd9e3e734er4c             ora             active
hdisk6          none                                None            
hdisk7          none                                None            
hdisk8          none                                None            
hdisk9          none                                None   



意思是說開機時,主機抓不到hdisk4及hdisk5
接下來我們要讓主機重新抓到硬碟PVID

先把原本的ora VG 移除掉,使用 varyoffvg 及 exportvg 

varyoffvg ora
exportvg ora


查看 lspv (原本的ora就會變成 none)
lspv
hdisk0   00034229eee733csda             rootvg          active
hdisk1   00034dd9e3e734er44             rootvg          active
hdisk3   00034dd9e3e734er4a             None            
hdisk4          none                                None            
hdisk5          none                                None            
hdisk6          none                                None            
hdisk7          none                                None            
hdisk8          none                                None            
hdisk9          none                                None      

移除 hdisk4 與 hdisk5
rmdev -l hdisk4 -d

出現以下錯誤訊息 (網路上也有人說重新開機就不會lock了)

rmdev: 0514-516 Device configuration database lock service timed out.

什麼......不給刪除
這時候也確定了其他台主機沒有使用該硬碟,所以並不是被別人所使用
(ODM 認為該 Device 有在使用但實際上卻沒有使用?)


接下來要操作到AIX ODM 的部分所以要注意且小心 

移除 config_lock 檔案
cd /etc/objrepos 看到底下有 config_lock 的檔案
mv config_lock config_lock_old 


ls 
adapter                 HACMPpager              InetServ                config_lock_old         sm_cmd_opt.vc
HACMPcluster            HACMPpairtasks          MenuGoal                crypto_module           sm_menu_opt
HACMPcommadapter        HACMPpathtasks          PDiagAtt                crypto_module.vc        sm_menu_opt.vc
HACMPcommand            HACMPport               PDiagAtt.vc             diag_lock               sm_name_hdr
HACMPcommlink           HACMPpprc               PDiagDev                diag_log_lock           sm_name_hdr.vc


移除 hdisk4 與 hdisk5
rm dev -l hdisk4 -d
hdisk4 deleted

rm dev -l hdisk5 -d
hdisk5 deleted


查看lspv hdisk4及hdisk5已成功刪除

lspv
hdisk0   00034229eee733csda             rootvg          active
hdisk1   00034dd9e3e734er44             rootvg          active
hdisk3   00034dd9e3e734er4a             None             
hdisk6          none                                None            
hdisk7          none                                None            
hdisk8          none                                None            
hdisk9          none                                None  


讓系統重新抓取硬碟 (這邊我下了兩次 cfgmgr -v 才抓到Disk)
cfgmgr -v 


查看 lspv

lspv
hdisk0   00034229eee733csda             rootvg          active
hdisk1   00034dd9e3e734er44             rootvg          active
hdisk3   00034dd9e3e734er4a             None             
hdisk4          none                                None   
hdisk5          none                                None   
hdisk6          none                                None            
hdisk7          none                                None            
hdisk8          none                                None            
hdisk9          none                                None  


重新分配PVID
chdev -l hdisk4 -a pv=yes 
hdisk4 changed

chdev -l hdisk5 -a pv=yes 
hdisk5 changed


就可以看到PVID 被抓回來了,且跟之前一模一樣
lspv
hdisk0   00034229eee733csda             rootvg          active
hdisk1   00034dd9e3e734er44             rootvg          active
hdisk3   00034dd9e3e734er4a             none             
hdisk4   00034dd9e3e734er4b             none             
hdisk5   00034dd9e3e734er4c             none             
hdisk6          none                                None            
hdisk7          none                                None            
hdisk8          none                                None            
hdisk9          none                                None   

建立 VG 進入 smitty vg > Import a Volume Group >  VOLUME GROUP name (可重新命名不用跟之前一樣)  、 PHYSICAL VOLUME name (選擇hdisk4,在這邊選擇ora vg其中一顆Disk 及可,它會把同樣是GROUP內的Disk一起抓近來 )


按下 enter 後 

查看 lspv

lspv
hdisk0   00034229eee733csda             rootvg          active
hdisk1   00034dd9e3e734er44             rootvg          active
hdisk3   00034dd9e3e734er4a             ora             active
hdisk4   00034dd9e3e734er4b             ora             active
hdisk5   00034dd9e3e734er4c             ora             active
hdisk6          none                                None            
hdisk7          none                                None            
hdisk8          none                                None            
hdisk9          none                                None   

VG 建立成功

lsvg -l ora 查看 原本的filesystem 都還存在,接下來在把 filesystem mount 起來

恢復成功!!!!


2015年1月20日 星期二

Oracle Create Database 手動建立DB步驟

在碰到的環境中一定有幾個相當特殊, 例如不允許開啟GUI介面或者AIX不能登進去CDE, 這時候想要建立DB, GUI介面的dbca 就沒辦法使用了


ORACLE官方有一個完整手動建立database 的操作步驟


我們利用官方文件來示範一次手動建立DATABASE

環境說明: Oracle 11GR2 、Windows

1. 指定一個新SID

export ORACLE_SID=ORCL2   (Linux, Unix)
set ORACLE_SID=ORCL2   (Windows)


2.確保環境變數設定
 $ vi .profile  
  export ORACLE_SID=ORCL2
  export ORACLE_BASE=/u01/app/oracle  
  export ORACLE_HOME=$ORACLE_BASE/db_1 
  export PATH=/usr/sbin:$PATH  
  export PATH=$ORACLE_HOME/bin:$PATH  
  export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib  export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib  


3.選擇正確的資料庫管理員登入系統

      目前資料庫管理員驗證方式有兩種
  password file 認證:通常檔案存在 $ORACLE_HOME/dbs/pwd(sid).ora
     系統主機認證:確保當前系統使用者有加入資料庫用戶組

可以查看 $ORACLE_HOME/NETWORK/ADMIN/sqlnet.ora 檢視自己的登入方式
    SQLNET.AUTHENTICATION_SERVICES = (EXCLUSIVE) : 使用password file 認證
    SQLNET.AUTHENTICATION_SERVICES = (NTS) : 使用系統主機認證



4.建立 pfile.ora 檔案

  *.audit_file_dest='E:\app\orcl\admin\orcl2\adump'
  *.audit_trail='db'
  *.compatible='11.2.0.0.0'
  *.control_files='E:\oracle\orcl2\control01.ctl'
  *.db_block_size=8192
  *.db_domain=''
  *.db_name='ORCL2'
  *.db_recovery_file_dest='E:\app\orcl\flash_recovery_area'
  *.db_recovery_file_dest_size=4102029312
  *.diagnostic_dest='E:\app\orcl'
  *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
  *.memory_target=400M
  *.open_cursors=300
  *.processes=150
  *.remote_login_passwordfile='EXCLUSIVE'
  *.undo_tablespace='UNDOTBS1


5.建立 instance服務 (windows only)
   oradim -NEW -SID sid -STARTMODE MANUAL -PFILE pfile



   windows 以外的系統可以跳過, 直接執行下一個步驟來登入

6.使用Sqlplus連接instance
  D:\>sqlplus /nolog
  SQL*Plus: Release 11.2.0.1.0 Production on 星期三 1 21 11:42:28 2015
  Copyright (c) 1982, 2010, Oracle.  All rights reserved.
   
  SQL> conn / as sysdba
  連線至閒置的執行處理.
  SQL>

    在連進去前先確定 ORACLE_SID 是否設定正確, 不要再連進去舊的db

7.使用pfile.ora start nomount , 確定啟動到nomount, 利用pfile 建立 spfile
  D:\>sqlplus /nolog
  SQL*Plus: Release 11.2.0.1.0 Production on 星期三 1 21 11:42:28 2015
  Copyright (c) 1982, 2010, Oracle.  All rights reserved.
  SQL> startup nomount pfile=d:\pfile.ora
  ORACLE 執行處理已啟動.
   
  Total System Global Area  417546240 bytes
  Fixed Size                  2176328 bytes
  Variable Size             268438200 bytes
 Database Buffers          138412032 bytes
 Redo Buffers                8519680 bytes
 SQL>
 SQL> create spfile from pfile='D:\pfile.ora';
  
 已建立檔案.
 SQL>

8.執行 create database 命令
  create database ORCL2
    user sys identified by oracle
    user system identified by oracle
    controlfile reuse
    logfile  
      group 1 ('E:\oracle\orcl2\redo1.log') size 10m, 
      group 2 ('E:\oracle\orcl2\redo2.log') size 10m, 
      group 3 ('E:\oracle\orcl2\redo3.log') size 10m 
    character set          AL32UTF8
   national character set AL16UTF16
   datafile 'E:\oracle\orcl2\system1.dbf'
             size 50M
             autoextend on
             next 10M maxsize unlimited
             extent management local
   sysaux datafile 'E:\oracle\orcl2\sysaux1.dbf'
             size 10M
             autoextend on
             next 10M
             maxsize unlimited
   undo tablespace undotbs1
             datafile 'E:\oracle\orcl2\undotbs1.dbf'
             size 10M
   default temporary tablespace temp
             tempfile 'E:\oracle\orcl2\temp1.dbf'
             size 10M;

有關create database 子命令有更詳盡的介紹請參考

9.建立其他tablespace
  CREATE TABLESPACE indx_tbs LOGGING
       DATAFILE E:\oracle\orcl2\indx01.dbf'
       SIZE 100M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED
       EXTENT MANAGEMENT LOCAL;

10.建立 Data Dictionary Views
       一.執行 $ORACLE_HOME/RDBMS/ADMIN/catalog.sql
       二.執行 $ORACLE_HOME/RDBMS/ADMIN/catproc.sql
       三.執行 $ORACLE_HOME/RDBMS/ADMIN/pupbld.sql


Catalog.sql:建立Data Dictionarydynamic performance views,以及public synonyms
Catproc.sql:建立所有有關PL/SQL的脚本
Pupbld.sql:建立必要的SQL*Plus權限


11.安裝DB附加功能
假如應用程式需要其附屬功能可一需求執行script

相關功能說明請參考

http://docs.oracle.com/cd/B28359_01/server.111/b28320/scripts002.htm#i1005727





SQL> select name ,open_mode from v$database;

NAME               OPEN_MODE
------------------ ----------------------------------------
ORCL2              READ WRITE

建立成功!