我刚安装了oracle11g,它缺少Scott架构.所以我想自己生成它.我得到了"Scott"架构的sql脚本,但是当我尝试运行查询"创建由老虎识别的用户Scott"时 它显示以下错误:
ORA-65096:oracle中的公共用户或角色名称无效.
基本上它不允许我创建用户"Scott".为什么会这样,我该如何解决我的问题呢?
我正在尝试将我的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的问题,说"不要使用(+)运算符,而是使用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) 背景
我需要从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 12C标准版.一切都很好.我还连接了Oracle SQL Developer Client 4.0.从那我可以访问表,索引等.
我试图通过单击View - > DBA菜单从SQL Developer Client查看表空间详细信息.单击此菜单,无法打开任何内容.
通过EM我能够看到那些.但我希望通过SQL开发人员看到.
我不确定,是否需要进行任何设置,以便可以打开View - > DBA菜单.
附件截图供参考:
我在这里选择View Menu下的DBA选项

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

我有一张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) 如何在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.ManagedDataAcess并接收randoms ORA-12570 TNS:数据包读取器故障.
我不知道为什么会出现这个错误,但是一旦它开始,每个后续请求都会给出相同的错误大约10-30分钟,然后它会再次运行10-30分钟,依此类推.
因此,随后的失败随机失败一段时间,随后成功
已经尝试过很多东西,要恢复:
环境:
经过:
附加信息:
组态:
服务器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) 我们最近将客户系统迁移到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运行一个非常简单的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)