标签: oracle12c

错误:ORA-65096:oracle中的公共用户或角色名称无效

我刚安装了oracle11g,它缺少Scott架构.所以我想自己生成它.我得到了"Scott"架构的sql脚本,但是当我尝试运行查询"创建由老虎识别的用户Scott"时 它显示以下错误:

ORA-65096:oracle中的公共用户或角色名称无效.

基本上它不允许我创建用户"Scott".为什么会这样,我该如何解决我的问题呢?

oracle oracle12c

81
推荐指数
9
解决办法
19万
查看次数

ORA-28040:没有匹配的身份验证协议异常

我正在尝试将我的grails项目连接到windows(8)系统中的Oracle数据库(Oracle 12c).但是,每当我运行我的应用程序时,我都会遇到异常:

Caused by: org.apache.commons.dbcp.SQLNestedException: 
Cannot create PoolableConnectionFactory (ORA-28040: 
No matching authentication protocol)

Caused by: 
java.sql.SQLException: ORA-28040: 
No matching authentication protocol
Run Code Online (Sandbox Code Playgroud)

)

SQLNET.ALLOWED_LOGON_VERSION=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
Run Code Online (Sandbox Code Playgroud)

根据互联网建议,我也尝试编辑我的 *.ora文件,但它无法正常工作.

我在sqlnet.ora文件中添加了以下代码段:

Caused by: org.apache.commons.dbcp.SQLNestedException: 
Cannot create PoolableConnectionFactory (ORA-28040: 
No matching authentication protocol)

Caused by: 
java.sql.SQLException: ORA-28040: 
No matching authentication protocol
Run Code Online (Sandbox Code Playgroud)

在这里我尝试分配(10,11,12),但它们都没有工作.

有人可以帮我这个吗?

oracle oracle12c

78
推荐指数
5
解决办法
37万
查看次数

Oracle联接 - 传统语法VS ANSI语法之间的比较

前言

最近,我看到有太多的极客评论Oracle的问题,说"不要使用(+)运算符,而是使用JOIN语法".

我确实看到两者都运作良好.但是使用它们之间的真正区别是什么让你觉得使用它们?我希望得到答案,更多来自经验.

 1. Is there anything to do with limitations in application, performance, 
    etc. while using them?

 2. What would you suggest for me?
Run Code Online (Sandbox Code Playgroud)

我确实阅读了有关Oracle文档的内容,但还不足以让我理解或对综合信息感到满意.

注意:如果要使用关键字而不是(+),我打算迁移200多个包和程序

  3. Also is there any freeware tools to do the rewrite?
Run Code Online (Sandbox Code Playgroud)

发布样本

???????????????????????????????????????????????????????????????????????????????????
? INNER JOIN - CONVENTIONAL         ? INNER JOIN - ANSI SYNTAX                    ?
???????????????????????????????????????????????????????????????????????????????????
? SELECT                            ? SELECT                                      ?
?      emp.deptno                   ?       ename,                                ?
? FROM                              ?       dname,                                ?
?      emp,                         ?       emp.deptno,                           ?
?      dept                         ? …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle10g oracle11g oracle12c

29
推荐指数
5
解决办法
4万
查看次数

在oracle 12c中将sql查询的结果作为JSON返回

背景

我需要从Oracle获取几千行并将它们转换为JSON以便在SlickGrid中使用.目前我在PHP中获取行,使用iconv将其从ISO转换为UTF-8,并使用json_encode导出到json.数据库端整个操作大约需要1秒,生成JSON需要5秒.这是很长的路要走.

这个问题

我已经读过Oracle 12c支持JSON,但我找不到我需要的东西.

有没有办法以json格式返回标准sql查询的结果?

据说我想发出类似这样的查询:

SELECT * from table AS JSON
Run Code Online (Sandbox Code Playgroud)

并收到类似于此的有效json:

[{"col1": "value1", "col2": 2}, {"col1": "valueOfRow2", "col2": 3}]
Run Code Online (Sandbox Code Playgroud)

重要的是我需要为我转义unicode序列,因为我在客户端使用ISO-8859-2字符集,而JSON必须是UTF-8或者有序列转义.

oracle json oracle12c

23
推荐指数
5
解决办法
7万
查看次数

无法在SQL Developer中打开View-> DBA菜单(安装了Oracle 12C标准版)

我已经安装了Oracle 12C标准版.一切都很好.我还连接了Oracle SQL Developer Client 4.0.从那我可以访问表,索引等.

我试图通过单击View - > DBA菜单从SQL Developer Client查看表空间详细信息.单击此菜单,无法打开任何内容.

通过EM我能够看到那些.但我希望通过SQL开发人员看到.

我不确定,是否需要进行任何设置,以便可以打开View - > DBA菜单.

附件截图供参考:

我在这里选择View Menu下的DBA选项

在此输入图像描述

但我没有看到任何与DBA相关的窗口.

在此输入图像描述

oracle oracle-sqldeveloper oracle12c

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

聚合重叠段以测量有效长度

我有一张road_events桌子:

create table road_events (
    event_id number(4,0),
    road_id number(4,0),
    year number(4,0),
    from_meas number(10,2),
    to_meas number(10,2),
    total_road_length number(10,2)
    );

insert into road_events (event_id, road_id, year, from_meas, to_meas, total_road_length) values (1,1,2020,25,50,100);
insert into road_events (event_id, road_id, year, from_meas, to_meas, total_road_length) values (2,1,2000,25,50,100);
insert into road_events (event_id, road_id, year, from_meas, to_meas, total_road_length) values (3,1,1980,0,25,100);
insert into road_events (event_id, road_id, year, from_meas, to_meas, total_road_length) values (4,1,1960,75,100,100);
insert into road_events (event_id, road_id, year, from_meas, to_meas, total_road_length) values (5,1,1940,1,100,100);

insert into road_events (event_id, road_id, …
Run Code Online (Sandbox Code Playgroud)

sql oracle select asset-management oracle12c

22
推荐指数
2
解决办法
427
查看次数

如何在Mac上安装Oracle Instant Client?

如何在Mac上安装Oracle Instant Client版本12.1.0.2(64位)(OS X 10.11.5)

我已经下载了12.1.0.2版(64位)版本并解压缩了该文件.

我现在在/ downloads/instantclient下有以下文件:

libclntsh.dylib.12.1
libclntshcore.dylib.12.1
libnnz12.dylib
libocci.dylib.12.1
libociei.dylib
libocijdbc12.dylib
libons.dylib
liboramysql12.dylib
ojdbc6.jar
ojdbc7.jar
uidrvci
xstreams.jar
adrci
BASIC_README
genezi
Run Code Online (Sandbox Code Playgroud)

我没有任何想法如何从这个到Instant Client的工作版本,所以我可以从CLI连接到数据库.Oracles网站上的说明似乎过于复杂.

我找到了一些详细说明安装方法的博客,但它们似乎都来自以前版本的Instant Client.出于绝望,我下载了以前版本的Instant Client,但似乎仍然缺少本教程中提到的文件.

有谁知道如何在我的Mac上获得Oracle Instant Client?

oracle macos instantclient oracle12c

20
推荐指数
3
解决办法
2万
查看次数

ODP.NET Oracle.ManagedDataAcess随机ORA-12570错误

我正在尝试从非托管版本迁移到Oracle.ManagedDataAcess并接收randoms ORA-12570 TNS:数据包读取器故障.

我不知道为什么会出现这个错误,但是一旦它开始,每个后续请求都会给出相同的错误大约10-30分钟,然后它会再次运行10-30分钟,依此类推.

因此,随后的失败随机失败一段时间,随后成功

已经尝试过很多东西,要恢复:

环境:

  • Oracle.ManagedDataAcess版本12.1.2400(4.121.2.20150926)(nuget)(服务器上没有安装可以覆盖bin版本的gac引用)
  • Oracle Server Oracle Database 12c企业版12.1.0.2.0版 - 64位生产
  • Windows 2012(Windows Update确定)

经过:

  • 防火墙:这不是防火墙问题
  • 计算机错误:我的计算机,Azure WebApp和AWS EC2实例上也出现同样的问题
  • 干扰:没有嗅探器运行,透明代理等.
  • 加密:我不使用任何类型的加密(除非默认启用某些我不知道的东西)
  • 连接字符串:相同的连接字符串与非托管版本完美配合

附加信息:

  • 这是一个生产数据库,它非常稳定
  • 应用程序编译为anycpu,IIS应用程序池限制为64位
  • 我每次测试完全相同的请求(只是刷新其余的ws,webapi),所以它与数据格式无关

组态:

服务器sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

应用程序Web.config

<connectionStrings>
<add name="XXXX" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.com)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=xxx)));User Id=xxxxx;Password=xxxxx;" />
</connectionStrings>

<configSections>
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>

<oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <!--<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />-->
      </dataSources>
      <settings>
        <setting name="SQLNET.AUTHENTICATION_SERVICES" value="NONE"/> <!--NTS-->
        <setting name="sqlnet.crypto_checksum_server" value="rejected"/>
        <setting name="sqlnet.crypto_checksum_client" value="rejected"/>
        <setting name="SQLNET.ENCRYPTION_SERVER" value="rejected"/> …
Run Code Online (Sandbox Code Playgroud)

c# oracle managed odp.net oracle12c

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

为什么Oracle在这里添加隐藏列?

我们最近将客户系统迁移到Oracle 12c和我们产品的最新版本.此过程包括运行大量迁移脚本,这些脚本主要添加或更改表.我们注意到,在向表中添加列同时还提供默认值时,会创建一个额外的隐藏列SYS_NC00002$.

您应该能够使用以下代码重现此问题

create table xxx (a integer);
alter table xxx add (b integer default 1);

select table_name, column_name, data_type, data_length, column_id, default_length, data_default from user_tab_cols where table_name='XXX';

Table_Name|column_Name |data_Type|data_Length|column_Id|default_Length|data_Default|
------------------------------------------------------------------------------------
XXX       |A           |NUMBER   |         22|        1|              |            |
XXX       |SYS_NC00002$|RAW      |        126|         |              |            |
XXX       |B           |NUMBER   |         22|        2|             1|1           |
Run Code Online (Sandbox Code Playgroud)

当我填充表并查看该隐藏列中的值时,它们都是相同的:

select distinct SYS_NC00002$ from xxx;

Sys_Nc00002$|
-------------
01          |
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,当我没有立即设置默认值但在一个额外的声明中,没有创建额外的隐藏列.

create table xxy (a integer);
alter table xxy add (b integer);
alter table …
Run Code Online (Sandbox Code Playgroud)

oracle oracle12c

18
推荐指数
1
解决办法
1763
查看次数

oracle只能在辅助组关联时读取本地文件吗?

我试图从Oracle运行一个非常简单的python脚本.Oracle与脚本位于同一个Linux机器上.它会打开一个文件并创建一个校验和.它由oracle中的'recon'用户触发.

只要文件所有者是'oracle',或者组是'oinstall'(oracle的默认组),或者public设置为rx,脚本就可以正常工作,从Oracle内部运行脚本就可以正常工作.

问题是我们必须使用不同的用户:组,我们不能使用公共权限.我们将oracle用户添加到文件的组中.

uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),202175(efs_data)
Run Code Online (Sandbox Code Playgroud)

当我们像以前一样从Oracle内部运行时,它现在失败了,但是,当sudo进入oracle用户并直接运行脚本时,它可以工作,所以我们知道linux权限是可以的.

什么可能导致这个?我猜Oracle正在进行一些覆盖linux权限的其他类型的访问检查,这会忽略辅助组并仅查看gid.

作为'recon'架构:

set serveroutput on size unlimited
declare
 x number;
begin
 x := run_cmd('/home/oracle/bin_dir/pytest.py');
 dbms_output.put_line('return:' || x);
end;
Run Code Online (Sandbox Code Playgroud)

RUN_CMD:

create or replace function RUN_CMD( p_cmd  in varchar2) return number as
language java
name 'Util.RunThis(java.lang.String) return integer';
Run Code Online (Sandbox Code Playgroud)

Util.RunThis:

import java.io.*;
  import java.lang.*;

  public class Util extends Object
  {

    public static int RunThis(java.lang.String args)
    {
    Runtime rt = Runtime.getRuntime();
    int        rc = -1;

    try
    {
       Process p = rt.exec(args);

       int bufSize = 4096;
       BufferedInputStream bis …
Run Code Online (Sandbox Code Playgroud)

oracle oracle12c

16
推荐指数
1
解决办法
182
查看次数