Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32667
  • 博文数量: 11
  • 博客积分: 490
  • 博客等级: 下士
  • 技术积分: 105
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-18 13:19
文章分类
文章存档

2008年(11)

我的朋友
最近访客

分类: LINUX

2008-04-24 15:01:42

從RAC DB中移除一個node
 
範例環境:
Oracle 版本 : 10.2.0.3
3 nodes for RAC DB
DB name = orcl

要移除的node, node name = ora03; instance name = orcl3

在保留的node 做以下流程:

1. 先確認有 ocr 的 backups
   $ocrconfig -showbackup

2. 移除ora03 並停止相關服務

$srvctl stop instance -d orcl -i orcl3
$srvctl remove instance -d orcl -i orcl3

$srvctl stop asm -n ora03 (有使用ASM的話)
$srvctl remove asm -n ora03 (有使用ASM的話)
$srvctl stop nodeapps -n ora03

3. 切換成root 執行以下指令

以下資訊可以查 #$ORA_CRS_HOME/bin/crs_stat

# srvctl remove nodeapps -n ora03
#crs_unregister ora.ora03.LISTENER_ORA03.lsnr
#crs_unregister ora.ora03.vip

4. 在所有node上, 將下面兩個檔案內,有關於要移除 ora03 相關資訊都拿掉
   $ORACLE_HOME/network/admin/tnsnames.ora
   $ORACLE_HOME/network/admin/listener.ora

5. login 到DB
  $sqlplus /  as sysdba

SQL>select * from v$log where thread#=3; (本例是3)
SQL>alter system archive log all; (確認你要移掉的log, ARC=YES, 如果不是下這個指令)
SQL>alter database disable thread 3;
SQL>alter database drop logfile group YY; (將要移除的instance 之log 移除, YY號碼可由 v$log 得知)
SQL>drop tablespace UNDOTBS3;  (將第三個node的undo tablespace 移除掉)

6. 移除掉SPfile內關於此node的參數

SQL>alter system reset local_listener scope=spfile sid='orcl3';
SQL>alter system reset thread scope=spfile sid='orcl3';
SQL>alter system reset undo_tablespace scope=spfile sid='orcl3';
SQL>alter system reset instance_number scope=spfile sid='orcl3';

SQL>alter system reset "__db_cache_size" scope=spfile sid='orcl3';
SQL>alter system reset "__java_pool_size" scope=spfile sid='orcl3';
SQL>alter system reset "__large_pool_size" scope=spfile sid='orcl3';
SQL>alter system reset "__shared_pool_size" scope=spfile sid='orcl3';
SQL>alter system reset "__streams_pool_size" scope=spfile sid='orcl3';

SQL>create pfile='/tmp/pfileDB_for_checks' from spfile; (建立一個pfile檔叫pfileDB_for_checks, 可以確認內容是否還有移除的node)

-- 如果有使用ASM的話,大概就像下面這樣 ---

SQL>alter system reset local_listener scope=spfile sid='+ASM...';
SQL>alter system reset instance_number scope=spfile sid='+ASM...';
SQL>create pfile='/tmp/pfileASM_for_further_checks' from spfile;

7. 將node 從CRS移除

$olsnodes -n  (確認目前node數, 要移除的node還在)
ora01  1
ora02  2
ora03  3

$ORA_CRS_HOME/install/rootdelete.sh remote nosharedvar
(用root 的身份,在要移除的那台執行這個指令,$ORA_CRS_HOME是環境變數,因個人環境設定而異,如果要移除那台已關機,就不用了)

$ORA_CRS_HOME/install/rootdeletenode.sh ora03,3
(用root 身份在其它保留的node 上下這個指令)

$$olsnodes -n (再確認是否移除)
ora01  1
ora02  2

8. 更新 Oracle inventory

執行以下指令前,可以先 cat 這個檔案,就可以大概了解.  $ORACLE_BASE/oraInventory/ContentsXML/inventory.xml

更新 rdbms inventory
$ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME CLUSTER_NODES=ora01,ora02

更新 crs inventory
$ORA_CRS_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORA_CRS_HOME CRS=TRUE CLUSTER_NODES=ora01,ora02

如果有 agent 的話,記得停止 agent 並更新 EM上的 nodelist

9. 把移除的node上的 oracle相關檔案刪除

主要的Oracle 安裝檔案
rm -rf /etc/oracle /etc/oratab /oraInst.loc
rm -rf $ORACLE_BASE/product $ORACLE_BASE/oraInventory

相關檔案刪除及停止服務並重開機
/etc/init.d/oracleasm stop
chkconfig --del oracleasm
rm /etc/init.d/oracleasm
service devlabel stop
chkconfig --del devlabel
rm -rf /var/tmp/.oracle
vi $HOME/.bashrc (remove entries related to Oracle instances)
rm /etc/logrotate.d/ora_*
vi /etc/modules.conf
(comment out #options qla2300 and #options hangcheck-timer)
rm /etc/qla2300.conf
rm /boot/initrd-2.4.21-37.ELsmp.img; mkinitrd /boot/initrd-2.4.21-37.ELsmp.img 2.4.21-37.ELsmp (customize with current kernel name)
rmmod qla2300
ifconfig eth1 down
ifconfig eth2 down
vi /etc/sysconfig/network-scripts/ifcfg-eth1 (edit: ONBOOT=no)
vi /etc/sysconfig/network-scripts/ifcfg-eth2 (edit: ONBOOT=no)
shutdown -r now
阅读(738) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~