Oracle "alter session set EDITION.." 似乎无法使用选项 sessionInitStatement
Oracle "alter session set EDITION.." doesn't seems to work using option sessionInitStatement
我想从激活 Oracle 版本功能时可见的视图中select。
alter session set EDITION=MYEDITION
view1
view1_edition1 => this view is only visible after the alter session statement above which is Oracle edition feature.
在 TOAD 中一切正常。我触发了上面的 alter session 语句,我可以从该视图成功 select。
我正尝试在 Spark 中实现这一点,但它不起作用。 select来自 view1_edition1 return 对象不存在。
df = spark.read \
.format("jdbc") \
.option("url", "jdbc:oracle:thin:@db_server:1520/SERVICE") \
.option("driver", "oracle.jdbc.driver.OracleDriver") \
.option("dbtable", "(select name from schema1.view1_edition1)") \
.option("user", "user") \
.option("password", "password") \
.option("sessionInitStatement","""alter session set EDITION=MYEDITION""") \
.load()
为了证明版本有效,我在 spark.read 中触发了上面的 select,它 return 的正确版本是有效的
(
WITH a AS (SELECT name FROM SCHEMA1.TABLE1)
,b AS (SELECT SYS_CONTEXT('USERENV', 'SESSION_EDITION_NAME') AS
edition FROM DUAL)
SELECT name,edition
FROM a
CROSS JOIN b
)
在从 Oracle JDBC 数据源
获取连接之前,尝试使用 Java 属性设置版本名称,而不是更改会话
例如,
p.put("oracle.jdbc.editionName", "MyEdition");
...
ods.setConnectionProperties(p);
我想从激活 Oracle 版本功能时可见的视图中select。
alter session set EDITION=MYEDITION
view1
view1_edition1 => this view is only visible after the alter session statement above which is Oracle edition feature.
在 TOAD 中一切正常。我触发了上面的 alter session 语句,我可以从该视图成功 select。
我正尝试在 Spark 中实现这一点,但它不起作用。 select来自 view1_edition1 return 对象不存在。
df = spark.read \
.format("jdbc") \
.option("url", "jdbc:oracle:thin:@db_server:1520/SERVICE") \
.option("driver", "oracle.jdbc.driver.OracleDriver") \
.option("dbtable", "(select name from schema1.view1_edition1)") \
.option("user", "user") \
.option("password", "password") \
.option("sessionInitStatement","""alter session set EDITION=MYEDITION""") \
.load()
为了证明版本有效,我在 spark.read 中触发了上面的 select,它 return 的正确版本是有效的
(
WITH a AS (SELECT name FROM SCHEMA1.TABLE1)
,b AS (SELECT SYS_CONTEXT('USERENV', 'SESSION_EDITION_NAME') AS
edition FROM DUAL)
SELECT name,edition
FROM a
CROSS JOIN b
)
在从 Oracle JDBC 数据源
获取连接之前,尝试使用 Java 属性设置版本名称,而不是更改会话例如, p.put("oracle.jdbc.editionName", "MyEdition"); ... ods.setConnectionProperties(p);