小编Jer*_*oen的帖子

理解 ORA-01792 表或视图中的最大列数为 1000

我们最近将服务器从 Oracle 11 迁移到 Oracle 12c,但遇到了一些烦人的问题。其中之一是一些报告给出了以下错误:

ORA-01792: 表或视图中的最大列数为 1000

好的,好的,我知道必须有一些限制。问题是该查询以前工作过,而且我认为数据库没有理由加载所有列。查询中没有一个表的列数超过 1000。结合他们可以有。因此,如果我从所有内容中选择 *;我知道输出会遇到限制,因为结果集实际上与视图/表相同(是吗?我只是在这里猜测?)

“问题查询”多次连接一堆大表和一些小表,所以是的,总列数可能超过 1000。

但是,查询仅选择 30 列左右。添加用于连接的字段,甚至可能是索引在后台使用的一些其他字段,它可能会添加多达 50 到 70 列来执行查询。所有这些信息都在查询和表信息中得到了很好的定义。那么为什么 DB 甚至会关心所有额外的列呢?

到目前为止,我读过的解决方案是更改查询或禁用此警告/错误。这两个对我来说都不是解决方案。我能想到的禁用警告的唯一原因是 Oracle 决定更早地通知用户,并且这个“问题”在两个版本的后台都存在。

关于这个的任何想法?或者我对如何处理“大”查询的理解?

oracle oracle-11g-r2 oracle-12c

6
推荐指数
1
解决办法
3万
查看次数

Oracle 排序顺序已更改

我们最近使用较新版本的 Oracle (12c) 而不是 11r2 部署了一个新环境。

直到最近我才注意到我返回的数据的排序方式不同。

而不是有小写字母、大写字母和数字......(在 Oracle 11r2 上)我以相反的方式对我的数据进行排序:数字、大写字母、小写字母(Oracle 12c)

这确实让查询数据库的各种应用程序的最终用户感到困惑。我需要检查/比较哪些设置才能在 Oracle 12c 中解决此问题?

我提到的查询有一个 order by 子句。 编辑 这些参数的设置在两个环境上是相同的:

NLS_SORT 类型:字符串值:

nls_language 类型:字符串值:DUTCH

所以 NLS_SORT 没有值,那么默认值是多少?

@菲尔

select * from NLS_INSTANCE_PARAMETERS;

Parameter                     Oracle11r2          Oracle12c
NLS_LANGUAGE                       DUTCH              DUTCH
NLS_TERRITORY            THE NETHERLANDS    THE NETHERLANDS
NLS_SORT
NLS_DATE_LANGUAGE
NLS_DATE_FORMAT
NLS_CURRENCY
NLS_NUMERIC_CHARACTERS
NLS_ISO_CURRENCY
NLS_CALENDAR
NLS_TIME_FORMAT
NLS_TIMESTAMP_FORMAT
NLS_TIME_TZ_FORMAT
NLS_TIMESTAMP_TZ_FORMAT
NLS_DUAL_CURRENCY
NLS_COMP                          BINARY           BINARY
NLS_LENGTH_SEMANTICS                BYTE             CHAR
NLS_NCHAR_CONV_EXCP                FALSE            FALSE

select * from NLS_SESSION_PARAMETERS;

these are the same as my NLS settings in Oracle …
Run Code Online (Sandbox Code Playgroud)

oracle sorting oracle-12c natural-sort

5
推荐指数
1
解决办法
3228
查看次数