前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Services in Oracle Database 10g

Services in Oracle Database 10g

作者头像
Leshami
发布2022-03-14 14:31:56
5950
发布2022-03-14 14:31:56
举报
文章被收录于专栏:乐沙弥的世界

基于RAC环境中使用的应用程序,有时候希望某个特定的应用程序仅仅运行在RAC的子节点,或者说为某些应用程序分配一个首要节点。对此,Oracle 10g可以使用services来实现。

一、集群配置

代码语言:javascript
复制
在使用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

代码语言:javascript
复制
可以使用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

代码语言:javascript
复制
--Oracle 10g scheduler允许job和job 类链接,从而使得与services相关的job按job 类运行在RAC环境的指定节点。
--为满足上述的需求,对此可以创建以下两个job类。

-- Create OLTP and BATCH job classes.
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 relevant users have access to the job classes.
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 class.
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 class to an existing job.
EXEC DBMS_SCHEDULER.set_attribute('MY_BATCH_JOB', 'JOB_CLASS', 'BATCH_JOB_CLASS');
--Translator: Robinson
--Blog: http://blog.csdn.net/robinson_0612

四、Connections and Services

代码语言:javascript
复制
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。

原文链接: Services in Oracle Database 10g

五、更多参考

有关Oracle 网络配置相关基础以及概念性的问题请参考: 配置ORACLE 客户端连接到数据库 配置非默认端口的动态服务注册 配置sqlnet.ora限制IP访问Oracle Oracle 监听器日志配置与管理 设置 Oracle 监听器密码(LISTENER) Oracle RAC 监听配置 ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)

Oracle RAC 客户端连接负载均衡(Load Balance)

配置RAC负载均衡与故障转移

有关基于用户管理的备份和备份恢复的概念请参考

Oracle 冷备份

Oracle 热备份

Oracle 备份恢复概念

Oracle 实例恢复

Oracle 基于用户管理恢复的处理

SYSTEM 表空间管理及备份恢复

SYSAUX表空间管理及恢复

Oracle 基于备份控制文件的恢复(unsing backup controlfile)

有关RMAN的备份恢复与管理请参考

RMAN 概述及其体系结构

RMAN 配置、监控与管理

RMAN 备份详解

RMAN 还原与恢复

RMAN catalog 的创建和使用

基于catalog 创建RMAN存储脚本

基于catalog 的RMAN 备份与恢复

RMAN 备份路径困惑

有关ORACLE体系结构请参考

Oracle 表空间与数据文件

Oracle 密码文件

Oracle 参数文件

Oracle 联机重做日志文件(ONLINE LOG FILE)

Oracle 控制文件(CONTROLFILE)

Oracle 归档日志

Oracle 回滚(ROLLBACK)和撤销(UNDO)

Oracle 数据库实例启动关闭过程

Oracle 10g SGA 的自动化管理

Oracle 实例和Oracle数据库(Oracle体系结构)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档