标签: linux

Oracle 12c 上的“ORA-00059:超出最大文件数”

我有一个测试数据库。每天晚上,脚本都会删除并重新创建一些用于我们的自动化测试运行的可插拔数据库。最近,我开始在 create pluggable database 命令上收到“ORA-00059:超出最大文件数”错误。我一定遗漏了一些东西,因为据我所知,我还没有达到最大值(这个脚本在一个月前就开始工作了)。

SQL> select value from v$parameter where name = 'db_files';

VALUE
-----------------------------------------------------------

200

SQL> select count(*) from v$datafile;

  COUNT(*)
----------
        24

SQL> create pluggable database testdb FROM DB_SEED
  2    FILE_NAME_CONVERT = ('/home/ora12c1/app/ora12c1/oradata/ora12c1/testdb_seed/', '/home/ora12c1/app/ora12c1/oradata/ora12c1/testdb/')
  3    PATH_PREFIX = '/home/ora12c1/app/ora12c1/oradata/ora12c1/testdb';
create pluggable database testdb FROM DB_SEED
*
ERROR at line 1:
ORA-00059: maximum number of DB_FILES exceeded
Run Code Online (Sandbox Code Playgroud)

看起来以下解决了问题:Bug 18522516 12.1.0.1.4(2014 年 7 月)数据库补丁集更新 (PSU)

但是,请注意,在创建新的可插拔数据库之前,我必须重新启动数据库。因为,我执行了我在文档中看到的所有步骤:

使用 opatch apply 应用补丁启动/打开所有 pdbs 运行 datapatch -verbose

然后我不得不退回数据库来解决我的问题。

oracle linux oracle-12c

5
推荐指数
1
解决办法
1347
查看次数

超线程和 MySQL InnoDB 线程并发性能

我有一个具有以下规格的专用数据库服务器”

  • Ubuntu 12.04 LTS 服务器
  • 英特尔(R) 至强(R) CPU X5670
    • @ 2.93GHz
    • 12核
  • MySQL 5.5.29
  • 64 GB 内存
  • RAID10

我们目前正在做超线程,所以我们有 24 个逻辑核心。目前在 2k-4k 事务/秒之间运行。

我已经设置了以下内容:

  • innodb_thread_concurrency = 48
  • innodb_read_io_threads = 24
  • innodb_write_io_threads = 24

这是严格的 OLTP 负载(70% 读取)。查询速度相对较快(毫秒)。查询缓存已开启但未使用过多。临时磁盘表不经常创建。InnoDB 缓冲池设置为 48GB,几乎涵盖了整个数据集(60GB 数据+索引)。

  • 事务负载将翻倍至 4k-8k 事务/秒。目前 CPU 负载约为 1000%,所以我预计这将是瓶颈。

如何更好地调整 CPU 线程以及 MySQL 如何使用这些线程?让我知道是否有人对innodb_thread_concurrency.

我将不胜感激任何建议。


更新

innodb_thread_concurrency = 48到更新后:

  • innodb_thread_concurrency = 0

在高峰时间(4-5k 事务/秒)的生产系统上查看行为,这是我观察到的:

  • 负载平均增加
  • mysqld 进程 CPU 使用率从 400% - 1000% 上升到 400% - 1400%
  • 大约 4-10 个 …

mysql innodb performance linux mysql-5.5 performance-tuning

5
推荐指数
1
解决办法
3万
查看次数

在一台双启动机器上共享 PostgreSQL 数据库而不会重复(跨平台)

我在双引导机器上安装了 PostgreSQL 9.4(在 Win 7 和 Ubuntu 14.10 上)。这两个系统共享一个驱动器(NTFS 格式),其中包含一个在 Windows 下创建的 PSQL 数据库目录。显然,PSQL 安装是特定于系统的,而且它们也恰好位于不同的分区上。该驱动器在 Linux 下自动挂载,并授予完全读/写/执行权限。

我想知道是否可以在两个系统之间共享结构和数据,而无需在每次加载新操作系统时复制和/或复制所有内容。实际上,我希望所有数据在 Windows 中创建时都可用于 Ubuntu,反之亦然。

这是可能的,如果是这样,假设所有数据最初是在 Windows 下生成的,如何从 Linux 设置它?

编辑:我尝试运行:

sudo pg_dropcluster --stop 9.4 main
Run Code Online (Sandbox Code Playgroud)

其次是

sudo pg_createcluster -d /db_from_windows_path 9.4 main
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但是当再次启动服务器时,我得到:

sudo /etc/init.d/postgresql start 
 * Starting PostgreSQL 9.4 database server
 * Error: could not exec /usr/lib/postgresql/9.4/bin/pg_ctl /usr/lib/postgresql/9.4/bin/pg_ctl start -D /db_from_windows_path -s -o  -c config_file="/etc/postgresql/9.4/main/postgresql.conf" :
 [fail]
Run Code Online (Sandbox Code Playgroud)

它看起来非常神秘,特别是因为它/var/log/postgresql/postgresql-9.4-main.log是完全空的,/var/log/postgresql/目录的其余部分也是如此

编辑 2:经过一番观察,我注意到 chown 没有被占用,因为 NTFS 系统显然只能在安装时设置。在修复 /etc/fstab 以将所有权授予 postgres 后, …

postgresql windows linux

5
推荐指数
1
解决办法
1391
查看次数

grastate.dat 与 seqno -1 在一个健康的集群上。为什么?

我们使用这些版本:

# rpm -qa | egrep '(galera|maria)'
mariadb-libs-5.5.41-2.el7_0.x86_64
mariadb-galera-common-5.5.40-6.el7ost.x86_64
mariadb-galera-server-5.5.40-6.el7ost.x86_64
mariadb-5.5.41-2.el7_0.x86_64
galera-25.3.5-6.el7ost.x86_64
Run Code Online (Sandbox Code Playgroud)

那是我们的grastate.dat

# cat /var/lib/mysql/data/grastate.dat
# GALERA saved state
version: 2.1
uuid:    e7ead849-f2a3-11e4-bfda-7f651f709ee3
seqno:   -1
cert_index:
Run Code Online (Sandbox Code Playgroud)

seqno: -1 外观腥。在其他集群上有一个数字。我不知道为什么。根据文档,这似乎“崩溃了”。-1 是在停电之后。但是这个集群是健康的。

修改时间很早

# stat /var/lib/mysql/data/grastate.dat
  File: â/var/lib/mysql/data/grastate.datâ
  Size: 104             Blocks: 8          IO Block: 4096   regular file
Device: fd09h/64777d    Inode: 108         Links: 1
Access: (0660/-rw-rw----)  Uid: ( 1000/   mysql)   Gid: ( 1000/   mysql)
Context: system_u:object_r:mysqld_db_t:s0
Access: 2015-07-29 14:51:25.170699518 +0200
Modify: 2015-06-02 11:50:21.564360655 +0200
Change: 2015-06-02 11:50:21.564360655 +0200
 Birth: -
Run Code Online (Sandbox Code Playgroud)

来自日志(没有错误,只有信息和警告): …

mariadb linux clustering galera

5
推荐指数
1
解决办法
1万
查看次数

PostgreSQL 的文件系统调优

我想在 Ubuntu 14.04 工作站中安装 PostgreSQL 9.x 版本,我正在寻找有关如何设置它的建议,以便

  • 获得良好的读写(50/50 平衡)性能

  • 保持整体常规系统使用的体面性能。

我的想法是在 SSD 驱动器中有两个主要分区:

  • [A] 带有操作系统推荐/默认设置的根系统(“/”)的 ext4。

  • [B] 一个用于 postgres 数据库文件(“/var/lib/pgsql”)的 ext4,具有大块大小(例如 1MB)和大预读大小(多少?)和适当的标志(哪个?)。

我不知道将 postgres db 文件与一般系统分开是否是一个好主意。在这种情况下,关于 [B] 块大小、预读大小、文件系统标志的任何建议?

此外任何有用的提示?

postgresql performance linux ubuntu postgresql-performance

5
推荐指数
1
解决办法
9144
查看次数

Windows 到 DB2 连接:发生连接授权失败。原因:本地安全服务不可重试错误

Error creating SQL Model Connection connection to TSMDB1. (Error: [jcc][t4][2010][11246][3.68.61] Connection authorization failure occurred.  Reason: Local security service non-retryable error. ERRORCODE=-4214, SQLSTATE=28000)
[jcc][t4][2010][11246][3.68.61] Connection authorization failure occurred.  Reason: Local security service non-retryable error. ERRORCODE=-4214, SQLSTATE=28000
Error creating JDBC Connection connection to TSMDB1. (Error: [jcc][t4][2010][11246][3.68.61] Connection authorization failure occurred.  Reason: Local security service non-retryable error. ERRORCODE=-4214, SQLSTATE=28000)
[jcc][t4][2010][11246][3.68.61] Connection authorization failure occurred.  Reason: Local security service non-retryable error. ERRORCODE=-4214, SQLSTATE=28000
Run Code Online (Sandbox Code Playgroud)

一直试图弄清楚为什么我无法远程连接到 DB2 服务器。

  • Linux USER 有权在本地连接/查询 DB2 数据库
  • Windows USER 有权在本地连接/查询 …

db2 windows linux remote db2-10.5

5
推荐指数
1
解决办法
5228
查看次数

导出为与 SQL Server 兼容的格式

我需要以可以导入 Microsoft SQL Server 数据库的格式提供数据;但是,我没有 Windows 或无法访问 SQL Server 实例。

数据目前位于多个 CSV 电子表格中。我查看了BULK INSERT但发现他们对 CSV 的支持非常有限,例如无法识别双引号(文档:指定字段和行终止符)。我读过不支持边缘情况,例如字段恰好包含引号(因此需要转义)。

是否有更可靠的中间格式可以从 Linux/OSX 生成?例如 MySQL 转储、Excel、Sqlite、XML 等?

我还需要这个导入过程来创建表而不需要编码。导入的人是非技术人员。这将是一个一次性的过程。

  • 目标系统是 SQL Server 2008,但我对与特定版本无关的解决方案非常感兴趣。
  • 要导入的数据在单个 CSV 文件中约为 100MB。
  • 有嵌入的字段/行分隔符,当字段被 Python csv 模块引用时,它可以正常工作。
  • 无需处理外键、索引、约束等。
  • 编码为UTF-8。
  • 来源是从当前存储在 CSV 文件中的德语网页中抓取的数据。如果这是一个可靠的向量,我可以轻松地将它从那里导入到 MySQL/Postgres 中。

我将无法测试导入,因为我无法直接访问 SQL Server 数据库,因此我正在寻找更可靠的方法。例如 MySQL 转储、XLS、XML 等。

sql-server linux import mac-os-x csv

5
推荐指数
1
解决办法
1339
查看次数

在 RHEL7 上安装 SQL Server 并收到 - Sqlcmd:错误:Microsoft ODBC Driver 13 for SQL Server:TCP 提供程序:错误代码 0x2AF9

我在 RHEL7 VM 上安装了 SQL Server

msodbcsql-13.1.1.0-1.x86_64
mssql-server-14.0.100.187-1.x86_64
mssql-tools-14.0.2.0-1.x86_64

# ls -al /opt/
total 4
drwxr-xr-x.  5 root root   52 Jan 13 08:31 .
drwxr-xr-x. 17 root root 4096 Jan 13 07:55 ..
drwxr-xr-x.  3 root root   22 Jan 13 08:31 microsoft
drwxr-xr-x.  4 root root   26 Jan 13 08:14 mssql
drwxr-xr-x.  4 root root   28 Jan 13 08:31 mssql-tools
Run Code Online (Sandbox Code Playgroud)

systemctl 表示 SQL 服务器已启动并正在运行 / 绿色

# systemctl status mssql-server
mssql-server.service - Microsoft(R) SQL Server(R) Database Engine
   Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; …
Run Code Online (Sandbox Code Playgroud)

sql-server linux unixodbc sqlcmd timeout

5
推荐指数
1
解决办法
6383
查看次数

如何使用 sqlcmd 获取查询时间?

运行 SQL Server 2017,使用交互式REPL 客户端sqlcmd如何获得查询执行的时间?

你可以在这里sp_BlitzErik他的回答中展示这一点,

SQL Server Execution Times:
  CPU time = 1859 ms,  elapsed time = 321 ms.
Run Code Online (Sandbox Code Playgroud)

benchmark linux client native-client sql-server-2017

5
推荐指数
1
解决办法
2609
查看次数

无法从 Ubuntu sqlcmd 客户端连接到 SQL Server

我正在尝试从 Linux Ubuntu 16.04 计算机连接到 SQL Server Express 服务器。我为 linux 机器安装了所有 SQL 命令行实用程序,并按照 Linux 文档上的 Microsoft SQL Server 的说明进行操作。

当我跑

sqlcmd -S ip/SQLEXPRESS -U SA -P 1234
Run Code Online (Sandbox Code Playgroud)

该命令总是返回以下错误:

适用于 SQL Server 的 Microsoft ODBC 驱动程序 13:登录超时已过期。
适用于 SQL Server 的 Microsoft ODBC 驱动程序 13:TCP 提供程序:错误代码 0x2AF9

我能够从 Windows 10 计算机运行相同的命令,并且没有任何缺陷。

linux 计算机可以与服务器机器和 SQL Server 1433 端口进行通信。我使用 linux nc 命令 (netcat) 对此进行了测试。

Linux nc 命令结果:

nc -z -v -w5 192.168.0.1 1433
Run Code Online (Sandbox Code Playgroud)

连接到 192.168.0.1 1433 端口 [tcp/ms-sql-s] 成功!

有什么建议或缺少什么吗?

我曾尝试更改端口、参数顺序等……但 Linux 版本 …

sql-server linux sqlcmd connectivity

5
推荐指数
1
解决办法
4502
查看次数