#
# Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0, which is available at
# http://www.eclipse.org/legal/epl-2.0.
#
# This Source Code may also be made available under the following Secondary
# Licenses when the conditions for such availability set forth in the
# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
# version 2 with the GNU Classpath Exception, which is available at
# https://www.gnu.org/software/classpath/license.html.
#
# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
#

db.port=1521
db.host=jws-280r-3.red.iplanet.com
db.sid=ora11g
db.type=oracle
db.name=ora11g
db.user=coretest1
db.pwd=coretest1
db.driver=oracle.jdbc.driver.OracleDriver
db.class=oracle.jdbc.pool.OracleDataSource
db.xaclass=oracle.jdbc.xa.client.OracleXADataSource
db.url=jdbc:oracle:thin:@${db.host}:${db.port}:${db.sid}
connector.url=jdbc\\:oracle\\:thin\\:@${db.host}\\:${db.port}\\:${db.sid}
db.unixdriverpath=lib/drivers/oracle/ojdbc14.jar
db.windriverpath=lib/drivers/oracle/ojdbc14.jar
cpds.class=oracle.jdbc.pool.OracleConnectionPoolDataSource
isDBOracle=true

#properties used by global transaction tests.
txdb.port=1521
txdb.host=jws-280r-3.red.iplanet.com
txdb.name=ora11g
txdb.user=coretest1
txdb.pwd=coretest1
txdb.url=jdbc:oracle:thin:@${db.host}:${db.port}:${db.sid}

# Properties used by admincli are:
# db.port, db.host, db.sid plus what's listed below
dbuser.linux=admincli_linux
dbpwd.linux=admincli_linux
dbuser.unix=admincli
dbpwd.unix=admincli
dbuser.win2k=admincli_win2k
dbpwd.win2k=admincli_win2k
