标签: oracle12c

在oracle 11g或12c中更改表/列/索引名称大小

我使用oracle 11g并且需要大小超过30个字符的名称,我知道11g中的最大大小是30个字符.

我可以更改此最大尺寸吗?

Oracle 12c中表/列/索引名称的最大大小是多少?

oracle oracle11g oracle12c

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

与Oracle上的INSERT INTO结合使用时,有效的GROUP BY查询不起作用

我正在尝试编写INSERT INTO来执行一些DISTINCT/GROUP BY工作.该查询作为select语句运行完全正常,但如果将其包装到INSERT INTO中则无效.

INSERT INTO MasterRecords
  (BatchRecordRecordID, SourceID, BatchID)
SELECT RecordID, SourceID, BatchID
FROM (
    SELECT RecordID, BatchID, 101 AS SourceID
    FROM BatchRecords
    WHERE BatchID = 150
    GROUP BY RecordID, BatchID
) BR
Run Code Online (Sandbox Code Playgroud)

这让我有所收获:

SQL错误:ORA-00979:不是GROUP BY表达式

但是,如果我只删除INSERT INTO代码,它运行完全正常:

SELECT RecordID, SourceID, BatchID
FROM (
    SELECT RecordID, BatchID, 101 AS SourceID
    FROM BatchRecords
    WHERE BatchID = 150
    GROUP BY RecordID, BatchID
) BR
Run Code Online (Sandbox Code Playgroud)

结果:

3   101 150
5   101 150
6   101 150
2   101 150
4   101 150
8 …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle12c

10
推荐指数
2
解决办法
3535
查看次数

在Macbook Pro上设置Oracle数据库(OS X Yosemite)

我看到Oracle 11g或12c没有OS X的下载文件.但是,有一个适用于OS X的SQL Developer版本.当你没有数据库时,SQL Developer有什么意义?

如何在OS X上安装Oracle数据库(最好是12c或11g Express Edition)?

macos oracle11g oracle-sqldeveloper oracle12c

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

在12c上使用utl_http&wallets:证书验证失败

希望有人可以发现我做错了什么,因为我正在秃顶.

我已经使用utl_http和钱包在11gR1上调用https而没有太大的麻烦,但我们新的12c安装让我感到非常悲痛.

我尝试使用oracle钱包管理器和命令行导入可信证书,但没有任何成功.我知道oracle可以挑剔缓存钱包,所以我尝试了多次没有运气的新会话.

我已经为*.presstogo.com,Geotrust SSL CA和Geotrust Global CA下载了三个必要的证书.

我构建钱包的命令行版本如下:

orapki wallet create -wallet /oracle/product/12.0.1/owm/wallets/test1237 -pwd test=1237 -auto_login  
orapki wallet add -wallet /oracle/product/12.0.1/owm/wallets/test1237 -trusted_cert -cert "*.presstogo.com" -pwd test=1237  
orapki wallet add -wallet /oracle/product/12.0.1/owm/wallets/test1237 -trusted_cert -cert "GeoTrust SSL CA" -pwd test=1237  
orapki wallet add -wallet /oracle/product/12.0.1/owm/wallets/test1237 -trusted_cert -cert "Geotrust Global CA" -pwd test=1237  
orapki wallet display -wallet /oracle/product/12.0.1/owm/wallets/test1237   
Oracle PKI Tool : Version 12.1.0.1  
Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.  
Requested Certificates:   
User Certificates:  
Trusted Certificates:   
Subject: …
Run Code Online (Sandbox Code Playgroud)

oracle ssl plsql oracle12c

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

oracle 12c - 在最后一次出现字符后选择字符串

我有以下字符串:

ThisSentence.ShouldBe.SplitAfterLastPeriod.Sentence
Run Code Online (Sandbox Code Playgroud)

所以我想选择,Sentence因为它是最后一个时期之后的字符串.我怎样才能做到这一点?

sql string oracle oracle12c

9
推荐指数
2
解决办法
4万
查看次数

在XMLTYPE列中插入子节点

我有一个简单的查询:

WITH xtbl AS (
  SELECT XMLTYPE ('<a><b>1</b></a>') AS xcol 
    FROM DUAL
)
SELECT XMLQUERY ('copy $tmp := . 
                    modify 
                       insert node <c>2</c>
                         into $tmp/a/b
                       return $tmp'
                 PASSING xcol 
               RETURNING CONTENT) AS newxcol
  FROM xtbl;
Run Code Online (Sandbox Code Playgroud)

我想要做的是在节点内插入一个节点<c>,但Oracle 12c抛出了这个错误:<b><a>

ORA-19114: XPST0003 - error during parsing the XQuery expression: 
           LPX-00801: XQuery syntax error at 'EOF'
           5   -
           -  ^
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

NEWXCOL
-------------
<a>
    <b>1</b>
    <c>2</c/>
</a>
Run Code Online (Sandbox Code Playgroud)

我已经尝试在Oracle Docs中寻找替换appendChildXML并遵循该示例但只得到了错误.

我知道这是非常基本的,我错过了一些明显的东西.请帮忙.

sql oracle xquery xmltype oracle12c

9
推荐指数
1
解决办法
4209
查看次数

当语句具有动态表名时,如何防止SQL注入?

我有这样的代码.

   final PreparedStatement stmt = connection
                .prepareStatement("delete from " + fullTableName
                    + " where name= ?");
   stmt.setString(1, addressName);
Run Code Online (Sandbox Code Playgroud)

计算fullTableName是这样的:

 public String getFullTableName(final String table) {
    if (this.schemaDB != null) {
        return this.schemaDB + "." + table;
    }
    return table;
 }
Run Code Online (Sandbox Code Playgroud)

schemaDB是环境的名称(可以随时间更改),table是表名(将被修复).

schemaDB来自一个XML文件,使查询易受SQL注入攻击.

查询:我不确定如何将表名用作预准备语句(如name本示例中所使用的),这是针对SQL注入的100%安全措施.

任何人都可以建议我,可能有什么方法可以解决这个问题?

注意:我们将来可以迁移到DB2,因此该解决方案应该与Oracle和DB2兼容(如果可能的话,与数据库无关).

java db2 jdbc oracle12c

9
推荐指数
1
解决办法
2594
查看次数

Oracle上的条件SUM

我想用条件SUM进行查询.在重置之后,SUM需要超过15.像这样:

A | 3 | 3 
B | 7 | 10 
C | 6 | 16  -- ====
D | 5 | 5 
E | 9 | 14
F | 3 | 17  -- ====
G | 8 | 8
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

sql oracle oracle-analytics oracle12c

9
推荐指数
1
解决办法
499
查看次数

避免在查看中使用子查询或分析函数进行全表扫描

我可以使用Oracle 11(请参阅SQL Fiddle)和Oracle 12 重现以下行为.

CREATE TYPE my_tab IS TABLE OF NUMBER(3);

CREATE TABLE test AS SELECT ROWNUM AS id FROM dual CONNECT BY ROWNUM <= 1000;
CREATE UNIQUE INDEX idx_test ON test( id );

CREATE VIEW my_view AS
  SELECT id, COUNT(1) OVER ( PARTITION BY id ) AS cnt
  FROM test;
Run Code Online (Sandbox Code Playgroud)

以下情况使用索引按预期方式:

SELECT * FROM my_view
WHERE id IN ( 1, 2 );

---------------------------------------------------------------------------------                                                                                                                       
| Id  | Operation            | Name     | Rows  | Bytes | …
Run Code Online (Sandbox Code Playgroud)

sql oracle performance oracle11g oracle12c

9
推荐指数
1
解决办法
314
查看次数

无法再次运行已完成的Oracle作业

无法DBMS_SCHEDULER通过删除END_DATE

大家好!我正在使用oracle 12cR1,现在DBMS_SCHEDULER作业有问题。

首先,我DBMS_SCHEDULEREND_DATEset 创建了一个重复的oracle 作业,在set之后END_DATE,作业成功完成,并且job的启用状态自动更改为Disabled。根据作业的运行日志,“操作”为COMPLETED,而“附加信息REASON="End time reached" ”为预期值。

然后我想再次运行作业,我删除了该END_DATE字段

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE('JOB_XXX', 'END_DATE', '');
Run Code Online (Sandbox Code Playgroud)

并通过以下方式设置作业启用

SYS.DBMS_SCHEDULER.ENABLE(name => 'JOB_XXX');
Run Code Online (Sandbox Code Playgroud)

我可以看到该作业已再次启用,并且END_DATE为空。但是作业再次运行一次,然后停止,运行日志为COMPLETED,而附加信息REASON="End time reached"再次运行。

BEGIN
     sys.dbms_scheduler.CREATE_JOB(
     JOB_NAME            => 'JOB_3358',
     job_type            => 'STORED_PROCEDURE',
     JOB_ACTION          => 'TEST_JOB',
     START_DATE          => to_date('2019-05-05 13:35:00','yyyy-mm-dd hh24:mi:ss'),
     REPEAT_INTERVAL     => 'FREQ= SECONDLY;INTERVAL=30',
     END_DATE            => to_date('2019-05-05 13:38:00','yyyy-mm-dd hh24:mi:ss'),
     auto_drop           => FALSE,
     COMMENTS            => NULL);
    END;
/


begin
  sys.dbms_scheduler.enable(name => 'JOB_3358');
end;
/
Run Code Online (Sandbox Code Playgroud)

我所期望的是,该作业将 …

oracle dbms-scheduler oracle12c

9
推荐指数
1
解决办法
196
查看次数