标签: oracle

数据库与用户与架构之间的区别

我真的对术语数据库、用户和模式感到困惑。谁能解释一下它们之间的区别(如果是的话)?

如果它们相同,那么它们之间有什么相似之处?我们如何使用它们?我们如何创建它们?

schema oracle users

98
推荐指数
4
解决办法
25万
查看次数

How to use sqlplus to connect to an Oracle Database located on another host without modifying my own tnsnames.ora

I want to connect to an oracle database located on another host using sqlplus. This page suggested adding an item on my tnsnames to conenct to that database

local_SID =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
    (CONNECT_DATA = (SID = remote_SID))
  )
Run Code Online (Sandbox Code Playgroud)

and then use that in sqlplus

sqlplus user/pass@local_SID
Run Code Online (Sandbox Code Playgroud)

However, in my circumstances modifying the local tnsnames is not possible. Is it possible to connect to a remote database just by using sqlplus argument without having to …

oracle sqlplus

91
推荐指数
4
解决办法
85万
查看次数

如何选择每组的第一行?

我有一张这样的表:

 ID |  Val   |  Kind
----------------------
 1  |  1337  |   2
 2  |  1337  |   1
 3  |   3    |   4
 4  |   3    |   4
Run Code Online (Sandbox Code Playgroud)

我想制作一个SELECT只返回每个 的第一行,按Val排序Kind

示例输出:

 ID |  Val   |  Kind
----------------------
 2  |  1337  |   1
 3  |   3    |   4
Run Code Online (Sandbox Code Playgroud)

如何构建此查询?

oracle greatest-n-per-group

67
推荐指数
4
解决办法
39万
查看次数

select count(*) 和 select count(any_non_null_column) 有什么区别?

我似乎记得(在 Oracle 上) utteringselect count(*) from any_tableselect count(any_non_null_column) from any_table.

如果有的话,这两个陈述之间有什么区别?

null oracle aggregate count

60
推荐指数
3
解决办法
4万
查看次数

为什么不使用表而不是物化视图?

我是 Oracle 数据库的新手。如果我理解正确的话,物化视图是将结果集保存为数据库中的物理表的视图,并且该视图/表根据某个参数进行刷新。如果视图保存为物理表,为什么不首先将数据存储到表中?那么使用物化视图代替表有什么好处呢?

performance oracle view

59
推荐指数
3
解决办法
8万
查看次数

如何使sqlplus输出出现在一行中?

我有一张有 100 列的表格。在SQL Plus输出换行中选择数据时,使其难以阅读。

我更喜欢的是出现一个水平滚动条,或者以某种方式将输出发送到 less

我在 SQLPlus 中运行以下语句 -

SET LINESIZE 32000;
SET PAGESIZE 40000;
SET LONG 50000;
SPOOL output.txt
SELECT * FROM big_table;
Run Code Online (Sandbox Code Playgroud)

然后在bash我跑 -

少输出.txt

输出仍然显示为已包装且不可读。

oracle sqlplus

59
推荐指数
3
解决办法
55万
查看次数

使用连接字符串从命令行连接到 sql plus

假设我有一个 Oracle 数据库。我有一个用户名 = x,密码 = y,数据库 = z。我也知道端口 = a,SID = b,主机名 = c。

那么我需要如何正确连接呢?我使用了许多选项,例如:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

sqlplus (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=b)))
Run Code Online (Sandbox Code Playgroud)

提交这些命令行通常会给我返回错误消息,例如:

ORA-12560:TNS:协议适配器错误
ORA-12514:TNS:侦听器当前不知道服务

提前谢谢了!!

oracle sqlplus string

54
推荐指数
3
解决办法
68万
查看次数

消除 ListAgg (Oracle) 中的重复项

在 Oracle 11.2 之前,我使用自定义聚合函数将一列连接成一行。11.2 增加了这个LISTAGG功能,所以我想改用它。我的问题是我需要消除结果中的重复项,但似乎无法做到这一点。

这是一个例子。

CREATE TABLE ListAggTest AS (
  SELECT rownum Num1, DECODE(rownum,1,'2',to_char(rownum)) Num2 FROM dual 
     CONNECT BY rownum<=6
  );
SELECT * FROM ListAggTest;
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE ListAggTest AS (
  SELECT rownum Num1, DECODE(rownum,1,'2',to_char(rownum)) Num2 FROM dual 
     CONNECT BY rownum<=6
  );
SELECT * FROM ListAggTest;
Run Code Online (Sandbox Code Playgroud)

我想看到的是:

      NUM1 NUM2
---------- ---------------------
         1 2
         2 2                    << Duplicate 2
         3 3
         4 4
         5 5
         6 6
Run Code Online (Sandbox Code Playgroud)

这是一个listagg接近但不消除重复的版本。

SELECT Num1, listagg(Num2,'-') WITHIN GROUP (ORDER BY NULL) OVER …
Run Code Online (Sandbox Code Playgroud)

oracle aggregate oracle-11g-r2

48
推荐指数
7
解决办法
18万
查看次数

EXISTS (SELECT 1 ...) vs EXISTS (SELECT * ...) 一个还是另一个?

每当我需要检查表中某行是否存在时,我总是倾向于编写如下条件:

SELECT a, b, c
  FROM a_table
 WHERE EXISTS
       (SELECT *  -- This is what I normally write
          FROM another_table
         WHERE another_table.b = a_table.b
       )
Run Code Online (Sandbox Code Playgroud)

还有一些人这样写:

SELECT a, b, c
  FROM a_table
 WHERE EXISTS
       (SELECT 1   --- This nice '1' is what I have seen other people use
          FROM another_table
         WHERE another_table.b = a_table.b
       )
Run Code Online (Sandbox Code Playgroud)

当条件NOT EXISTS不是EXISTS: 在某些情况下,我可能会用 aLEFT JOIN和一个额外的条件(有时称为antijoin)来编写它:

SELECT a, b, c
  FROM a_table
       LEFT JOIN another_table ON another_table.b = …
Run Code Online (Sandbox Code Playgroud)

mysql postgresql oracle sql-server

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

Oracle 数据库中的 sys 和 system 帐户有什么区别?

有两种方法可以使用 sqlplus 以管理员身份连接到 Oracle:

  1. sqlplus sys as sysdba
  2. sqlplus system/manager

我想这些帐户应该用于不同的目的。

这两个模式用于哪些任务?我什么时候应该使用其中的一个?

oracle oracle-11g-r2

43
推荐指数
3
解决办法
9万
查看次数