我试图从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)
但它只减去了一小时; 它没有触及这一天.
我正在开发Oracle 11g上的DWH.我们有一些大表(2.5亿行),按值划分.每个分区都分配给不同的馈送源,每个分区独立于其他分区,因此可以同时加载和处理它们.
数据分布非常不均匀,我们有数百万行的分区,并且分区不超过一百行,但我没有选择分区方案,顺便说一下我无法改变它.
考虑到数据量,我们必须确保每个分区始终具有最新的统计信息,因为如果后续的详细说明没有对数据的最佳访问权限,它们将永远持续下去.
所以对于每个并发的ETL线程,我们
SELECT /*+ APPEND */ INTO big_table PARTITION(part1) FROM temp_table WHERE partition_colum = PART1
(这种方式我们有直接路径,我们不锁定整个表)
在项目的第一阶段,我们使用了这个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)
请注意,您不再通过分区,并且未指定样本百分比.
但是,我们有一个缺点,可能比前一个更糟糕,这与我们的高水平并行性有关.
假设我们有两个同时启动的大分区,它们几乎同时也会完成加载阶段.
第一个线程结束插入语句,提交并启动统计信息收集.统计程序通知有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密码:
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)
这是怎么回事?
在大多数编程语言中,您可以快速编写变量的增量,如下例所示:
inc(variableName);
variableName++;
variableName += 1;
Run Code Online (Sandbox Code Playgroud)
Oracle Pl/Sql中有哪些方法可以执行此操作而不是使用以下方法:
variableName := variableName + 1;
Run Code Online (Sandbox Code Playgroud) 这是我第一次在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) 我想知道为什么这个查询的成本
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) 如何在Oracle 11g中的"选择"查询中添加偏移量.我只知道如何添加限制,例如rownum <= 5
这个问题不重复,我已经检查了其他问题并且与我的相关.
那么,如何在Oracle 11g中添加偏移量呢?
如何在Oracle SQL Developer中读取blob数据.它以byte []格式存储.是否有可能以字符串格式阅读.
我需要在我的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)
关于语法的任何建议?
创建一个视图,其中一个字段(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)
返回错误
oracle ×8
oracle11g ×6
sql ×6
blob ×1
case ×1
createuser ×1
etl ×1
listagg ×1
oracle10g ×1
pagination ×1
passwords ×1
php ×1
plsql ×1
rownum ×1
size ×1
soap ×1
sql-update ×1
ssl ×1
web-services ×1
wsdl ×1