我正在将在 AIX Oracle 9.2 安装上创建的 Oracle 转储填充导入到 Windows 2008 R2 x64 上的 Windows Oracle 10.2.0.4。
我想将文件导入一个干净的数据库。但是,如果我不先创建数据库,就没有什么可创建的。如果我创建数据库,它会抛出很多错误,抱怨缺少用户和表空间,即使是 FULL=Y。
如何将此转储导入到干净的 Oracle 安装中?
导出在系统下运行,导入也运行。索引文件不包含导入用户和表空间的语句,但是当我对原始文件运行完整导入时,IMP 尝试创建TABLESPACES(路径不正确,我必须更改,我知道)但是它不会尝试创建用户,只会抱怨他们不存在。
实际的导出命令用户是:
exp <a_User>/<a_Password> FULL=Y FILE=/PATHHERE/oradata/Export/expdat.dmp log=exp`date + %d%m%y.%H%M%S`.log consistent=y
Run Code Online (Sandbox Code Playgroud) 有没有办法备份包含大量表的 PostgreSQL 数据库?
尝试使用pg_dump大约 28000 个表的数据库导致以下错误消息:
pg_dump: WARNING: out of shared memory
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: out of shared memory
HINT: You might need to increase max_locks_per_transaction.
pg_dump: The command was: LOCK TABLE public.link10292 IN ACCESS SHARE MODE
pg_dump: *** aborted because of error
Run Code Online (Sandbox Code Playgroud)
增加到max_locks_per_transaction256 而不是 64 会导致无法启动服务器。
还有什么我可以尝试的吗?(PostgreSQL 9.0,Mac OS X。)
我正在从 PostgreSQL 9.1 转储并在 PostgreSQL 9.4 上恢复并收到此警告
pg_restore: WARNING: column "foobar" has type "unknown"
DETAIL: Proceeding with relation creation anyway.
Run Code Online (Sandbox Code Playgroud)
但是在恢复之后,我可以验证列“foobar”类型是否已定义且正确。
什么可能导致此警告?
我们正在运行 2014 年的 SQL Server。在过去的几年里,服务器每 2-7 天就会无缘无故地生成一次内存转储,锁定大多数进程,并迫使我们重新启动 SQL 服务才能使其运行。
这是错误文件的片段:
Exception Address = 00007FFAD7FCBAA2 Module(combase+000000000003BAA2)
Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION
Access Violation occurred reading address 00000000D8063158
Input Buffer 74 bytes -
Run Code Online (Sandbox Code Playgroud)
还有什么我们应该探索的吗?
或者让 Microsoft 分析.MDMP文件是我们唯一的选择吗?
需要提及的要点:
我们已将其修补到最新的服务包,以及最新的累积和 GDR 更新。没有改变
Microsoft SQL Server 2014 (SP3-CU4-GDR) (KB5014164) - 12.0.6439.10 (X64)
Run Code Online (Sandbox Code Playgroud)
没有与这些内存转储发生时间相关的特定 SQL 语句/存储过程。
SQL 数据库文件在与操作系统不同的硬盘上运行。它是一个 1TB 驱动器,在任何给定时间都有 250GB 可用空间。
该计算机是 Windows Server 2012 R2 虚拟机
CHKDSK在操作系统和数据驱动器上未发现任何错误。
DBCC 检查顺利通过。
OPENQUERY&OPENROWSET功能使用相当频繁,使用最新的ACE&ODBC驱动程序。
如果我查询 sys.dm_server_memory_dumps,这是按日期排列的记录计数:
creation_time …Run Code Online (Sandbox Code Playgroud)PostgreSQL 官方文档指出pg_dump可以使用该--schema=SCHEMA选项有选择地转储给定的模式。
然而,根据相同的文档(请阅读注释--schema=SCHEMA), 所选模式之外的对象的外键将包含在转储中,但不包含它们引用的表。
话虽如此,我想知道如何转储给定的模式,使其包含所有需要的表,无论它们所在的模式如何,并且这是以安全/易于恢复转储的方式完成的。
此外,是否有可用的工具可以做到这一点?
谢谢
我在论坛上使用的表格有问题,人们可以在那里添加他们的产品。
每次用户加载页面时,用户的“在线时间戳”都会更新(PHP 行阻止其每小时更新超过 1 次),这会触发其各自产品的“在线时间戳”也更新(扳机)。用户可以随时添加和编辑产品。这是表定义:
CREATE TABLE products (
id SERIAL PRIMARY KEY,
userid INT NOT NULL REFERENCES users(id),
categoryid INT NOT NULL REFERENCES categories (id),
regionid INT NOT NULL REFERENCES regions(id),
title VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
price DECIMAL(7,2) NOT NULL,
create_timestamp BIGINT NOT NULL,
modify_timestamp BIGINT NOT NULL,
online_timestamp BIGINT NOT NULL
);
CREATE INDEX ON products (categoryid);
CREATE INDEX ON products (userid);
CREATE INDEX ON products (regionid);
Run Code Online (Sandbox Code Playgroud)
大约有 100,000 名用户,大约有 400,000 种产品。由于需要更新“在线时间戳”,该表经常更新(大约每秒 2 次)。
问题是:每周,数据库都变得如此臃肿,以至于我不得不中断网站,将数据库转储到 …
我正在尝试将一个包含 50M 记录的表转储到一个文件中,我的目标是减少执行此操作的时间。我通常使用COPY metrics TO 'metrics.csv' DELIMITER ',' CSV;在最好的情况下这可能需要一个小时。我也有兴趣以某种普通格式导出数据(避免使用pd_dump目录)。
其中一个想法是通过条件或游标以某种方式访问此表,该条件或游标将整个表拆分为相同大小的部分,因此您可以同时执行例如 2 个复制查询,从而将时间减少一半。
例子:
COPY (SELECT * FROM metrics WHERE id < 25000000) TO 'metrics_1.csv' DELIMITER ',' CSV;
COPY (SELECT * FROM metrics WHERE id >= 25000000) TO 'metrics_2.csv' DELIMITER ',' CSV;
Run Code Online (Sandbox Code Playgroud)
在这些条件下创建的部分索引有帮助吗?
有什么想法是实现表的这种部分复制转储的好方法吗?有没有其他解决方案可以更快地转储此表?
Postgresql 11 / 100GB RAM / 20 核。
在与COPYIO 边界进行一些并行化之后,这似乎不是瓶颈。
tsrange 如何以二进制形式存储?
例如创建表
CREATE TABLE public.test (t tsrange);
INSERT INTO test VALUES ('[2010-01-01 14:30, 2010-01-01 15:30)');
INSERT INTO test VALUES ('[2011-01-01 14:31, 2015-11-01 15:30)');
INSERT INTO test VALUES ('[2017-01-01 14:31, 2018-11-01 15:30)');
COPY test TO '/tmp/pgcopy' WITH (FORMAT binary);
COPY test TO '/tmp/pgcopy.csv' WITH (FORMAT csv);
Run Code Online (Sandbox Code Playgroud)
它输出:
cat /tmp/pgcopy.csv
"[""2010-01-01 14:30:00"",""2010-01-01 15:30:00"")"
"[""2011-01-01 14:31:00"",""2015-11-01 15:30:00"")"
"[""2017-01-01 14:31:00"",""2018-11-01 15:30:00"")"
hexdump -C /tmp/pgcopy
00000000 50 47 43 4f 50 59 0a ff 0d 0a 00 00 00 00 00 00 |PGCOPY..........|
00000010 …Run Code Online (Sandbox Code Playgroud) 使用 Microsoft SQL Server,有没有办法备份生产数据库的子集?我只想要数据库结构,以及几个选定表的极少量交易数据。
我想用这个备份文件来刷新开发数据库。
对于 Oracle,我看到这是使用此 Powershell 脚本实现的:
userid="/ as sysdba"
compression=all
directory=TEST_DIR
flashback_time=systimestamp
dumpfile=XX.dmp
logfile=xx.log
schemas=XXXXX
query=SCHEMA.TABLE:"where <condition>
exclude=TABLE:"IN (x)"
Run Code Online (Sandbox Code Playgroud) 我有一个dump.sql包含许多数据库的文件:mydb1、mydb2、mydb3等。
如何只导入mydb3而不导入其他数据库?
惯于:
mysql> create database mydb3;
mysql> use mydb3;
mysql> source /path/to/dump.sql;
Run Code Online (Sandbox Code Playgroud)
导入所有数据库?
dump ×10
postgresql ×6
backup ×2
copy ×2
schema ×2
sql-server ×2
datatypes ×1
date-format ×1
fields ×1
foreign-key ×1
import ×1
mac-os-x ×1
mysql ×1
oracle ×1
restore ×1
windows ×1