小编Mat*_*Mat的帖子

Oracle 11g 中的闪回特性?

我正在使用 Oracle 11gR1。作为项目的一部分,我必须通过禁用一些可能导致数据库损坏的约束(触发器和检查约束)来执行多个更新语句。

如果数据库损坏,我必须完全重新导入它,这是一项耗时的额外任务。

我对 Oracle Flashback 特性知之甚少。Flashback 会帮助我避免这些不必要的导入吗?如果出现任何问题,我可以设置一些稳定点并切换回那里吗?

有人可以给我简要介绍一下这个功能吗?

如果它符合我的要求,我会努力学习。

oracle oracle-11g-r2 flashback

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

为什么 DBA_SEGMENTS 显示的数据量是 DBA_TABLES 的两倍?

我尝试使用以下步骤计算审计日志表的使用情况:

  1. 截断所有审计日志表数据(即AUD$
  2. 执行插入和更新数据的测试用例,还有删除语句,但它不会删除任何内容。
  3. 测量 dba 段上使用的字节。

    select tablespace_name,bytes from dba_segments
    where tablespace_name ='SYSTEM'
    and SEGMENT_NAME = 'AUD$';
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重新计算统计数据。

  5. 检索统计数据中使用的字节。

    select NUM_ROWS * AVG_ROW_LEN as BYTE_USED
    from DBA_TABLES where TABLE_NAME = 'AUD$';
    
    Run Code Online (Sandbox Code Playgroud)

我从#3 得到的值是#5 的两倍多,为什么分配太多了?

oracle statistics tablespaces

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

如何配置 SQL Server 2012 以使用多个 NIC?

如何配置 SQL Server 2012 以使用多个 NIC?

我有一台带有 4 个 NIC 的服务器。我想使用 2 个 NIC 来查询我的数据库,并使用 2 个 NIC 从中检索结果。

我希望它们在负载平衡模式下工作,并且在出现一个缺口时仍能继续工作。

有可能的?

sql-server-2012 load-balancing

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

检查行是否存在

我需要编写一个只插入一行的查询,即使该查询运行多次。作为 SQL 的新手(以及新的),我做了一个,if not exists(...)但一个朋友说他更喜欢删除该行,如果它存在,然后再次添加它。

  • 删除EXISTS或反之亦然可能有什么好处?
  • 还有另一种方法吗?

sql-server-2008 sql-server insert if-not-exists

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

我什么时候应该使用收缩选项

我看到很多博客都说缩小不是一个好习惯,因为它会降低系统的性能。我同意所有这些会导致诸如碎片等副作用的事情。

现在我的疑问是我应该在数据库中使用收缩选项的场景是什么。

我从未见过有人说它有用的场景。收缩总是邪恶的吗?

sql-server-2005 sql-server-2008 sql-server shrink

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

为总和数据创建子查询作为 SQL Server 中的新列

假设我有一个名为的表tblTemp,其中包含以下数据:

|  ID | AMOUNT |
----------------
|   1 |     10 |
| 1-1 |     20 |
| 1-2 |     30 |
| 1-3 |     40 |
|   2 |     50 |
|   3 |     60 |
|   4 |     70 |
| 4-1 |     80 |
|   5 |     90 |
|   6 |    100 |
Run Code Online (Sandbox Code Playgroud)

X如果 ID 只有一个 ID 或 ( X-Y) 如果它是新 ID ( Y) 是( ) 的子代,则ID 将被格式化为(不带破折号X)。

我想添加一个新列( …

sql-server t-sql

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

在多个数据维度上分组(透视)

我正在记录一个事件表,并且想要一个输出(如本答案底部所示),问题是我正在获取行中的数据,但希望它们按列显示。

两个维度如下:

  • 日期时间值(每天)
  • ServerId(每个服务器)

我想我必须按时间部分(例如按分钟或每小时)对日期时间值进行分组并检索每个服务器的事件列表,但我不知道如何编写查询?我需要一个by子句吗?

我已经写好了create语句,结构如下:

CREATE TABLE [dbo].[events](
    [guidEventId] [uniqueidentifier] PRIMARY KEY,
    [dtStart] [datetime2](7) NOT NULL,
    [nDirection] [int] NOT NULL,
    [nServerId] [int] NOT NULL
) 

INSERT INTO events 
    ([guidEventId],[dtStart],[nDirection],[nServerId])
VALUES
    (newId(),'2013-08-01 00:01:00','0','1'),
    (newId(),'2013-08-01 00:02:00','1','1'),
    (newId(),'2013-08-01 00:03:00','0','1'),
    (newId(),'2013-08-01 00:04:00','1','2'),
    (newId(),'2013-08-02 00:01:00','0','1'),
    (newId(),'2013-08-02 00:02:00','1','2'),
    (newId(),'2013-08-02 00:03:00','0','2'),
    (newId(),'2013-08-02 00:04:00','1','2');
Run Code Online (Sandbox Code Playgroud)

http://sqlfiddle.com/#!6/25e74

茶几应该看起来像这样(白天):

DateTime     | Server1 | Server2 |     Sum |
--------------------------------------------
2013-08-01   |       3 |       1 |       4 |
2013-08-02   |       1 |       3 |       4 |
Run Code Online (Sandbox Code Playgroud)

sql-server group-by datetime

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

查询选择所有记录时不使用索引

这是我第一次处理大型数据库,我想知道为什么下面的两个查询在执行计划方面是不同的。

我在特定表上设置了索引:

CREATE NONCLUSTERED INDEX [IX_UBHSD_xploc_trandt2] ON [dbo].[UBHSD]
(
    [xploc] ASC, [trandt2] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, 
        DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) 
        ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时,它使用索引。

SELECT COUNT(*) as cnt 
FROM [dbo].[UBHSD] 
WHERE [xploc] != '' AND [trandt2] >= CAST('2012-01-01' AS DATETIME)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这是一个更大的。

但是当我在不使用聚合的情况下运行查询时:

SELECT *
FROM [dbo].[UBHSD] 
WHERE [xploc] != '' AND [trandt2] >= CAST('2008-01-01' AS DATETIME)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这是一个更大的。

我期望两个查询都使用索引。但是第二个查询执行全表扫描。

为什么会这样?我错过了什么?

sql-server t-sql sql-server-2012

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

每次交货编号多个日期

我有兴趣生成以下视图,其中对不同的交货日期进行编号。

SalesID    Delivery Date DateNo
SO00000014 2014-02-21    1
SO00000015 2014-02-13    1
SO00000016 2014-01-28    1
SO00000017 2014-03-17    1
SO00000018 2014-02-13    1
SO00000020 2014-03-19    1
SO00000020 2014-03-20    2
SO00000020 2014-03-21    3
Run Code Online (Sandbox Code Playgroud)

我的问题是如何对与上面 SO00000020 中的单个 SalesId 关联的不同日期进行编号。我正在使用 SQL Server 2008。

sql-server-2008 sql-server

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

Oracle 服务名称与数据库名称

我正在阅读有关 Oracle 的内容,我对这两个名称感到困惑:service_name数据库名称。它们都引用使用命令创建数据库时使用的数据库名称吗CREATE DATABASE xxxxxx

服务名称可以与数据库名称不同吗?如果是,我们如何将服务名称映射到服务器上的数据库名称?因为作为客户端,我们使用服务名来连接数据库,那么服务端如何将服务名映射到数据库名呢?

oracle

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