Services in Oracle Database 10g

        基于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 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

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体系结构) 
 

时间: 2024-10-21 15:38:50

Services in Oracle Database 10g的相关文章

Oracle Database 10g:删除表

oracle 使用 Oracle Database 10g 中的闪回表特性,可以毫不费力地恢复被意外删除的表 以下是一个不该发生却经常发生的情况:用户删除了一个非常重要的表 - 当然是意外地删除 - 并需要尽快地恢复.(在某些时候,这个不幸的用户可能就是 DBA!) Oracle9i Database 推出了闪回查询选项的概念,以便检索过去某个时间点的数据,但它不能闪回 DDL 操作,如删除表的操作.唯一的恢复方法是在另一个数据库中使用表空间的时间点恢复,然后使用导出/导入或其他方法,在当前数据

Oracle Database 10g:闪回版本查询

oracle 不需要设置,立即识别对行的所有更改 在 Oracle9i Database 中,我们看到它推出了以闪回查询形式表示的"时间机器".该特性允许 DBA 看到特定时间的列值,只要在还原段中提供该数据块此前镜像的拷贝即可.但是,闪回查询只提供某时刻数据的固定快照,而不是在两个时间点之间被更改数据的运行状态表示.某些应用程序,如涉及到外币管理的应用程序,可能需要了解一段时期内数值数据的变化,而不仅仅是两个时间点的数值.由于闪回版本查询特性,Oracle Database 10g

Oracle Database 10g:回滚监视

oracle 为用户提供对回滚操作时间的准确评估 我们还在这地方吗?还要多长时间? 听起来熟悉吗?这些问题可能是您在前往孩子们最喜爱的主题公园的路上,从汽车后座上提出来的,并且经常是不断地.越来越频繁地提出来.您不想告诉他们还确切需要多长时间吗 - 或者更简单些,您自己知道答案吗? 同样,在回滚长期运行的事务时,经常会有些用户不停地询问相同的问题.这些问题是合理的,因为该事务进行了锁定,正常的处理经常受到回滚进程的影响. 在 Oracle 9i Database 及更低的版本中,您可以执行查询

Oracle Database 10g:改善的表空间管理

oracle 表空间管理得到了重大的改进,这可以归因于一个 sparser SYSTEM.为用户定义一个默认表空间的支持.新的 SYSAUX.甚至重命名 您曾经多少次因用户在 SYSTEM 表空间中创建了非 SYS 和 SYSTEM 的段而伤透脑筋? 在 Oracle9i Database 之前,如果在创建用户时没有指定默认表空间,那么它将默认为 SYSTEM 表空间.如果用户在创建一个段时没有显式地指定一个表空间,那么这个段将在 SYSTEM 中创建-前提是用户在 SYSTEM 表空间中拥有配

Oracle Database 10g:最佳新特性(第四周:高速的导出/导入)

oracle 第 4 周高速的导出/导入:Oracle Data Pump 利用 Oracle Database 10g 实用工具数据移动得到了很大的提高. 迄今为止,导出/导入工具集仍是跨多个平台转移数据所需劳动强度最小的首选实用工具,尽管人们常常抱怨它速度太慢.导入只是将每条记录从导出转储文件中读出来,然后使用常见的 INSERT INTO 命令将其插入到目标表中,因此导入可能是个很慢的过程,这一点并不让人感到吃惊. 进入 Oracle Data Pump,Oracle Database 1

Oracle Database 10g:最佳新特性(第一周:闪回查询)

oracle 第一周:闪回查询 得到电影而不是图片:闪回版本查询 不需要设置,立即识别对行的所有更改 在 Oracle9i Database 中,我们看到它推出了以闪回查询形式表示的"时间机器".该特性允许 DBA 看到特定时间的列值,只要在还原段中提供该数据块此前镜像的拷贝即可.但是,闪回查询只提供某时刻数据的固定快照,而不是在两个时间点之间被更改数据的运行状态表示.某些应用程序,如涉及到外币管理的应用程序,可能需要了解一段时期内数值数据的变化,而不仅仅是两个时间点的数值.由于闪回版

Oracle Database 10g:最佳新特性(第二周:回滚监视 )

oracle 第 2 周:回滚监视 还要多长时间?:回滚监视 为用户提供对回滚操作时间的准确评估 我们还在这地方吗?还要多长时间? 听起来熟悉吗?这些问题可能是您在前往孩子们最喜爱的主题公园的路上,从汽车后座上提出来的,并且经常是不断地.越来越频繁地提出来.您不想告诉他们还确切需要多长时间吗 - 或者更简单些,您自己知道答案吗? 同样,在回滚长期运行的事务时,经常会有些用户不停地询问相同的问题.这些问题是合理的,因为该事务进行了锁定,正常的处理经常受到回滚进程的影响. 在 Oracle 9i D

Oracle Database 10g:最佳新特性(第三周:表空间管理)

oracle 第三周:表空间管理 名字中包含了什么?:改善的表空间管理 表空间管理得到了重大的改进,这可以归因于一个 sparser SYSTEM.为用户定义一个默认表空间的支持.新的 SYSAUX.甚至重命名 您曾经多少次因用户在 SYSTEM 表空间中创建了非 SYS 和 SYSTEM 的段而伤透脑筋? 在 Oracle9i Database 之前,如果在创建用户时没有指定默认表空间,那么它将默认为 SYSTEM 表空间.如果用户在创建一个段时没有显式地指定一个表空间,那么这个段将在 SYS

Oracle Database 10g 未在当前操作系统中经过认证

错误信息如下: <提示有1个错误,1个警告,2个要求待验证 错误问题详细信息如下:正在检查操作系统要求- 要求的结果: 5.0,5.1,5.2,6.0 之一实际结果: 6.1 检查完成.此次检查的总体结果为: 失败 <<<< 问题: Oracle Database 10g 未在当前操作系统中经过认证.建议案: 确保在正确的平台上安装软件. 警告问题详细信息如下:正在检查网络配置要求- 检查完成.此次检查的总体结果为: 失败 <<<< 问题: 安装检测到