数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

3
我有一台具有70 GB RAM的强大机器。可以创建多少个20 GB的Oracle实例?
我有一台具有70 GB RAM的强大机器。我创建了一个具有20 GB的Oracle实例作为sga_target。sga_target > 10G即使关闭第一个数据库,我也无法创建另一个Oracle实例。如果我设置sga_target >=10G它在启动时给出以下错误: ORA-27104:共享内存的系统定义的限制配置错误 虽然free -m显示虽然有足够的内存可用: total used free shared buffers cached Mem: 72419 34490 37928 0 618 28159 -/+ buffers/cache: 5711 66707 Swap: 2047 0 2047 我需要增加交换空间吗?在这方面的任何指针都受到高度赞赏。 同样对于70 GB的内存,用于创建许多实例,交换空间的最佳价值是什么?是否有某种方法可以计算出来?我的目标是每个实例至少有两个实例,sga_target=20G并且一次只能保持一个实例。如果我在这里缺少任何概念? 输出ipcs -im如下 ------ Shared Memory Limits -------- max number of segments = 4096 max seg size …

4
我真的需要保留.LDF文件吗?
每个月,我们都会制作生产数据库的月末快照。这些月末快照严格用于报告目的,没有任何插入,更新或删除操作。每个快照都有一个.MDF和.LDF文件。 我想删除.LDF文件并释放服务器上的一些空间。有什么原因需要保留.LDF文件? 澄清: 我们的生产数据库每天晚上都从另一个系统的文件提取中重新创建。我们只报告生产数据库,没有更新。 夜间过程:据 我所知... 每天晚上,数据库表都被截断 。表通过一系列批量插入语句填充。 索引被重建

1
SQL * Plus,@和相对路径
某种程度上,似乎似乎SQL * Plus(至少在Windows上)在用调用@@以及路径以单点或双点开头时无法找到具有相对路径的脚本。 例如,在x:\some\where下面,我具有以下目录结构: script.sql main-dir\main-sub-dir call-script.sql script.sql 也就是说:两个,script.sql但位置不同。 script.sql正下方的内容x:\some\where很简单 prompt SCRIPT root 而对方script.sql的内容是 prompt SCRIPT main-dir/main-subdir call-script.sql 读 @@script.sql @ script.sql 预期产量 如果我从中启动SQL * Plus x:\some\where,然后执行 @main-dir/main-sub-dir/call-scripts 输出将是 SCRIPT main-dir/main-subdir SCRIPT root 这是预料之中的,因为该单曲@应该从SQL * Plus的起始位置@@搜索路径,并且应该从包含脚本的目录中搜索路径。 意外的输出 现在,如果我更改为call-scripts.sql: @@./script.sql @ ./script.sql double @@似乎改变了它的行为,因为它从SQL * Plus的起始位置搜索路径,现在输出为 SCRIPT root SCRIPT root 这不是我所期望的。 …

6
开始使用具有真实数据的数据库的最简单方法是什么?
我有一个可以从使用数据库中受益的项目,但是我没有数据库方面的经验,也没有访问服务器的经验,并且处理服务器端事物的经验相对较少。 如果我必须解决学习难题,我宁愿学习具有广泛适用性的内容(例如SQL),但是如果它对我当前正在尝试执行的任务足够强大,则愿意学习Access之类的东西。解决。当然,如果可以帮助的话,我也不想在Access上花150美元,因为我只是在修补。 我已经下载了LibreOffice Base以及名为SQLiteBrowser的文件,但是我想先检查一下,然后再花时间学习那些特定的应用程序及其SQL风格,这些工具是否足以满足我的需求。 我希望能够: 从CSV或Excel导入数据 运行等同于“选择x的查询,其中x就是那个且其中包含那个,而其中任何一个都包含那个” write(?)一个新字段,指示与给定查询匹配的结果 同样,我愿意学习,但是在我专注于学习数据库以及必要时给定应用程序的细节之前不必学习大量有关IT的中级知识将是一件很高兴的事情。

2
Mongo Collection的“大小”比“ storageSize”大*?
我最近使用以下命令压缩了我的收藏集: db.<collectionName>.runCommand( "compact" ) 现在我的收藏大小似乎大于磁盘上的大小! SECONDARY> db.<collectionName>.stats() { "ns" : "<databaseName>.<collectionName>", "count" : 2937359, "size" : 5681676492, # 5.6 GB "avgObjSize" : 1934.2805874256433, "storageSize" : 4292853728, # 4.2 GB "numExtents" : 2, "nindexes" : 2, "lastExtentSize" : 2146426864, "paddingFactor" : 1.669999999836597, "flags" : 1, "totalIndexSize" : 220735648, "indexSizes" : { …
9 mongodb 

5
发生任何RESTORE DATABASE事件后自动执行存储过程
是否有可能让SQL Server 2008 R2 Standard在还原或附加到实例的任何给定数据库中自动执行存储过程? 我已经通过创建服务器级触发器来解决一个问题,该触发器将在DDL事件发生CREATE_DATABASE或ALTER_DATABASE触发后在给定的数据库中执行存储过程。不幸的是,这不适用于数据备份备份还原。 详细地说,我们在还原的每个数据库中都有一个“清理”存储过程,我正在寻找一种方法,可以在将备份还原到实例时自动执行该过程。 Googling向我指出了要在SQL Server中配置“ 审计”或“ 策略”以获得此功能,但是乍一看,这些功能非常强大,因此我无法确定审计还是“警察”是开始调查的途径。

1
快速通用的百分位数计算方法
我想在PostgreSQL中找到未排序列的n> 1个百分位数。例如20、40、60、80和100%。 一个显而易见的解决方案是对列进行计数和排序,然后进行查看,但我希望有一个更好的解决方案。有任何想法吗? PS我已经找到了一个很好的MySQL 解决方案,但无法将其转换为psql

1
sp_executesql的安全含义是什么?
默认情况下,在SQL Server中,[public]角色具有的EXECUTE权限sp_executesql。 但是,我继承了一个数据库服务器,以前的DBA撤消了该数据库服务器的EXECUTE权利sp_executesql。 作为临时的解决方法,我一直在根据需要(通过在master数据库中的角色)授予EXECUTE权限sp_executesql。但是,这开始成为维护难题。 如果我EXECUTE回馈公众,我是否需要了解其他影响?

2
Oracle关闭方法
在执行升级或修补程序之前关闭数据库有几种方法。 shutdown immediate; 要么 shutdown abort; startup restrict; shutdown immediate; 要么 shutdown abort; startup restrict; shutdown; 要么 alter system checkpoint; shutdown abort; startup restrict; shutdown immediate; 当然,还有其他选择。应该首选哪个,为什么?


3
将pgAdmin3连接到Heroku上的Postgres
我正在与Django应用程序一起运行Heroku Postgres数据库(Database)。引用该插件的文档在这里。我认为这对于社区来说是一个值得提出的问题,因为Heroku今天警告其用户,它将从以前默认的共享数据库附件中迁移所有内容。 我在将pgAdmin3连接到数据库时遇到问题。 按照上面的链接中的说明,我使用以下命令获取数据库的凭据: $ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE 我在Mac OSX上使用Postgresql的自制安装。 同时,我有: 在我的pg_postgresql.conf中打开SSL; 添加了设置: listen_addresses = '*' 并添加 host all all 0.0.0.0/0 md5 并重新启动我的postgres服务器。 然后我转到pgAdmin3并选择File > Add Server。 我输入Heroku提供的凭据,如下所示(第一个是Heroku凭据名称,第二个是pgAdmin字段名称): 在“属性”标签中: dbname转换为Name; 主持人 进入港口; 我将“维护数据库”的pgAdmin字段留空; 用户进入用户名; 密码变成密码; 在SSL标签中: 在SSL字段中,我选择“ require”(按照Heroku的指示)。 我按下Enter键,pgAdmin认为,然后引发如下错误: An error has occurred: Error connecting to the server: FATAL: permission …

3
将事务日志文件放在单独的驱动器上是否会对性能产生好处?
有许多博客文章和最佳实践文章赞扬将SQL Server数据文件放在一个硬盘驱动器上并将事务日志放在另一个硬盘驱动器上的优点。给出的原因是,数据库文件将经历随机读写,而事务日志将仅具有顺序写。 但是,如果您有数百个数据库怎么办?将数百个事务日志文件放在单独的磁盘上,是否会对性能产生真正的好处?如果要写入多个事务日志,那么我认为事务日志的写入将与数据库写入的一样随机。

2
使用单个语句更新表中的许多行?
更新表中许多行的最简单方法是什么?我有一个csv文件,看起来像这样: |primary_key |value| | 1 | xyz| | 2 | abc| | 3 | def| ... 目标表中已经存在具有这些主键的行 我想用这些值更新目标表。有没有语法,所以我可以写类似: update mytable set value = ('xyz', 'abc', 'def') where primary key = (1,2,3); 查看《MySQL更新参考》,该站点(MySQL-csv更新),SO(更新多行,多数据库更新,更新多行),我怀疑答案是“否”,但我想确认这一点。是真的。
9 mysql  update  replace 

1
EC2-如何正确备份PostgreSQL数据?
设置如下:1个带有3个附加卷的小型Amazon Linux(EBS支持)EC2实例。这既是Web服务器又是数据库服务器。一卷用于代码,一卷用于PostgreSQL(8.4)数据目录,一卷用于存储PostgreSQL的WAL文件。 (1)具有WAL文件的卷还将具有数据目录的基本备份,该备份将在执行pg_start_backup()之后复制。然后它将存储来自PostgreSQL的连续存档输出(WAL文件)。要对该卷进行快照,是否有必要发出同步并冻结文件系统(如果是XFS,则使用xfs_freeze;如果是EXT4,则使用dmsetup)?还是可以只拍摄实时快照?WAL文件将以每分钟1个的速度发送。在复制单个WAL文件并导致数据损坏时,是否可以启动快照? (2)包含活动PostgreSQL数据目录的卷也将得到备份(每天一次)。在制作该卷的快照之前,我发出pg_dump并将生成的SQL文件保存在数据目录中。采取预防措施以确保实际数据库数据一致是否有意义?假设实时快照可以正确地(a)备份配置文件(postgresql.conf,pg_hba.conf,pg_ident.conf)和(b)备份SQL转储文件是否正确?备份这两个东西,即sql dump文件和config文件,将是对该卷进行快照的重点。数据库不是很大,因此我不介意数据文件将使此快照膨胀。在那种情况下,我可以做一个实时快照-对吗? (2a)将数据目录保留在根卷上,并且有一个备份脚本将sql转储文件和配置文件复制到另一个卷上,并在复制完成后对该卷进行快照是否会更好呢? (3)至于上面带有代码的卷,是否还有一点要同步和冻结文件系统?还是只能拍摄实时快照?此数据应相当“静态”。 (4)这是一个可靠的备份方案吗?根卷不定期备份,因为在设置和配置机器映像后,我只会保留它。 谢谢


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.