首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Oracle多租户-在另一个容器中通过DBMS_SQL执行PL/SQL

Oracle多租户(Oracle Multitenant)是Oracle数据库中的一个特性,它允许在一个数据库实例内部创建多个逻辑独立的数据库容器(Pluggable Database,简称PDB),这些PDB可以共享系统级资源(如SGA和PGA),但在逻辑上是相互隔离的。

在多租户环境下,可以使用DBMS_SQL包中的EXECUTE方法来执行PL/SQL语句。DBMS_SQL是一个用于动态执行SQL语句和PL/SQL代码的包,它提供了一种在运行时动态构建和执行SQL语句的方式。

通过使用DBMS_SQL的EXECUTE方法,可以将PL/SQL代码以字符串形式传递给该方法,并在另一个容器中执行该代码。这样可以实现在一个PDB中执行跨容器的PL/SQL代码。

在Oracle多租户中,可以通过以下步骤在另一个容器中通过DBMS_SQL执行PL/SQL:

  1. 连接到目标PDB:使用SQL*Plus或其他支持Oracle连接的工具,连接到目标PDB。
  2. 创建DBMS_SQL游标:使用DBMS_SQL包中的OPEN_CURSOR方法创建一个DBMS_SQL游标。
  3. 准备PL/SQL代码:使用DBMS_SQL包中的PARSE方法将PL/SQL代码解析为可执行的语句。
  4. 绑定输入参数:如果PL/SQL代码包含绑定变量,可以使用DBMS_SQL包中的BIND_VARIABLE方法将输入参数绑定到语句中。
  5. 执行PL/SQL代码:使用DBMS_SQL包中的EXECUTE方法执行解析后的PL/SQL代码。
  6. 获取结果:如果PL/SQL代码产生了结果,可以使用DBMS_SQL包中的GET_RESULT方法获取结果集。
  7. 关闭游标:使用DBMS_SQL包中的CLOSE_CURSOR方法关闭游标。

Oracle多租户的优势包括:

  • 资源隔离:多租户环境下,每个PDB都有自己的资源隔离,避免了互相干扰。
  • 简化管理:通过使用容器数据库(CDB)和PDB的层次结构,可以更加方便地进行数据库的管理和维护。
  • 节省资源:多租户模式可以共享系统级资源,节省硬件资源和成本。

Oracle多租户的应用场景包括:

  • 软件即服务(SaaS):多租户模式适用于提供SaaS服务的场景,可以实现多个租户的隔离和资源共享。
  • 多部门应用共享:在企业内部,不同部门可以通过多租户模式实现对共享数据库资源的有效管理和隔离。
  • 数据库即服务(DBaaS):通过多租户模式,可以将数据库服务提供给多个用户,提高资源利用率和管理效率。

腾讯云提供了适用于Oracle多租户的云产品和解决方案,您可以了解腾讯云数据库TDSQL产品,它提供了全托管的Oracle数据库服务,支持多租户模式,具有高性能、高可用性和弹性扩展的特性。了解更多信息,请访问腾讯云数据库TDSQL产品介绍页面:https://cloud.tencent.com/product/tdsql

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

OracleExecute Immediate用法

Execute Immediate代替了以前Oracle8iDBMS_SQL package包。...它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,Execute Immediate的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码。...尽管DBMS_SQL仍然可用,但是推荐使用Execute Immediate,因为它获的收益包之上。...-- 使用技巧 1、Execute Immediate将不会提交一个DML事务执行,应该显式提交,如果通过Execute Immediate处理DML命令,那么完成以前需要显式提交或者作为Execute...3、当执行SQL语句时,不要用分号,当执行PL/SQL块时,在其尾部用分号。 4、Oracle手册,未详细覆盖这些功能。 下面的例子展示了所有用到Execute Immediate的可能方面。

1.4K30

SQL解析...没有什么大不了的?#oracle(译文)

他用剩下的时间通过asktom.oracle.com、StackOverflow、Twitter、他的博客和YouTube频道帮助开发人员和数据库管理员。...Oracle编写SQL语句时,我们都强调使用共享SQL的重要性,换种说法是:适当的情况下使用绑定变量,我们大多数人可能都已经看过关于这个原则的标准演示。...他们的观点是:“糟糕”的示例,我们每秒执行大约 1600 个语句。这和绑定变量一样好吗?当然不是...但是谁在乎呢?有很多系统每秒 16 个语句就可以了,更不用说 1600 个了。...对我个人而言,90年代初,我的Oracle数据库(版本7)运行在Sparcstation 10上,它具有非常强大且非常昂贵的50 Mhz处理器!...显然,复杂的SQL可能具有很长的执行时间,因此我们将通过使用DBMS_SQL仅解析,而不执行SQL

37510
  • Oracle 12c可插拔数据库深入理解

    一、概述 1、Oracle 12c 可插拔数据库体系结构 Oracle 12c 引入了一个新功能就是Oracle Multitenant,这个功能可以租户容器数据库,创建并维护许多个可插拔数据库...Oracle Multitenant是Oracle企业版需要额外付费的组件。然而,在所有Oracle版本中都可以一个可插拔数据库免费使用它。...租户容器数据库(CDB)是指能够容纳一个或者多个可插拔数据库的数据库。容器是指CDB的数据文件和元数据的集合。可插拔数据库是指可以通过克隆另一个数据库轻松创建的数据容器。...2、容器数据库与可插拔数据库 1、ORACLE MULTITEMENT CONTAINER DATABASE(CDB),即容器数据库 是ORACLE12c新引入的特性,这个特性允许CDB容器数据库创建并且维护多个数据库...2、租户环境组成 (1)ROOT:ROOT容器数据库,是CDB环境的根数据库,在跟数据库中含有主数据字典视图,其中包含了与ROOT容器有关的元数据和CDB包含的所有PDB信息,CDB环境中被标识为

    1.1K10

    Oracle PLSQL语句基础学习笔记(上)

    PL/SQL 不是一个独立的产品,他是一个整合到ORACLE服务器和ORACLE工具的技术,可以把PL/SQL看作ORACLE服务器内的一个引擎,sql语句执行者处理单个的sql语句,PL/SQL引擎处理...当PL/SQL程序块PL/SQL引擎处理时,ORACLE服务器SQL语句执行器处理pl/sql程序块SQL语句。...(1).PL/SQL的优点 PL/SQL是一种高性能的基于事务处理的语言,能运行在任何ORACLE环境,支持所有数据处理命令。通过使用PL/SQL程序单元处理SQL的数据定义和数据控制元素。...PL/SQL支持所有SQL数据类型和所有SQL函数,同时支持所有ORACLE对象类型 PL/SQL块可以被命名和存储ORACLE服务器,同时也能被其他的PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问...分号分隔每一条语句,使用赋值操作符:=或SELECT INTO或FETCH INTO给每个变量赋值,执行部分的错误将在异常处理部分解决,执行部分可以使用另一个PL/SQL程序块,这种程序块被称为嵌套块所有的

    2.8K10

    Oracle 19c 之 RPM 包安装初体验 CDB(二)

    容器(container)是租户体系结构的数据或元数据的逻辑集合。...元数据的一个例子是 oracle 提供的 PL/SQL 包的源代码。公共用户是每个容器中都知道的数据库用户。...数据库服务器 = 实例 + 租户容器数据库 实例(instance) = 内存 + 后台进程 数据库(database) = 数据文件 + 控制文件+ 重做日志文件 如上图所示,租户架构下,单个...租户架构,每个 PDB 使用很少的内存,控制文件和日志文件公用的,那么只有数据文件是位于 PDB 自己特定的目录下。...租户架构西安通过 CON_ID 来识别 PDB,根容器为 1,种子 PDB 为 2,其他PDB 依次往后排,那么 CON_UID是干嘛的呢?

    86620

    Oracle 12c租户架构及优缺点

    就像在没有租户特性之前,Oracle与MSSQL以及MySQL还是有很大的差异,因此对于Oracle租户也有一些不同的地方。本文主要描述Oracle 12c租户架构。...一、租户概念 Oracle租户环境包含一个容器数据库(CDB)和零个或多个可插拔数据库(PDB),一个PDB是一个模式,模式对象,以及非模式对象,如到一个Oracle网络客户端作为非CDB。...二、CDB容器 1、什么是CDB容器 一个CDB容器租户架构内的数据或元数据的逻辑集合。 下图为CDB容器示例 ?...元数据的一个例子是Oracle提供的PL/SQL包的源代码。公共用户是每个容器已知的数据库用户。根容器被命名CDB$ROOT。 系统容器 该系统包括根CDB和在CDB所有的PDBS。...3、带有应用程序容器的CDB 本变体,CDB包含一个名为的应用程序容器saas_sales_ac。

    2.3K20

    【安全警告】Oracle 12c 租户SQL注入高危风险防范

    使用Oracle租户选件时,由于Container容器和PDB融合共存,则权限控制必将更加重要,之前的文章我们提到,Oracle 12.2 的 lockdown profile就是为了实现PDB...我们2016年『比特币事件』,总结了:数据安全的十六大军规,其中有一条也明确提到最小权限守则,而且要真正实现权限管理。...SQL注入攻击的风险 我们来看看如果权限控制不当,可能遭遇到的数据库安全风险。根据最近披露的风险之一,通过SQL注入可能影响数据库的安全,以下问题影响到租户的12.1.0.2.0最新版本。...假如我们CDB拥有一个普通用户,因为某种原因它申请和被授予了EXECUTE_CATALOG_ROLE的角色: SQL> connect / as sysdba Connected....当以下一个系列的SQL执行之后,一个普通用户获得了DBA的权限,如果这是一个租户的环境,这个提权将是非常危险的: SQL> connect c##eygle/eygle Connected.

    1.1K60

    Oracle 12c 租户专题|CDB元数据内幕

    原文链接 https://blog.dbi-services.com/oracle-12c-cdb-metadata-a-object-links-internals/ 译者 周天鹏 温馨提示:这篇文章只适合那些想了解租户环境下数据字典...对于12c的租户架构来说,最具挑战性的技术难题是如何共享数据字典。 首先,虽然每个PDB有自己的元数据描述自己独有的信息。...但是,数据字典自身的元数据必须共享,举个例子就是,所有dbms_xxx的PL/SQL包都存储CDB$ROOT,PDB仅存放指向他们的一个链接。...例如通过12c新增的CDB_xxx视图。虽然他们暴露为用来查询容器数据的对象,但其实他们真正查询的数据还是存储每个PDB。 这听起来似乎有点迷,虽然官方文档也不会很深入的讲具体的实现原理。...SQL> select * from DEMO_REG_TABLE; DUMMY ---------- 111 然后,我PDB执行相同操作(但数据不同): SQL> alter

    1.3K110

    Oracle 12c CDB数据库数据字典架构

    除此之外,Oracle自身的一些数据库对象,如目录,PL/SQL代码等等这些都是元数据,都需要存放在数据字典。随着12c 容器数据的普及,Oracle数据字典发生了哪些变化呢,下文即是具体描述。...Oracle 12c CDB数据库采取分离存放的方式,及各个PDB数据字典独立存放。 从用户和应用程序的角度来看,CDB每个容器的数据字典是分开的,因为它将在非CDB。...如下图显示PDB的数据字典包含指向根数据字典的指针。在内部,Oracle提供的对象(如数据字典表定义和PL / SQL包)仅在根中表示。 ?...这种架构实现了CDB内的两个主要目标:     减少重复         例如,DBMS_ADVISORCDB不是将PL / SQL包的源代码存储每个PDB,而是将其存储CDB$ROOT其中,从而节省了磁盘空间...12c租户架构及优缺点 Oracle 12c手工建库(非CDB及CDB创建)

    1K10

    租户:防止意外创建可插拔数据库(PDB)- Lone-PDB

    Oracle 12c之前的数据库都是非CDB,从Oracle 12.1.0.2开始,不推荐使用非CDB体系结构,而是使用租户架构。...租户架构,使用单个可插拔数据库(PDB)(也称为单租户或lone-PDB),可以不必支付租户选项相关费用。...标准版,你不能无意中创建其他PDB;但在企业版,你可能需要购买一些额外的许可证。 本文给出了一个例子,说明如何避免Lone-PDB实例创建多个用户定义的PDB。...> 企业版没有任何内容阻止您创建额外用户定义的可插拔数据库,即使您没有租户选项。...:) 如果你容器数据库中意外创建了多个用户定义的PDB,并且你对潜在的许可违规情有独钟,您可能需要执行以下操作。 创建一个没有PDB的新CDB实例。 使用前面提到的触发器保护新的CDB实例。

    58700

    Oracle 12c系列(一)|租户容器数据库

    可插入数据库的概念 Oracle Multitenant Container Database(CDB),即租户容器数据库,是Oracle 12C引入的特性,指的是可以容纳一个或者多个可插拔数据库的数据库...租户环境的组成 ·ROOT Root容器数据库,是CDB环境的根数据库,根数据库中含有主数据字典视图,其中包含了与Root容器有关的元数据和CDB中所包含的所有的PDB信息。...Application Containers 12cR2版本,Oracle租户功能进行了增强,CDB root容器可以创建一个叫做Application root的容器,可在其内创建多个依赖于...PDB无法执行ALTER SYSTEM SWITCH LOGFILE命令,只有公用用户ROOT容器才可以执行该命令。.../rdbms/admin/catcdb.sql 注意事项: 1.catcdb.pl执行需要输入两个参数,文档并没有指出是什么参数.

    1.8K130

    Oracle 12c系列(一)|租户容器数据库

    可插入数据库的概念 Oracle Multitenant Container Database(CDB),即租户容器数据库,是Oracle 12C引入的特性,指的是可以容纳一个或者多个可插拔数据库的数据库...租户环境的组成 ROOT Root容器数据库,是CDB环境的根数据库,根数据库中含有主数据字典视图,其中包含了与Root容器有关的元数据和CDB中所包含的所有的PDB信息。...Application Containers 12cR2版本,Oracle租户功能进行了增强,CDB root容器可以创建一个叫做Application root的容器,可在其内创建多个依赖于...PDB无法执行ALTERSYSTEM SWITCH LOGFILE命令,只有公用用户ROOT容器才可以执行该命令。.../rdbms/admin/catcdb.sql 注意事项: 1.catcdb.pl执行需要输入两个参数,文档并没有指出是什么参数.

    2.6K70

    YH9:Oracle Multitenant 知识库

    如在 CDB 层面的用户信息查询,可以通过新的视图 CDB_USERS 进行,通过这个视图可以直观的看到一个用户在哪些容器存在: ?...回答了这四个问题,少踩12c 租户的好多坑 3、安全管理 用Oracle租户选件时,由于Container容器和PDB融合共存,则权限控制必将更加重要,Oracle 12.2 的 lockdown...前段时间披露的风险,通过SQL注入可能影响数据库的安全,有些问题影响到租户的12.1.0.2.0最新版本。...【安全警告】Oracle 12c 租户SQL注入高危风险防范 4、用户权限管理 租户环境,权限可以全局授予整个CDB,一个应用容器数据库(application container),或者单个的...12.2,关于权限,又有哪些新的变化呢? 一起来学习Oracle12.2 租户环境下的授权管理。

    1.3K70

    docker 部署oracle

    Oracle数据库服务器Docker映像包含在Oracle Linux 7上运行的Oracle数据库服务器12.2.0.1企业版。该映像包含具有一个pdb的租户配置的默认数据库。...当该STATUS字段显示(healthy)的输出时,数据库服务器就可以使用了docker ps。 连接到数据库服务器容器 使用sys用户连接到数据库的默认密码是Oradoc_db1。...从容器内部连接 可以通过执行SQL * Plus来连接数据库服务器, $ docker exec -it bash -c "source /home/oracle/.bashrc...; sqlplus /nolog" 从容器外部连接 数据库服务器为通过SQL Net协议的 Oracle客户端连接公开端口1521,为Oracle XML DB公开端口5500。...通过重用OracleDBData数据卷,可以将持久化的数据文件与另一个容器重用。

    2.4K30

    oracle数据库发展简史

    2、第一个商业可用的关系数据库管理系统(RDBMS) 1979年,RSI推出了Oracle V2 (版本2),是第一个商业可用的基于SQL的RDBMS,关系数据库历史上具有里程碑的意义。...3、可移植版本的Oracle数据库 1983年发布的Oracle Version 3是第一个大型机、小型计算机和个人计算机上运行的关系数据库。...此外,Version 6还引入了PL/SQL语言的第一个版本,这是一种专有的过程化扩展SQL。 5、PL/SQL存储程序单元 1992年发布的Oracle7引入了PL/SQL存储过程和触发器。...7、互联网计算 1999年发布的Oracle8i数据库提供了对互联网协议的本机支持以及对Java的服务器端支持。Oracle8i是为互联网计算而设计的,使数据库能够部署多层环境。...11、接入云计算 Oracle Database 12c是2013年发布的,专为云环境设计,具备新的租户架构、内存列存储(IM列存储)以及对JSON文档的支持。

    45140

    【DB宝26】Oracle 19c创建容器数据库(3)--手动创建CDB

    您可以使用新子句SEED FILE_NAME_CONVERT重命名种子可插拔数据库的数据文件,同时从根容器执行复制操作。该子句会创建种子可插拔数据库及该数据库自己的数据文件。...•第四步是通过执行连接到根容器的catcdb.sql脚本创建目录和其他组件。 麦老师不建议手工建库,因为很多组件不全,而且创建过程非常麻烦。...此时会创建根容器和种子可插拔数据库。您可以使用另一个子句SEED FILE_NAME_CONVERT指定种子文件的位置。如果省略此子句,OMF会决定种子文件的名称和位置。...本例,/oracle/dbs和/oracle/seed目录必须存在。...手工建库只是特殊场景才会用到。 本文结束。

    3.8K20

    Oracle 19c 之多租户 PDB 连接与访问(三)

    前面已经说过创建租户以及租户体系架构了,感兴趣的小伙伴可查看历史文章。今天下午微信公众号又有重大的更新了,底部出现了分享、点赞、再看三个按钮,所以发一篇试试新功能。...如上图,当我使用 sqlplus 连接到 PDB 时,每行 SQL 前均会显示所连接到的容器租户以及用户名称,如 SYS@JIEKEPDB1> .这个命令提示符是可以配置的。... $ORACLE_HOME/sqlplus/admin 目录下有一个 glogin.sql 文件,最后添加 sqlprompt 相关的提示便可以了。...最最后,亲测,export ORACLE_PDB_SID 12c 不可用,不过 TWO_TASK=JIEKEXUPDB1 到时可以使用。...TWO_TASK 和直接通过 tns 别名登录到 PDB 的,需要租户容器 SYS 密码,当不知道密码时比较麻烦;那么只有通过 sqlplus 先登录到根容器然后再使用 alter session set

    4.4K20
    领券