From db4464129f2d68bd0f17a362f95c1673a3024fa0 Mon Sep 17 00:00:00 2001 From: Yasuo Honda Date: Thu, 1 Jun 2017 14:03:31 +0000 Subject: [PATCH 1/3] requires ruby-oci8 2.2.4 or higher --- .../connection_adapters/oracle_enhanced/oci_connection.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb b/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb index 0c96b99bd..e1cbf7c36 100644 --- a/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb +++ b/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb @@ -10,7 +10,7 @@ end # check ruby-oci8 version -required_oci8_version = [2, 2, 0] +required_oci8_version = [2, 2, 4] oci8_version_ints = OCI8::VERSION.scan(/\d+/).map { |s| s.to_i } if (oci8_version_ints <=> required_oci8_version) < 0 raise LoadError, "ERROR: ruby-oci8 version #{OCI8::VERSION} is too old. Please install ruby-oci8 version #{required_oci8_version.join('.')} or later." From 9a15516c4949ce4566667e97232f5155d3f00ade Mon Sep 17 00:00:00 2001 From: Yasuo Honda Date: Thu, 1 Jun 2017 14:05:15 +0000 Subject: [PATCH 2/3] Friendly message --- .../connection_adapters/oracle_enhanced/oci_connection.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb b/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb index e1cbf7c36..e7f036d5d 100644 --- a/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb +++ b/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb @@ -13,7 +13,11 @@ required_oci8_version = [2, 2, 4] oci8_version_ints = OCI8::VERSION.scan(/\d+/).map { |s| s.to_i } if (oci8_version_ints <=> required_oci8_version) < 0 - raise LoadError, "ERROR: ruby-oci8 version #{OCI8::VERSION} is too old. Please install ruby-oci8 version #{required_oci8_version.join('.')} or later." + $stderr.puts <<-EOS.strip_heredoc + "ERROR: ruby-oci8 version #{OCI8::VERSION} is too old. Please install ruby-oci8 version #{required_oci8_version.join('.')} or later." + EOS + + exit! end module ActiveRecord From 2a6981582f4a653eb01a64db6166acf24562a993 Mon Sep 17 00:00:00 2001 From: Yasuo Honda Date: Mon, 12 Jun 2017 12:09:57 +0000 Subject: [PATCH 3/3] Enable TCP keepalive value supported by ruby-oci8 2.2.4 --- .../connection_adapters/oracle_enhanced/oci_connection.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb b/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb index e7f036d5d..85031fb45 100644 --- a/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb +++ b/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb @@ -329,6 +329,8 @@ def self.new_connection(config) else database end + OCI8.properties[:tcp_keepalive] = true + OCI8.properties[:tcp_keepalive_time] = 600 conn = OCI8.new username, password, connection_string, privilege conn.autocommit = true conn.non_blocking = true if async