AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[oracle](dba)

Martin Hope
tnddld
Asked: 2023-09-17 18:05:07 +0800 CST

是否可以计算Oracle中特定列的数量

  • 5

我有一个这样的表:

在此输入图像描述

是否可以根据否返回通过或失败的规则数?

谢谢,T

oracle
  • 1 个回答
  • 11 Views
Martin Hope
bk_32
Asked: 2023-09-08 22:04:02 +0800 CST

创建触发器插入值时出错

  • 5

我是数据库新手,我知道这是一个简单的问题,但我无法在任何地方找到答案,所以我感谢您的帮助。

我有两张表,每张表都有相同的结构。

Table1
CaseNum Number(9,0)
CaseStat Number(5,0)
OpenDate Date

Table2
CaseNum Number(9,0)
CaseStat Number(5,0)
OpenDate Date

然后我尝试创建这个触发器,每次插入或更新 table1 时,它将在 table2 中插入一个新行。重点是让 Table2 成为 table1 的更改历史:

CREATE OR REPLACE TRIGGER TABLE1_HIST
AFTER INSERT OR UPDATE ON TABLE1
FOR EACH ROW

BEGIN
   INSERT INTO TABLE2
   VALUES (CaseNum, CaseStat, sysdate);
END;

当我尝试创建它时,出现以下错误:

Error(2,3): PL/SQL: SQL Statement ignored
Error(3,20): PL/SQL: ORA-00984: column not allowed here

但我已经检查并重新检查了列类型,在我看来它们都是相同的。

问题是,当我替换 VALUES (CaseNum, CaseStat, sysdate); 使用硬编码数字,它允许我创建触发器!

这有效:

CREATE OR REPLACE TRIGGER TABLE1_HIST
AFTER INSERT OR UPDATE ON TABLE1
FOR EACH ROW

BEGIN
   INSERT INTO TABLE2
   VALUES (123456789, 12345, sysdate);
END;

然而,这显然没有什么用处。

任何建议都值得赞赏。

oracle
  • 1 个回答
  • 7 Views
Martin Hope
dbafix
Asked: 2023-09-06 07:53:38 +0800 CST

无法连接到可插拔数据库中的 Oracle 用户

  • 5

由于某种原因,我无法与我创建的任何用户连接。他们的帐户状态也已解锁。

我想提一件事;pdb 是主 pdb 的克隆。(如下面他们的名字所示)。仅添加此信息以获取更多信息。

//编辑:我正在测试,我发现普通用户能够进行身份验证/连接。不知道为什么本地用户无法连接/

    [oracle@oracle pdb1]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 5 19:44:16 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         4 PDB2                           READ WRITE NO
         5 PDB3                           READ WRITE NO
SQL> ALTER SESSION SET CONTAINER = PDB1;

Session altered.

SQL> create user test1 identified by test1;

User created.

SQL> GRANT CREATE SESSION TO test1;

Grant succeeded.

SQL> connect test1/test1;
ERROR:
ORA-01017: invalid username/password; logon denied


Warning: You are no longer connected to ORACLE.

    SQL> ALTER SESSION SET CONTAINER = PDB1;

Session altered.

SQL> select name from v$database;

NAME
---------
ORCLDB



SQL> ALTER SESSION SET CONTAINER = PDB2;

Session altered.

SQL>  select name from v$database;

NAME
---------
ORCLDB

// 新编辑 - 监听器状态 -

SQL> !lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 06-SEP-2023 17:14:56

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                06-SEP-2023 17:14:18
Uptime                    0 days 0 hr. 0 min. 38 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/19.0.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oracle)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/19.0.0/db_1/admin/orcldb/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "0053f52b9a9509e9e06562aa88e317a6" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "005414da85570a0ae06562aa88e317a6" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "86b637b62fdf7a65e053f706e80a27ca" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "fa038b2801752bdae05562aa88e317a6" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcldb" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "pdb1" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "pdb2" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "pdb3" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
oracle
  • 1 个回答
  • 22 Views
Martin Hope
MarcioElizeu
Asked: 2023-09-06 03:14:26 +0800 CST

管理 DBCS 上的归档日志

  • 5

我们正在测试 Oracle OCI DBCS,并且我启用了自动备份。我发现自从启用自动备份以来,存档日志一直在累积,我想知道OCI是否也会自动删除存档日志?

问候

oracle
  • 1 个回答
  • 18 Views
Martin Hope
fackman
Asked: 2023-08-25 11:43:01 +0800 CST

如何在 Oracle Database 19.x 中按条件增加序列?

  • 5

我们有如下表。

CREATE TABLE "STYLES" (
    "STYLE_CODE" CHAR(8) GENERATED ALWAYS AS
        ("COLOR"||"FEATURE"||"SIZE"||"YEAR") 
        VIRTUAL NOT NULL ENABLE, 
    "COLOR" CHAR(2), 
    "FEATURE" CHAR(2), 
    "SIZE" CHAR(2), 
    "YEAR" CHAR(2),
    "SEQ" CHAR(2), 
    CONSTRAINT "STYLE_CODE_PK" PRIMARY KEY 
        ("STYLE_CODE") USING INDEX ENABLE
    ) ;

如果上表中STYLE_CODE PK的值不重复,则生成的SEQ值始终为00

如果STYLE_CODE PK的值重复,我们希望SEQ值按01、02的顺序增加。

我想找到解决办法。谢谢。

oracle
  • 1 个回答
  • 23 Views
Martin Hope
Isaac PM
Asked: 2023-08-24 13:04:15 +0800 CST

如何知道每个DB用户在缓存缓冲区中使用了多少内存?

  • 7

使用此查询:

SELECT
        A.CACHE_BUFFER_TOTAL,
        B.CACHE_BUFFER_USED,
        A.CACHE_BUFFER_TOTAL - B.CACHE_BUFFER_USED AS CACHE_BUFFER_FREE
    FROM
        (SELECT BYTES / 1024 / 1024 AS CACHE_BUFFER_TOTAL FROM V$SGAINFO WHERE NAME = 'Buffer Cache Size') A,
        (SELECT (SELECT COUNT(*) FROM V$BH) * (SELECT BLOCK_SIZE FROM V$BUFFER_POOL) / 1024 / 1024 AS CACHE_BUFFER_USED FROM DUAL) B;

...我可以确定缓冲区高速缓存的总大小和已使用的总大小;但是,我想知道每个用户的查询占用了多少缓冲区缓存。

在 Oracle 21C 中是否有一种简单的方法可以实现这一点?

oracle
  • 1 个回答
  • 136 Views
Martin Hope
itsec80
Asked: 2023-08-23 16:52:27 +0800 CST

限制数据库数据的直接更改

  • 5

Oracle 数据库管理员是否可以直接更改行中包含的数据,例如通过在数据库单元中键入或执行更新查询将 50 更改为 500?如果可以,如何限制数据变更只能通过ERP应用输入?

oracle
  • 1 个回答
  • 30 Views
Martin Hope
Ivan
Asked: 2023-08-15 05:02:16 +0800 CST

Oracle 19 调度程序未启动作业

  • 7
这个问题是从 Stack Overflow 迁移来的,因为它可以在 Database Administrators Stack Exchange 上找到答案。10天前迁移 。

我们的 Oracle Scheduler 无法在某些环境中工作,但在某些环境中可以工作。在它工作的环境中,以下查询返回 1 行

select program from v$session where osuser = 'oracle' and program like '%(CJQ0)%';
[email protected] (CJQ0)

在它不工作的环境中,不会返回任何行。

这是我执行的测试,以查看调度程序是否正在运行。它应该立即启动该作业。

CREATE TABLE MySchema.TEMP_DBMS_JOB (
  A NUMBER(*, 0))
DECLARE 
l_jobid int;
BEGIN
    dbms_job.submit(job => l_jobid, what => 'begin insert into MySchema.temp_dbms_job (a) values (13); commit; end;');
    dbms_output.put_line(l_jobid);
    COMMIT;
END;

DBA 可以做什么来让调度程序运行?“CJQ0”会话查询是否可以帮助您识别问题的潜在根源?DBA 认为调度程序的配置没有问题。

我们还尝试使用 DBMS_SCHEDULER.create_job 来提交作业,而不是已弃用的 dbms_job.submit,并且在相同的环境中获得了完全相同的结果。

我计划在这个问题达到所需的足够年龄后立即提供 3000 点赏金。如果在此之前有答案导致解决方案,我仍然会提供要点。

oracle
  • 2 个回答
  • 31 Views
Martin Hope
deostroll
Asked: 2023-08-15 01:33:43 +0800 CST

获取与 Oracle 表索引相关的错误/误导性信息

  • 7
  1. 创建表如下:
CREATE TABLE "HOTEL3" 
   (    "NAMEX" VARCHAR2(4000 CHAR), 
    "CITY" VARCHAR2(4000 CHAR), 
    "PRICE" NUMBER, 
    "ID" VARCHAR2(50 BYTE) DEFAULT sys_guid()
   );
  1. 创建索引如下:
CREATE INDEX "IDX_HOTEL3_CITY_NAME" ON "HOTEL3" ("CITY" ASC, "NAMEX" DESC);   
  1. 查询索引信息:
SELECT *
FROM   all_ind_columns ic
WHERE  ic.index_owner = 'FOO'
    AND ic.table_name = 'HOTEL3'
ORDER  BY ic.column_position;

我得到以下结果(csv)

"INDEX_OWNER","INDEX_NAME","TABLE_OWNER","TABLE_NAME","COLUMN_NAME","COLUMN_POSITION","COLUMN_LENGTH","CHAR_LENGTH","DESCEND","COLLATED_COLUMN_ID"
"FOO","IDX_HOTEL3_CITY_NAME","FOO","HOTEL3","CITY",1,4000,4000,"ASC",
"FOO","IDX_HOTEL3_CITY_NAME","FOO","HOTEL3","SYS_NC00005$",2,2000,0,"DESC",

观察第二条记录;COLUMN_NAME是SYS_NC00005$代替NAMEX.

以下是一些旁注。在第 1 步之后,如果您查询,all_tab_cols您将获得所有 4 列。但是,在步骤 #2 之后,all_tab_cols现在有一个附加条目 - 与上面的查询结果显示的名称相同。这可能有些牵强;但ID已设置的字段DEFAULT可能就是为什么在步骤 #2 之后all_tab_cols有那个奇怪的条目。

那么我可以发出什么查询来获取正确的索引信息呢?

PS:我猜oracle服务器是19c。

oracle
  • 2 个回答
  • 98 Views
Martin Hope
epipko
Asked: 2023-08-12 01:02:09 +0800 CST

Oracle:如何在 RMAN 恢复期间指定非默认备份位置

  • 6
这个问题是从 Stack Overflow 迁移来的,因为它可以在 Database Administrators Stack Exchange 上找到答案。13天前迁移 。

Windows 上的 Oracle 19c。RMAN 计划备份转到此处的 FRA:D:\oracle\recovery。我在 D:\backup\ 中有另一个备份,我想恢复它。我需要能够“告诉”Rman 查看非默认位置。这是我到目前为止所拥有的:

shutdown immediate;
startup nomount;
show parameter control_files;
exit;
rman target /
restore controlfile from 'D:\BACKUP\';
alter database mount;

-- full recovery
run{
restore database;
recover database;
alter database open resetlogs;
}

在哪一点上我指定备份位置以及如何指定?

oracle
  • 2 个回答
  • 30 Views

Sidebar

Stats

  • 问题 200806
  • 回答 265436
  • 最佳答案 132718
  • 用户 66935
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve