我有一个aarons_db在 ubuntu linux 中命名的 postgres 数据库。pnt我正在尝试删除名为inside的表aarons_db。为此,我使用以下命令:
DROP TABLE pnt
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎并没有删除表。我最好的猜测是我没有正确配置某种管理员权限。下面显示了数据库以及用于尝试删除表的命令。
是什么阻止我掉落桌子pnt?
这里有一个类似的问题,尽管用户遇到了缓存错误,但在我的情况下没有发生。
对于存储在 PostgreSQL 9.5 数据库中的敏感信息的系统,必须安全地删除存储在表中的数据被删除(就像shred文件一样),并且即使特定数据集不会被删除,系统也是持久的,我正在尝试找出在删除表时安全删除基础数据文件的选项。
作为背景,我不是 DBA,但我是许多语言、上下文和数据库方面的经验丰富的实施者。我已经看过了,但一直没能找到一种方法来要求 PostgreSQLshred在表被DROPped时将它们释放到操作系统之前做相当于ding 其底层文件的工作。是否有内置方法可以要求 PostgreSQL 执行此操作?(我可能只是没有找到正确的东西 - 如果我错过了什么,我很抱歉,我很乐意接受滥用以及相关文档的链接)
我们正在查看的部分答案是在删除表之前手动粉碎给定关系及其索引的底层数据文件,但这不是那么优雅,我不确定它是否从表中获取所有信息我们需要删除。
我们还在研究粉碎数据磁盘上可用空间的策略 - 要么运行实用程序来执行此操作,要么定期复制数据卷,交换副本的结果,然后粉碎作为源的整个卷,以便其“可用”空间在此过程中被安全地覆盖。
我们错过了什么吗?还有其他我们没有找到的选择吗?如果我们必须手动清理,除了数据库文件夹中给定表的关系文件及其所有相关索引之外,还有其他地方需要粉碎数据吗?任何帮助或建议将不胜感激。
我目前有一个程序,通过创建临时表、填充表,然后将该数据合并到主表中来插入数据库。然后放下桌子并重新做一遍。我想知道如果我只是截断而不是删除和创建,速度差异是多少。
运行 SQL Server Standard 2016 SP2-CU1。我不太关心内存文件组,但我必须能够删除表对象?或者可能重命名它们?
跑步:
DROP TABLE [REF].[Work_xxyyzz]
Run Code Online (Sandbox Code Playgroud)
给出:
消息 12332,级别 16,状态 111,第 1 行
内存优化表不支持 DDL 语句 CREATE、ALTER 和 DROP 上的数据库和服务器触发器。
我的内存表上没有用户触发器或事件。5 个带主键的简单表。
这些表没有依赖关系或引用。它们就像临时表,我们将它们命名为Work_xxxyyzz表。但是,它们确实属于数据库模式。
我可以暂时保留文件组。我想删除这些表以创建同名的默认对象。
sql-server memory-optimized-tables drop-table sql-server-2016
下面是我们在一个有几十亿条记录的表上运行的一些 T-SQL 命令。像这样的 5 个表占用了数据库的大部分大小。在不引起任何问题的情况下执行这些步骤的最快方法是什么?仅运行第一个命令就需要一个多小时。删除整个表并重新创建它会更容易吗?或者,对于这么多数据,这是不可能和安全的吗?谁能想到任何其他想法来加快速度?我们只是试图截断数据,然后在我们的 ETL 过程中从头开始重建表。
DROP INDEX [OF_IDX_ClusteredConcept] ON [dbo].[OBS_FACT] WITH ( ONLINE = OFF )
ALTER TABLE OBS_FACT DROP CONSTRAINT OBS_FACT_PK
ALTER INDEX ALL ON OBS_FACT disable;
-- add new data to OBS_FACT table via ETL process
ALTER TABLE [dbo].[OBS_FACT] ADD CONSTRAINT [OBS_FACT_PK] PRIMARY KEY NONCLUSTERED
(
[ENCOUNTER_NUM] ASC,
[CONCEPT_CD] ASC,
[PROVIDER_ID] ASC,
[START_DATE] ASC,
[MODIFIER_CD] ASC,
[INSTANCE_NUM] ASC
) ON [PRIMARY]
CREATE CLUSTERED INDEX [OF_IDX_ClusteredConcept] ON [dbo].[OBS_FACT]
(
[CONCEPT_CD] ASC
);
-- REBUILD indexes on OBSERVATION_FACT …Run Code Online (Sandbox Code Playgroud) 我读到只有所有者可以删除表,其他用户不能这样做。
我用所有者创建了一个表,postgres然后将它作为另一个用户删除。我应该撤销哪些特权来禁止它?
用户在 db 属性中拥有默认授予的所有权限,但我没有看到任何“创建表”或“删除表”权限。
drop-table ×6
postgresql ×4
security ×2
sql-server ×2
benchmark ×1
index ×1
permissions ×1
pgadmin ×1
psql ×1
t-sql ×1
truncate ×1