oracle 创建services,oracle service 的创建、使用-基础分析

本文的目的是介绍 oracle 数据库中的 ‘service’的基础知识;本文环境为win7+10.2.0.4,请注意版本的区别;

在oracle 8i中,oracle引入了一个新功能:service,它可以为客户端提供一种新的连接方式;Service 是字面翻译是服务,那么在oracle数据库当中,service可以当做是一组客户端或者应用的逻辑组合;每个单独的service 可以设定其自己的属性,以满足不同的需要;

SQL> col name format a10 SQL> select service_id,name from v$services; SERVICE_ID NAME ———- ———- 6 orcl 1 SYS$BACKGROUND 2 SYS$USERS SQL>

Services的配置要在参数 service_names中设定,同时如果service 要在监听中完成注册,那么一个新建是service 才能够正常使用;在创建service 时首先要确定其名称,然后可以再附加一个domain,如果没有domian,它将采用 db_domain参数的值;service name最多可以有 63个字符;从10g 开始,即使参数 service_names 参数没有设定,数据库也会创建一个默认服务:Db_unique_name+db_domain;并且这个服务总是会注册到监听当中;同时在创建数据库后会产生两个默认的服务:SYS$BACKGROUND、SYS$USERS;后台进程,和连接时使用了 sid 的用户使用这两个服务进行连接;并且这两个服务在监听中是不注册的;下面来看看service的创建:

SQL> select value from v$parameter where name=’db_domain’; VALUE ——————————————————————————– SQL>

我的数据库是没有设置;创建service 时有几种不同的方法:

在集群中可以使用 SRVCTL 进行创建:

srvctl add service -d db_unique_name -s service_name -r preferred_list [-a available_list] [-P TAF_policy] where -d db_unique_name identifies the unique name for the database -s service_name identifies the service name -r preferred_list identifies the list of preferred instances -a available_list identifies the list of available instances -P TAF_policy identifies the TAF policy (NONE, BASIC, or PRECONNECT). The BASIC and PRECONNECT settings affect the content of the TNS string that Oracle generates automatically when the command is executed

使用plsql包进行创建,下面是演示:

SQL> execute dbms_service.create_service(service_name => ‘huosi’,network_name => ‘huosi’,goal => dbms_service.g oal_service_time,dtp => false,aq_ha_notifications => true,failover_method =>dbms_service.failover_method_basic, failover_type =>dbms_service.failover_type_select,failover_retries => 180,failover_delay => 5,clb_goal => dbms_ service.clb_goal_long); PL/SQL 过程已成功完成。 SQL>

创建完成收查看视图是没有信息:

SQL> select service_id,name from v$services; SERVICE_ID NAME ———- ———- 6 orcl 1 SYS$BACKGR OUND 2 SYS$USERS

重启后:

SQL> startup force ORACLE 例程已经启动。 Total System Global Area 524288000 bytes Fixed Size 1297700 bytes Variable Size 138412764 bytes Database Buffers 377487360 bytes Redo Buffers 7090176 bytes 数据库装载完毕。 数据库已经打开。 SQL> select service_id,name from v$services; SERVICE_ID NAME ———- ———- 6 orcl 1 SYS$BACKGROUND 2 SYS$USERS

仍然没有;下面再次 设定:

SQL> alter system set service_names=’orcl,huosi’ scope=spfile; 系统已更改。 SQL> startup force ORACLE 例程已经启动。 Total System Global Area 524288000 bytes Fixed Size 1297700 bytes Variable Size 138412764 bytes Database Buffers 377487360 bytes Redo Buffers 7090176 bytes 数据库装载完毕。 数据库已经打开。 SQL> select service_id,name from v$services; SERVICE_ID NAME ———- ———- 12 huosi 6 orcl 1 SYS$BACKGROUND 2 SYS$USERS SQL>

已经有了

SQL> host lsnrctl stat LSNRCTL for 32-bit Windows: Version 10.2.0.4.0 – Production on 19-3月 -2012 12:08:47 Copyright (c) 1991, 2007, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) LISTENER 的 STATUS ———————— 别名 LISTENER 版本 TNSLSNR for 32-bit Windows: Version 10.2.0.4.0 – Production 启动日期 19-3月 -2012 09:16:46 正常运行时间 0 天 2 小时 52 分 6 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 d:\oracle\product\10.2.0\db_1\network\admin\listener.ora 监听程序日志文件 d:\oracle\product\10.2.0\db_1\network\log\listener.log 监听端点概要… (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc))) 服务摘要.. 服务 “PLSExtProc” 包含 1 个例程。 例程 “PLSExtProc”, 状态 UNKNOWN, 包含此服务的 1 个处理程序… 服务 “huosi” 包含 1 个例程。 例程 “orcl”, 状态 READY, 包含此服务的 1 个处理程序… 服务 “orcl” 包含 1 个例程。 例程 “orcl”, 状态 READY, 包含此服务的 1 个处理程序… 服务 “orcl_XPT” 包含 1 个例程。 例程 “orcl”, 状态 READY, 包含此服务的 1 个处理程序… 命令执行成功

注意此时在监听中已经进行了注册;所以创建了service 以后必须在参数中添加才可以正常使用;

Service的用途:使用service可以将不同的应用进行分类,使不同的应用或者客户端连接到不同的服务,这样便于分析各个应用的情况;注意:

Automatic Workload Repository (AWR) manages theperformance of services and records the serviceperformance, including

– SQL execution times

– Wait classes

– Resources consumed by service

我们可以为每个服务设置一些阀值,当超过时就可以产生一些报警信息:

exec DBMS_SERVER_ALERT.SET_THRESHOLD (METRICS_ID => dbms_server_alert.elapsed_time_per_call, WARNING_OPERATOR => dbms_server_alert.operator_ge, WARNING_VALUE => ’500000′, CRITICAL_OPERATOR => dbms_server_alert.operator_ge, CRITICAL_VALUE => ’750000′, OBSERVATION_PERIOD => 15, CONSECUTIVE_OCCURRENCES => 3, INSTANCE_NAME => ‘APP1′, OBJECT_TYPE => dbms_server_alert.object_type_service, OBJECT_NAME => ‘huosi’);

使用servcie连接时的配置:tnsname.ora中:

TEST =(DESCRIPTION =(ADDRESS=(PROTOCOL=TCP)(HOST=ACME1)(PORT=1521))(CONNECT_DATA = (SERVICE_NAME = huosi)))

创建好service后,还可以在以下方面使用,如:创建job:

DBMS_SCHEDULER.CREATE_JOB( JOB_NAME => ‘my_report_job’, JOB_CLASS => ‘HOT_BATCH_CLASS’, ENABLED => TRUE, JOB_TYPE => ‘stored_procedure’, JOB_ACTION => ‘my_name.my_proc();’, NUMBER_OF_ARGUMENTS => 4, START_DATE =>SYSDATE+1, REPEAT_INTERVAL => 5, END_DATE => SYSDATE+30, AUTO_DROP => false, COMMENTS => ‘daily status’);

如果是在rac中,service的使用还可以执行并行操作,如service,今天rac没有启动,就不演示;使用service 后可以对单独的service进行分类监控,更有利于找出性能存在瓶颈的应用:

DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE( service_name IN VARCHAR2, module_name IN VARCHAR2 DEFAULT ANY_MODULE, action_name IN VARCHAR2 DEFAULT ANY_ACTION, waits IN BOOLEAN DEFAULT TRUE, binds IN BOOLEAN DEFAULT FALSE, instance_name IN VARCHAR2 DEFAULT NULL)

以下为与service相关的动态视图,通过这些视图可以方便的查询service的相关信息:

Service, module, and action information in: – V$SESSION – V$ACTIVE_SESSION_HISTORY Call times and performance statistics listed in: – V$SERVICE_STATS – V$SERVICE_EVENT – V$SERVICE_WAIT_CLASS – V$SERVICEMETRIC – V$SERVICEMETRIC_HISTORY V$SERV_MOD_ACT_STATS shows performance measures for each instance when statistics are collected by module and actionService, module, and action information in: – V$SESSION – V$ACTIVE_SESSION_HISTORY Call times and performance statistics listed in: – V$SERVICE_STATS – V$SERVICE_EVENT – V$SERVICE_WAIT_CLASS – V$SERVICEMETRIC – V$SERVICEMETRIC_HISTORY V$SERV_MOD_ACT_STATS shows performance measures for each instance when statistics are collected by module and action V$SYSSTAT – Of its 300 performance-related statistics 28 are tracked for services – To see the statistics measured for services, run SELECT DISTINCT stat_name FROM v$service_stats DBA_ENABLED_AGGREGATIONS displays information about enabled on-demand statistic aggregation DBA_ENABLED_TRACES displays information about enabled traces

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值