我有创建 Oracle 数据库的作业。
所以要求允许 6 名员工进入数据库。
考虑到 Oracle 也需要一些,在为 6 名员工创建数据库时我应该投入多少个进程?
我假设每个员工需要打开 10 个会话,这意味着 10*6 =60 个进程
我应该为 Oracle 数据库设置多少个是否足以为 Oracle 设置 240 个进程所以总数应该是 300 个进程?
谢谢。
我有创建 Oracle 数据库的作业。
所以要求允许 6 名员工进入数据库。
考虑到 Oracle 也需要一些,在为 6 名员工创建数据库时我应该投入多少个进程?
我假设每个员工需要打开 10 个会话,这意味着 10*6 =60 个进程
我应该为 Oracle 数据库设置多少个是否足以为 Oracle 设置 240 个进程所以总数应该是 300 个进程?
谢谢。
我用这个脚本创建了一个数据库、角色和模式:
-- -----------------------------------------------------------------------------
-- set variables ---------------------------------------------------------------
-- -----------------------------------------------------------------------------
\set dbname keycloak
\set schemaname :dbname
\set rolename :dbname
-- -----------------------------------------------------------------------------
-- create ROLE and Database ----------------------------------------------------
-- -----------------------------------------------------------------------------
CREATE ROLE :rolename WITH LOGIN ;
CREATE DATABASE :dbname WITH OWNER :rolename ;
-- -----------------------------------------------------------------------------
-- connect to DB, create SCHEMA & set privileges -------------------------------
-- -----------------------------------------------------------------------------
\c :dbname
REVOKE ALL ON SCHEMA public FROM PUBLIC ;
CREATE SCHEMA :schemaname AUTHORIZATION :rolename ;
ALTER ROLE :rolename SET search_path=:schemaname ;
GRANT ALL ON ALL TABLES IN SCHEMA :schemaname TO :rolename ;
REVOKE ALL ON DATABASE :dbname FROM PUBLIC ;
这一切似乎都适用于keycloak
ROLE 可以在keycloak
数据库上执行的操作。
现在我想将 SELECT 授予keycloak_reader
该 SCHEMA keycloak 内所有表上的角色。此外,该角色应该授予其他角色(应该继承那些 SELECT 能力 [理想情况下包括 search_path])。
我试过
GRANT CONNECT ON DATABASE keycloak TO keycloak_reader ;
\c keycloak
GRANT SELECT ON ALL TABLES IN SCHEMA keycloak TO keycloak_reader ;
ALTER ROLE keycloak SET search_path=keyckloak ;
我可以连接,但无法选择任何内容(权限被拒绝)。既不作为keycloak_reader
,也不作为组成员的任何角色keycloak_reader
。
我究竟做错了什么?
我的增量物化视图刷新开始变得越来越慢。每天都有数百万条新记录。所以mv日志表上有很多删除。经过调查,我发现一个特定的 sql 花费了大量时间,这可能会导致根本原因。以下是作为 mv 刷新的一部分运行的 SQL 之一:
SQL> select dmltype$$, max(snaptime$$) from "S"."MLOG$_TABLE_202210" group by dmltype$$;
no rows selected
Elapsed: 00:00:12.68
Statistics
----------------------------------------------------------
7 recursive calls
0 db block gets
678822 consistent gets
678789 physical reads
0 redo size
438 bytes sent via SQL*Net to client
41 bytes received via SQL*Net from client
1 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
0 rows processed
正如您所看到的,对这个空 mv 日志表的计数花费了 12 秒!(我们有很多这样的)。原因是物理读取量较高。统计数据的目的是锁定的(就预言机推荐而言)
SQL> select NUM_ROWS,BLOCKS,EMPTY_BLOCKS,AVG_SPACE_FREELIST_BLOCKS,LAST_ANALYZED,STATTYPE_LOCKED,STALE_STATS
from dba_tab_statistics
where table_name='MLOG$_TABLE_202210';
NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_SPACE_FREELIST_BLOCKS LAST_ANAL STATT STALE_S
---------- ---------- ------------ ------------------------- --------- ----- -------
0 0 0 0 14-NOV-22 ALL YES
SQL> SELECT EXTENTS, blocks, bytes
FROM dba_segments
WHERE SEGMENT_NAME = 'MLOG$_TABLE_202210';
EXTENTS BLOCKS BYTES
---------- ---------- ----------
18 384 3145728
因此,如果表不在 SGA 中,它会遍历所有由于多次删除而导致 HWM 较高的块。因为这都是 mv 刷新 - 如果我运行 truncate 它会破坏 MV。
我将不胜感激一些其他建议。
这是我的目录的内容Databases
:
total 201M
drwxr-xr-x 23 systemd-coredump systemd-coredump 4.0K May 27 02:07 .
drwxr-xr-x 9 root root 4.0K Jun 1 10:20 ..
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 12 16:31 Accounts
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 12 16:31 Aggregates
-rw-rw---- 1 systemd-coredump systemd-coredump 17M May 31 07:03 aria_log.00000001
-rw-rw---- 1 systemd-coredump systemd-coredump 52 May 31 07:03 aria_log_control
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 12 16:31 Blog
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 12 16:31 Configuration
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 26 10:07 Contacts
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 26 10:11 Contents
-rw-r--r-- 1 systemd-coredump systemd-coredump 509 Feb 26 10:11 db.sultanimmubin.ir.conf
-rw-rw---- 1 systemd-coredump systemd-coredump 9 May 21 02:05 ddl_recovery-backup.log
-rw-rw---- 1 systemd-coredump systemd-coredump 9 May 27 02:06 ddl_recovery.log
-rw-r--r-- 1 systemd-coredump systemd-coredump 1.2K Feb 26 10:11 docker-compose.yml
drwx------ 2 systemd-coredump systemd-coredump 4.0K Apr 12 14:54 Entities
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 12 16:31 Forms
drwx------ 2 systemd-coredump systemd-coredump 4.0K Apr 12 14:51 Galleries
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 26 10:06 Geo
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 12 16:31 Globalization
-rw-rw---- 1 systemd-coredump systemd-coredump 7.6K May 27 02:01 ib_buffer_pool
-rw-rw---- 1 systemd-coredump systemd-coredump 76M May 27 02:01 ibdata1
-rw-rw---- 1 systemd-coredump systemd-coredump 96M May 31 07:05 ib_logfile0
-rw-rw---- 1 systemd-coredump systemd-coredump 12M May 27 02:07 ibtmp1
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 26 10:08 Media
-rw-rw---- 1 systemd-coredump systemd-coredump 0 Feb 26 09:57 multi-master.info
drwx------ 2 systemd-coredump systemd-coredump 4.0K Feb 26 09:57 mysql
-rw-r--r-- 1 systemd-coredump systemd-coredump 15 Feb 26 09:57 mysql_upgrade_info
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 12 16:31 Navigation
drwx------ 2 systemd-coredump systemd-coredump 4.0K Feb 26 09:56 performance_schema
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 12 16:31 Seo
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 12 16:31 Social
drwx------ 2 systemd-coredump systemd-coredump 12K Feb 26 09:56 sys
drwx------ 2 systemd-coredump systemd-coredump 4.0K May 12 16:35 Taxonomy
正如你所看到的,任何以大写开头的目录都是我自己的数据库。我根本不关心日志,只要它们已经插入到相应的表中即可。而且我根本不关心 MariaDB 的基础设施。
我想使用基于文件的备份计划来备份文件。它是一个使用azcopy
Microsoft Azure 将目录和文件放入云中的脚本。
然而,对于一个少于 1000 条记录的简单服务器,它会消耗 200 MB。
除了数据库目录之外,我还应该在云中备份哪些文件以便稍后恢复?
更新
我要求这样做的原因是云成本。我们有一个程序可以将很多文件备份到云端,对于数据库来说,它备份整个Databases
目录。这导致我们的账单急剧增加。因为我们是一家网页设计机构,我们有数百个客户,如果我们计算的话,我们每晚都会上传数十GB的数据用于数据库备份。
我目前正在考虑使用 Ola Hallengren 的索引维护解决方案来每天更新一次统计信息。如果数据库将 AUTO_UPDATE_STATISTICS 设置为开,此解决方案有什么好处?
我在 SQL Server 2016 上。
我想使用类似的方式更改数字和货币格式:
SET lc_numeric='en_AU.UTF-8'
SET lc_money='en_AU.UTF-8'
我尝试了多种格式,比如荷兰语,但没有任何效果。看来我的操作系统上没有该语言环境。
我可以获得 PostgreSQL 中可用语言环境的列表吗?我在网上找不到任何东西。
我最近有几个实例被迫不正常地关闭我的 PostgreSQL 13.10 数据库,然后需要几个小时才能恢复。
在这两种情况下,strace 都显示该进程正在执行的操作是stat
-ing(也许lstat
,我忘记了),然后unlink
从base/pgsql_tmp
. 这花了几个小时,因为那里有数千万个文件(这本身很不寻常,但可能只是导致不正常关机的问题的症状)。
我的问题是:它只是盲目地删除所有临时文件,还是在恢复过程中使用其中的一些临时文件?如果只是盲目地删除它们,我想我可以通过更快地删除它们来缩短恢复时间(例如,将整个目录移到一边,为服务器提供一个新目录,然后在空闲时将其删除)。
当然,弄乱数据目录的内部总是很麻烦,但我也有定期的磁盘快照,所以即使在最坏的情况下也只有一天左右的数据丢失。考虑到这一点,将停机时间从几小时缩短到几分钟似乎值得冒一点风险。
你能帮我理解一下,时间窗口是如何在TWCS中定义的吗
例如
我正在将compaction_window_size属性更新为1 天
起点和终点是什么时候?
每天 00:00 还是我设置compaction_window_size 的时间?
您是否遇到过这样的情况,即您为避免多个主要压缩同时运行而安排的时间窗口?
让我们有一个表:
用户名 | 条款 |
---|---|
usr1 | [v1,v2] |
usr1 | [v3] |
usr1 | [v1] |
usr2 | [v1] |
usr2 | [v2] |
并假设我们在其上创建一个多列 GIN 索引。
CREATE INDEX my_gin_ix ON items USING gin (usr,terms);
键的 B 树会是什么样子?
从文档(和postgres repo)我看到每个 B-Tree 节点都应该有一个列标识符和一个从字段中提取的键(每个字段可以产生多个键),但我找不到任何例子来阐明是否同一行的各个列最终成为彼此的“子树”,或者它们是否被索引为独立值。
换句话说,如果我运行查询,usr = 'usr1' AND terms @> array['v1']
数据库将:
A。找到usr1
然后在其子树中找到一个节点,v1
该节点将产生一个发布列表或
b. 查找usr1
和关联的发布列表,然后分别搜索v1
并获取关联的发布列表,然后计算两个发布列表的交集?
我刚刚开始分区,并且发现了很多关于如何设置和管理滑动窗口分区的好博客(我选择关注的博客位于SQL Shack和MSSQLTips)。这两个 how-to 的说明都非常清楚,但是它们都没有讨论在添加新分区、文件组和文件时如何管理添加到数据库的空数据文件。
我对将空的数据库文件留在周围感到疑虑(对我来说,这只是马虎),所以我想到建立固定数量的数据文件进行分区(12 个,每个日历月一个)并重新使用这些文件。例如,数据库文件不是名为“MyData_2023_02”,而是名为“MyData_Month02”或类似名称。但是,我不确定如何为新分区“回收”数据库文件(同样,我对分区很陌生)。
有人可以指出我正确的方向吗:
我宁愿从一开始就学习正确/适当/更好的方法来处理分区,而不是以后必须忘记并重新学习。
编辑:根据 Dan Guzman 的解决方案,我尝试为我的分区使用单个文件和单个文件组。没那么顺利:
ALTER DATABASE MY_DW
ADD FILEGROUP FG_PriceFiles_Sliding_Window
CREATE PARTITION FUNCTION [PF_PriceFiles_MonthlyPartition] (date)
AS RANGE RIGHT FOR VALUES
('2019-07-01', '2019-08-01', '2019-09-01', '2019-10-01', '2019-11-01', '2019-12-01')
GO
CREATE PARTITION SCHEME PS_PriceFiles_MonthlyPartition
AS PARTITION PF_PriceFiles_MonthlyPartition
TO ('FG_PriceFiles_Sliding_Window', 'Primary')
Msg 7707, Level 16, State 1, Line 9
The associated partition function 'PF_PriceFiles_MonthlyPartition' generates more partitions than there are file groups mentioned in the scheme 'PS_PriceFiles_MonthlyPartition'.