我们目前正在将 Oracle 数据库 10gR2 迁移到 Postgresql 数据库 9.3。多亏了 Hibernate,所有表都可以无缝地重新创建。
但是,Oracle 数据库非常庞大。我们将编写一个小工具,将数据从一个数据库传送到另一个数据库。
我们想用某种第三方数据库比较器检查迁移的质量。
您知道可以比较 Oracle 数据库和 Postgresql 数据库(模式 + 数据)的工具吗?
我们目前正在将 Oracle 数据库 10gR2 迁移到 Postgresql 数据库 9.3。多亏了 Hibernate,所有表都可以无缝地重新创建。
但是,Oracle 数据库非常庞大。我们将编写一个小工具,将数据从一个数据库传送到另一个数据库。
我们想用某种第三方数据库比较器检查迁移的质量。
您知道可以比较 Oracle 数据库和 Postgresql 数据库(模式 + 数据)的工具吗?
我尝试运行这个简单的命令:
CREATE TABLESPACE tb_rec
OWNER postgres
LOCATION 'd:/tablespaces';
但是,未创建表空间,我收到以下消息:
ERREUR: n'a pas pu configurer les droits du répertoire « d:/tablespaces » : Permission denied
对于非法语人士:
ERROR: was not able to configure the directory rights « d:/tablespaces » : Permission denied
我没有找到任何 postgres 用户(net user
),我被困在这个...
如何将目录访问权限授予 postgres?
视窗 7
Postgres 9.2
我正在维护一个使用 SQL Server 8.0.760 SP3 运行的应用程序。
当我尝试“查看”我登录的当前用户的权限时,我会这样做:
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
但是,服务器返回此错误消息:
Msg 208, Level 16, State 1, Line 1
Invalid object name 'fn_my_permissions'.
如果我尝试以下查询:SELECT * FROM dbo.fn_my_permissions(NULL, 'SERVER');
,我会收到相同的错误消息。
如何列出所有当前用户权限?
Postgresql 文档在这一点上很清楚:您不能更改现有视图的列。
新查询必须生成与现有视图查询相同的列(即,相同的列名以相同的顺序和相同的数据类型)(...)
参考:http ://www.postgresql.org/docs/9.3/static/sql-createview.html
为什么我必须放弃视图或更改它来修改它?
我想知道是否有可能允许客户端 A 在视图中“查看”某些数据,同时允许任何其他客户端(即 B 和 C)从同一视图查看所有数据。
A、B 和 C 之间的区别将取决于它们的 IP 地址。
我有一个 Postgresql 9.2 数据库。在此数据库上创建了两个用户。当我以超级用户身份执行以下查询时,我可以看到所有内容。
select * from pg_stat_activity
但是,是否可以在不以超级用户身份连接的情况下获得相同的结果?
我应该授予/创建哪个特权/角色以获得超级用户可以看到的结果?
以下查询由使用两个不同用户登录的两个线程同时执行:
WITH raw_stat AS (
SELECT
host(client_addr) as client_addr,
pid ,
usename
FROM pg_stat_activity
WHERE usename = current_user
)
INSERT INTO my_stat(id, client_addr, pid, usename)
SELECT nextval('mystat_sequence'), t.client_addr, t.pid, t.usename
FROM (
SELECT client_addr, pid, usename
FROM raw_stat s
WHERE
NOT EXISTS (
SELECT NULL
FROM my_stat u
WHERE current_date = u.creation
AND s.pid = u.pid
AND s.client_addr = u.client_addr
AND s.usename = u.usename
)
) t;
有时,我会收到以下错误:
tuple concurrently updated
我无法弄清楚引发此错误的原因以及引发此错误的原因。你能发光吗?
这是表 my_stat 的 sql 定义。
CREATE TABLE my_stat
(
id bigint NOT NULL,
creation date NOT NULL DEFAULT current_date,
client_addr text NOT NULL,
pid integer NOT NULL,
usename name NOT NULL,
CONSTRAINT mystat_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
我想定期调用一个存储过程。在 Oracle 上,我会为此创建一个工作。我发现 Postgresql 可以通过使用外部工具(cron 等)和 PgAgent 很好地模仿这一点。
您知道不涉及外部工具的“内部”替代方案吗?
~/.pgpass
)。Postgresql 8.3
Linux RedHat 64 位
客户端连接到我们的 PostgreSQL 8.3 数据库,但保持连接打开。是否可以将 PostgreSQL 配置为在一定数量的不活动后关闭这些连接?