设为首页 收藏本站
查看: 589|回复: 0

[经验分享] Services in Oracle Database 10g-Oracle之路

[复制链接]

尚未签到

发表于 2018-9-14 09:41:25 | 显示全部楼层 |阅读模式
  基于RAC环境中使用的应用程序,有时候希望某个特定的应用程序仅仅运行在RAC的子节点,或者说为某些应用程序分配一个首要节点。对此,Oracle 10g可以使用services来实现。
  一、集群配置
  在使用services之前,需要首先检查集群的配置是否正确。
  下面的命令输出了数据库ORCL运行于三个不同的节点。
  srvctl config database -d ORCL
  server01 ORCL1 /u01/app/oracle/product/10.1.0/db_1
  server02 ORCL2 /u01/app/oracle/product/10.1.0/db_1
  server03 ORCL3 /u01/app/oracle/product/10.1.0/db_1
  这些配置通常在数据库创建期间完成。也可以通过下面的命令来完成。
  srvctl add database -d ORCL -o /u01/app/oracle/product/10.1.0/db_1  #添加数据库ORCL的$ORACLE_HOME到crs
  srvctl add instance -d ORCL -i ORCL1 -n server01                    #为数据库ORCL添加相应的instance到crs
  srvctl add instance -d ORCL -i ORCL2 -n server02
  srvctl add instance -d ORCL -i ORCL3 -n server03
  二、创建service
  可以使用srvctl命令,dbca工具以及DBMS_SERVICES包来创建以及修改service。本文仅仅使用srvctl命令行来完成。
  假定有两个应用程序希望以以下方式运行:
  OLTP :主要运行在节点1和节点2,当节点1和2不可用时,则能够运行在节点3。
  BATCH :主要运行在节点3,当节点3不可用时,则能够运行在节点1和2。
  为满足上面的需求,我们可以创建以下services
  # Set environment.
  export ORACLE_HOME=/u01/app/oracle/product/10.1.0/db_1
  export PATH=$ORACLE_HOME/bin:$PATH
  # Create services.
  srvctl add service -d ORCL -s OLTP_SERVICE -r ORCL1,ORCL2 -a ORCL3
  srvctl add service -d ORCL -s BATCH_SERVICE -r ORCL3 -a ORCL1,ORCL2
  OLTP_SERVICE 能够运行在所有的RAC节点,因为ORCL3位于可用列表中,但通常情况下则主要运行在节点1和节点2。(-r 表明为可用节点)
  BATCH_SERVICE 能够运行在所有的RAC节点,因为ORCL1与ORCL2位于可用列表中,通常情况下该service运行在节点3。(-r 表明为可用节点)
  这些services能够通过以下命令来启动后停止
  srvctl start service -d ORCL -s OLTP_SERVICE
  srvctl start service -d ORCL -s BATCH_SERVICE
  srvctl stop service -d ORCL -s OLTP_SERVICE
  srvctl stop service -d ORCL -s BATCH_SERVICE
  三、Jobs and Services
  --Oracle 10g scheduler允许job和job 类链接,从而使得与services相关的job按job 类运行在RAC环境的指定节点。
  --为满足上述的需求,对此可以创建以下两个job类。

  -- Create OLTP and BATCH job>  BEGIN
  DBMS_SCHEDULER.create_job_class(
  job_class_name => 'OLTP_JOB_CLASS',
  service        => 'OLTP_SERVICE');
  DBMS_SCHEDULER.create_job_class(
  job_class_name => 'BATCH_JOB_CLASS',
  service        => 'BATCH_SERVICE');
  END;
  /

  -- Make sure the>  GRANT EXECUTE ON sys.oltp_job_class TO my_user;
  GRANT EXECUTE ON sys.batch_job_class TO my_user;
  --可以为存在的job指派到新创建的job类或在创建job时指派到这个job 类

  -- Create a job associated with a job>  BEGIN
  DBMS_SCHEDULER.create_job (
  job_name        => 'my_user.oltp_job_test',
  job_type        => 'PLSQL_BLOCK',
  job_action      => 'BEGIN NULL; END;',
  start_date      => SYSTIMESTAMP,
  repeat_interval => 'FREQ=DAILY;',
  job_class       => 'SYS.OLTP_JOB_CLASS',
  end_date        => NULL,
  enabled         => TRUE,
  comments        => 'Job linked to the OLTP_JOB_CLASS.');
  END;
  /
  --对于上面的这个job与job类的理解是,service可以运行在一个或多个指定的节点以及可用节点,因此可以基于service来创建Job。
  --接下来为这个Job指派到基于service的job类,从而使得这个job也可以运行在指定的一个或多个节点。

  -- Assign a job>  EXEC DBMS_SCHEDULER.set_attribute('MY_BATCH_JOB', 'JOB_CLASS', 'BATCH_JOB_CLASS');
  --Translator: Robinson
  四、Connections and Services
  services的使用不会由于使用了job而受到限制。下面的services能够添加到tnsnames.ora文件,且列出每一个应用程序可以使用哪一个节点。
  OLTP =
  (DESCRIPTION =
  (LOAD_BALANCE = ON)
  (FAILOVER = ON)
  (ADDRESS = (PROTOCOL = TCP)(HOST = server01)(PORT = 1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = server02)(PORT = 1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = server03)(PORT = 1521))
  (CONNECT_DATA =
  (SERVICE_NAME = OLTP_SERVICE)
  (FAILOVER_MODE =
  (TYPE = SELECT)
  (METHOD = BASIC)
  (RETRIES = 20)
  (DELAY = 1)
  )
  )
  )
  BATCH =
  (DESCRIPTION =
  (LOAD_BALANCE = ON)
  (FAILOVER = ON)
  (ADDRESS = (PROTOCOL = TCP)(HOST = server01)(PORT = 1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = server02)(PORT = 1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = server03)(PORT = 1521))
  (CONNECT_DATA =
  (SERVICE_NAME = BATCH_SERVICE)
  (FAILOVER_MODE =
  (TYPE = SELECT)
  (METHOD = BASIC)
  (RETRIES = 20)
  (DELAY = 1)
  )
  )
  )
  #上面为应用程序提供了相应的连结标识符,通过相应的连接标识符将连接到指定的service。
  oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-581995-1-1.html 上篇帖子: oracle定时任务 下篇帖子: Oracle RAC 连接到指定实例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表