共 233 篇文章

标签:Oracle优化 第21页

Oracle 等待事件 gc current block direct read 官方解释,作用,如何使用及优化方法

本站中文解释 oracle事件gc current block direct read,即Oracle的gc current块直接读取的,是从磁盘上以本地数据库块(DB_block)粒度读取数据的一个特定操作,操作发生在既非参数行又不是当前请求会话。 当从磁盘中读取数据块时,Oracle会首先搜索内存中的buffer cache ,来确定数据块是否已存在,如果存在,它会将数据块直接加载到内存,从而避免从磁盘上进行读取,这种操作就是gc current block direct read 。它用于缩短查询时间,因为它不需要通过读取磁盘上的数据块才能获取目标数据块。 但是,gc current block direct read的执行回馈为空操作,对内存和磁盘性能都没有任何改善,并且可能会导致系统负载过高。 最后,gc current block direct read是oracle提供的一项技术,可以在内存和磁盘之间有效地完成数据块转移,加快系统速度,提高系统性能,但本身不包含任何性能改进功能,不能作为性能优化技术。因此,使用这项技术前,建议先对系统进行分析和调优,以最大程度上发挥gc current block direct read的优势。 官方英文解释 This event indicates that the requested current buffer was transferred from another instance in the cluster, and the buffer was directly read from the remote cache utilizing the RDMA protocol. Wait Time: The wait time is the actual time it took to receive the requested buffer. Parameter Description file# See “file#” block# See “block#” class# See “class”

技术分享

Oracle 等待事件 Enqueues:RT,RedoThread 官方解释,作用,如何使用及优化方法

本站中文解释 Oracle数据库中的Enqueues(列队)是一种基础性的、通用的用于访问资源控制的机制,允许多个用户/会话访问和操作完整应用数据库资源。Enqueues包括RT和Redo Thread两类类型,即读线程和重做线程。 Enqueues(列队)的主要目的是保护共享数据库资源,并在多个用户/会话之间分配互斥资源以避免资源抢占,导致的数据冲突问题。Enqueues(列队)会保护操作系统中共享资源,或者说数据库实例中共享资源,但不会超出该实例的范围。 RT(读线程)是Enqueues(列队)范围中的一种,用于保护用户会话之间并发访问资源数据库资源的机制。当用户会话请求访问共享数据库资源时,RT会分配一个“信号”给用户会话来表示被赋予的权限,然后用户会话等待队列中的其它会话释放信号,该会话才能完成资源访问和操作。 Redo Thread(重做线程)是用于控制日志文件的访问的Enqueues(列队)类型,用于保护日志文件在多个用户/会话之间的共享访问。Redo Thread会分别针对LOG_SWITCH_WAIT,LOG_ARCHIVE_WAIT,LOG_SLAVE_WAIT,LOG_CREATE_WAIT四种类型的Redo线程,它们使用相同的机制来阻止并发Redo操作执行中发生碰撞,保障Redo操作的顺利执行。 总而言之,Enqueues(列队)机制实现了对所有用户/会话并发访问数据库资源的控制,通过RT(读线程)和Redo Thread(重做线程)等机制保证了数据的安全,允许多个用户/会话在数据库中安全的同时进行操作。

技术分享

Oracle 等待事件 direct path write 官方解释,作用,如何使用及优化方法

本站中文解释 Oracle 事件 direct path write 指的是当数据库引擎需要在数据库表中缓存数据,而不是先将数据缓存在buffer cache的情况下,将数据直接插入表中的处理过程。 正是因为直接写插入,所以其处理速度会比数据库标准插入方法要快得多,写操作消耗的时间主要是用于存储过程,而非校验数据;它还可以带来一定的数据库利用率改善,并且能在很大程度上减少对缓存的压力。例如,当使用多次 direct path write 来载入大量数据时,可以显著提升数据库利用率。 direct path write 通常会在批量数据处理或大规模并发操作期间出现,如全表的加载操作或大量的批量更新操作。如果直接写操作发生错误,则会对数据库性能产生极大影响。此外,一般情况下,direct path write 无法直接被记录到 redo log 中。 由于直接写插入用于快速将数据载入表中,相应的,还有一种反向的操作即direct path read,它可以在很大程度上加快表中提取数据的过程。它主要用于批量处理大规模数据库查询,避免查询时间过长。 总之,direct path write 就是一种将数据直接存储到表中的插入操作,它可以大大提升数据库的处理速度,但同时也存在一定的风险,所以在使用的时候应该小心和慎重。 官方英文解释 During Direct Path operations, the data is asynchronously written to the database files. At some stage the session needs to make sure that all outstanding asynchronous I/O have been completed to disk. This can also happen if, during a direct write, no more slots are available to store outstanding load requests (a load request could consist of multiple I/Os). Wait Time: 10 seconds. The session will be posted by the completing asynchronous I/O. It will never wait the entire 10 seconds. The session waits in a tight loop until...

技术分享

Oracle 等待事件 SQL*Net break/reset to client 官方解释,作用,如何使用及优化方法

本站中文解释 Oracle事件SQL*Net break/reset to client是由Oracle网络服务器发送的事件,当客户端的网络连接中断或重置发生时,就会触发该事件。 SQL*Net break/reset to client事件也可以指示客户端发送给服务器的信息在网络传输过程中发生了重置,导致客户端和服务器之间的连接中断,或者也可能是一方终止了连接,也就是说可能是客户端或服务器发送了reset信号。 同时,SQL*Net break/reset to client也会表明客户端或服务器执行了一个干净的断开连接,以便连接可以后期重用。此外,如果客户端尝试重新连接,此事件也可以表明出现了故障,导致网络连接失败。 当此事件发生时,Oracle系统会向用户发出警报,以便用户能及时追踪客户端和服务器之间的通信问题,并采取适当的措施确保数据安全和恢复数据库服务。 最后,可以简单地理解,SQL*Net break/reset to client事件表明客户端和服务器之间的网络连接被终止或重置,从而导致网络传输中断。由于此事件可能会影响客户端和服务器之间的数据安全,所以在发生时,用户需要采取适当的措施,以保证数据的安全性并恢复服务的正常性。 官方英文解释 The server sends a break or reset message to the client. The session running on the server waits for a reply from the client. Wait Time: The actual time it takes for the break or reset message to return from the client Parameter Description driver id See “driver id” break? See “break?”

技术分享

Oracle 等待事件 SQL*Net more data to client 官方解释,作用,如何使用及优化方法

本站中文解释 Oracle事件SQL*Net more data to client是当一个客户端向服务器端发出一个请求时,服务器正在发送返回给客户端的附加数据的标志。 SQL*Net是一种数据库(特别是联机事务处理(OLTP))的客户–服务器架构,它为数据库应用程序提供网络连接服务。 它有两个主要部分:服务器部分和客户端部分。 服务器部分位于数据库服务器上,负责数据库的管理和维护,处理客户请求并提供返回的数据。 这个部分还负责安装、配置和管理SQL*Net中的服务器软件。 客户端部分位于客户电脑上,负责处理针对服务器端数据库的任何网络连接或远程请求,并对数据库服务器发出各种请求。 这个客户端组件包含了用于打开和维护客户端与服务器之间连接的网络应用程序,以及使客户端能够访问数据库的API程序。 当客户端向服务器发出请求时,服务器会返回包括更多数据的响应。 此时,就会发生SQL*Net更多数据到客户端的事件。 在这种事件中,客户机会继续接收服务器端发出的结果数据,直到所有数据发送完毕。 这样,客户端就能够正确地接收到从服务器发出的数据。 SQL*Net更多数据到客户端的事件也可以用来检查网络通信是否正常。 SQL*Net更多数据到客户端这个事件是客户端和服务器之间交换信息的一个重要组成部分,是客户机能够接收数据并向服务器发送请求的最终手段。 官方英文解释 The server process is sending more data/messages to the client. The previous operation to the client was also a send. Wait Time: The actual time it took for the send to complete Parameter Description driver id See “driver id” #bytes The number of bytes that are being sent to the client See Also: Oracle Database Performance Tuning Guide for more information about this wait event

技术分享

Oracle 等待事件 SQL*Net more data to dblink 官方解释,作用,如何使用及优化方法

本站中文解释 Oracle的 SQL*Net more data to dblink 事件是指,当Oracle客户端正尝试从一个远程数据库(即Oracle dblink)访问数据时,它会尝试确定需要从服务器发送多少数据以满足客户端的结果集需求。 当它发送一个消息到服务器时,客户端会发出SQL*Net more data to dblink 事件。 例如,当客户端从服务器获取数据时,服务器可能无法一次发送这么多,可能只能在服务器的结果集的条目上发送一部分。 在这种情况下,客户端会发出 SQL*Net more data to dblink 事件,以便从服务器继续获取数据。 触发SQL*Net more data to dblink 事件的另一个可能的原因是客户端请求时,服务器发出的数据量超过了客户端用来接收数据的缓冲区大小。 这也会导致 dblink 事件,要求客户端安装一个更大的缓冲区来处理响应的字节数。 SQL*Net more data to dblink 事件可以通过Oracle的session功能来监控,可以检查是否存在性能问题。 如果出现大量的SQL*Net more data to dblink 事件,则可能需要对服务器和客户端进行优化,以提高性能。 例如,可能需要提高客户端机器上的网络带宽,或改变服务器上查询的结构,以减少它发送的数据量。 因此,通过监控此事件,可以找出可能存在性能问题的地方,并改善性能。 官方英文解释 The event indicates that the server is sending data over a database link again. The previous operation over this database link was also a send. Wait Time: The actual time it takes to send the data to the other server Parameter Description driver id See “driver id” #bytes The number of bytes that are sent over the database link to the other server process

技术分享

Oracle 等待事件 Redo Transport Open 官方解释,作用,如何使用及优化方法

本站中文解释 Oracle Redo Transport Open是Oracle系统中,应用程序当前活动要建立信任连接,或者刷新应用程序状态时,发生的一个事件。这个事件会触发一个Redo Transport开始,来保证正在处理的数据是一致的。 Redo Transport Open事件一般由客户端发出,服务器端接受,服务器所做的就是建立一个安全的网络连接,以收到来自客户端的Redo Transport请求,并请求再次确认某个特殊的数据请求,以保证数据的一致性。 Oracle Redo Transport Open事件可以有很多不同的: 1) 新连接和重定向:这部分包括客户端和服务器之间的连接握手,重定向,等等; 2) 应用程序状态刷新:当Redo Transport Open事件发生时,服务器会查询客户端的应用程序状态,以检查其应用程序的状态是否有变化,同时也可以检查数据库中的内容端是否已经收到客户端的最新更新; 3) 写入/更新:服务器端可以检查客户端的内容是否和原有的已存在的数据库中的内容一致,如果不一致,可以要求客户端重新发送,以保证数据内容一致; 4)确认接收:当Redo Transport Open事件发生时,服务器也会确认客户端发送的数据是否已经接收,以保证数据的一致性。 另外,Oracle Redo Transport Open事件还会检查客户端的安全性,以及确保Oracle数据库的一致性。 此外,Oracle Redo Transport Open事件还可以实现分布式事务和Able Transaction Services(XA),以保证全局事务的一致性。 总之,Oracle Redo Transport Open事件是Oracle数据库操作中用于检查一致性和安全性的一个重要事件,它会根据不同的应用程序状态,发送不同的Redo Transport请求,从而确保应用程序处理数据的一致性。 官方英文解释 Used to track the time spent (in centiseconds) by ARCn, NSSn, and TTnn background processes doing RFSCREAT and RFSANNCE operations. See Also: Oracle Data Guard Concepts and Administration for more information about using RFS to manage standby redo logs.

技术分享

Oracle 等待事件 buffer deadlock 官方解释,作用,如何使用及优化方法

本站中文解释 Oracle事件buffer deadlock, 也称作buffer cache deadlock,指的是在Oracle数据库服务器中,两个不同的进程试图同时访问同一个buffer,却都不让对方进行访问,这就造成了“buffer deadlock”,buffer deadlock对于Oracle数据库服务器来说,十分致命。 具体来讲,buffer deadlock发生的情况主要有两种:第一,当另外一个进程试图访问某个buffer,而该buffer正被你也拥有的另一个进程访问的时候,这时这个buffer就会出现一种deadlock的情况;第二,当一个进程所试图访问的buffer,另外一个进程也正准备试图访问的时候,此时这个buffer也会出现deadlock的情况。在这种情况下,紧接着,这两个事务就会停止并一直处于等待状态。因为它们都不希望让出内存空间,也不让对方继续读写。 有时,如果发生了buffer deadlock,系统就会报告“enq:TM-contention”和“enq:TX-row lock contention”。这两个错误一般都表明系统出现了buffer cache deadlock。 对于buffer deadlock,Oracle可以采取一些步骤进行防范。首先,可以在数据库实例服务器上设置“contention threshold”, 因为一旦出现buffer deadlock, 那么系统将会自动终止这种争用状态,即会使用锁的等待的方式来解决这个问题。其次,建议把数据库的缓冲缓冲池设置得够大,以免发生“buffer cache deadlock”。 除此之外,Oracle还可以利用另外的“lock resolution”机制,来保证系统的正常运行,例如使用分散读取技术(scatter reads),确保进程正在访问一个固定的buffer,而不是一直改变着。再比如,利用“group commit”机制来提高内存访问的性能。 综上所述,buffer deadlock是Oracle数据库服务器中的一种十分致命的错误,如果发生,将对数据库服务器的正常运行造成严重的影响,因此,建议采取积极的预防措施,避免发生buffer deadlock。 官方英文解释 Oracle does not really wait on this event; the foreground only yields the CPU. Thus, the chances of catching this event are very low. This is not an application induced deadlock, but an assumed deadlock by the cache layer. The cache layer cannot get a buffer in a certain mode within a certain amount of time. Wait Time: 0 seconds. The foreground process only yields the CPU and will usually be placed at the end of the CPU run queue. Parameter Description class See “class” mode See “mode”...

技术分享

Oracle 等待事件 broadcast mesg queue transition 官方解释,作用,如何使用及优化方法

本站中文解释 Oracle事件broadcast mesg queue transition是一种广播消息队列转换的协议。它可以促使一些消息队列(也称为“广播队列”)自动按照一种特定的协议处理收发的消息。 这种协议的运作方式可以分为三个步骤: 首先,由一个领导者开始发布信息,让其他接收节点接收相应信息。 其次,由此信息导向另一个节点,这个节点收到这条信息后,可以重新发布它,此时,就会存在多个领导者,他们就可以用来传递信息。 最后,领导者节点会根据自身情况,识别订阅者,并将消息发布到订阅者上。当订阅者接收到消息后,就可以按照适当的方式进行处理,或者将消息发送到其他节点。 Oracle的broadcast mesg queue transition 协议的优势在于,它能够支持大量并发操作,可以保证消息发送的拓展性及速度,而且消息考虑到整体性,传输过程会加强安全性。另外,具有容错能力。此外,这在高可用环境、负载均衡环境中也有着更好的性能表现,能够很好的节省系统资源的消耗。 因此,Oracle的broadcast mesg queue transition协议在消息传递过程中可以提供极大的便利,而且由于其扩展性和高可用性,也被越来越多的组织和企业采用。 官方英文解释 Processes enter “wait for broadcast mesg queue transition” when cleaning up a publisher channel handle to a RELIABLE broadcast channel. The publisher is responsible for moving the message to the free queue, but it cannot do so until the message is in the done queue. If the message is still not in the done queue, process enters this wait. This wait event will most likely appear when an Oracle process is about to exit normally, or when PMON cleans up a dead process. Wait Time: Varies Parameter Description channel handle publisher channel handle pointer message broadcast message pointer location A number...

技术分享

Oracle 等待事件 enqueue 官方解释,作用,如何使用及优化方法

本站中文解释 Oracle 事件 Enqueue 是 Oracle 数据库在共享资源上的一种形式,这些共享资源可以是粘性池中的锁(又可以称作“资源超时队列”),或者是存储于缓冲区中的页面。Enqueue 是在不同的会话之间进行访问统一资源时共享资源的内部组件,允许会话在共享资源上占有和使用。除了本地会话之外,多个会话可以共享这些资源,这需要 Enqueue 来维护活动会话的顺序。 Enqueue 启用会话以排他性方式访问共享资源,这就允许一般共享但仅在特定会话内有效的数据可以在任何时候,而不会被其他会话所访问。Enqueue 还允许会话等待另一个会话完成对资源的访问,而无需阻塞操作发出的系统。因此,当一个会话想要更新资源时,其他的会话都需要等待,直到第一个操作完成占用,然后才能访问。如果一个会话想要访问共享资源,但发现 Enqueue 正在别的会话的控制之下而无法访问,它可以将自己放入等待队列中,等待它可以访问的资源时再进行访问。 Enqueue 的另外一种主要功能是它可以实现接近任务并行性地完成任务。其原理是,当系统上有许多会话正在使用资源时,其它会话都需要使用这些资源,但是它们不能无限期的等待而不去做任何事,而是尝试去获取,如果发现它们无法获取,它们就会将自己放入 Enqueue 的等待队列中,等待当前会话完成后,它就可以尝试获取。因此,虽然每个会话都可能无法完全独立完成任务,但是它们可以互相等待,最终都可以尽快完成任务(尽管时间会拉长)。 Enqueue 对于管理和维护共享资源,以及保护数据一致性和事务完整性非常重要。因此,当多个会话同时访问共享资源时,Enqueue 将成为保护该资源的非常有效的工具。 官方英文解释 The session is waiting for a local enqueue. The wait depends on the name of the enqueue (see Oracle Enqueue Names). Wait Time: Depends on the enqueue name Parameter Description name See “name and type” mode See “mode” See Also: Oracle Database Performance Tuning Guide for more information about the potential causes of an enqueue wait event

技术分享