mysql - swingbench 数据生成器连接字符串

标签 mysql database oracle jdbc oracle12c

我需要使用swingbench量化给定主机的性能。然而,由于我对数据库非常陌生,因此无法获得 datagenerator程序连接到已在主机上“打开”的 Oracle 数据库实例。

在主机上安装 Oracle 12c(并随之创建数据库)后,我将这样启动数据库

由于初始化文件不存在,我第一次遇到启动数据库的问题。因此,我必须从现有的“spfile”创建一个“pfile”,该文件位于 $ORACLE_HOME

SQL> CREATE PFILE = full path to init.ora FROM SPFILE = full path to existing spfile.ora;

之后,我启动数据库“安装”并“打开”数据库。

SQL> startup
ORACLE instance started.

Total System Global Area 2421825536 bytes
Fixed Size                  2291232 bytes
Variable Size             654313952 bytes
Database Buffers         1744830464 bytes
Redo Buffers               20389888 bytes
Database mounted.
Database opened.

我的数据库的相关详细信息是:

SQL> SELECT sys_context('USERENV', 'SID') FROM DUAL;

SYS_CONTEXT('USERENV','SID')
--------------------------------------------------------------------------------
355

SQL>
SQL> select sys_context('userenv','instance_name') from dual;

SYS_CONTEXT('USERENV','INSTANCE_NAME')
--------------------------------------------------------------------------------
db1

SQL> select sys_context('userenv', 'server_host') from dual;

SYS_CONTEXT('USERENV','SERVER_HOST')
--------------------------------------------------------------------------------
oracle_12c

我的主机名是:

oracle_12c.localdomain

现在,当我尝试测试从数据生成器到此数据库的连接(P.S.来自安装数据库的同一主机)时,我总是收到错误。我尝试过使用服务名称(或者称为实例名称??)以及SID连接方法,如here所述。 。因此,在尝试使用“精简样式服务名称语法”时,我的连接字符串是:

//oracle_12c.localdomain:1521/db1

我的错误是一个 IO 错误,表示在没有给出太多信息的情况下无法建立连接。

我已经尝试过“精简样式 SID 语法”,如下所示:

//oracle_12c.localdomain:1521:355

这给了我一个类似的错误,但没有告诉我太多。

确切的错误是“无法使用提供的参数进行连接:IO 错误:网络适配器无法建立连接”

有了这些详细信息,任何人都可以帮助我制作一个正确的连接字符串以与数据生成器一起使用吗?还有一个文件可以让我在主机上 tail -f 指出它到底失败的位置吗?

另外,我认为监听器不会出现在本地发起的请求中?真的吗?那么这是否意味着不需要为此类请求配置listerner.ora

编辑:我的列表器配置文件是:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_12C.localdomain)(PORT = 1521))
    )
  )

SID_LIST_LISTENER=
  (SID_LIST=
       (SID_DESC=
         (GLOBAL_DBNAME=db1)
         (SID_NAME=db1)
         (ORACLE_HOME=/oracle/product/12.1.0/db_1)
       )
  )

现在更新此文件后,我将像这样启动监听器:

[oracle@oracle_12c db_1]$ lsnrctl start

LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 06-APR-2017 04:31:38

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Starting /oracle/product/12.1.0/db_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.1.0.1.0 - Production
System parameter file is /oracle/product/12.1.0/db_1/network/admin/listener.ora
Log messages written to /oracle/diag/tnslsnr/oracle_12c/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle_12c.localdomain)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.1.0 - Production
Start Date                06-APR-2017 04:31:39
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/product/12.1.0/db_1/network/admin/listener.ora
Listener Log File         /oracle/diag/tnslsnr/oracle_12c/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle_12c.localdomain)(PORT=1521)))
Services Summary...
Service "db1" has 1 instance(s).
  Instance "db1", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

现在至少看起来我来自 swingbench 的请求确实击中了我的数据库,因为现在我收到了不同的错误: ORA-01017: 用户名/密码无效,登录被拒绝

所以现在我将用户的大小写从 SYS 更改为 sys,但出现以下错误: ORA-28009: 作为 SYS 的连接应为 SYSDBA 或 SYSOPER

我什至尝试将大小写设置为不敏感:

SQL> ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;
System altered.

但无济于事。 很想听

最佳答案

您必须为 JDBC 瘦驱动程序(由 swingbench 使用)配置 tcp 监听器,才能连接到您的数据库。

在listener.ora中你将需要这样的东西:

LISTENER = (ADDRESS_LIST= 
 (ADDRESS=(PROTOCOL=tcp)(HOST=yourhostname)(PORT=yourport))
) 

然后必须使用 lsnctrl 命令行启动监听器。我假设您已经创建了一个将自动向监听器注册的服务。然后,也只有这样,您才能连接 Swingbench。

然后您可以使用长格式连接字符串:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=yourhostname)(PORT=yourport))(CONNECT_DATA=(SERVICE_NAME=yourervice)))

也可以使用 sqlplus 进行测试:

sqlplus 'scott/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=yourhostname)(PORT=yourport))(CONNECT_DATA=(SERVICE_NAME=yourervice)))'

关于mysql - swingbench 数据生成器连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43246706/

相关文章:

mysql - 使用 MySQL 或 MariaDB 存储位置

database - 数据库设计中外键真的有必要吗?

php - 如何修复:PDOStatement::execute() 期望参数 1 为数组,在第 64 行 C:\wamp64\www\invoiceTem01-Create.php 中给出的字符串

mysql - Laravel 计数行值 > 0

mysql - 如何确保数据库表中只有一行?

database - 数据库表中应包含哪些字段以进行用户身份验证?

Python cx_oracle 多线程不适用于每个线程的游标

c# - 与 Oracle 的多个连接 - 多任务

mysql - SQL:查找每个运行者运行之间的平均天数

mysql - SQL - 理解 'JOIN' 语法、顺序