标签: sqlplus

从 SQL Plus 调用 SQL Loader

我想知道是否有办法从 SQL Plus 执行 SQL Loader 脚本。

我们正在使用 Oracle 10g。

oracle sqlplus

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

这两个 create table 语句有什么区别?

一种)

SQL> CREATE TABLE xml_tab1(poDoc XMLTYPE);

Table created.

SQL> desc xml_tab1;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 PODOC                                              PUBLIC.XMLTYPE
Run Code Online (Sandbox Code Playgroud)

b)

SQL> CREATE TABLE xml_tab2 of XMLType;

Table created.

SQL> desc xml_tab2;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 TABLE of PUBLIC.XMLTYPE
Run Code Online (Sandbox Code Playgroud)

代码来自这里

在第一个中,我们创建了一个类型为 的列XMLTYPE。第二个是做什么的?我什么时候应该使用第一个或第二个?

oracle xml oracle-11g-r2 sqlplus

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

sqlplus 设置脚本的退出代码

如何设置脚本的退出代码?

以下似乎不起作用

WHENEVER SQLERROR EXIT 5

DECLARE
     retCode number := 0;

BEGIN
     retCode := 30; 
END;
/
EXIT :retCode ;
Run Code Online (Sandbox Code Playgroud)

给出退出代码为 1 的 EXIT 的用法

sqlplus

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

执行计划使用 B+ 树索引,而且还排序

我正在使用 Oracle sqlplus。我有以下查询:

SELECT fooID from foo MINUS
SELECT fooID from bar;
Run Code Online (Sandbox Code Playgroud)

我创建了两个非聚集 B+ 树索引。一个在fooID表的字段中foo,一个在表的字段fooIDbar。之后,我分析了两个表的统计信息:foobar使用EXPLAIN PLAN .... 但我明白了:

  SELECT STATEMENT
      MINUS
        SORT UNIQUE
          INDEX FAST FULL SCAN FOO_INDEX
        SORT UNIQUE
          INDEX FAST FULL SCAN BAR_INDEX
Run Code Online (Sandbox Code Playgroud)

这怎么可能呢?做的时候INDEX FAST FULL SCAN,因为索引是 B+ 树,系统不会取回它的元组排序吗?为什么需要这样做SORT UNIQUE(数据已经排序)?

oracle-11g sqlplus execution-plan sorting explain

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

Oracle DB 中的 SYSDBA 密码

我正在使用 sysdba 连接到 Oracle DB:

sqlplus / as sysdba
Run Code Online (Sandbox Code Playgroud)

sysdba 用户的默认密码是什么。我在网络上试过,发现默认密码是,change_on_install但它对我不起作用。

我很想知道 Oracle DB 是否维护一些文件或数据库表来存储密码。

oracle sqlplus

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

启动 SQLPlus 时找不到消息文件

我已在 Fedora 18 上安装了 Oracle XE 11.2,但无法启动 SQLPlus。它退出并出现以下错误:

Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
Run Code Online (Sandbox Code Playgroud)

所有环境变量都已正确设置(从安装指南中复制)

# ~/.zshrc
ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe # It is in fact installed there
ORACLE_SID=XE
NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
PATH=$ORACLE_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

NLS_LANGAMERICAN_AMERICA.AL32UTF8。据我了解,Oracle 忽略了与系统语言相关的变量,但无论如何它们都在这里:

LC_CTYPE=en_US.UTF-8
LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

有什么建议?

oracle sqlplus

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

执行任何 SQL 的结果为 2

在 oracle sql 命令行中成功执行任何 sql 后,它显示 2 就像我想查看它显示 2 而不是显示表的任何表的表或描述。

SQL> select * from dual
  2
SQL> select * from user_objects
  2
SQL>
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g sqlplus

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

如何在命令行中没有密码的情况下从sqlplus连接到oracle 12c

这似乎是一个奇怪的问题:

如果我有用户demo使用密码 Pass1234 呼叫

连接到 oracle 11g 时,我可以sqlplus在命令行中使用密码运行:在数据库主机上:

C:\> sqlplus demo/Pass1234 
Run Code Online (Sandbox Code Playgroud)

或者远程机器

C:\> sqlplus demo/Pass1234@<ip>:1521/orcl 
Run Code Online (Sandbox Code Playgroud)

我可以这样做而无需在命令行中提供密码并像这样公开它:

C:\> sqlplus demo
Run Code Online (Sandbox Code Playgroud)

然后我得到:

SQL*Plus: Release 11.1.0.7.0 bla bla bla
Copyright (c) bla bla bla
Enter password:  
Run Code Online (Sandbox Code Playgroud)

然后我可以手动输入密码。

连接到 Oracle 12c 时,我可以从任何机器(使用密码)像这样连接:

C:\> sqlplus demo/Pass1234@<ip>:1521/pdborcl
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何在不tnsnames.ora编辑和不在命令行中写入密码的情况下连接到 Oracle 12c ?

我还没有弄清楚是否可以从数据库主机上的 sqlplus 连接到 Oracle 12c,而无需提供 IP 或本地主机,并且无需编辑 tnsnames.ora,就像我在 Oracle 11g 中所做的那样?

更重要的是,我可以在不使用完全连接的情况下从远程机器(甚至到 Oracle 11g)执行此操作吗?

(装置手动给用户和在命令行分贝连接和密码,而不是像使用/NOLOG在命令,然后:SQL> connect demo/Pass1234@<ip>:1521/pdborcl

谢谢!

oracle sqlplus oracle-12c

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

为什么我们不能在Oracle中的where子句中指定组函数?

SQL> desc tab1
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER
 NAME                                               VARCHAR2(1000)

SQL> select * from tab1;

        ID NAME
---------- ---------------
         1 a
         2 b
         3 c

SQL> select * from tab1 where id > AVG(id);
select * from tab1 where id > AVG(id)
                              *
ERROR at line 1:
ORA-00934: group function is not allowed here


SQL>
Run Code Online (Sandbox Code Playgroud)

错误很明显,说这是不可能的。但我不明白为什么。该查询非常有意义:

选择所有行tab1,其id 值大于平均值

oracle oracle-11g-r2 sqlplus

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

SP2-0667:找不到消息文件 sp1&lt;lang&gt;.msb sqlplus oracle

我有一个包含 oracle 数据库的 linux RedHat。我设置了所有环境变量,但是当我运行sqlplus命令时出现此错误:SP2-0667: Message file sp1<lang>.msb not found

这是我的变量和我的sqlplus命令:

[oracle@as ~]$ echo $ORACLE_HOME
/oracle/product/12.1.0/dbhome_1
[oracle@as ~]$ echo $ORA_NLS33
/oracle/product/12.1.0/dbhome_1/nls/data
[oracle@as ~]$ echo $LD_LIBRARY_PATH
/oracle/product/12.1.0/dbhome_1/lib
[oracle@as ~]$ sqlplus
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
Run Code Online (Sandbox Code Playgroud)

请注意,我目前以oracle用户身份运行,该用户似乎是/oracle具有读取和执行权限的文件夹的所有者。我还看到以下文件夹中存在一个名为 sp1us.msb 的文件:

[oracle@as ~]$ find $ORACLE_HOME | grep sp1
/oracle/product/12.1.0/dbhome_1/sqlplus/mesg/sp1us.msb
/oracle/product/12.1.0/dbhome_1/sqlplus/mesg/sp1us.msg
Run Code Online (Sandbox Code Playgroud)

oracle linux sqlplus

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