Специальные параметры кластера:
instance_number
instance_group
thread
cluster_database
cluster_database_instances
cluster_interconnects
remote_listener
local_listener
parallel_instance
max_commit_propagation_delay
Пример:
TESTDB1.instance_number=1
TESTDB2.instance_number=2
TESTDB1.thread=1
TESTDB2.thread=2
*.cluster_database_instances=2
*.cluster_database=TRUE
*.remote_listener='rac-tdb-scan:1521'
Параметры имеющие одинаковое значение для всех инстансов:
active_instance_count
archive_lag_target
compatible
cluster_database
cluster_database_instances
cluster_interconnects
control_files
db_block_size
db_domain
db_files
db_name
db_recovery_file_dest
db_recovery_file_dest_size
db_unique_name
dml_locks -- when 0
instance_type -- rdbms or asm
max_commit_propagation_delay
parallel_max_servers
remote_login_password_file
trace_enabled
undo_management
Пример:
*.cluster_database=true
*.cluster_database_instances=2
*.compatible='11.2.0.2'
*.undo_management='AUTO'
Параметры имеющие уникальные значения для всех инстансов:
instance_number
instance_name
thread
undo_tablespace/rollback_segments
Пример:
INST1.instance_number=1
INST1.instance_name=TESTDB1
INST1.thread=1
INST1.undo_tablespace='UNDOTBS1'
INST2.instance_number=2
INST2.instance_name=TESTDB1
INST2.thread=2
INST2.undo_tablespace='UNDOTBS2'
Пример файла параметров инициализации:
TESTDB2.__db_cache_size=111132278784
TESTDB1.__db_cache_size=109521666048
TESTDB1.__oracle_base='/oracle/diag'#ORACLE_BASE set from environment
TESTDB2.__oracle_base='/oracle/diag'#ORACLE_BASE set from environment
TESTDB2.__shared_io_pool_size=0
TESTDB1.__shared_io_pool_size=268435456
TESTDB2.__streams_pool_size=1207959552
TESTDB1.__streams_pool_size=1342177280
TESTDB1.dispatchers='(PROTOCOL=TCP)(SERVICE=TESTDB1XDB)'
TESTDB2.dispatchers='(PROTOCOL=TCP)(SERVICE=TESTDB2XDB)'
TESTDB1.instance_name='TESTDB1'
TESTDB2.instance_name='TESTDB2'
TESTDB1.instance_number=1
TESTDB2.instance_number=2
TESTDB1.thread=1
TESTDB2.thread=2
TESTDB1.undo_tablespace='PSAPUNDO'
TESTDB2.undo_tablespace='PSAPUNDO2'
*._awr_mmon_deep_purge_all_expired=TRUE
*._fix_control='5099019:ON','5705630:ON','6055658:OFF','6120483:OFF','6399597:ON','6430500:ON','6440977:ON','6626018:ON','6972291:ON','7168184:OFF','7658097:ON','8937971:ON','9196440:ON','9495669:ON','13077335:ON','13627489:ON','14255600:ON','14595273:ON','18405517:2','20355502:8','14846352:OFF','22540411:ON','10038517:OFF'#Note 1888485 RECOMMENDED SETTINGS
*._high_priority_processes='LMS*|LM*|LCK0|GCR*|DIAG|CKPT|DBRM|RMS0|LGWR'
*._in_memory_undo=FALSE
*._ktb_debug_flags=8
*._MUTEX_WAIT_SCHEME=1
*._MUTEX_WAIT_TIME=10
*._OPTIM_PEEK_USER_BINDS=false
*._OPTIMIZER_ADAPTIVE_CURSOR_SHARING=false
*._optimizer_aggr_groupby_elim=FALSE
*._optimizer_batch_table_access_by_rowid=FALSE
*._OPTIMIZER_EXTENDED_CURSOR_SHARING_REL='none'
*._optimizer_reduce_groupby_key=FALSE
*._OPTIMIZER_USE_FEEDBACK=false
*._rowsets_enabled=FALSE
*._securefiles_concurrency_estimate=50
*._suppress_identifiers_on_dupkey=TRUE
*._use_single_log_writer='TRUE'
*.audit_file_dest='/oracle/rdbms/12.1.0.2/TESTDB/rdbms/audit'
*.audit_sys_operations=true
*.audit_trail='DB'
*.cluster_database_instances=2
*.cluster_database=TRUE
*.compatible='12.1.0.2.0'
*.control_file_record_keep_time=30
*.control_files='+TST_DATA/TESTDB/controlfile/current.774.882710569'#Set by RMAN
*.db_block_size=8192
*.db_cache_size=111132278784
*.db_create_file_dest='+TST_DATA'
*.db_create_online_log_dest_1='+TS_REDO'
*.db_file_name_convert='+DATA','+TST_DATA'
*.db_files=1024
*.db_name='TESTDB'
*.db_recovery_file_dest_size=30000M
*.db_unique_name='TESTDB'
*.event='10027','10028','10142','10183','10191','10995 level 2','38068 level 100','38085','38087','44951 level 1024'#SAP_121022_201503 RECOMMENDED SETTINGS
*.fal_client='TESTDB'
*.fal_server='TESTDB'
*.fast_start_io_target=0
*.fast_start_mttr_target=0
*.filesystemio_options='SETALL'
*.JAVA_POOL_SIZE=261196308
*.LARGE_POOL_SIZE=261196308
*.log_archive_config='NODG_CONFIG'
*.log_archive_dest_1='LOCATION=+ARCHLOGS/TESTDB'
*.log_archive_dest_2=''
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='%t_%s_%r.dbf'
*.log_checkpoint_interval=3000000
*.log_checkpoint_timeout=0
*.log_checkpoints_to_alert=true
*.log_file_name_convert='/oracle/TESTDB/','+DATA/TESTDB/'
*.max_dump_file_size='20000'
*.open_cursors=2000
*.optimizer_adaptive_features=FALSE
*.optimizer_capture_sql_plan_baselines=FALSE
*.optimizer_index_cost_adj=20
*.parallel_execution_message_size=16384
*.parallel_max_servers=0
*.parallel_min_servers=0
*.parallel_threads_per_cpu=1
*.pga_aggregate_target=36045090422
*.processes=1000
*.query_rewrite_enabled='false'
*.recyclebin='off'
*.remote_listener='rac-tdb-scan:1521'
*.remote_login_passwordfile='exclusive'
*.replication_dependency_tracking=false
*.resource_manager_plan=''
*.service_names='TESTDB'
*.sessions=2000
*.shared_pool_size=11753833833
*.standby_archive_dest='+ARCHLOGS/TESTDB'
*.standby_file_management='AUTO'
*.undo_retention=86400
*.use_large_pages='only'
Добавление нового узла к кластеру:
Check networking connectivty/ASM disk status at OS level
[grid@omega01]$ ssh omega03 date
[grid@omega01]$ nslookup omega03
[root@omega01]# ping omega03.localdomain.ru
[root@omega01]# ping 192.168.2.73
[root@omega03]# /etc/init.d/oracleasm listdisks
DATA1
DATA2
DATA3
OCR1
OCR2
OCR3
[root@omega03]# ls -l /dev/oracleasm/*
/dev/oracleasm/disks:
total 0
brw-rw---- 1 grid asmadmin 8, 17 Aug 30 09:21 DATA1
brw-rw---- 1 grid asmadmin 8, 33 Aug 29 14:16 DATA2
brw-rw---- 1 grid asmadmin 8, 49 Aug 29 14:16 DATA3
brw-rw---- 1 grid asmadmin 8, 65 Aug 29 14:16 OCR1
brw-rw---- 1 grid asmadmin 8, 81 Aug 29 14:16 OCR2
brw-rw---- 1 grid asmadmin 8, 97 Aug 29 14:16 OCR3
You can also dump the ASM header by running kfed if addnode.sh failed but the file copy operation of addnotes.sh succeeded
[grid@omega03]$ $GRID_HOME/bin/kfed read /dev/oracleasm/disks/DATA2 | grep name
kfdhdb.dskname: DATA_0001 ; 0x028: length=9
kfdhdb.grpname: DATA ; 0x048: length=4
kfdhdb.fgname: DATA_0001 ; 0x068: length=9
kfdhdb.capname: ; 0x088: length=0
Use kfod to get an idea about the ASM disk status
[grid@omega03]$ kfod asm_diskstring='/dev/oracleasm/disks/*' nohdr=true verbose=true disks=all status=true op=disks
5114 CANDIDATE /dev/oracleasm/disks/DATA1 grid asmadmin
5114 MEMBER /dev/oracleasm/disks/DATA2 grid asmadmin
5114 MEMBER /dev/oracleasm/disks/DATA3 grid asmadmin
2047 CANDIDATE /dev/oracleasm/disks/OCR1 grid asmadmin
2047 CANDIDATE /dev/oracleasm/disks/OCR2 grid asmadmin
2047 CANDIDATE /dev/oracleasm/disks/OCR3 grid asmadmin
Verify the current setup with the following cluvfy commands:
[grid@omega01]$ cluvfy stage -post hwos -n omega01, omega03
[grid@omega01]$ cluvfy stage -pre nodeadd -n omega03 | grep PRV
[grid@omega01]$ cluvfy stage -pre crsinst -n omega03
[grid@omega01]cluvfy comp peer -refnode omega01 -n omega03 -orainv oinstall -osdba asmdba -verbose
use IGNORE_PREADDNODE_CHECKS if needed
Run addNode.sh for the Clusterware (GRID_HOME)
Use IGNORE_PREADDNODE_CHECKS Y when there were exlainable cluvfy errors like PRVG-1013, PRVF-5636, PRVF-7617
For GNS clusters use CLUSTER_NEW_NODES
For NON-GNS cluster use CLUSTER_NEW_NODES and CLUSTER_NEW_VIRTUAL_HOSTNAMES
Run addnode.sh
[grid@omega01]$ setenv IGNORE_PREADDNODE_CHECKS Y
[grid@omega01]$ cd $GRID_HOME/oui/bin
[grid@omega01]$ ./addNode.sh "CLUSTER_NEW_NODES={omega03}"
Run required root scripts
[root@omega03]# /u01/app/oraInventory/orainstRoot.sh
[root@omega03]# /u01/app/11203/grid/root.sh
Run cluvfy and crsctl stat res -t to verify cluster node add installation
[root@omega01]# my_crs_stat
Verify post CRS status with cluvfy
[grid@omega01]$ cluvfy stage -post crsinst -n omega01,omega02,omega03
[grid@omega01]$ cluvfy stage -post nodeadd -n omega03
Ignore well known errors like:
PRVF-5217 : An error occurred while trying to look up IP address for "omega01.localdomain.ru"
Install RAC database software on omega03
Install RAC database software on omega03 as oracle owner
[oracle@omega01]$ id
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),501(vboxsf),506(asmdba),54322(dba)
[oracle@omega01]$ cd $ORACLE_HOME/oui/bin
[oracle@omega01]$ ./addNode.sh "CLUSTER_NEW_NODES={omega03}"
[root@omega03]# /u01/app/oracle/product/11203/testdb/root.sh
Invoke dbca and add instance TESTDB3 on node OMEGA03
Run dbca as oracle owner:
[oracle@omega03]$ dbca
Oracle RAC cluster database
Instance Management
Add an Instance
Select your RAC database (TESTDB)
Select instance: TESTDB3 - Host: OMEGA03
Accept the default values for
Initialization Parameters
Instance Name Value
TESTDB3 instance_number 3
TESTDB3 thread 3
TESTDB3 undo_tablespace UNDOTBS3
Tablespaces
Name Type Extent Management
UNDOTBS3 PERMANENT , UNDO LOCAL
Data Files
Name Tablespace Size(M)
Redo Log Groups
Group Size(K) Thread
5 51200 3
6 51200
Verify cluster status using dbca, cluvfy
[oracle@omega01]$ srvctl status database -d TESTDB
[grid@omega01]$ cluvfy comp admprv -o db_config -d $ORACLE_HOME -n omega01,omega02,omega03 -verbose
--------------------------------------------------------------------------------------------------
Добавим новый узел rac3 в файл /etc/hosts на всех узлах:
cat /etc/hosts
127.0.0.1 localhost localhost.localdomain
192.168.1.231 rac1.localdomain rac1
10.10.10.231 rac1-priv.localdomain rac1-priv
192.168.1.234 rac1-vip.localdomain rac1-vip
192.168.1.232 rac2.localdomain rac2
10.10.10.232 rac2-priv.localdomain rac2-priv
192.168.1.235 rac2-vip.localdomain rac2-vip
192.168.1.233 rac3.localdomain rac3
10.10.10.233 rac3-priv.localdomain rac3-priv
192.168.1.236 rac3-vip.localdomain rac3-vip
192.168.1.237 rac-scan.localdomain
Проверим доступность по сети нового узла rac3
root@rac3# ping 192.168.1.231
root@rac3# ping 192.168.1.232
root@rac3# hostname
root@rac1# ping rac3
Проверили сеть
Обновили DNS
Обновили /etc/hosts
Конфигурация ntpd на новом узле
Создаём пользователей
Создаем структуру каталогов на узле rac3 аналогично как на узле rac1.
mkdir -p /u01/app/12.1.0/grid_1
chown -R root:oinstall /u01/app/12.1.0/grid_1
mkdir -p /u01/app/oracle/product/12.1.0/dbhome_1
chown -R oracle:oinstall /u01/app/oracle/product/12.1.0/dbhome_1
chown -R grid:oinstall /u01/app/12.1.0/grid_1
Устанавливаем пакеты
Настраиваем параметры ядра
Проверяем связь по ssh с rac1 и rac2 из под пользователя grid
From oracle_home/oui/bin on existing Node:
/runSSHSetup.sh -user oracle -hosts "Existing_Node New_Node" -advanced -exverify
Configure secure shell for oracle user on all nodes
From oracle_home/oui/bin on rac1
./runSSHSetup.sh -user oracle -hosts "rac2 rac3" -advanced -exverify
Проверяем видимость дисков с узла rac3
root@rac3# cd /etc/udev
root@rac3# ls
root@rac3# cd rules.d/
root@rac3# cat 99-oracle.rules
Проверяем что узел rac3 подготовлен для инсталляции ПО
Verify New Node (HWOS)
From grid_home on rac1
$GRID_HOME/bin/cluvfy stage -post hwos -n rac3
Verify Peer (REFNODE)
From grid_home on rac1
$GRID_HOME/bin/cluvfy comp peer -refnode rac1 -n rac3 -orainv oinstall -osdba dba -verbose
Verify New Node (NEW NODE PRE)
From grid_home on rac1
$GRID_HOME/bin/cluvfy stage -pre nodeadd -n rac3 -fixup -verbose
Будет предложено выполнить под root скрипт на rac3
root@rac3# /tmp/CVU_12.1.0.1.0_grid/runfixup.sh
Инсталляция GRID Software на новый узел rac3:
проверим что узел готов к этому
cluvfy stage -pre nodeadd -n rac3 -verbose
cd /u01/app/12.1.0/grid_1
cd addnode
Если вы используете Grid Naming Service (GNS):
./addNode.sh -silent "CLUSTER_NEW_NODES={rac3}"
Если вы используете Grid Naming Service (GNS):
./addNode.sh -silent "CLUSTER_NEW_NODES={rac3}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={rac3-vip}"
На новом узле rac3 запустим от root скрипт:
root.sh
Если вы не используете службу Oracle Grid Naming Service (GNS),
вы должны добавить имя и адрес для rac3 в DNS.
Теперь вы должны запустить Oracle Clusterware на новом узле.
Чтобы проверить установку Oracle Clusterware на новом узле,
вы можете запустить следующую команду на вновь настроенном узле rac3:
$ cd /u01/app/12.1.0/grid/bin
$ ./cluvfy stage -post nodeadd -n rac3 -verbose
Проверяем стек
crsctl check cluster
crsctl check has
crsctl status res -t
olsnodes -n
srvctl status asm -a
ocrcheck
crsctl query css votedisk
Проверить что новый grid_home появился в файле inventory.xml на всех узлах.
cd /u01/app/oraInventory/ContentsXML/
cat inventory.xml
Избегайте изменять имена хостов после завершения установки Oracle Clusterware,
включая добавление или удаление квалификаций домена.
Узлы с измененными именами хостов должны быть удалены из кластера и добавлены
обратно с новым именем.
Инсталляция RDBMS Software на новый узел rac3:
На первом узле запускаем
$ cd /u01/app/oracle/product/12.1.0/dbhome_1/addnode
$ ./addNode.sh -silent "CLUSTER_NEW_NODES = {rac3}"
На новом узле rac3 запустим от root скрипт:
root.sh
Создание экземпляра ORCL3 на новом узле rac3
Вы можете добавить экземпляр в кластер, используя опцию "Instance Management" в DBCA
или с помощью Enterprise Manager.
Но можно и в silent режиме:
dbca -silent -addInstance -nodelist rac3 -gdbname ORCL -instanceName ORCL3 -sysDBAUserName sys -sysDBAPassword oracle
Проверяем
srvctl status database -d orcl
Проверить что новый oracle_home появился в файле inventory.xml на всех узлах.
cd /u01/app/oraInventory/ContentsXML/
cat inventory.xml
crsctl status res -t
crsctl status res -t | grep -i offline
---------------------------------------------------------------------------------------------------------------------
Добавили новый сервер omega03
Дали доступ по ssh
Проверяем настройки ОС на готовность к установке кластерного ПО:
[grid@omega01 ~]$ cluvfy stage -pre crsinst -n omega03 -verbose
Решаем проблемы:
Проверяем новый узел на готовность установки Oracle Clusterware:
[grid@omega01 ~]$ cd /u01/distrib/grid/
[grid@omega01 grid]$./runcluvfy.sh stage -pre nodeadd -n omega03
[grid@omega01 ~]$crsctl check cluster -all
Устанавливаем кластерное ПО на omega03
[grid@omega-1 u01]$ cd /u01/app/grid/11.2.0/asm_1/oui/bin/
[grid@omega01 u01]$ export IGNORE_PREADDNODE_CHECKS=Y
[grid@omega01 bin]$ ./addNode.sh --silent "CLUSTER_NEW_NODES={omega03}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={omega03-vip}"
Выполняем скрипты от root:
root@omega03 ~ # /u01/app/oraInventory/orainstRoot.sh
root@omega03 ~ # /u01/app/grid/11.2.0/asm_1/root.sh
Проверяем:
[grid@omega03 ~]$ crsctl check cluster -all
Проверяем установку Oracle Clusterware на узле omega03
[grid@omega01 u01]$ cluvfy stage -post crsinst -n all
[grid@omega01 u01]$ crsctl status serverpool
Установка ПО Oracle RAC:
[oracle@omega01 ~]$ cd /u01/app/oracle/11.2.0/db_1/oui/bin/
[oracle@omega01 bin]$ ./addNode.sh -silent "CLUSTER_NEW_NODES={omega03}"
Выполняем скрипт от root:
root@omega03 ~ # /u01/app/oracle/11.2.0/db_1/root.sh
Проверяем:
[oracle@omega01 bin]$ crsctl status serverpool
[grid@omega03 ~]$ crsctl status res -t
Добавляем экземпляр:
[grid@omega01 ~]$ dbca -silent -addInstance -nodeList omega03 -gdbName TESTDB3_OMEGA03 -instanceName TESTDB3 -sysDBAUserName sys
Enter SYS user password:
Проверяем:
[grid@omega01 ~]$ crsctl status serverpool
[grid@omega01 ~]$ srvctl add serverpool -g mypool -l 1 -u -1 -i 1 -n "omega01,omega02,omega03"
Удаление узла из кластера
Verify that all the instances are up and running.
[oracle@omega03 ~]$ srvctl status database -d TESTDB
Check resources running on note omega03
[grid@omega03 ~]$ crs | egrep 'omega03|STATE|--'
Verify the current ocr backup.
[grid@omega03 ~]$ ocrconfig -showbackup
Ensure that all the instances are registered in the default CRS Listener.
[grid@omega03 ~]$ lsnrctl status LISTENER_SCAN2
Start DCBA from a node other than the one that you are removing and select
-->"Real Application Clusters"
--> "Instance Management"
--> "Delete Instance".
--> Accept the alert windows to delete the instance.
Verify that the instance has been deleted and thread is disabled by querying gv$instance and v$thread.
SQL> select INST_ID, INSTANCE_NUMBER, INSTANCE_NAME, HOST_NAME from gv$instance;
SQL> select THREAD#, STATUS, INSTANCE from v$thread;
Verify that the thread for the deleted instance has been disabled. If it is still enabled, disable it as follows:
SQL>ALTER DATABASE DISABLE THREAD 2;
THREAD# 3 is already disable
Delete the Node from the Cluster
$ srvctl disable listener -l
$ srvctl stop listener -l
Checking listners:
[grid@omega03 ~]$ ps -elf | grep tns
No need to run the above commands as all listeners run from GRID_HOME
Run the following command from the $ORACLE_HOME/oui/bin directory
on the node that you are deleting to update the inventory on that node:
[oracle@omega03 ~]$ $ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME CLUSTER_NODES=omega03 -local
Remove the Oracle RAC software by runing the following command on the node to be deleted from the $ORACLE_HOME/deinstall directory:
[oracle@omega03 ~]$ $ORACLE_HOME/deinstall/deinstall -local
Update the nodes list on the remaining nodes as in the following example:
omega01:
[root@omega01 ~]# su - oracle
Active ORACLE_SID: TESTDB1
[oracle@omega01 ~]$ $ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME CLUSTER_NODES=omega01,omega02
[oracle@omega01 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory
Verify whether the node to be deleted is active or not by using following command from the $CRS_HOME/bin directory:
[grid@omega01 ~]$ olsnodes -s -t
On omega02:
[root@omega02 ~]# su - oracle
Active ORACLE_SID: TESTDB2
[oracle@omega02 ~]$ $ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME CLUSTER_NODES=omega01,omega02
[oracle@omega02 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory
[root@omega02 ~]# su - grid
[grid@omega02 ~]$ olsnodes -s -t
Disable the Oracle Clusterware applications and daemons running on the node.
Run the rootcrs.pl script as root from the $CRS_HOME/crs/
(if it is last node use the option -lastnode) as follows:
[root@omega03 Desktop]# $GRID_HOME/crs/install/rootcrs.pl -deconfig -force
From any node that you are not deleting, run the following command from the $CRS_HOME/bin directory as root to delete the node from the cluster:
[root@omega01 ~]# $GRID_HOME/bin/crsctl delete node -n omega03
Update the node list on the node to be deleted ( omega03) , run the following command from the CRS_HOME/oui/bin directory:
[grid@omega03 ~]$ $GRID_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$GRID_HOME CLUSTER_NODES=omega03 -local
Update the node list on the remaining nodes by running the following command from $CRS_HOME/oui/bin from each of the remaining nodes the cluster:
on omega01:
[grid@omega01 ~]$ $GRID_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$GRID_HOME CLUSTER_NODES={omega01,omega02} -local
[grid@omega01 ~]$ $GRID_HOME/OPatch/opatch lsinventory
on omega02:
[grid@omega02 ~]$ $GRID_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$GRID_HOME CLUSTER_NODES={omega01,omega02} -local
[grid@omega02 ~]$ $GRID_HOME/OPatch/opatch lsinventory
Deinstall the Oracle Clusterware home from the node that you want to delete:
grid@omega03 ~]$ $GRID_HOME/deinstall/deinstall -local
Check cluster and resources status of our 2-Note cluster
grid@omega02 ~]$ olsnodes -s -t
[grid@omega02 ~]$ crs
--------------------------------------------------------------------------------------------------------------------
Удаление ноды из кластера
grid@rac1$ olsnodes
grid@rac1$ crsctl get cluster mode status
grid@rac1$ crsctl config gns
grid@rac1$ oifcfg getif
grid@rac1$ crsctl get node role config
grid@rac1$ asmcmd showclustermode
grid@rac1$ asmcmd showclusterstate
grid@rac1$ srvctl status asm -detail
grid@rac1$ crsctl get node role config -all
grid@rac1$ crsctl get node role status -all
grid@rac1$ crsctl status res -t
Перед удалением ноды удалим её из GC OEM
Backup OCR from rac1
root@rac1# /u01/app/11.2.0/grid/bin/ocrconfig -manualbackup
root@rac1# /u01/app/12.1.0/grid_1/bin/olsnodes -s
root@rac1# /u01/app/12.1.0/grid_1/bin/crsctl query css votedisk
root@rac1# /u01/app/12.1.0/grid_1/bin/ocrcheck
root@rac1# /u01/app/12.1.0/grid_1/bin/srvctl status database -d orcl
root@rac1# /u01/app/12.1.0/grid_1/bin/srvctl config service -d ORCL
root@rac1# /u01/app/12.1.0/grid_1/bin/srvctl status service -d orcl
Удалить инстанс ORCL3
root@rac1# xhost +
access control disabled, clients can connect from any host
root@rac1# su - oracle
oracle@rac1$ which dbca
oracle@rac1$ dbca
Или так:
oracle@rac1$ dbca -silent -deleteInstance -nodeList rac3 -gdbName ORCL -instanceName ORCL3 -sysDBAUserName sys -sysDBAPassword oracle
Проверяем:
srvctl status database -d orcl
увидим два инстанса
oracle@rac1$ srvctl config database -d orcl -v
oracle@rac1$ sqlplus '/as sysdba'
SQL> select * from gv$instance
SQL> select * from v$thread
SQL> select * from v$log where thread#=3
SQL> select * from v$logfile
Удалить online redo и undo, если есть
oracle@rac1$ srvctl config listener -a
Remove RDBMS Software
oracle@rac3$ cd $ORACLE_HOME/oui/bin
$ ./runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES={rac3}" -local
# In the above command the "-local" hint is used, So that when we
# deinstall the oracle software, then only the local installation
# in removed otherwise. If this hint is not supplied then
# Oracle binaries from all the instances would be removed.
Your oratab should not contain any database entries except for ASM entries.
Sample oratab file
root@rac3# cat /etc/oratab
+ASM3:/u01/app/11.2.0/grid:N # line added by Agent
Deinstall Oracle Software.
root@rac3# su - oracle
oracle@rac3$
oracle@rac3$ cd $ORACLE_HOME/deinstall
oracle@rac3$ deinstall]$ ./deinstall -local
On the remaining nodes (rac1,rac2) update the oraInventory.
root@rac1# su - oracle
oracle@rac1$ cd $ORACLE_HOME/oui/bin
oracle@rac1$ ./runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES={rac1,rac2}"
Verify that the Inventory.xml file on both nodes should only contain
dbhome entries for rac1 and rac2.
oracle@rac1$ cat /u01/app/oraInventory/ContentsXML/inventory.xml
.....
< NODE_LIST >
< NODE NAME="rac1"/ >
< NODE NAME="rac2"/ >
< /NODE_LIST >
< /HOME >
Remove Clusterware from the rac3.
root@rac1# cd /u01/app/11.2.0/grid/bin/
root@rac1# ./olsnodes -s -t
rac1 Active Unpinned
rac2 Active Unpinned
rac3 Active Unpinned
The third node should be unpinned if it's not then do the following.
root@rac1# ./crsctl unpin css -n rac3
Disable Oracle clusterware by executing the following from rac3.
root@rac3# cd /u01/app/11.2.0/grid/crs/install/
root@rac3# ./rootcrs.pl -deconfig -force
Run the following from rac1 to verify.
root@rac1# cd /u01/app/11.2.0/grid/bin/
root@rac1# ./crsctl delete node -n rac3
CRS-4661: Node rac3 successfully deleted.
root@rac1# ./olsnodes -t -s
rac1 Active Unpinned
rac2 Active Unpinned
Update Oracle inventory from rac3
grid@rac3$ cd $GRID_HOME/oui/bin
grid@rac3$ ./runInstaller -updateNodeList ORACLE_HOME=$GRID_HOME "CLUSTER_NODES={rac3}" CRS=TRUE -silent -local
Deinstall Grid Infrastructure Software from rac3.
grid@rac3$ cd $GRID_HOME/deinstall
grid@rac3$ ./deinstall -local
Run the specified commands as root from rac3.
root@rac3# rm -rf /etc/oraInst.loc
root@rac3# rm -rf /opt/ORCLfmap
root@rac3# rm -rf /u01/app/11.2.0/
root@rac3# rm -rf /u01/app/oracle/
After the de-install make sure that oracle clusterware does not start
by checking the following.
root@rac3# diff /etc/inittab /etc/inittab.no_crs
Update Oracle Inventory on all nodes by running the following command from rac1.
root@rac1# su - grid
grid@rac1$ cd $GRID_HOME/oui/bin
grid@rac1$ ./runInstaller -updateNodeList ORACLE_HOME=$GRID_HOME "CLUSTER_NODES={rac1,rac2}" CRS=TRUE -silent
Do post node removal checks from rac1.
grid@rac1$ cluvfy stage -post nodedel -n rac3 -verbose
olsnodes -s -t
crsctl status res -t | grep -i rac3
Удалить ORACLE ASM на узле rac3.
root@rac3# /usr/sbin/oracleasm exit
root@rac3# rpm -qa | grep asm
root@rac3# rpm -ev oracleasmlib-2.0.4-1.el5 oracleasm-2.6.18-164.el5-2.0.5-1.el5 oracleasm-support-2.1.7-1.el5
Удалить директории
root@rac3# rm -f /etc/sysconfig/oracleasm.rpmsave
root@rac3# rm -f /etc/sysconfig/oracleasm-_dev_oracleasm
root@rac3# rm -f /etc/rc.d/rc2.d/S29oracleasm
root@rac3# rm -f /etc/rc.d/rc0.d/K20oracleasm
root@rac3# rm -f /etc/rc.d/rc5.d/S29oracleasm
root@rac3# rm -f /etc/rc.d/rc4.d/S29oracleasm
root@rac3# rm -f /etc/rc.d/rc1.d/K20oracleasm
root@rac3# rm -f /etc/rc.d/rc3.d/S29oracleasm
root@rac3# rm -f /etc/rc.d/rc6.d/K20oracleasm
Удалить пользователей и группы
root@rac3# userdel -r grid
root@rac3# userdel -r oracle
root@rac3# groupdel oinstall
root@rac3# groupdel asmadmin
root@rac3# groupdel asmdba
root@rac3# groupdel asmoper
root@rac3# groupdel dba
root@rac3# groupdel oper