我在一堂 SQL 课上,讲师说“DBA 不喜欢用户创建视图,因为他们会破坏表空间”。
显然,我知道任何模式对象都会消耗一些表空间,但是说视图会占用表空间并不是夸大其词,因为您需要存储的只是一个查询(以及权限和一些其他元数据),并且因此,它们不会比普通表中的普通行占用更多的空间?
我需要将新数据文件添加到系统表空间中,因为它的空间不足。由于这是一个生产环境,我是否应该考虑采取任何预防措施?
我尝试运行这个简单的命令:
CREATE TABLESPACE tb_rec
OWNER postgres
LOCATION 'd:/tablespaces';
Run Code Online (Sandbox Code Playgroud)
但是,未创建表空间,我收到以下消息:
ERREUR: n'a pas pu configurer les droits du répertoire « d:/tablespaces » : Permission denied
Run Code Online (Sandbox Code Playgroud)
对于非法语人士:
ERROR: was not able to configure the directory rights « d:/tablespaces » : Permission denied
Run Code Online (Sandbox Code Playgroud)
我没有找到任何 postgres 用户 ( net user) 并且我被困在这个......
如何将目录访问权限授予 postgres?
Windows 7
Postgres 9.2
如何使用 PostgreSQL (9.3) 找出表(或索引)所在的表空间?
在大型表上运行 VACUUM FULL之前,是否可以检查表空间中有多少可用的可重用空间?
我有一个很大的 postgres 表(大约 20G),偶尔会出现 VACUUM FULL 的情况。该驱动器上的可用空间在 15-25 GB 之间变化。在尝试每次真空之前,我都会记录表大小(使用 postgres 查询)和可用磁盘空间(使用操作系统工具)。
我知道 VACUUM FULL 需要对表进行完整复制。因此,如果表为 20G,则需要 20G 的可用空间。
有时表有 20G,只有 15G 操作系统空间可用,真空将起作用。我猜所需的额外 5G 是从表空间内部恢复的。
其他时候,vacuum 会由于空间不足而失败,我猜在这些情况下,表空间中找不到所需的额外 5G。
我希望能够事先检查是否有足够的空间用于 VACUUM FULL,我该怎么做?我知道表有多大,我知道操作系统有多少可用空间,但我不知道表空间中有多少可重复利用的空间。
我们在 Windows 和 Linux 系统上使用 DB2 LUW 10.5 和 11.1,以防它与他的答案相关。
问题:是否有时间使用 4K 而不是 32K 是正确的?如果是这样,为什么?(当它可以使用时它的性能会更好吗?)或者,它只是史前时代的遗留附属物,当时 4K 只是页面大小?
背景:当我创建 DB2 数据库时,我总是只创建 4K、8K、16K 和 32K 表空间和关联的缓冲池。
我的经理在这方面向我提出挑战。(对他有好处 - 我应该知道这一点!)他认为我们应该创建一个 32K 的表空间并完成它。
我找不到任何告诉我的信息,例如,当行大小允许时,我们应该使用 4K 而不是 32K,因为 XYZ。它告诉我,我CAN做到这一点,但不是说/我应该在何时。
我尝试使用以下步骤计算审计日志表的使用情况:
AUD$)测量 dba 段上使用的字节。
select tablespace_name,bytes from dba_segments
where tablespace_name ='SYSTEM'
and SEGMENT_NAME = 'AUD$';
Run Code Online (Sandbox Code Playgroud)重新计算统计数据。
检索统计数据中使用的字节。
select NUM_ROWS * AVG_ROW_LEN as BYTE_USED
from DBA_TABLES where TABLE_NAME = 'AUD$';
Run Code Online (Sandbox Code Playgroud)我从#3 得到的值是#5 的两倍多,为什么分配太多了?
我是一名程序员,被我自己命名为 Wilson 的排球扔到了 DBA/系统管理员岛。我正在努力在这里生存。
我应该为应用程序创建一个数据库。之前运行它的服务器有一个非常相似的应用程序的数据库。我对 Oracle 了解不多,所以我重用了 ZFS 文件系统,并保留了它们的创建方式(因为老实说,我不知道它们为什么这样创建,但我很确定这是有充分理由的) .
app/oradata_smart_ora1 858M 12.2G 858M /oradata/SMART/ora1
app/oradata_smart_ora2 7.18M 18.0G 7.18M /oradata/SMART/ora2
app/oradata_smart_ora3 7.18M 36.0G 7.18M /oradata/SMART/ora3
app/oradata_smart_ora4 60.6K 400G 60.6K /oradata/SMART/ora4
app/oradata_smart_redo1 400M 2.61G 400M /oradata/SMART/redo1
app/oradata_smart_redo2 200M 2.80G 200M /oradata/SMART/redo2
app/oradata_smart_redo3 200M 2.80G 200M /oradata/SMART/redo3
Run Code Online (Sandbox Code Playgroud)
因为我重用了文件系统,所以我创建了我的数据库并将控制文件放在旧数据库文件所在的相同位置(/oradata/SMART/ora1、/oradata/SMART/ora2、/oradata/SMART/ora3)。像 MySQL 一样思考我app/oradata_smart_ora4 60.6K 400G 60.6K /oradata/SMART/ora4专门创建的用于将数据库存储在那里的工作。
数据库启动和安装没有问题。现在是我被困的地方。我读过这个,这个,这个,这个,这个等等,但我仍然有疑问。
请注意,该服务器将在其整个生命周期内管理数百万/数十亿条记录。
对于所有这些问题,我真的很抱歉,但我真的很想在遵循 Oracle 最佳实践的同时正确地做到这一点。如果您需要更多信息来回答您的问题,请告诉我。
据我所知,表空间是表和数据库对象的逻辑集合。它可以由多个数据文件(它们是对象的物理集合)组成。除此之外,表空间还有哪些优点或用例?
在 DB2 中,似乎什么是数据库和什么是表空间之间有很大的区别。在 MySQL 和 MS SQL Server 中,表空间和数据库似乎是同义词。
如果有的话,有什么区别?
tablespaces ×10
oracle ×5
postgresql ×3
db2 ×2
db2-luw ×1
disk-space ×1
performance ×1
schema ×1
statistics ×1
vacuum ×1
view ×1
windows ×1