小编Lal*_*r B的帖子

如何从Oracle中的日期中减去小时数,以便它也影响当天

我试图从Oracle中减去日期,所以它甚至影响了这一天.例如,如果时间戳是01/June/2015 00小时,如果我减去2小时,我希望能够转到2014年5月31日22小时.

我试过了

to_char(sysdate-(2/11), 'MM-DD-YYYY HH24')
Run Code Online (Sandbox Code Playgroud)

但它只减去了一小时; 它没有触及这一天.

sql oracle date-arithmetic

19
推荐指数
3
解决办法
8万
查看次数

在Oracle 11g partiitioned表上收集并发统计信息

我正在开发Oracle 11g上的DWH.我们有一些大表(2.5亿行),按值划分.每个分区都分配给不同的馈送源,每个分区独立于其他分区,因此可以同时加载和处理它们.

数据分布非常不均匀,我们有数百万行的分区,并且分区不超过一百行,但我没有选择分区方案,顺便说一下我无法改变它.

考虑到数据量,我们必须确保每个分区始终具有最新的统计信息,因为如果后续的详细说明没有对数据的最佳访问权限,它们将永远持续下去.

所以对于每个并发的ETL线程,我们

  1. 截断分区
  2. 从暂存区域加载数据

SELECT /*+ APPEND */ INTO big_table PARTITION(part1) FROM temp_table WHERE partition_colum = PART1

(这种方式我们有直接路径,我们不锁定整个表)

  1. 我们收集修改分区的统计信息.

在项目的第一阶段,我们使用了这个APPROX_GLOBAL_AND_PARTITION策略并且像魅力一样工作

 dbms_stats.gather_table_stats(ownname=>myschema,
                              tabname=>big_table,
                              partname=>part1,
                              estimate_percent=>1,
                              granularity=>'APPROX_GLOBAL_AND_PARTITION',
                              CASCADE=>dbms_stats.auto_cascade,
                              degree=>dbms_stats.auto_degree) 
Run Code Online (Sandbox Code Playgroud)

但是,我们有一个缺点,当我们加载一个小分区时,APPROX_GLOBAL部分占主导地位(仍然比GLOBAL快很多),对于一个小分区,我们有例如10秒的加载和20分钟的统计.

所以我们建议切换到11g 的INCREMENTAL STATS功能,这意味着你没有指定你修改过的分区,你把所有参数保留在auto中,而Oracle做了它的魔力,自动了解哪个分区有被感动了.它确实有效,我们已经加快了小分区的速度.打开电话后,电话就变成了

 dbms_stats.gather_table_stats(ownname=>myschema,
                              tabname=>big_table,
                              estimate_percent=>dbms_stats.auto_sample_size,
                              granularity=>'AUTO',
                              CASCADE=>dbms_stats.auto_cascade,
                              degree=>dbms_stats.auto_degree) 
Run Code Online (Sandbox Code Playgroud)

请注意,您不再通过分区,并且未指定样本百分比.

但是,我们有一个缺点,可能比前一个更糟糕,这与我们的高水平并行性有关.

假设我们有两个同时启动的大分区,它们几乎同时也会完成加载阶段.

  1. 第一个线程结束插入语句,提交并启动统计信息收集.统计程序通知有2个分区已修改(这是正确的,一个已满,第二个被截断,正在进行事务),正确更新了两个分区的统计信息.

  2. 最终第二个分区结束,收集统计信息,它看到所有分区已经更新,并且什么也不做(这是不正确的,因为第二个线程同时提交了数据).

结果是:

PARTITION NAME | LAST ANALYZED        | NUM ROWS | BLOCKS | SAMPLE SIZE
-----------------------------------------------------------------------
PART1          | 04-MAR-2015 15:40:42 | 805731   | 20314  | 805731
PART2          | 04-MAR-2015 15:41:48 | 0 …
Run Code Online (Sandbox Code Playgroud)

oracle etl data-warehouse table-statistics oracle11g

14
推荐指数
1
解决办法
3247
查看次数

ORA-00988:密码丢失或无效

我正在尝试更改oracle密码:

alter user FOO identified by 'BAR';
Run Code Online (Sandbox Code Playgroud)

我得到以下回复:

Error starting at line 120 in command:
alter user FOO identified by 'BAR'
Error report:
SQL Error: ORA-00988: missing or invalid password(s)
00988. 00000 -  "missing or invalid password(s)"
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?

oracle passwords createuser

14
推荐指数
1
解决办法
2万
查看次数

plsql中的递增函数

在大多数编程语言中,您可以快速编写变量的增量,如下例所示:

inc(variableName);
variableName++;
variableName += 1;
Run Code Online (Sandbox Code Playgroud)

Oracle Pl/Sql中有哪些方法可以执行此操作而不是使用以下方法:

variableName := variableName + 1;
Run Code Online (Sandbox Code Playgroud)

oracle plsql oracle11g

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

带有wsdl和双向SSL的PHP​​ SOAP

这是我第一次在PHP上做SOAP(实际上我是一个菜鸟),我坚持这个问题好几个月了.

https://wstest.oriongateway.com:22837/willani/services/oglws?wsdl
Run Code Online (Sandbox Code Playgroud)

这是webservice URL,他们在生产时请求双向SSL,他们为我提供了一组私钥和公共证书,可以在我的服务器上安装.

我可以通过在浏览器上安装私钥来查看URL.

此时,我已经通过无向SSL和单向SSL成功获得了webservice的响应,但是双向SSL无法正常工作.

我通过SOAP提交双向SSL时出现错误消息.

警告:SoapClient :: __ doRequest():SSL操作失败,代码为1. OpenSSL错误消息:错误:14094412:SSL例程:SSL3_READ_BYTES:sslv3警告错误证书/home/loadme/domains/loadme.my/public_html/system/OglWsService_noservice第124行的.php
警告:SoapClient :: __ doRequest():无法在第124行的/home/loadme/domains/loadme.my/public_html/system/OglWsService_noservice.php中启用加密
警告:SoapClient :: __ doRequest():connect ()失败:第124行/home/loadme/domains/loadme.my/public_html/system/OglWsService_noservice.php中的未指定错误

我的SOAP请求文件

<?php
require_once 'OglWsService.php';

$requestMsg = new RequestMsg;

$requestMsg->amount="1000";
$requestMsg->merchantId="620055";
$requestMsg->operatorId="IBS";
$requestMsg->retTransRef="102182ABCqw1238";
$requestMsg->terminalId="10000102";
$requestMsg->productCode="DIGI";
$requestMsg->transDateTime=date("YmdHis");
$requestMsg->transTraceId = (int)"123212321";


$in0 = new onlinePIN();
$in0->in0=$requestMsg;

$oglWsService = new OglWsService();

$reponseMsg = $oglWsService->onlinePIN($in0);
$arr=get_object_vars($reponseMsg);
print_r($arr);
echo $arr['onlinePINReturn']->transRef;
?>
Run Code Online (Sandbox Code Playgroud)

我的Webservice类

<?php
class RequestMsg {
  public $amount; // string
  public $merchantId; // string
  public $operatorId; // string
  public $orgTransRef; // string
  public $retTransRef; // …
Run Code Online (Sandbox Code Playgroud)

php ssl soap wsdl web-services

12
推荐指数
1
解决办法
1250
查看次数

由于SYS_OP_C2C内部转换,Oracle SQL执行计划发生了变化

我想知道为什么这个查询的成本

select * from address a
left join name n on n.adress_id=a.id
where a.street='01';
Run Code Online (Sandbox Code Playgroud)

高于

select * from address a
left join name n on n.adress_id=a.id
where a.street=N'01';
Run Code Online (Sandbox Code Playgroud)

地址表看起来像这样

ID              NUMBER
STREET          VARCHAR2(255 CHAR)
POSTAL_CODE     VARCHAR2(255 CHAR)
Run Code Online (Sandbox Code Playgroud)

和名称表看起来像这样

ID              NUMBER
ADDRESS_ID      NUMBER
NAME            VARCHAR2(255 CHAR)
SURNAME         VARCHAR2(255 CHAR)
Run Code Online (Sandbox Code Playgroud)

这些是解释计划返回的成本

解释'01'的计划

-----------------------------------------------------------------------------------------------------
| Id  | Operation                    | Name                 | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |                      |  3591 |  1595K|    87   (0)| 00:00:02 …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g

11
推荐指数
1
解决办法
4705
查看次数

如何在Oracle 11g的"select"查询中添加偏移量?

如何在Oracle 11g中的"选择"查询中添加偏移量.我只知道如何添加限制,例如rownum <= 5 这个问题不重复,我已经检查了其他问题并且与我的相关.

那么,如何在Oracle 11g中添加偏移量呢?

sql oracle pagination oracle11g rownum

11
推荐指数
1
解决办法
2万
查看次数

如何在Oracle SQL Developer中查看blob数据

如何在Oracle SQL Developer中读取blob数据.它以byte []格式存储.是否有可能以字符串格式阅读.

sql blob oracle10g oracle11g oracle-sqldeveloper

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

更新查询if Oracle语句

我需要在我的oracle表中更新新创建的列.为此,我需要使用行中的现有值来决定如何填充此列,我收到错误:

java.lang.NullPointerException -> See Debug Output for details
Run Code Online (Sandbox Code Playgroud)

这是我的查询:

UPDATE
    SCHEMA_NAME.TABLE_NAME
SET
    OCO= IF CO= 'Y' AND COM='Y' THEN 
{
    'Y'
} ELSE
{
    'N'
}
END IF;
Run Code Online (Sandbox Code Playgroud)

关于语法的任何建议?

sql oracle case conditional-statements sql-update

11
推荐指数
1
解决办法
2万
查看次数

Oracle - ORA-01489:字符串连接的结果太长

创建一个视图,其中一个字段(6个)是源表中两个字段的串联.创建了第二个视图,该视图使用listagg可能组合串联的结果.使用此两步操作正确返回源表中两个字段的listagg并置.

当我尝试创建一个既产生连接又产生listagg的视图时,我得到oracle错误ora-01489字符串连接的结果太长.

作为测试,我选择了max(长度(连接字段)并且返回了837.所以看起来错误是错误的.

所以它必须在语法中.我已经尝试过rtrim,trim甚至substr,但是无法获取view语句来编译listagg(连接)和返回数据.

我能够开发正确返回数据的两个视图表明我有基本语法,但是将连接与listagg函数结合起来的任务我还没弄清楚.

在另一种情况下,我能够在一个语句中将串联与listagg函数结合起来:

    LISTAGG (STATEMENTS || ' - ' || BIRTH_DATE, ';  ')
                   WITHIN GROUP (ORDER BY STATEMENTS || ' - ' || BIRTH_DATE)
                   AS GROWING_UP
Run Code Online (Sandbox Code Playgroud)

此语法正确返回所需的数据.........

但在上述情况下,类似的语法会产生Ora-01489错误.

知道有时Oracle错误可能会产生误导,我想知道是否有任何板载专家可能知道除了声明Oracle可能会抛出此错误之外的任何其他原因?

LISTAGG ((NUMBER || '-' || text), ',') WITHIN GROUP (ORDER BY (NUMBER || '-' || text))
AS
  restrictions FROM source
Run Code Online (Sandbox Code Playgroud)

返回错误

sql oracle size oracle11g listagg

11
推荐指数
1
解决办法
7万
查看次数