oracle临时表实际应用

2023-05-16


(这段是后面添加的:临时表,在实际应用中,其实和nologging的固定表,是差不多的,都是中间表,所以这里为什么添加这段话,是让自己记得,如果不创建临时表,而是使用固定表,来作为中间表的话,要记得将这个表改为nologging,否则会产生很多日志出来,没有必要,将固定表改为nologging,很简单:alter table xxx nologging就可以了,这个我已经用dba_tables查过了,确实起作用)。
oracle的临时表,global temporary table。
注意的是:这个临时表,不保存数据,其数据变化也不记入日志。
所以一般是在程序中,临时保存数据用的,也就是保存在操作过程中临时用到的数据,包括一些统计中间数据,或者临时生成的字典等等。
由于其数据变化不计入日志,所以在统计程序或者临时的字典的使用,可以很好的避免产生不必要的日志。
比fixed table好很多,因为固定表要产生日志,带来很多不必要的存储负载。
推荐程序中用到的临时数据,尽量保存到临时表中,因为1、临时表隔离度更高,只有用户自己可见;2、用户用过,oracle系统会自动删除数据,不需要增加额外的代码。
经过实际操作发现,临时表和固定表的操作方式,是一样的,权限方面也是差不多的,只不过一个是临时用的,用过就没有数据了,而且不产生日志,固定表是永久保存数据,产生日志,也可以建立索引、触发器等,也可以创建同义词。也就是说相差不远。
临时表,分为两种,一种是基于会话的,一种是基于事务,两者之间有区别,会话指的程序尚在登录期间,程序和数据库之间的会话存在,基于事务的,指的是事务期间。
基于会话的临时表,在创建的时候,指定on commit preserve rows,就是基于会话的临时表,这里面的数据,在程序和数据库之间的会话存在期间,数据一直保存,不删除,从这方面考虑,可以认定这个方式可以用于生成程序使用的临时字典之类的。
基于事务的临时表,在创建的时候,指定on commit delete rows,就是基于事务的临时表,这种表,要对事务有所了解才能使用,事务指的是产生的一个insert、update、delete之类的动作,不是select,事务的完成和关闭,以当前用户的commit动作为结束,当用户程序发出commit命令,oracle就会删除临时表中的数据。这个特性,非常适合用于查询程序过程中,产生的统计中间数据,当统计程序过于复杂,程序无法一次性完成统计动作,或者为了减轻数据库和程序之间的数据来往负担,可以将统计出来的数据临时存放在临时表中,然后将结果查询到程序界面,在完成将结果抓取到程序界面上后,再发出commit命令,就可以清空临时表。
在我实际编写的统计程序中,因为临时表选择的问题,统计结果翻倍,所以我认为,查询统计程序,最好使用基于事务的临时表,在将统计结果抓取到程序界面上后,发出commit命令,就可以完成当前事务,从而删除临时表中的数据。这也就是为了避免一个操作上的失误,导致的统计错误,就是多点几下按钮,在基于会话的临时表,或者在程序中没有发出commit命令结束事务,多点几下按钮,会导致临时表中的数据,多次插入,那样当然统计结果也就错了。
最后记录下,后台操作语句:
create global temporary table xxxx(xxx varchar2(10),xxxxx varchar2(20));
grant all on xxxx to role_xxx;
至于选择表的问题,可以创建同义词,也就是使用system.xxxx ,这两种方式。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9606200/viewspace-1435675/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9606200/viewspace-1435675/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

oracle临时表实际应用 的相关文章

  • 在 SQL 中搜索 XML 列

    我有一个 XML 文档来存储 Oracle 数据库中的记录 表 CourseXML 将包含 Record Number int XML Type int XMLDoc clob etc 我想通过 XML 标签在 XMLDoc 列中进行搜索
  • 如何动态创建表数据类型的变量?

    在以下查询中 select string 可以返回具有任何可能数据类型的任意数量的列和行 Execute immediate select string into v table variable 例如 select string 可以是
  • 从 Oracle 获取包方法和参数

    我正在寻找 Oracle 查询来获取 Oracle 包 过程的所有参数 我知道有一个视图或表可以提供此功能 但我似乎不记得它是什么 注意 我并不是要从 user objects 获取包列表 而是要获取包 中每个过程的数据类型和参数名称 Th
  • Oracle 奇怪的 SUM 行为

    我有两个查询 据我了解 这两个查询应该提供相同的结果 但事实并非如此 显然我在这里遗漏了一些重要的观点 我希望你能帮助我 查询 我认为这是错误的 SELECT SUM a amount AS A SUM 10 727 470 FROM bi
  • Oracle SQL 查询日期格式

    我总是对 ORACLE SQL 查询中的日期格式感到困惑 并花几分钟时间去谷歌 有人可以向我解释当数据库表中有不同格式的日期时解决问题的最简单方法吗 例如 我有一个日期列为 ES DATE 保存的数据为 27 APR 12 11 52 48
  • Oracle 事务在 C++ 和 Java 之间的传播

    我们有一个现有的 C 应用程序 我们将逐步将其替换为新的基于 Java 的系统 在我们用 Java 完全重新实现所有内容之前 我们期望 C 和 Java 必须相互通信 RMI SOAP 消息传递等 我们尚未决定 现在我的经理认为我们需要 J
  • 如何在 Pro*C 查询中指定变量表达式列表?

    我尝试优化的 Pro C 查询出现问题 解释一下 我们的应用程序在一个巨大的数据库中搜索行 这些行存在于多种语言中 旧代码为数组中的每种语言选择一行 现在 由于这些查询是我们应用程序中最耗时的部分 因此我只想进行一个直接写入数组的查询 语言
  • 如何从oracle存储过程中提取out变量?

    我有存储过程 其中有很多输出变量 所以我这样调用存储过程 export const infoHR3 async gt try const sql Declare ln order qty NUMBER ln in proc qty hr N
  • PLS-00103:遇到符号“CREATE”

    这个包有什么问题 因为它给出了错误 CREATE OR REPLACE PACKAGE PKG SHOW CUST DETAILS AS PROCEDURE SHOW CUST DETAILS myArg VARCHAR2 END PKG
  • 创建和删除表空间 Oracle

    我已经创建了这个表空间 CREATE TABLESPACE IA643 TBS DATAFILE IA643 dat SIZE 500K AUTOEXTEND ON NEXT 300K MAXSIZE 100M 我尝试使用此命令删除它 DR
  • 将十六进制转换为字符串

    我想用HEXTORAW 从 ASCII 十六进制代码 30 获取 char 值 ASCII HEX 30 应返回 varchar 0 该怎么做呢 是HEXTORAW 正确的功能 你可以使用utl raw http docs oracle c
  • 如何在 Hibernate 中使用 Oracle 查询提示

    我试图在 Hibernate 中使用 Oracle 提示来调用强制索引 但在 Hibernate 3 6 10 Final 中没有找到任何合适的 API 我以某种方式尝试了 Hibernate 标准中的预测 proList add Proj
  • Oracle SQL——从字符串中删除部分重复项

    我有一个表 其中有一列包含字符串 如下所示 static text here 1abcdefg1abcdefgpxq 从这个字符串1abcdefg重复两次 所以我想删除该部分字符串 然后返回 static text here 1abcdef
  • 如何从 java.sql.Blob 类型的 zip 文件中读取和提取 zip 条目,而无需将 FileInputStream 或文件路径作为字符串 java

    public static void unzipFiles java sql Blob zip throws Exception String paths byte blobAsBytes zip getBytes 1 int zip le
  • 如何在新的数据库服务器上导入 Oracle 11g RMAN 备份集?

    我有一个使用 RMAN 创建的 Oracle 11g 数据库的备份集 现在我想将备份集导入 恢复到新的空数据库服务器上 我知道创建备份集的命令是 run backup as compressed backupset database tag
  • UUID最大字符长度

    我们使用 UUID 作为 Oracle DB 的主键 并尝试确定 VARCHAR 的适当最大字符长度 显然这是 36 个字符 但我们注意到生成的 UUID 比这个长 长度最多为 60 个字符 有谁知道 UUID 的合适最大字符长度 RFC4
  • sql server GO 相当于 oracle

    我正在为 Oracle 编写迁移脚本 我需要更改表结构 然后用数据填充它 我想先进行结构更改 然后再进行数据更改 在 SQL Server 中我会使用GO分离批次 是否有 SQL ServerGOOracle 中的等效命令 It s and
  • 什么是 Oracle 数据集成器?

    什么是ODI ODI的实际用途是什么 oracle data integrator工具如何帮助编程 sql Developer 工具和 ODI 工具实际上有什么区别 真的厌倦了在某些网站上找到的定义 如果有人能提出 gud 解释 那就太好了
  • APEX:从临时表下载 BLOB

    我正在尝试使用 Oracle APEX 4 1 1 构建一个简单的查看应用程序 要显示的信息位于与包含 APEX 应用程序访问的架构的数据库不同的数据库上的表中 使用视图 View 访问此远程表 远程表视图 和数据库链接 视图按预期工作 包
  • 不是 select 中带有 MAX 的单组组函数

    Select sg gameno Max sg Year sg end sg hostcity country olympic name from Summergames s Country co where s country isoco

随机推荐

  • Linux0.11 由进程睡眠函数sleep_on()中的堆栈变量tmp引发的思考 关于进程内核堆栈

    sleep on cpp view plaincopy 功能 xff1a 当前进程进入不可中断睡眠态 xff0c 挂起在等待队列上 参数 xff1a p 等待队列头 返回 xff1a xff08 无 xff09
  • 关于Windows系统环境变量的引用问题

    做Leap Motion开发时 xff0c 新建了LEAP SDK的系统环境变量 xff0c 按照官方SDK文档中说明的 xff0c 在工程中引入 LEAP SDK include 之前半年的时间里都是这样做的 xff0c 没有任何问题 x
  • 深入理解Linux内核--信号

    信号用于在用户态进程间通信 内核也用信号通知进程系统所发生的事情 1 信号的作用 信号 signal 是很短的消息 xff0c 可以被发送到一个进程或一组进程 发送给进程的唯一信息通常是一个数 xff0c 以此来标识信号 使用信号的两个主要
  • 进程上下文与中断上下文

    处理器总处于以下状态中的一种 xff1a xff11 内核 态 xff0c 运行于进程 上下文 xff0c 内核代表进程运行于内核空间 xff12 内核态 xff0c 运行于中断上下文 xff0c 内核代表硬件运行于内核空间 xff13 用
  • 进程上下文VS中断上下文

    内核空间和用户空间是现代操作 系统的两种工作模式 xff0c 内核模块运行在内核空间 xff0c 而用户态应用程序运行在用户空间 它们代表不同的级别 xff0c 而对系统资源具有不同的访问权限 内核模块运行在最高级别 xff08 内核态 x
  • 中断不可睡眠的一些理解

    一 LINUX中到是有中断还没有完全返回就调用schedule 而睡眠过去的例子 可以猜是哪里 我觉得 xff0c 中断和异常不同 xff0c 中断是异步的 xff0c 异常和系统调用是同步的 异常比如缺页异常发生时 xff0c 当前任务在
  • kmalloc和vmalloc

  • linux内核中内存相关的操作函数

    1 kmalloc kfree static always inline void kmalloc size t size gfp t flags 内核空间申请指定大小的内存区域 xff0c 返回内核空间虚拟地址 在函数实现中 xff0c
  • Oracle安全:SCN可能最大值与耗尽问题Oracle安全:SCN可能最大值与耗尽问题

    SCN的问题一旦出现 xff0c 使得数据库的一切事务停止 xff0c 由于SCN不能后退 xff0c 所以数据库必须重建 xff0c 才能够重用 在2012年第一季度的CPU补丁中 xff0c 包含了一个关于SCN修正的重要变更 xff0
  • Linux内核 申请和释放内存流程

    1 内核初始化 xff1a 内核建立好内核页目录页表数据库 xff0c 假设物理内存大小为len xff0c 则建立了 3G 3G 43 len 0 len 这样的虚地址vaddr和物理地址paddr的线性对应关系 xff1b 内核建立一个
  • 编译器"自举与移植"原理

    本文基于对 编译原理与实践 中有关编译器自举与移植部分的读书 笔记 形式 xff0c 因为原书是老外写的 xff0c 感觉翻译的地方好多语句不通或难以理解 xff0c 所以花了好多功夫研究这一块 注 xff1a 本文中与原书一致的地方都是P
  • Linux 内核 由block_read和block_write函数引发的设备块号转换问题的思考

    在1 2内核版本中 xff0c 在Linux fs目录下 xff0c 有一个block dev c文件 xff0c 里面主要包含了block read block write block fsync函数 先说说我遇到的问题 xff0c 在块
  • Linux 进程调度时机

    Linux调度时机主要 有 xff1a 1 进程状态转换的时刻 xff1a 进程终止 进程睡眠 2 当前进程的时间 片用完时 xff08 current gt counter 61 0 xff09 3 设备驱动程序 4 进程从中断 异常及系
  • linux 下批量转换pdf的命令方法

    由于在windows下的图形界面 xff0c 难以批量进行其他格式的文件到PDF格式文件的转换 xff0c 而一些其他的软件也不是很满意 xff0c 所以转到linux下 xff0c 想利用linux强大的命令行来完成这件事 linux下有
  • Linux内核 内存映射文件机制mmap

    今天研究Linux1 2内核运行加载a out格式的可执行文件的代码时 xff0c 无意中研究明白了内核提供的内存映射机制 mmap xff08 memory map xff09 当内核要加载可执行文件到相应的用户地址空间时 xff0c 有
  • bash提示符的配置:

    bash提示符的配置 xff1a 如果您很容易使 shell 提示行变得色彩绚烂斓且带有更多信息 xff0c 为什么还要坚持用单调的标准 shell 提示行呢 xff1f 在这篇技巧中 xff0c Daniel Robbins 将说明如何获
  • Linux线性地址空间的划分及内核寻址方式

    今天研究Linux1 2内核时 xff0c 注意到该版本中的PAGE OFFSET宏被定义为0 xff0c 考虑到进程的地址空间被划分为3G的用户态地址空间和1G的内核态地址空间 xff0c 于是深入的研究了一下这个问题 一开始我只是疑惑
  • linux 最简单的模块的编写和运行

    第一次动手编写一个内核模块 xff0c 但是查找了许多资料没有一个可以完美通过编译的 xff0c 郁闷 xff0c 最后还是解决了 xff0c 分享出来 首先是hello c include lt linux kernel h gt Nee
  • 截获或替换linux系统调用

    直接上代码吧 xff1a hello c include lt linux kernel h gt Needed by all modules include lt linux module h gt Needed for KERN inc
  • oracle临时表实际应用

    xff08 这段是后面添加的 xff1a 临时表 xff0c 在实际应用中 xff0c 其实和nologging的固定表 xff0c 是差不多的 xff0c 都是中间表 xff0c 所以这里为什么添加这段话 xff0c 是让自己记得 xff