我有一个启用了身份验证的 mongodb 2.2 数据库。但升级到 2.4 后,我的管理员用户无法登录到管理员数据库以外的任何数据库。我删除了它,system.users
然后创建了另一个管理员用户:
db.addUser( { user: "admin", pwd: "123456", roles: [ "userAdminAnyDatabase" ] } )
但是我再次无法登录到除了 admin 数据库之外的任何数据库。任何人都可以帮忙吗?
我有一个启用了身份验证的 mongodb 2.2 数据库。但升级到 2.4 后,我的管理员用户无法登录到管理员数据库以外的任何数据库。我删除了它,system.users
然后创建了另一个管理员用户:
db.addUser( { user: "admin", pwd: "123456", roles: [ "userAdminAnyDatabase" ] } )
但是我再次无法登录到除了 admin 数据库之外的任何数据库。任何人都可以帮忙吗?
postgresql 文档说:
所有时区感知日期和时间都以 UTC 内部存储。在显示给客户端之前,它们会转换为时区配置参数指定的时区中的本地时间。
时区参数是一个会话参数。当所有TIMESTAMP WITH TIME ZONE
s 都存储为UTC
并且客户端连接将指定会话时区时,那么在 postgresql.conf 中设置 TimeZone 参数有什么好处?
我已经下载了 Oracle XE 11.2.0-1.0 并将其安装在具有 1.5GB 内存和 3GB 交换空间的 CentOS 6.3 虚拟机上。
SYS 和 SYSTEM 设置为密码 123456。我设置了ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe/
和ORACLE_SID=XE
.
我可以使用 SYSTEM 用户使用 SQL Developer 连接到该数据库。但是当我想连接sqlplus
它时说:
ERROR.
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Process ID: 0
Session ID: 0 Serial number: 0
ps -fe | grep pmon
显示了这一点:
oracle 1164 1 0 11:26 ? 00:00:00 xe_pmon_XE
我以 root 用户身份登录,我只输入sqlplus
不带参数的内容,然后它会询问用户名和密码。
任何人都可以帮忙吗?
因为COPY
命令在单个事务中运行,如果它的 WAL 数据不适合wal_buffers
?例如,如果我们从 CSV 文件批量导入。
fsync
和 和有什么不一样synchronous_commit
?我阅读了文档,我唯一理解的是他们都试图将更新物理写入磁盘。
我对 PostgreSQL 文档中的 checkpoint_segments 定义有点困惑。达到 checkpoint_segments 时会发生什么?
我在 postgresql 数据库上有一个 python 脚本,它从 sql server 数据库中获取记录,并在经过一些过滤后将其插入到 postgresql DB 中。该作业cron
每两分钟运行一次。我想知道什么时候有维护工作,比如autovacuum
正在运行,如果运行忘记获取记录。是否可以在python中检测?
MongoDB文档建议:
排序列必须是索引中使用的最后一列
这是示例:
db.foo.ensureIndex({a: 1, b: 1, c: 1})
好的:
find(a=1).sort(a)
find(a=1).sort(b)
find(a=1, b=2).sort(c)
坏的:
find(a=1).sort(c)
even though c is the last column used in the index, a is that last column used, so you can only sort on a or b.
有人可以解释一下吗?为什么find(a=1).sort(c)
被认为是坏的?
MongoDB中是否有类似表分区的语义?我的数据并不需要分片。但是几个月后数据并不重要(但并非完全无用)。
我想备份大量记录并删除它们,但我没有对数据库服务器的完全访问权限,所以我无法在服务器上运行我的脚本。因为我需要提交作业(REINDEX
例如)然后关闭计算机需要很长时间。有可能做这样的事情吗?
我写了一个脚本来备份一个 postgresql 使用COPY
然后删除这些记录。我pg_relation_size
在删除之前和之后都使用过。
但两者都pg_relation_size
显示相同的结果。这是否意味着VACUUM ANALYZE
没有帮助?
n_live_tup
和n_dead_tup
在pg_stat_user_tables
or中是什么意思pgstattuple
?
我想在 bash 中使用 psql 返回的值。这是脚本:
psql "connection parameters" -c "SELECT pg_database_size('dbname');"
输出是这样的:
pg_database_size
------------------
5773072
(1 row)
但我只想要它,5773072
所以我可以在日志记录中使用它。任何人都可以帮忙吗?
我想编写一个脚本来使用COPY
.
psql "connection parameters" -c "COPY (SELECT * FROM tbl WHERE insertion_date > 'date') TO STDOUT WITH CSV HEADER;" | bzip2 -c > backup.csv.bz2
现在我想记录有多少行被复制到 zip 文件中?我想在复制时计算它,而不是用另一个命令。
REINDEX
我为数据库中的索引编写了一个脚本。这是其中之一:
echo -e "\nreindex for unq_vbvdata_vehicle started at: `date "+%F %T"`" >> ${LOG_FILE}
psql -U ${USERNAME} -h ${HOSTNAME} -d ${DBNAME} -c "REINDEX INDEX scm_main.unq_vbvdata_vehicle;"
if [[ ${?} -eq 0 ]]; then
echo "reindex for unq_vbvdata_vehicle finished at: `date "+%F %T"`" >> ${LOG_FILE}
else
echo "reindex for unq_vbvdata_vehicle failed" >> ${LOG_FILE}
exit 1
fi
问题是我无法在独立模式下运行此脚本。psql
每次运行都提示密码。还有两个限制:
我无法在没有密码的数据库上创建用户。
因为REINDEX
锁表,我应该sleep <num>
在 each 之间使用REINDEX
。
有没有自动解决方案?
我对 PostgreSQL 中的表空间感到困惑。它像LVM吗?我的意思是当磁盘已满时,我们可以添加另一个磁盘,然后格式化CREATE TABLESPACE tblspace LOCATION /media/disk2/data
吗?够了吗?或者我们应该手动使用ALTER
数据库、表或索引来利用它?