11g数据库删除数据库节点增加数据库节点
发布日期:2021-09-16 04:38:34 浏览次数:22 分类:技术文章

本文共 9130 字,大约阅读时间需要 30 分钟。

数据库可以分为  Administrator-managed和Policy Managed方法配置
具体区分可以这两个参考http://czmmiao.iteye.com/blog/2128771
 Understanding ServerPools
Server pools arelogical divisions of a cluster into pools of servers, which are allocated tohost databases or other applications. Server pools are managed using crsctl andsrvctl commands.
Each server poolname must be unique within the cluster. You cannot have two server pools usingthe same name.
There are twostyles of server pool management:
(1)    Administrator-managed:
Databaseadministrators define on which servers a database resource should run, andplace resources manually as needed. This is the management strategy used inprevious releases.
在以往我们创建一个RAC数 据库大概是怎样的方法,我们在dbca的界面中会选择要将数据库实例运行在整个集群中的几台机器上,或者是2台或者是3台,甚或是更多,但是只要在安装的 时候选定几台机器,那么以后如果不做增减节点的操作,就始终会在这几台机器上运行。而且,通常会根据主机名称的排序自动将每台主机上的数据库实例依次命名 为dbname1到dbnameN。这些在管理员安装完毕以后,都不会再自动变化,这就是Admin-Managed方式。
管理员管理:DBA指定数据库资源运行的所有服务器,并且按需手动放置资源。这是之前版本Oracle数据库使用的
(2)Policy managed:
Databaseadministrators specify in which server pool (excluding generic or free) thedatabase resource will run. Oracle Clusterware is responsible for placing thedatabase resource on a server.
基于策略的管理方式,是以服务器池(Server Pools)为基础的,简单地说,就是先定义一些服务器池,池中包含一定量的服务器,然后再定义一些策略,根据这些策略Oracle会自动决定让多少数据 库实例运行在池中的几台机器上。数据库实例名后缀、数据库实例个数、所运行的主机,这些都是通过策略决定的,而不是数据库管理员事先定好的。
何种环境适合使用这种新的方式进行管理?
当管理大量的服务器集群,并且在这些集群中运行着多种不同重要程度,不同策略的RAC数据库时,为了简化管理,建议使用Policy- Managed方式,实际上Oracle也建议只有在超过3台的服务器的时候才使用Policy-Managed来管理整个数据库集群。想象一下使用 Policy-Managed方式可以达到的效果:如果我们有10台服务器组成,根据不同的应用的重要性定义服务器池的关键程度,然后在其中某些机器意外 停机的情况下,仍然可以自动地保持足够多的机器给重要的系统提供数据库服务,而将不关键的系统数据库服务器个数降低到最低限度。
策略管理:DBA指定数据库资源运行在哪个服务器池(排除generic or free)。Oracle Clusterware负责将数据库资源放在一台服务器。

本次节点测试主要参考了oracle数据库官网

http://docs.oracle.com/cd/E11882_01/rac.112/e41960/adddelunix.htm#BEIEEAFC

http://docs.oracle.com/cd/E11882_01/rac.112/e41959/adddelclusterware.htm#CWADD90992

本测试保留node1,删除node2
node1:实例是test2
node2:实例是test1 
Deleting Policy-Managed Database Instances
(1)删除em ,在存活在的节点上清除另外一个节点的em
emca -deleteNode db
(2)停止数据库,把要删除节点从现有的服务池中移除,进入空闲的服务池(可以在任何节点执行)
srvctl stop instance -d db_unique_name -n node_name
srvctl  relocate server -n node_name -g free   (疑问:-n 是留下的节点,还是删除的节点)
   第一步:删除数据库实例
Deleting Instances from Administrator-Managed Databases
(1)有两种方式删除数据库实例:
方法一:使用交互方式删除数据库实例
Using DBCA in Interactive Mode to Delete Instances from Nodes
1、在你想保留的节点上执行dbca
2、在欢迎界面选择Oracle Real Application Clusters Database,下一步
3 、 选择 Instance Management,下一步
4、instance to be deleted, 下一步
5、 选择要删除的实例,下一步 
6、输入用具有sysdba权限的用户名,以及密码
7 、确认删除实例的日志已经被移除
  select * from v$log;
   GROUP# STATUS
 TYPE
MEMBER
   IS_REC
---------- -------------- -------------- -------------------------------------------------- ------
3
 ONLINE
+DATA/test/onlinelog/group_3.265.886300845
   NO
4
 ONLINE
+DATA/test/onlinelog/group_4.266.886300857
   NO
 
 
 如果存在redo thread 没有禁用可以用下列命令禁用
alter  database disable thread 2;
8、确认实例已经从OCR中移除
  srvctl  config  database -d db_unique_name
node1:/u01/app/11.2.0/grid/bin$srvctl  config  database -d test
Database unique name: test
Database name: test
Oracle home: /u01/app/oracle/product/11.2.0
Oracle user: oracle
Spfile: +DATA/test/spfiletest.ora
Domain: 
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: test
Database instances: test2
Disk Groups: DATA
Mount point paths: 
Services: 
Type: RAC
Database is administrator managed
方法二:使用静默方式删除实例
Using DBCA in Silent Mode to Delete Instances from Nodes
dbca -silent -deleteInstance [-nodeList node_name] -gdbName gdb_name -instanceName instance_name -sysDBAUserName sysdba -sysDBAPassword password
例如:dbca -silent -deleteInstance node2 -gdbName test -instanceName test1 -sysDBAUserName sysdba -sysDBAPassword PASSWORD
node_name:The node on which you want to add (or delete) the instance.
gdb_name:Global database name.
instance_name :Name of the instance. Provide an instance name only if you want to override the Oracle naming convention for Oracle RAC instance names.
sysdba :Name of the Oracle user with SYSDBA privileges.
password :Password for the SYSDBA user.
第二步:删除oracle rac  软件
 1 停止并删除删除节点的监听 
 在删除节点上执行
 su - oracle
$ srvctl disable listener -l listener_name -n name_of_node_to_delete
$ srvctl stop listener -l listener_name -n name_of_node_to_delete
   例如:srvctl disable listener -l LISTENER -n node2
         srvctl stop listener -l LISTENER -n  node2
2、在删除节点上 $ORACLE_HOME/oui/bin 更新the inventory 
./runInstaller -updateNodeList ORACLE_HOME=Oracle_home_location "CLUSTER_NODES={name_of_node_to_delete}" -local
     例如:./runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME  "CLUSTER_NODES={node2}" -local
 
3 在删除节点上执行 
如果是共享目录,拆分节点而不是删除
cd   $ORACLE_HOME/oui/bin
./runInstaller -detachHome ORACLE_HOME=Oracle_home_location
如果是非共享目录,在删除节点上,执行删除oracle home
$ORACLE_HOME/deinstall/deinstall -local
4 在保留的节点上执行
cd  $ORACLE_HOME/oui/bin 
$ ./runInstaller -updateNodeList ORACLE_HOME=Oracle_home_location "CLUSTER_NODES={remaining_node_list}"
  例如:./runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES={node1}"
                                                删除grid 软件
cluvfy stage -post nodeadd -n node1,node2
Deleting Nodes from the Cluster
1、 确定 每个节点的grid home 配置的 都正确的
2、root执行或者使用grid 查看要删除的节点是 active and whether it is pinned
olsnodes -s -t
node2:/home/grid$olsnodes -s -t
node2
Active
Unpinned
node1
Active
Unpinned
3 停止集群应用程序和demon
停止emagent
emctl stop dbconsole
root 在删除的节点执行
cd  $Grid_home/crs/install
./rootcrs.pl -deconfig -force
# srvctl stop vip -i vip_name -f
# srvctl remove vip -i vip_name -f
4 在你保留节点运行下列命令
root
cd Grid_home/bin
# crsctl delete node -n node_to_be_deleted
  crsctl delete node -n node2
5 在删除节点用grid用户 Grid_home/oui/bin ,运行下面脚本,删除node
./runInstaller -updateNodeList ORACLE_HOME=Grid_home "CLUSTER_NODES={node_to_be_deleted}" CRS=TRUE -silent -local
 例如:./runInstaller -updateNodeList ORACLE_HOME="/u01/app/oracle/product/11.2.0"  "CLUSTER_NODES={node2}" CRS=TRUE -silent -local
6
如果是共享目录:
运行下列命令重新配置集群
$ Grid_home/perl/bin/perl Grid_home/crs/install/rootcrs.pl -deconfig
运行下列命令拆分目录 Grid home
$ ./runInstaller -detachHome ORACLE_HOME=Grid_home -silent -local
手工删除下列文件
rm -rf /etc/oraInst.loc
rm -rf /etc/oratab
rm -rf /etc/oracle/
rm -rf /opt/ORCLfmap/
rm -rf $OraInventory/
如果是非共享目录,本地目录,在node2上执行,删除grid软件
su - grid
Grid_home
Grid_home/deinstall/deinstall –local
7 在非删除节点上的任何节点上执行
cd  Grid_home/oui/bin
$ ./runInstaller -updateNodeList ORACLE_HOME=Grid_home "CLUSTER_NODES={remaining_nodes_list}" CRS=TRUE -silent
    例如:./runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES={node1}" CRS=TRUE -silent
    
8 执行下列命令确认已经成功从集群中 成功
$ cluvfy stage -post nodedel -n node_list [-verbose]
   例如:cluvfy stage -post nodedel -n node2
                                                                                         同步数据库grid软件
Adding Oracle RAC to Nodes with Oracle Clusterware Installed
1、创建oracle 所需要的用户
2、 配置SSH
3、在现有存活节点
su - grid
cd  Grid_home/bin 
$ cluvfy comp peer [-refnode ref_node] -n node_list [-orainv orainventory_group] [-osdba osdba_group] [-verbose]
例如:cluvfy comp peer -refnode node1 -n node2 -verbose  --参考当前的节点来进行检测.
-refnode 现存节点
-n 可以用“,”隔开节点名称或者all
现有一节点node1,加入一个节点node2,用虚拟ip,node2-vip
4确定cluster 和node2的完整性
cluvfy stage -pre nodeadd -n node2 [-fixup [-fixupdir fixup_dir]] [-verbose]
如果验证fails,可以用-fixup打出说明,修复集群或者node
5、扩展 node2的集群
如果想跳过自检
export IGNORE_PREADDNODE_CHECKS=Y
在节点node1上, Grid_home/oui/bin 执行下列命令
If you are using Grid Naming Service (GNS), run the following command:
$ ./addNode.sh "CLUSTER_NEW_NODES={node2}"
if you are not using GNS, run the following command:
$ /$ORACLE_HOME/oui/bin/addNode.sh "CLUSTER_NEW_NODES={node2}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={node2-vip}" 
 
 
 
同步数据库ORACLE软件
 
6扩展oracle houme
在node1上执行下列命令
在节点node1上执行
su - oracle
cd  $ORACLE_HOME/oui/bin 
./addNode.sh -silent "CLUSTER_NEW_NODES={node2}"
 在节点node2上执行脚本
$ORACLE_HOME/root.sh
在现存集群节点node1上执行
srvctl config db -d db_name
在node1上执行
su  - oracle
Oracle_home/oui/bin
$ ./runInstaller -attachHome ORACLE_HOME="ORACLE_HOME""CLUSTER_NODES={node_list}" LOCAL_NODE="node_name"
 $ ./runInstaller -updateNodeList ORACLE_HOME=mount_point_path "CLUSTER_NODES={node_list}" 
  -----node_list 是集群的所有节点
  例如:
/$ORACLE_HOME/oui/bin/runInstaller -silent -attachHome -local ORACLE_HOME="/u01/app/oracle/product/11.2.0" ORACLE_HOME_NAME="OraDb11g_home" "CLUSTER_NODES={node1,node2}" LOCAL_NODE='node2'
/$ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME="/u01/app/oracle/product/11.2.0"  "CLUSTER_NODES={node1,node2}" 
执行root脚本 在node2上
调试
 ./addNode.sh -silent “CLUSTER_NEW_NODES={node2}” -debug
                                             添加数据库实例

  在新存在的结点node1上执行:

方法一:

Using DBCA in Interactive Mode to Add Database Instances to Target Nodes
dbca
  1、选择Oracle Real Application Clusters (RAC) database ,下一步
  Instance Management,下一步
   Add Instance,下一步
   SYSDBA,下一步
   
  方法二: 
  
Using DBCA in Silent Mode to Add Database Instances to Target Nodes
  
dbca -silent -addInstance -nodeList node_name -gdbName gdb_name [-instanceName instance_name -sysDBAUserName sysdba -sysDBAPassword password]
node_name:The node on which you want to add (or delete) the instance.
gdb_name:Global database name.
instance_name :Name of the instance. Provide an instance name only if you want to override the Oracle naming convention for Oracle RAC instance names.
sysdba :Name of the Oracle user with SYSDBA privileges.
password :Password for the SYSDBA user.

转载地址:https://blog.csdn.net/wll_1017/article/details/47189129 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Netstat 简介
下一篇:计算号段的方法

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月21日 09时43分53秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java动态代码_Java Agent入门学习之动态修改代码 2019-04-21
python集合如何去除重复数据_Python 迭代删除重复项,集合删除重复项 2019-04-21
iview 自定义时间选择器组件_Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能... 2019-04-21
java 验证码校验_JavaWeb验证码校验功能代码实例 2019-04-21
java多线程初学者指南_Java多线程初学者指南(4):线程的生命周期 2019-04-21
java进程user是jenkins_java 学习:在java中启动其他应用,由jenkins想到的 2019-04-21
java添加资源文件_如何在eclipse中将资源文件夹添加到我的Java项目中 2019-04-21
java的三种修饰符_3分钟弄明白JAVA三大修饰符 2019-04-21
mysql source skip_redis mysql 中的跳表(skip list) 查找树(btree) 2019-04-21
java sun.org.mozilla_maven编译找不到符号 sun.org.mozilla.javascript.internal 2019-04-21
php curl 输出到文件,PHP 利用CURL(HTTP)实现服务器上传文件至另一服务器 2019-04-21
PHP字符串运算结果,PHP运算符(二)"字符串运算符"实例详解 2019-04-21
PHP实现 bcrypt,如何使php中的bcrypt和Java中的jbcrypt兼容 2019-04-21
php8安全,PHP八大安全函数解析 2019-04-21
php基础语法了解和熟悉的表现,PHP第二课 了解PHP的基本语法以及目录结构 2019-04-21
matlab中lag函数用法,MATLAB movavg函数用法 2019-04-21
matlab变形监测,基于matlab的变形监测数据处理与分析_毕业设计论文 2019-04-21
opencv matlab编程,在Matlab中调用OpenCV函数 | 学步园 2019-04-21
c语言文件wt,c语言,wt和rt中的t是什么意思 2019-04-21
c语言运行几进制,【C语言】求已知等式在几进制条件下成立 2019-04-21