小编Sat*_*hat的帖子

如何仅捕获和处理特定的 Oracle 异常?

这个这个我猜,ORA-00955 没有预定义的命名系统异常。

如何重写以下内容以仅捕获错误 ORA-00955?

begin
      EXECUTE IMMEDIATE 'CREATE SEQUENCE S_TEST START WITH 1 INCREMENT BY 1';
exception when OTHERS then
    Null;
end;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,是否有任何语法可以通过提供错误代码来捕获错误?

oracle exception

22
推荐指数
2
解决办法
7万
查看次数

计算一行占总和的百分比

为糟糕的标题道歉,我不确定什么是好的标题。

这是当前(简化视图)我正在使用的数据

Agent    |  Commission     
---------|------------
Smith    |    100
Neo      |    200
Morpheus |    300
Run Code Online (Sandbox Code Playgroud)

我需要计算总佣金的百分比,每个代理负责。

因此,对于特工 Smith,百分比将计算为 (Agent Smith's commission / Sum(commission)*100

所以,我的预期数据是

Agent    |  Commission   |  % Commission    
---------|---------------|---------------
Smith    |    100        |     17
Neo      |    200        |     33
Morpheus |    300        |     50
Run Code Online (Sandbox Code Playgroud)

我有一个函数返回每个代理的佣金。我有另一个函数将百分比返回为(Commission/Sum(Commission))*100. 问题是Sum(commission)对每一行都进行计算,并且鉴于此查询将在数据仓库上运行,数据集会相当大(目前,只有不到 2000 条记录),老实说,这是一种糟糕的方法(IMO )。

有没有一种方法可以Sum(Commission)不为获取的每一行计算?

我在考虑两部分查询的内容,第一部分将获取sum(commission)到包变量/类型,第二部分将引用此预先计算的值,但我不确定如何完成此操作。

我只能使用 SQL,而且我在 Oracle 10g R2 上运行。

aggregate oracle-10g-r2

15
推荐指数
3
解决办法
10万
查看次数

跟踪、调试和修复行锁争用

晚了,我一直面临着很多行锁争用。争用的表似乎是一个特定的表。

一般是这样的——

  • 开发人员 1 从 Oracle Forms 前端屏幕启动事务
  • 开发人员 2 从使用同一屏幕的不同会话开始另一个事务

大约 5 分钟后,前端似乎没有响应。检查会话显示行锁争用。每个人都抛出的“解决方案”是终止会话:/

作为数据库开发人员

  • 可以做些什么来消除行锁争用?
  • 是否有可能找出存储过程的哪一行导致这些行锁争用
  • 减少/避免/消除编码问题的一般准则是什么?

如果这个问题感觉过于开放/信息不足,请随时编辑/让我知道 - 我会尽力添加一些额外的信息。


有问题的表有很多插入和更新,我想说它是最繁忙的表之一。SP 相当复杂 - 为简化起见 - 它从各种表中获取数据,将其填充到工作表中,在工作表上发生大量算术运算,并将工作表的结果插入/更新到相关表中。


数据库版本为 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit。逻辑流在两个会话中以相同的顺序执行,事务不会保持打开太长时间(或者至少我认为是这样),并且在事务的主动执行期间发生锁定。


更新:表格行数比我预期的要大,大约有 310 万行。此外,在跟踪会话后,我发现该表的几个更新语句没有使用索引。为什么会这样 - 我不确定。where 子句中引用的列已编入索引。我目前正在重建索引。

oracle-10g locked-objects locking

12
推荐指数
3
解决办法
2万
查看次数

Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

我在我的组织中看到的关于 DBA 执行的“实践”之一是将使用exp/ 等工具的完整数据库导出expdp视为备份。

这是一个很好的做法吗?与这种方法相比,使用 RMAN 有什么优势?

oracle backup

10
推荐指数
2
解决办法
2734
查看次数

SQL Server 中的事务日志会自动收缩吗?

当 SQL Server 数据库处于 SIMPLE 模式时,您不必关心事务日志 bakcups。但是在 SIMPLE 模式下,事务日志似乎会像在 FULL 模式下一样增长。是否会在某个时间点自动截断?还是我必须手动截断/缩小它?

sql-server-2008 sql-server backup shrink transaction

10
推荐指数
1
解决办法
8541
查看次数

如何使用注释对 PostgreSQL 模式进行版本控制?

我使用Git对我的大部分工作进行版本控制:代码、文档、系统配置。我能够做到这一点,因为我所有有价值的工作都存储为文本文件。

我也一直在为我们的 Postgres 数据库编写和处理很多 SQL 模式。该模式包括视图、SQL 函数,我们将用R编程语言(通过PL/R)编写 Postgres 函数。

我试图复制和过去我和我的合作者编写的块模式,但我忘记这样做了。复制和过去的动作是重复的并且容易出错。

pg_dump / pg_restore 方法将不起作用,因为它会丢失注释。

理想情况下,我希望有某种方法将我当前的模式提取到一个或多个文件中并保留注释,以便我可以进行版本控制。

带注释的版本控制架构的最佳实践是什么?

schema postgresql version-control

9
推荐指数
1
解决办法
4029
查看次数

为什么 Oracle 数据库需要 SYSTEM 和 SYSAUX 表空间?

引用有关逻辑存储结构的 Oracle 文档

数据库必须具有 SYSTEM 和 SYSAUX 表空间:

替代文字

为什么必须拥有这些表空间?

oracle

8
推荐指数
1
解决办法
5590
查看次数

我是否违反了数据库设计中的任何 NF 规则?

我是创建数据库的新手...我需要为我的招聘网络应用程序创建它。

我的申请需要安排申请人的筛选、考试和面试,并将结果保存在数据库中。

我的数据库架构如下:

在此处输入图片说明

我的问题是我applicant_id在其他表格中包含了...例如考试、面试、考试类型。

我是否违反了任何规范化规则?如果我这样做了,你有什么建议来改进我的设计?

normalization database-design

8
推荐指数
2
解决办法
595
查看次数

是否有一种简单的方法可以触发单个镜像数据库的自动故障转移?

我在具有自动故障转移配置的高安全性的 sqlserver2008-R2 的单个实例上有 3 个镜像数据库。有没有办法触发仅 1 个数据库的自动故障转移?

我想模拟数据库实际上无法访问的位置,而不仅仅是点击 SSMS 的“故障转移”按钮。我可以停止主节点上的端点,但这会使所有 3 个数据库都无法访问,因为它们使用相同的端点。

如何仅禁用 1 db?

sql-server-2008 mirroring sql-server-2008-r2

8
推荐指数
1
解决办法
1417
查看次数

如何移除对象上的锁?

我的一个查询遇到了行锁争用。我已经找到了导致这种情况的表 - 那么下一步是什么?哪个会话导致此表被锁定?如何解除锁定?

我正在使用 Oracle 10g

oracle-10g locked-objects

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

如果新的审计文件已经存在,我如何让审计系统创建新的审计文件?

我试图让我的审计文件更易于阅读,我将审计跟踪配置为 xml,扩展。问题是,如果我的服务器忙碌并重复使用 pids - 日志将被附加到同一个文件中。

我知道如果审计文件已经存在,有一种方法可以创建一个带有后缀的新文件。我怎样才能做到这一点?我使用 Oracle 10.0.4.0

oracle security oracle-10g

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

限制每个 IP 地址的数据库访问

我已经过滤了访问数据库服务器的 IP 地址,如下所示:

设置sqlnet.ora

tcp.validnode_checking = YES
tcp.invited_nodes = (localhost, 192.168.100.130, 192.168.100.186)
Run Code Online (Sandbox Code Playgroud)

但是在我的 ORACLE_HOME 中,有 1 个以上的数据库,比如说 DB WORKSHOP 和 DB COURSE

我想问一下每个数据库连接数据库的问题,例如:

DB WORKSHOP only can be access from 192.168.100.130
DB COURSE only can be access from 192.168.100.186
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能做到?

oracle security

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

当子表为空时截断 Oracle 中的父表

假设我有一个parent由子表引用的父表child。该表parent已填充但未填充child。试图截断parent结果

 ORA-02449: unique/primary keys in table referenced by foreign keys  
Run Code Online (Sandbox Code Playgroud)

有没有办法向child空的 DBMS 提示,以便不需要禁用外键约束?

oracle referential-integrity truncate

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