swingbench datagenerator连接字符串

时间:2017-04-06 05:50:17

标签: 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

现在,当我尝试测试从datagenerator到此数据库的连接(来自安装了DB的同一主机的P.S.)时,我总是遇到错误。我已经尝试过使用 service-name (或称为实例名称 ??)以及所描述的连接的SID方法here 。因此,在尝试使用“瘦样式服务名称语法”时,我的连接字符串是:

//oracle_12c.localdomain:1521/db1

我的错误是一个IO错误,表示如果不给出很多连接就无法建立连接。

我尝试了'瘦样式SID语法',如下所示:

//oracle_12c.localdomain:1521:355

这给了我一个类似的错误而没有说太多。

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

有了这些细节,任何人都可以帮我制作一个与datagenerator一起使用的正确连接字符串吗?还有一个文件,我可以tail -f在主机上指出我的确切位置失败了吗?

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

编辑:我的Lister配置文件是:

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: invalid username/password, logon denied

现在我将用SYS更改为sys的用户,我收到了以下错误: ORA-28009: Connection as SYS should be as SYSDBA or SYSOPER

我甚至尝试将案例设置为不敏感:

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

但无济于事。 热衷于听到

1 个答案:

答案 0 :(得分:0)

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

在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)))'