我想知道是否有办法从 SQL Plus 执行 SQL Loader 脚本。
我们正在使用 Oracle 10g。
一种)
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。第二个是做什么的?我什么时候应该使用第一个或第二个?
如何设置脚本的退出代码?
以下似乎不起作用
WHENEVER SQLERROR EXIT 5
DECLARE
retCode number := 0;
BEGIN
retCode := 30;
END;
/
EXIT :retCode ;
Run Code Online (Sandbox Code Playgroud)
给出退出代码为 1 的 EXIT 的用法
我正在使用 Oracle sqlplus。我有以下查询:
SELECT fooID from foo MINUS
SELECT fooID from bar;
Run Code Online (Sandbox Code Playgroud)
我创建了两个非聚集 B+ 树索引。一个在fooID表的字段中foo,一个在表的字段fooID中bar。之后,我分析了两个表的统计信息:foo并bar使用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(数据已经排序)?
我正在使用 sysdba 连接到 Oracle DB:
sqlplus / as sysdba
Run Code Online (Sandbox Code Playgroud)
sysdba 用户的默认密码是什么。我在网络上试过,发现默认密码是,change_on_install但它对我不起作用。
我很想知道 Oracle DB 是否维护一些文件或数据库表来存储密码。
我已在 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_LANG是AMERICAN_AMERICA.AL32UTF8。据我了解,Oracle 忽略了与系统语言相关的变量,但无论如何它们都在这里:
LC_CTYPE=en_US.UTF-8
LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
有什么建议?
在 oracle sql 命令行中成功执行任何 sql 后,它显示 2 就像我想查看它显示 2 而不是显示表的任何表的表或描述。
SQL> select * from dual
2
SQL> select * from user_objects
2
SQL>
Run Code Online (Sandbox Code Playgroud) 这似乎是一个奇怪的问题:
如果我有用户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)
谢谢!
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 数据库的 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)