# Inactive sessions Oracle JDBC

**URL:** <https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262>\
**Category:** Ignition\
**Created:** [June 20, 2023, 12:23pm UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262 "2023-06-20T12:23:42Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![grzegorz.kaczmarczyk](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/grzegorz.kaczmarczyk/32/24167_2.png) [@grzegorz.kaczmarczyk](https://forum.inductiveautomation.com/u/grzegorz.kaczmarczyk)\
**Post date:** [June 20, 2023, 12:23pm UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/1 "2023-06-20T12:23:42Z")

</div>

Hi,

 ![Clipboard - 20 czerwca 2023 13_37](https://us1.discourse-cdn.com/inductiveautomation/original/3X/f/d/fd730fcf3d7dc507930c4ed1263fceb0676f4a53.png)

I have couple opened sessions in INACTIVE status. I want to have only one session. How can I achieve this?

Thanks in advance for your help!

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [June 20, 2023, 12:28pm UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/2 "2023-06-20T12:28:28Z")

</div>

Advanced configuration in your connection settings in Ignition. Set Max Idle to zero. If you really only want to allow one connection, set max active to one.

Do note that disabling connection pooling like this will crush performance, as every request will have to wait if the connection is busy, and there will never be an idle one to keep latency low.

---

<div class="post-metadata">

**Author:** ![grzegorz.kaczmarczyk](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/grzegorz.kaczmarczyk/32/24167_2.png) [@grzegorz.kaczmarczyk](https://forum.inductiveautomation.com/u/grzegorz.kaczmarczyk)\
**Post date:** [June 20, 2023, 12:35pm UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/3 "2023-06-20T12:35:49Z")

</div>

How can I check, if one session is enough? Is there some tool in gateway diagnostics to check it?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [June 20, 2023, 1:08pm UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/4 "2023-06-20T13:08:35Z")

</div>

Yes, there are gateway diagnostics that should help.

---

<div class="post-metadata">

**Author:** ![grzegorz.kaczmarczyk](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/grzegorz.kaczmarczyk/32/24167_2.png) [@grzegorz.kaczmarczyk](https://forum.inductiveautomation.com/u/grzegorz.kaczmarczyk)\
**Post date:** [June 21, 2023, 11:39am UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/5 "2023-06-21T11:39:32Z")

</div>

Hi,

Thanks for your answers!

I watched the store and forward diagnostics for couple minutes and these values were one of the highests:

 ![Bez tytułu](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/c/3cd848e14d15d3141c8d010f5022bf823e82e73c.png)

Will one session handle it?

> Do note that disabling connection pooling like this will crush performance, as every request will have to wait if the connection is busy, and there will never be an idle one to keep latency low.

We send data from PLC to database and it's crucial for us to keep the order of variables. If one session is busy, will Ignition keep the order of values?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [June 21, 2023, 1:16pm UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/6 "2023-06-21T13:16:02Z")

</div>

> [@grzegorz.kaczmarczyk](#):
>
> these values

Looks like a light load. One session is likely to suffice.

> [@grzegorz.kaczmarczyk](#):
>
> and it's crucial for us to keep the order of variables

Sorry, that's a horrible design. The data should always carry unambiguous ordering information with it. I don't think you'll find any other guarantees at all. (Ignition's historian includes timestamps with each data point, so that should be fine.)

---

<div class="post-metadata">

**Author:** ![grzegorz.kaczmarczyk](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/grzegorz.kaczmarczyk/32/24167_2.png) [@grzegorz.kaczmarczyk](https://forum.inductiveautomation.com/u/grzegorz.kaczmarczyk)\
**Post date:** [June 21, 2023, 1:51pm UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/7 "2023-06-21T13:51:55Z")

</div>

Thanks again for response.

Couldn't find this info in the doc - when and why Ignition creates another database session?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [June 21, 2023, 2:09pm UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/8 "2023-06-21T14:09:08Z")

</div>

All database connections, by default, are "pooled". That is, multiple simultaneous connections are created and kept open (per the advanced settings) so that queries don't have to wait for the time it takes to open a connection (session). When the query is done with the connection, instead of closing, it is returned to the pool. This architecture is commonly used for high-performance applications (really, **necessary** for high performance).

The pool also means queries can run in parallel--improving response time, and avoiding problems when an occasional query takes a long time.

---

<div class="post-metadata">

**Author:** ![grzegorz.kaczmarczyk](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/grzegorz.kaczmarczyk/32/24167_2.png) [@grzegorz.kaczmarczyk](https://forum.inductiveautomation.com/u/grzegorz.kaczmarczyk)\
**Post date:** [June 22, 2023, 7:05am UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/9 "2023-06-22T07:05:49Z")

</div>

Thanks!

> as every request will have to wait if the connection is busy

So how much delay should appear, to make database connection to decide, that another session is needed?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [June 22, 2023, 12:36pm UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/10 "2023-06-22T12:36:09Z")

</div>

No delay. If the active connections is less than the allowed, and no idle connection is available to use, a new connection is created and used immediately.

---

<div class="post-metadata">

**Author:** ![grzegorz.kaczmarczyk](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/grzegorz.kaczmarczyk/32/24167_2.png) [@grzegorz.kaczmarczyk](https://forum.inductiveautomation.com/u/grzegorz.kaczmarczyk)\
**Post date:** [June 22, 2023, 12:50pm UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/11 "2023-06-22T12:50:57Z")

</div>

Hmm, I meant - how long the connection should be busy, to trigger the database to create new connection/session?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [June 22, 2023, 1:04pm UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/12 "2023-06-22T13:04:56Z")

</div>

It doesn't work that way. When a query needs to run, and no idle connection is available:

- If the maximum number of connections is already active, the query goes on a wait queue.

- Otherwise, a new connection is created and used.

- When there are queries waiting in the queue, and an active query finishes, the connection is handed to the first waiting query.

---

<div class="post-metadata">

**Author:** ![grzegorz.kaczmarczyk](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/grzegorz.kaczmarczyk/32/24167_2.png) [@grzegorz.kaczmarczyk](https://forum.inductiveautomation.com/u/grzegorz.kaczmarczyk)\
**Post date:** [July 19, 2023, 9:24am UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/13 "2023-07-19T09:24:10Z")

</div>

Hi,

I've set Max Idle to zero and Max Active to one and we've started to get these errors:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/4/94ab25f35e2281dda72053896a3176d5d1e9ea69.png)

I had to return to Max Idle = 8 and Max Active = 8 to stop the errors.

What should we do, to make the change without errors?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [July 19, 2023, 12:50pm UTC](https://forum.inductiveautomation.com/t/inactive-sessions-oracle-jdbc/75262/14 "2023-07-19T12:50:46Z")

</div>

You should contact support. I'm not sure what you are trying to achieve is possible with Ignition's connection pooling architecture.
