首页 > 数据库 >Oracle19C如何为PDB新建service

Oracle19C如何为PDB新建service

时间:2023-06-21 15:45:36浏览次数:50  
标签:Oracle19C service SYS names oemdb PDB empdbrepos

 

Oracle19C如何为PDB新建service

 

在11g版本中,通常可以通过4种方式来新增service:

  1. 通过修改service_names参数来新增,这个是比较常用的
  2. 通过srvctl add service(只适用于RAC或Oracle Restart)
  3. 通过配置$ORACLE_HOME/network/admin/listener.ora静态监听
  4. 通过dbms_service

 

关于19C下的service_names

其中service_names(传送门)官方表明在19c中已经弃用了(保持兼容),并且再未来版本可能不在支持,不建议再使用。

在CDB/PDB模式中,默认的service_names值为CDB的名称,数据库实例会自动向监听注册CDB以及包括所有PDB的services。

但是如果在CDB下直接修改service_names为其他不包含PDB名称的字符串组,会导致所有其他PDB对应的默认services失效。

因此在19C下不要再使用service_names,即便是在非CDB/PDB模式。

14:45:59 SYS@oemdb(9)> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 EMPDBREPOS                     READ WRITE NO
14:46:02 SYS@oemdb(9)> !lsnrctl stat | grep empdbrepos
Service "empdbrepos" has 1 instance(s).

14:46:10 SYS@oemdb(9)> show parameter service_names

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------------------------------------------------------------------------------------
service_names                        string      oemdb
14:46:18 SYS@oemdb(9)> alter system set service_names='oemdb' sid='*';

System altered.

Elapsed: 00:00:00.01
14:46:22 SYS@oemdb(9)> !lsnrctl stat | grep empdbrepos
--没有了
14:46:27 SYS@oemdb(9)> 

 

而在PDB中无法设置防偷防爬

14:29:34 SYS@oemdb(9)> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 EMPDBREPOS                     READ WRITE NO
14:29:35 SYS@oemdb(9)> alter system set service_names='empdbrepos' sid='*';
alter system set service_names='empdbrepos' sid='*'
*
ERROR at line 1:
ORA-65040: operation not allowed from within a pluggable database


Elapsed: 00:00:00.05

 

 

 

至于srvctl需要RAC或者Oracle Restart下才能使用,这里给个语法样例:

srvctl add service -d oemdb -s empdbrepos_newsrv -pdb empdbrepos -r rac_node1 -a rac_node2

 

而静态监听使用场景比较少,这里都不去详细说了。

 

那么如何在19c下为PDB添加service呢?

根据service_names官网说明或者How to create new PDB service. (文档 ID 2649378.1),使用如下方式:

alter session set container=empdbrepos;

##其中empdbrepos_newsrv相当于service_names下设置的service
exec dbms_service.create_service('empdbrepos_srv1','empdbrepos_newsrv');   --或者 exec dbms_service.create_service(service_name=>'empdbrepos_srv1',network_name=>'empdbrepos_newsrv');
exec dbms_service.start_service('empdbrepos_srv1');
##向监听注册所有pdb的services
alter system register;

15:17:10 SYS@oemdb(9)> !lsnrctl status | grep empdbrepos_newsrv
Service "empdbrepos_newsrv" has 1 instance(s).

##保存PDB打开的状态,否则PDB重启需要手工启动新的service
alter pluggable database save state;


其他停止并删除:
exec dbms_service.stop_service('empdbrepos_srv1');
exec dbms_service.delete_service('empdbrepos_srv1');

更多详情desc dbms_service

 

 

 

此时通过cdb_services或者dba_services查看pdb的service信息。

15:24:35 SYS@oemdb(9)> col network_name for a50
15:24:36 SYS@oemdb(9)> col pdb for a15
15:24:44 SYS@oemdb(9)> select name,network_name,pdb from cdb_services where pdb='EMPDBREPOS';

NAME                      NETWORK_NAME                                       PDB
------------------------- -------------------------------------------------- ---------------
EMPDBREPOS                EMPDBREPOS                                         EMPDBREPOS
empdbrepos_srv1           empdbrepos_newsrv                                  EMPDBREPOS

Elapsed: 00:00:00.01

 

 

另外,也可以通过gds(Global Service Manager)的gdsctl命令来管理services,不过需要单独安装GSM软件,这块我不太了解,知道有这么个东西就行。

 

标签:Oracle19C,service,SYS,names,oemdb,PDB,empdbrepos
From: https://www.cnblogs.com/PiscesCanon/p/17496366.html

相关文章

  • service的使用
    http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/ 本文出自:Manyatimestheapplicationneedstodosometasksinthebackgroundforwhichuserinterventionsisnotrequired(orverylessinterventionisrequired).Th......
  • Springboot 框架中的Entity,Dao,Service,Controller的关系
    SpringBoot框架中的Entity,DAO,Service,Controller层的关系参考:https://blog.csdn.net/weixin_44532671/article/details/117914161https://blog.csdn.net/m0_47552180/article/details/125613332......
  • 2023-06-20 [微信小程序开发者工具] ? Enable IDE Service (y/N) 
    前言:小程序代码运行在新电脑,连hbuilderx和微信开发者工具都是新的,报错:[微信小程序开发者工具]?EnableIDEService(y/N)。原因:hbuilderx无法启动微信开发者工具,再具体点是因为微信开发者工具的服务端口号没有打开。解决方案:打开微信开发者工具,找到【设置】==》【安......
  • 使用flutter_background_service创建后台服务
    介绍flutter_background_service,它是一个在Flutter应用中创建和管理后台服务的库,并提供了一种简单的方式来执行长时间运行的任务。使用方法下面是关于flutter_background_service的使用方法的详细介绍:1、创建服务使用flutter_background_service库,你可以创建一个后台服......
  • pdb文件如何重新生成?
    1.没有源文件,是无法调试dll的。2.引入dll,如何让VS在生成dll时一并生成pdb文件,需要设置对应项目的调试信息为full或pdb-only,当设为none时就不生成pdb文件了。参考1:https://bbs.csdn.net/topics/395048744参考2:https://blog.csdn.net/Pet8766/article/details/8144782参考3:ht......
  • A Practical Methodology, HSM, Handler,Service,Model, for Golang Backend Developm
    EverybodyisfamiliarwiththewidelyadoptedMVC(Model-View-Controller)pattern,whichhasbeenusedformanyyearsacrossvariouslanguagesandframeworks.MVChasproventobeapracticalpatternfororganizingprogramswithuserinterfacesandmultip......
  • Android AccessibilityService 事件分发原理
    在了解了无障碍服务基础使用之后,我们来探究一下AccessibilityService的事件接收方法回调的时机和它深层次的实现逻辑。AccessibilityService监听事件的调用逻辑AccessibilityService有很多用来接收外部调用事件变化的方法,这些方法封装在内部接口Callbacks中:publicinterface......
  • 创建PDB的两种操作
    Oracle19c的安装写了一些文章,《非OracleLinux下Oracle19cCDB数据库安装》《Oracle19c的examples静默安装》《OracleCloud创建19c数据库》《非OracleLinux下安装Oracle19c》《Oracle19c之RPM安装》之前介绍的PDB都是通过配置文件在数据库初始化的时候就装上了,如果要在一个O......
  • springboot中自定义注解在service方法中,aop失效
    问题描述写了个自定义注解,但是该注解只会出现在serviece层中的方法中。启动发现aop未拦截到问题原因:调用service中的xx()方法时,Spring的动态代理帮我们动态生成了一个代理的对象,暂且叫他$XxxxService。所以调用xx()方法实际上是代理对象$XxxxService调用的。但是在xx()方法内调用同......
  • ServiceAccount 访问API实验
    概念SA账号是Pod内的进程使用的关联服务账号的身份,向集群的API服务器进行身份认证。SA(服务账号)是针对运行在Pod中的应用进程而言的,在Kubernetes中这些进程运行在容器中,而容器是Pod的一部分配置SAapiVersion:v1kind:ServiceAccountmetadata:name:sa-testnames......