AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

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

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-2660

Nick Chammas's questions

Martin Hope
Nick Chammas
Asked: 2018-08-14 08:37:02 +0800 CST

ALL_TABLES 和 TABLES 之间有什么区别?

  • 0

文档没有启发性:

  • 所有表:

    提供有关 Vertica 数据库中表的摘要信息。

  • 表格:

    提供有关数据库中所有表的信息。

我问的原因是用户对为什么他们可以在一个表中看到某些表而在另一个表中看不到感到困惑。它与权限有关,但不清楚具体如何。

例如,一个用户告诉我他们有权查询一个表。但是,该表未显示在 中TABLES,其列也未显示在 中COLUMNS,但该表确实显示在 中ALL_TABLES。

因此,这导致了以下问题:

  1. ALL_TABLES和 和有什么不一样TABLES?
  2. 用户如何查看他们有权查询的所有表(和列!)的列表?
vertica
  • 1 个回答
  • 340 Views
Martin Hope
Nick Chammas
Asked: 2016-03-24 10:30:03 +0800 CST

为什么 CURRENT_LOAD_SOURCE() 返回“批号 1”而不是实际的源文件名?

  • 2

我正在将一些数据加载到这样的表中:

COPY table1 (
    col1,
    col2,
    file_name AS CURRENT_LOAD_SOURCE()
)
FROM LOCAL :src_file
REJECTED DATA :rejected_file
EXCEPTIONS :exceptions_file
SKIP 1;

它有效,除了用字符串而不是实际的基本名称file_name填充。Batch No. 1:src_file

的文档CURRENT_LOAD_SOURCE()没有解释为什么会这样。

这是一个错误吗?如何获取源文件的实际名称?

vertica copy
  • 1 个回答
  • 80 Views
Martin Hope
Nick Chammas
Asked: 2016-03-11 11:27:11 +0800 CST

设置连接的默认数据库

  • 1

超级 n00b 问题,我知道,但我似乎无法在任何容易找到的地方找到它,所以在这里记录一下会很好。

假设我以特定用户的身份连接到 Teradata 系统NICK,但我需要访问其他用户拥有的表BOB。

而不是必须限定每个表名,BOB.我只想设置我的默认数据库用于连接BOB,然后使用它们的非限定名称查询表。

换句话说,而不是这样:

-- Cartesian Join of Doom (CJD™)
SELECT COUNT(*)
FROM BOB.TABLE1, BOB.TABLE2, BOB.TABLE3;

我希望能够做到这一点:

-- CJD™ for the lazy
SELECT COUNT(*)
FROM TABLE1, TABLE2, TABLE3;

有没有办法在连接的生命周期内做到这一点?

teradata
  • 1 个回答
  • 4430 Views
Martin Hope
Nick Chammas
Asked: 2016-03-08 10:41:02 +0800 CST

如果我无法回滚交易,为什么 Vertica 会让我开始交易?

  • 2

我对 Vertica 数据库运行以下语句,一次一个:

BEGIN TRANSACTION;

UPDATE table
SET col1 = 'something'
WHERE col2 = 'something else';

SELECT COUNT(*)
FROM table
WHERE col1 = 'something';

ROLLBACK TRANSACTION;

我运行第一行很好......好吧,现在我正在进行交易。

我运行我的更新......好吧,这工作。

我运行SELECT测试以确保事情按预期工作......哦,等等,看起来我错过了语句WHERE子句中的一个条件UPDATE。

不用担心!这就是我在交易中这样做的原因。

让我们回滚:

=> ROLLBACK TRANSACTION;

[Vertica][JDBC](10040) Cannot use commit while Connection is in auto-commit mode.

琼斯,把你桌上的那卷卫生纸交出来。

所以 Vertica 很高兴地接受了我的BEGIN TRANSACTION,因为我非常清楚,在那之后我会尝试运行 aROLLBACK或COMMIT.

然而,我做不到!我的连接处于自动提交模式,因此ROLLBACK毫无COMMIT意义。我UPDATE的承诺在它完成的那一刻。

我错过了什么,还是我认为这只是 Vertica 的一个非常糟糕的实现?

如果逻辑结果 (或) 是非法的,为什么 Vertica 会BEGIN TRANSACTION在自动提交模式下接受连接?ROLLBACKCOMMIT

transaction vertica
  • 2 个回答
  • 1480 Views
Martin Hope
Nick Chammas
Asked: 2016-01-15 11:58:18 +0800 CST

Vertica 的 COPY 是原子的吗?

  • 4

似乎是一件简单的事情,但我似乎无法在COPY.

Vertica 是COPY原子的吗?如果数据加载中断或以某种方式失败,Vertica 会负责清理吗?

vertica copy
  • 1 个回答
  • 271 Views
Martin Hope
Nick Chammas
Asked: 2014-05-15 06:24:09 +0800 CST

如何获取 Vertica 数据库的大小?

  • 7

我有一个 Vertica 数据库。我怎么知道数据库有多大?

为了向高层管理人员报告有关我们环境的基本统计数据,我需要一个粗略的答案。

vertica database-size
  • 3 个回答
  • 18627 Views
Martin Hope
Nick Chammas
Asked: 2012-07-03 15:51:26 +0800 CST

如何让 RMAN 将恢复的数据文件视为原始文件?

  • 3

我正计划将这个古老但至关重要的 Oracle 数据库从一个 Windows Server 2003 集群迁移到另一个集群。

数据库有许多数据文件,它们都在目标集群上获取新路径。唯一保持不变的路径是备份文件。

我的迁移计划如下:

  1. 使用我们的夜间 RMAN 备份脚本备份源集群上的数据库:

    run {  
        allocate channel Channel1 type disk format 'F:\backup\folder\%d_%T_%s_%U.bak';
        allocate channel Channel2 ... 
    
        backup check logical ( database );
        backup check logical ( archivelog all  not backed up 2 times );
        backup check logical ( current controlfile );
    } 
    
    allocate channel for maintenance device type disk;
    delete archivelog until time 'sysdate - 2' backed up 2 times to disk;
    delete obsolete device type disk;
    

    我们在两个集群上的 RMAN 保留策略都设置为redundancy 2,并且控制文件被用作恢复目录。

  2. 将备份文件复制到F:\backup\folder目标集群上。

  3. 使用此 RMAN 脚本恢复目标集群上的数据库:

    run {
        allocate channel Channel1 type disk;
        allocate channel Channel2 ...
    
        set until sequence <sequence number> thread 1;
    
        SET NEWNAME FOR DATAFILE 'Old\Path\FILE01.DBF' TO 'New\Path\FILE01.DBF';
        SET NEWNAME FOR DATAFILE ...
    
        restore database;
    }
    
  4. 更新控制文件中的数据文件路径,将数据库恢复到合适的顺序,用resetlogs.

这很好用,但有以下例外:

当我要求 RMAN 删除目标集群上的过时文件时,它会将所有刚刚恢复的数据文件命名为过时的!

RMAN> delete obsolete device type disk;
...    
Deleting the following obsolete backups and copies:
Type                 Key    Completion Time    Filename/Handle
-------------------- ------ ------------------ --------------------
Datafile Copy        1      02-JUL-12          New\Path\FILE01.DBF
...

好吧,RMAN 将这些数据文件识别为副本是正确的。

但是,由于这是数据库迁移,这些副本旨在成为新的原件,所以我当然不希望 RMAN 在维护过程中删除它们!

是否可以调整此迁移过程,以便 RMAN 将恢复的数据库视为新的原始数据库?

oracle restore
  • 1 个回答
  • 2774 Views
Martin Hope
Nick Chammas
Asked: 2012-06-26 15:12:40 +0800 CST

在我的数据库服务器上运行防病毒软件是否安全?

  • 7

Microsoft 已知某些防病毒软件的实现会导致SQL Server 出现各种问题,并且 Microsoft 有一篇支持文章专门用于为您的 SQL Server 主机选择正确的防病毒软件。

根据您的经验,在您的数据库服务器上运行防病毒软件是否安全?

考虑到所有必需的防病毒排除和注意事项,它是否实用?

sql-server security
  • 2 个回答
  • 5074 Views
Martin Hope
Nick Chammas
Asked: 2012-06-09 11:47:32 +0800 CST

为什么 10^37 / 1 会抛出算术溢出错误?

  • 11

继续我最近玩大数字的趋势,我最近将我遇到的一个错误归结为以下代码:

DECLARE @big_number DECIMAL(38,0) = '1' + REPLICATE(0, 37);

PRINT @big_number + 1;
PRINT @big_number - 1;
PRINT @big_number * 1;
PRINT @big_number / 1;

我得到的这段代码的输出是:

10000000000000000000000000000000000001
9999999999999999999999999999999999999
10000000000000000000000000000000000000
Msg 8115, Level 16, State 2, Line 6
Arithmetic overflow error converting expression to data type numeric.

什么?

为什么前 3 个操作有效但最后一个无效?如果@big_number明明可以存储 的输出,怎么会出现算术溢出错误@big_number / 1呢?

sql-server sql-server-2008
  • 1 个回答
  • 1392 Views
Martin Hope
Nick Chammas
Asked: 2012-06-02 12:54:52 +0800 CST

为什么当我选择持久计算列时 SQL Server “计算标量”?

  • 21

这段代码中的三个SELECT语句

USE [tempdb];
GO

SET NOCOUNT ON;

CREATE TABLE dbo.persist_test (
      id            INT NOT NULL
    , id5           AS (id * 5)
    , id5p          AS (id * 5) PERSISTED
);

INSERT INTO dbo.persist_test (id)
VALUES (1), (2), (3);

SELECT id
FROM dbo.persist_test;

SELECT id5
FROM dbo.persist_test;

SELECT id5p
FROM dbo.persist_test;

DROP TABLE dbo.persist_test;

生成这个计划:

执行计划

为什么SELECT选择持久值的 final 会生成计算标量运算符?

sql-server sql-server-2008
  • 1 个回答
  • 8036 Views
Martin Hope
Nick Chammas
Asked: 2012-05-08 02:48:38 +0800 CST

SYS.USER$ 中的列代表什么?

  • 4

在SYS.USER$视图中CTIME,PTIME、 和LTIME列代表什么?

我在哪里可以找到有关此系统视图和其他系统视图的 Oracle 文档?

oracle oracle-9i
  • 2 个回答
  • 83282 Views
Martin Hope
Nick Chammas
Asked: 2012-04-24 08:00:47 +0800 CST

如何限制 Oracle 使用特定端口?

  • 3

我在 Windows 2003 32 位集群上构建了一个新的 Oracle 9iR2 实例。当然,由于我无法控制的原因,它是 9i 版本。多个应用程序服务器连接到此实例,每个服务器都打开几个DEDICATED连接,它们为工作保持打开状态。

此实例处于锁定环境中,因此我的网络人员希望尽可能多地封锁端口。为此,我需要准确地告诉他们实例需要打开哪些端口或端口范围。

我浏览了Listener 文档,可以看到我可以更改默认的 Listener 端口 1521。但是,这些应用程序服务器针对数据库打开的每个连接似乎都获得了自己的 TCP 端口。

有没有办法限制这些服务器用于连接数据库的端口范围?

oracle configuration
  • 2 个回答
  • 6762 Views
Martin Hope
Nick Chammas
Asked: 2012-01-24 09:48:00 +0800 CST

如何找到我当前的 SCN?

  • 15

给定任何版本的 Oracle:

  • 如何找到我当前的 SCN?
  • 最大可能的 SCN 是多少?
oracle
  • 3 个回答
  • 78313 Views
Martin Hope
Nick Chammas
Asked: 2011-10-18 13:13:48 +0800 CST

为什么“SELECT POWER(10.0, 38.0);” 抛出算术溢出错误?

  • 16

我正在更新我的IDENTITY溢出检查脚本以说明DECIMAL和NUMERIC IDENTITY列。

作为检查的一部分,我计算每一IDENTITY列的数据类型范围的大小;我用它来计算该范围的百分比已用尽。对于该范围的大小,DECIMAL精度在哪里。NUMERIC 2 * 10^p - 2p

我创建了一堆带有DECIMAL和NUMERIC IDENTITY列的测试表,并尝试按如下方式计算它们的范围:

SELECT POWER(10.0, precision)
FROM sys.columns
WHERE 
       is_identity = 1
   AND type_is_decimal_or_numeric
;

这引发了以下错误:

Msg 8115, Level 16, State 6, Line 1
Arithmetic overflow error converting float to data type numeric. 

我将它缩小到IDENTITY类型的列DECIMAL(38, 0)(即具有最大精度),所以我然后POWER()直接尝试对该值进行计算。

以下所有查询

SELECT POWER(10.0, 38.0);
SELECT CONVERT(FLOAT, (POWER(10.0, 38.0)));
SELECT CAST(POWER(10.0, 38.0) AS FLOAT);

也导致了同样的错误。

  • 为什么 SQL Server 会尝试将POWER()类型为 的输出转换FLOAT为NUMERIC(尤其是在FLOAT具有更高优先级时)?
  • 如何为所有可能的精度(当然包括)动态计算 aDECIMAL或列的范围?NUMERICp = 38
sql-server sql-server-2008
  • 3 个回答
  • 13781 Views
Martin Hope
Nick Chammas
Asked: 2011-09-17 14:12:58 +0800 CST

如何将我的 SQL Azure 数据库复制到本地 SQL Server 实例?

  • 12

我有一个托管在 SQL Azure 实例上的 OLTP 数据库。我想从云中提取数据库的副本,这样我就可以对其运行一些繁重的提取和 OLAP 样式的查询,而不会影响源数据库。

如何将数据库的副本下拉到本地 SQL Server 实例?

backup duplication
  • 5 个回答
  • 14127 Views
Martin Hope
Nick Chammas
Asked: 2011-09-10 13:44:37 +0800 CST

如何帮助 SQL Server 识别我的索引视图列不能为 NULL?

  • 9

我在 SQL Server 2008 中定义了以下索引视图(您可以从 gist下载工作模式以进行测试):

CREATE VIEW dbo.balances
WITH SCHEMABINDING
AS
SELECT
      user_id
    , currency_id

    , SUM(transaction_amount)   AS balance_amount
    , COUNT_BIG(*)              AS transaction_count
FROM dbo.transactions
GROUP BY
      user_id
    , currency_id
;
GO

CREATE UNIQUE CLUSTERED INDEX UQ_balances_user_id_currency_id
ON dbo.balances (
      user_id
    , currency_id
);
GO

user_id、currency_id和transaction_amount都定义为 中的NOT NULL列dbo.transactions。但是,当我在 Management Studio 的对象资源管理器中查看视图定义时,它会将视图中的两个balance_amount和标记transaction_count为NULL-able 列。

我看过几个讨论,这个是其中最相关的,这表明一些函数的改组可能有助于 SQL Server 识别视图列始终是NOT NULL. 但是,在我的情况下,不可能进行这样的改组,因为在索引视图中不允许ISNULL()聚合函数上的表达式(例如over the SUM()) 。

  1. 有什么方法可以帮助 SQL Server 认识到这一点balance_amount并且transaction_count可以NOT NULL吗?

  2. 如果不是,我是否应该担心这些列被错误地标识为NULL-able?

    我能想到的两个问题是:

    • 映射到余额视图的任何应用程序对象都得到了不正确的余额定义。
    • 在非常有限的情况下,查询优化器无法使用某些优化,因为它不能保证这两列是NOT NULL.

    这些担忧中的任何一个都很重要吗?我还有其他需要注意的问题吗?

sql-server-2008 view
  • 2 个回答
  • 4927 Views
Martin Hope
Nick Chammas
Asked: 2011-08-18 08:18:24 +0800 CST

当作业失败时,如何让 SQL Server 通过电子邮件向我发送错误详细信息?

  • 15

SQL Server 允许您将作业配置为在失败时发送电子邮件警报。这是监控您的工作的一种简单而有效的方法。但是,这些警报不包括任何细节——只是成功或失败通知。

如果作业失败,典型的警报电子邮件将如下所示:

JOB RUN:        'DBA - Consistency Check Databases' was run on 8/14/2011 at 12:00:04 AM
DURATION:       0 hours, 0 minutes, 0 seconds
STATUS:         Failed
MESSAGES:       The job failed.  The Job was invoked by Schedule 2 (Nightly Before 
                Backup 12AM).  The last step to run was step 1 (Check Databases).

要确定失败的原因,您必须导航到 SQL Server Management Studio 中的实例,找到作业并查看其执行历史记录。在大型环境中,必须不断地执行此操作可能会很痛苦。

理想的警报电子邮件会预先包含故障原因,让您直接着手解决问题。

我熟悉这个问题的解决方案。有没有人有这方面的经验?它的缺点是:

  1. 您必须为每项工作添加一个新步骤,并且
  2. 你必须祈祷没有人搞砸警报过程,spDBA_job_notification

有没有人提出更好的解决方案?

sql-server monitoring
  • 4 个回答
  • 17599 Views
Martin Hope
Nick Chammas
Asked: 2011-08-04 10:43:53 +0800 CST

我应该什么时候重建索引?

  • 64

我应该何时重建关系数据库 (SQL Server) 中的索引?

是否有定期重建索引的情况?

sql-server index-maintenance
  • 6 个回答
  • 92344 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • 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