autonomous databaseにswingbenchかけてみる

Oracle Cloud always free Advent Calendar 2019の18日目です。

今日は、Swingbenchを使って、 autonomous databaseに負荷をかけてみようと思います。

 

#swingbenchのダウンロード
wget http://dominicgiles.com/swingbench/swingbenchlatest.zip

 

#解凍
unzip swingbenchlatest.zip

 

#java のインストール
sudo yum -y install java-1.8.0-openjdk

 

#ウォレットのダウンロード
#方法1
Autonomous Database->Autonomous Data Warehouse で接続したいDBを選択
DB接続をクリックし、ウォレットのダウンロードをクリック
パスワードを入力する。

Wallet_datawarehouse.zipがダウンロードされるので、always free Computeインスタンスへアップロードする。(格納先は~/walletとする)

 

#方法2(OCI CLIが使用できることが前提)

oci db autonomous-database listコマンドで接続したいDBのOCIDを確認
oci db autonomous-database list
・・・・
"freeform-tags": {},
"id": "ocid1.autonomousdatabase.oc1.ap-tokyo-1.abxhiljrdouplsv4h3cmqjkyphjr6lkpie72fgrgvr2ehmXXXXX",
"is-auto-scaling-enabled": false,
"is-dedicated": false,
・・・・
#idがOCID

 

#ウォレットのダウンロード
mkdir ~/wallet
cd ~/wallet
oci db autonomous-database generate-wallet \
--autonomous-database-id ocid1.autonomousdatabase.oc1.ap-tokyo-1.abxhiljrdouplsv4h3cmqjkyphjr6lkpie72fgrgvr2ehm5i2ti2aryjltkq \
--file Wallet_datawarehouse.zip \
--password Passw0rd

 

~/walletディレクトリにWallet_datawarehouse.zip が配置される


#swingbenchスキーマの作成&データのロード
cd swingbench/bin

# -cf ウォレットのパス(zipのままでOK)
# -cs 接続識別子
# -ts 表領域
#-dbap ADMINユーザのパスワード
# -dba 管理者ユーザ(ADMIN
# -u swingbench用に新規作成するユーザ名
# -p 新規作成するユーザ用のパスワード
# -async_off 非同期モード
# -create スキーマの作成
# -cl CLIモード
./oewizard -cf ~/wallet/Wallet_datawarehouse.zip \
-cs adw_high \
-ts DATA \
-dbap XXXXXXXX \
-dba ADMIN \
-u soe \
-p TccP12#_TccP12#_ \
-async_off \
-scale 1 \
-create \
-cl \
-v
Operation is successfully completed.
Operation is successfully completed.
SwingBench Wizard
Author : Dominic Giles
Version : 2.6.0.1124

Running in Lights Out Mode using config file : ../wizardconfigs/oewizard.xml
Connecting to : jdbc:oracle:thin:@adw_high
Connected
Running script ../sql/soedgcreateuser.sql
Script completed in 0 hour(s) 0 minute(s) 0 second(s) 329 millisecond(s)
Starting run
Dec 05, 2019 8:34:24 AM oracle.simplefan.impl.FanManager configure
SEVERE: attempt to configure ONS in FanManager failed with oracle.ons.NoServersAvailable: Subscription time out
Starting script ../sql/soedgdrop2.sql
Script completed in 0 hour(s) 0 minute(s) 0 second(s) 57 millisecond(s)
Starting script ../sql/soedgcreatetables2.sql
Script completed in 0 hour(s) 0 minute(s) 0 second(s) 185 millisecond(s)
Starting script ../sql/soedgviews.sql
Script completed in 0 hour(s) 0 minute(s) 0 second(s) 25 millisecond(s)
Starting script ../sql/soedgsqlset.sql
Script completed in 0 hour(s) 0 minute(s) 0 second(s) 90 millisecond(s)
Inserting data into table ADDRESSES_750001
Inserting data into table ADDRESSES_2
Inserting data into table CUSTOMERS_500001
Inserting data into table CUSTOMERS_2
Completed processing table ADDRESSES_750001 in 0:00:31
Inserting data into table ORDER_ITEMS_714895
Inserting data into table ORDERS_714896
Completed processing table ADDRESSES_2 in 0:00:32
Completed processing table CUSTOMERS_500001 in 0:00:38
Inserting data into table ORDER_ITEMS_1
Inserting data into table ORDERS_2
Completed processing table CUSTOMERS_2 in 0:00:39
Completed processing table ORDERS_2 in 0:02:30
Inserting data into table CARD_DETAILS_750001
Inserting data into table CARD_DETAILS_2
Completed processing table ORDER_ITEMS_1 in 0:02:32
Completed processing table ORDERS_714896 in 0:02:45
Inserting data into table LOGON_1191493
Completed processing table ORDER_ITEMS_714895 in 0:02:47
Inserting data into table LOGON_2
Completed processing table CARD_DETAILS_750001 in 0:00:16
Inserting data into table INVENTORIES
Inserting data into table PRODUCT_INFORMATION
Completed processing table PRODUCT_INFORMATION in 0:00:00
Completed processing table CARD_DETAILS_2 in 0:00:16
Inserting data into table PRODUCT_DESCRIPTIONS
Completed processing table PRODUCT_DESCRIPTIONS in 0:00:00
Inserting data into table WAREHOUSES
Completed processing table WAREHOUSES in 0:00:00
Completed processing table LOGON_1191493 in 0:00:17
Completed processing table INVENTORIES in 0:00:11
Connection cache closed
Starting script ../sql/soedganalyzeschema2.sql
Script completed in 0 hour(s) 0 minute(s) 24 second(s) 422 millisecond(s)
Starting script ../sql/soedgconstraints2.sql
Script completed in 0 hour(s) 0 minute(s) 9 second(s) 608 millisecond(s)
Starting script ../sql/soedgindexes2.sql
Script completed in 0 hour(s) 0 minute(s) 29 second(s) 13 millisecond(s)
Starting script ../sql/soedgsequences2.sql
Script completed in 0 hour(s) 0 minute(s) 0 second(s) 786 millisecond(s)
Starting script ../sql/soedgpackage2_header.sql
Script completed in 0 hour(s) 0 minute(s) 0 second(s) 224 millisecond(s)
Starting script ../sql/soedgpackage2_body.sql
Script completed in 0 hour(s) 0 minute(s) 0 second(s) 150 millisecond(s)
Starting script ../sql/soedgsetupmetadata.sql
Script completed in 0 hour(s) 0 minute(s) 0 second(s) 606 millisecond(s)

============================================
| Datagenerator Run Stats |
============================================
Connection Time 0:00:00.004
Data Generation Time 0:03:37.918
DDL Creation Time 0:01:35.491
Total Run Time 0:05:13.415
Rows Inserted per sec 55,554
Data Generated (MB) per sec 4.5
Actual Rows Generated 13,011,798
Commits Completed 672
Batch Updates Completed 65,082

Connecting to : jdbc:oracle:thin:@adw_high
Connected

Post Creation Validation Report
===============================
The schema appears to have been created successfully.

Valid Objects
=============
Valid Tables : 'ORDERS','ORDER_ITEMS','CUSTOMERS','WAREHOUSES','ORDERENTRY_METADATA','INVENTORIES','PRODUCT_INFORMATION','PRODUCT_DESCRIPTIONS','ADDRESSES','CARD_DETAILS'
Valid Indexes : 'PRD_DESC_PK','PROD_NAME_IX','PRODUCT_INFORMATION_PK','PROD_SUPPLIER_IX','PROD_CATEGORY_IX','INVENTORY_PK','INV_PRODUCT_IX','INV_WAREHOUSE_IX','ORDER_PK','ORD_SALES_REP_IX','ORD_CUSTOMER_IX','ORD_ORDER_DATE_IX','ORD_WAREHOUSE_IX','ORDER_ITEMS_PK','ITEM_ORDER_IX','ITEM_PRODUCT_IX','WAREHOUSES_PK','WHS_LOCATION_IX','CUSTOMERS_PK','CUST_EMAIL_IX','CUST_ACCOUNT_MANAGER_IX','CUST_FUNC_LOWER_NAME_IX','ADDRESS_PK','ADDRESS_CUST_IX','CARD_DETAILS_PK','CARDDETAILS_CUST_IX'
Valid Views : 'PRODUCTS','PRODUCT_PRICES'
Valid Sequences : 'CUSTOMER_SEQ','ORDERS_SEQ','ADDRESS_SEQ','LOGON_SEQ','CARD_DETAILS_SEQ'
Valid Code : 'ORDERENTRY'
Schema Created

 


#負荷をかける
$ ./charbench -c ../configs/SOE_Server_Side_V2.xml \
-cf ~/wallet/Wallet_datawarehouse.zip \
-cs adw_high \
-u soe \
-p TccP12#_TccP12#_ \
-rt 0:0.30
Author : Dominic Giles
Version : 2.6.0.1124

Results will be written to results.xml.
Hit Return to Terminate Run...

Time Users TPM TPS

Operation is successfully completed.
Operation is successfully completed.
8:55:02 AM X XXXX XX

 

<参考>

www.dominicgiles.com

autonomous databaseにhammerdbかけてみる

Oracle Cloud always free Advent Calendar 2019の17日目です。

今日はhammerdbを使って、autonomous database(ADW)に負荷をかけてみようと思います。
15日目のsqlplusで接続できる環境が整っていることが前提となります。


#hammerdbのダウンロード
wget https://github.com/TPC-Council/HammerDB/releases/download/v3.3/HammerDB-3.3-Linux-x86-64-Install

 

#hammerdbのインストール
$chmod +x HammerDB-3.3-Linux-x86-64-Install
$./HammerDB-3.3-Linux-x86-64-Install

This will install HammerDB on your computer. Continue? [n/Y] Y
Where do you want to install HammerDB? [/home/opc/HammerDB-3.3]
Installing HammerDB... Installing Program Files...
Installation complete.


#環境変数の設定
#instantclient 18.3を入れた場合なので、インストールしたOracleクライアントによってパスが変わるので注意
export ORACLE_HOME=/usr/lib/oracle/18.3/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORACLE_LIBRARY=$ORACLE_HOME/lib/libclntsh.so.18.1
#walletを~/walletに配置しているので TNS_ADMINを~/walletに指定する
export TNS_ADMIN=~/wallet


#HammerDBの起動
cd HammerDB-3.3/
./hammerdbcli
HammerDB CLI v3.3
Copyright (C) 2003-2019 Steve Shaw
Type "help" for a list of commands
The xml is well-formed, applying configuration

hammerdb>librarycheck
Checking database library for Oracle
Success ... loaded library Oratcl for Oracle

 

#DBタイプをOracleに指定
hammerdb>dbset db ora
Database set to Oracle

 

#負荷タイプをTPC-Cに指定
hammerdb>dbset bm TPC-C
Benchmark set to TPC-C for Oracle

 

#TNS接続識別子を指定
hammerdb>diset connection instance adw_high
Changed connection:instance from oracle to adw_high for Oracle

 

#ADWの管理ユーザ/パスワードを指定
hammerdb>diset connection system_user ADMIN
Changed connection:system_user from system to ADMIN for Oracle

hammerdb>diset connection system_password XXXXX
Changed connection:system_password from manager to XXXXXX for Oracle

 

#tpccユーザのパスワードを指定(複雑性を要求されるので注意)
hammerdb>diset tpcc tpcc_pass TccP12#_TccP12#_
Changed tpcc:tpcc_pass from tpcc to TccP12#_TccP12#_ for Oracle


#Hammerdbで使用する表領域を指定
hammerdb>diset tpcc tpcc_def_tab DATA
Changed tpcc:tpcc_def_tab from tpcctab to DATA for Oracle

 

#実計測時はtimed
hammerdb>diset tpcc ora_driver timed
Clearing Script, reload script to activate new setting
Script cleared
Changed tpcc:ora_driver from test to timed for Oracle


#スキーマ作成
hammerdb>buildschema
Script cleared
Building 1 Warehouses(s) with 1 Virtual User
Ready to create a 1 Warehouse Oracle TPC-C schema
in database ADW_HIGH under user TPCC in tablespace DATA?
Enter yes or no: replied yes
Vuser 1 created - WAIT IDLE
RUNNING - TPC-C creation
Vuser 1:RUNNING
Vuser 1:CREATING TPCC SCHEMA
Vuser 1:CREATING USER tpcc

Vuser 1:CREATING TPCC TABLES
Vuser 1:Loading Item
・・・・・
Vuser 1:Orders Done
Vuser 1:Loading Orders for D=8 W=1
Vuser 1:Orders Done
Vuser 1:Loading Orders for D=9 W=1
Vuser 1:Orders Done
Vuser 1:Loading Orders for D=10 W=1
Vuser 1:Orders Done
Vuser 1:End:Thu Dec 05 05:50:58 GMT 2019
Vuser 1:CREATING TPCC INDEXES
Vuser 1:ORA-01031: insufficient privileges alter session set sort_area_size=5000000
Vuser 1:CREATING TPCC STORED PROCEDURES
Vuser 1:GATHERING SCHEMA STATISTICS
Vuser 1:TPCC SCHEMA COMPLETE
Vuser 1:FINISHED SUCCESS
ALL VIRTUAL USERS COMPLETE
TPC-C Driver Script

※途中 ORA-1031が発生していますが、たぶん大丈夫。

 

#仮想ユーザのステータス確認
hammerdb>vustatus
1 = FINISH SUCCESS

 

#仮想ユーザの削除
hammerdb>vudestroy
Destroying Virtual Users
Virtual Users Destroyed
vudestroy success


#テストスクリプトのロード
hammerdb>loadscript
TPC-C Driver Script
Script loaded, Type "print script" to view


#仮想ユーザの設定
hammerdb>vuset vu 4
hammerdb>vuset logtotemp 1
hammerdb>vuset unique 1
hammerdb>vuset timestamps 1

 

#仮想ユーザの作成
hammerdb>vucreate
Vuser 1 created MONITOR - WAIT IDLE
Vuser 2 created - WAIT IDLE
Vuser 3 created - WAIT IDLE
Vuser 4 created - WAIT IDLE
Vuser 5 created - WAIT IDLE
Logging activated
to /tmp/hammerdb_5DE89E98598E03E283235393.log
5 Virtual Users Created with Monitor VU

 

#テストの実行
hammerdb>vurun
RUNNING - Oracle Timed TPC-C
Vuser 1:RUNNING
Vuser 1:Beginning rampup time of 2 minutes
Vuser 2:RUNNING
Vuser 2:Processing 1000000 transactions with output suppressed...
Vuser 3:RUNNING
Vuser 3:Processing 1000000 transactions with output suppressed...
Vuser 4:RUNNING
Vuser 4:Processing 1000000 transactions with output suppressed...
Vuser 5:RUNNING
Vuser 5:Processing 1000000 transactions with output suppressed...
・・・・・
Vuser 1:FINISHED SUCCESS
Vuser 2:FINISHED SUCCESS
Vuser 5:FINISHED SUCCESS
Vuser 3:FINISHED SUCCESS
Vuser 4:FINISHED SUCCESS
ALL VIRTUAL USERS COMPLETE
TPC-C Driver Script

<参考>

atsuizo.hatenadiary.jp

 

atsuizo.hatenadiary.jp

autonomous databaseにjdbcrunnerかけてみる

Oracle Cloud always free Advent Calendar 2019の16日目です。

今日はJavaで実装された汎用データベース負荷テストツールJdbcRunnerを使って、
always free Computeインスタンス(Oracle Linux 7)から autonomous databaseに負荷をかけてみようと思います。
今回、instant client(jdbc)のみでやりたいので、昨日、sqlplusを入れた環境とは別の環境で行います。

また、JDBC接続には、JKS接続とWallet接続がありますが、今回はJKS接続で行います。

 

#walletの入手
16日目で入手したwallet関連のファイルをすべてをalways free computeインスタンスへコピーします。(格納パスは ~/wallet_jdbc)

 

#ant/openjdkのインストール(antの依存関係でopenjdk1.8がインストールされる)
sudo yum -y install git ant

 

#jdbc driverのインストール
sudo yum -y install oracle-instantclient18.3-jdbc

 

#ojdbc.propertiesの編集
#walletの配置場所は/home/opc/wallet_jdbc
#javax.net.ssl.keyStorePasswordはwalletダウンロード時に指定したパスワード
cat << EOF > ~/wallet_jdbc/ojdbc.properties
#oracle.net.wallet_location=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/home/opc/wallet_jdbc)))
oracle.net.ssl_server_dn_match=true
javax.net.ssl.trustStore=/home/opc/wallet_jdbc/truststore.jks
javax.net.ssl.trustStorePassword=Passw0rd
javax.net.ssl.keyStore=/home/opc/wallet_jdbc/keystore.jks
javax.net.ssl.keyStorePassword=Passw0rd
EOF

 

#jdbcrunnerの取得
git clone https://github.com/sh2/jdbcrunner.git

 

#コンパイル
cd jdbcrunner
ant

 

#user作成用のスクリプト配置

cat << EOF > ~/jdbcrunner/scripts/ora_create_user.js
var isLoad = false;
var nTxTypes = 1;
var nAgents = 1;
var connPoolSize = nAgents;
var stmtCacheSize = 10;
var isAutoCommit = true;
var sleepTime = 0;
var throttle = 0;
var isDebug = false;
var isTrace = false;
var logDir = ".";

function init() {
if (getId() == 0) {
//execute("DROP USER tpcc cascade")
execute("CREATE USER tpcc IDENTIFIED BY TccP12#_TccP12#_ DEFAULT TABLESPACE DATA QUOTA UNLIMITED ON DATA TEMPORARY TABLESPACE TEMP");
execute("GRANT connect, resource TO tpcc")
}
}

function run() {
}

function fin() {
}
EOF

 

 

#user作成

java -Djava.security.egd=file:/dev/./urandom \
-cp ~/jdbcrunner/jdbcrunner-1.3-nojdbc.jar:/usr/lib/oracle/18.3/client64/lib/ojdbc8.jar \
JR ~/jdbcrunner/scripts/ora_create_user.js \
-jdbcDriver oracle.jdbc.driver.OracleDriver \
-jdbcUrl jdbc:oracle:thin:@datawarehouse_high?TNS_ADMIN=/home/opc/wallet_jdbc \
-warmupTime 1 \
-measurementTime 1 \
-jdbcUser ADMIN \
-jdbcPass <ADMINのパスワード>

 

09:12:49 [INFO ] > JdbcRunner 1.3
09:12:49 [INFO ] [Config]
Program start time : 20191118-091248
Script filename : /home/opc/jdbcrunner/scripts/ora_create_user.js
JDBC driver : oracle.jdbc.driver.OracleDriver
JDBC URL : jdbc:oracle:thin:@datawarehouse_high?TNS_ADMIN=/home/opc/wallet_jdbc
JDBC user : ADMIN
Warmup time : 1 sec
Measurement time : 1 sec
Number of tx types : 1
Number of agents : 1
Connection pool size : 1
Statement cache size : 10
Auto commit : true
Sleep time : 0 msec
Throttle : - tps
Debug mode : false
Trace mode : false
Log directory : .
Parameter 0 : 0
Parameter 1 : 0
Parameter 2 : 0
Parameter 3 : 0
Parameter 4 : 0
Parameter 5 : 0
Parameter 6 : 0
Parameter 7 : 0
Parameter 8 : 0
Parameter 9 : 0
09:12:55 [INFO ] [Warmup] 0 sec, 165892 tps, (165892 tx)
09:12:56 [INFO ] [Progress] 1 sec, 408335 tps, 408335 tx
09:12:56 [INFO ] [Total tx count] 396940 tx
09:12:56 [INFO ] [Throughput] 396940.0 tps
09:12:56 [INFO ] [Response time (minimum)] 0 msec
09:12:56 [INFO ] [Response time (50%tile)] 0 msec
09:12:56 [INFO ] [Response time (90%tile)] 0 msec
09:12:56 [INFO ] [Response time (95%tile)] 0 msec
09:12:56 [INFO ] [Response time (99%tile)] 0 msec
09:12:56 [INFO ] [Response time (maximum)] 71 msec
09:12:56 [INFO ] < JdbcRunner SUCCESS

 

 

#TPCC用のデータロード ユーザ/パスワードは先ほど作成したユーザー(tpcc)
java -Djava.security.egd=file:/dev/./urandom \
-cp ~/jdbcrunner/jdbcrunner-1.3-nojdbc.jar:/usr/lib/oracle/18.3/client64/lib/ojdbc8.jar \
JR ~/jdbcrunner/scripts/tpcc_load.js \
-jdbcDriver oracle.jdbc.driver.OracleDriver \
-jdbcUrl jdbc:oracle:thin:@datawarehouse_high?TNS_ADMIN=/home/opc/wallet_jdbc \
-jdbcUser tpcc \
-jdbcPass TccP12#_TccP12#_

09:21:59 [INFO ] > JdbcRunner 1.3
09:21:59 [INFO ] [Config]
Program start time : 20191118-092158
Script filename : /home/opc/jdbcrunner/scripts/tpcc_load.js
JDBC driver : oracle.jdbc.driver.OracleDriver
JDBC URL : jdbc:oracle:thin:@datawarehouse_high?TNS_ADMIN=/home/opc/wallet_jdbc
JDBC user : tpcc
Load mode : true
Number of agents : 4
Auto commit : false
Debug mode : false
Trace mode : false
Log directory : logs
Parameter 0 : 0
Parameter 1 : 0
Parameter 2 : 0
Parameter 3 : 0
Parameter 4 : 0
Parameter 5 : 0
Parameter 6 : 0
Parameter 7 : 0
Parameter 8 : 0
Parameter 9 : 0
09:22:07 [INFO ] Tiny TPC-C - data loader
09:22:07 [INFO ] -param0 : Scale factor (default : 16)
09:22:07 [INFO ] -nAgents : Parallel loading degree (default : 4)
09:22:07 [INFO ] Scale factor : 16
09:22:07 [INFO ] Parallel loading degree : 4
09:22:07 [INFO ] Dropping tables ...
09:22:07 [WARN ] JavaException: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

09:22:07 [WARN ] JavaException: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

09:22:07 [WARN ] JavaException: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

09:22:07 [WARN ] JavaException: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
・・・・・
09:28:09 [INFO ] [Agent 2] orders : 20000 / 30000
09:28:13 [INFO ] [Agent 1] orders : 20000 / 30000
09:28:13 [INFO ] [Agent 0] orders : 20000 / 30000
09:28:18 [INFO ] [Agent 3] orders : 20000 / 30000
09:28:19 [INFO ] [Agent 2] orders : 30000 / 30000
09:28:22 [INFO ] [Agent 1] orders : 30000 / 30000
09:28:22 [INFO ] [Agent 0] orders : 30000 / 30000
09:28:24 [INFO ] [Agent 3] orders : 30000 / 30000
09:28:24 [INFO ] Creating indexes ...
09:28:54 [INFO ] Creating foreign keys ...
09:29:01 [INFO ] Analyzing tables ...
09:29:34 [INFO ] Completed.
09:29:34 [INFO ] < JdbcRunner SUCCESS

 

 

#TPCC実行
java -Djava.security.egd=file:/dev/./urandom \
-cp ~/jdbcrunner/jdbcrunner-1.3-nojdbc.jar:/usr/lib/oracle/18.3/client64/lib/ojdbc8.jar \
JR ~/jdbcrunner/scripts/tpcc.js \
-jdbcDriver oracle.jdbc.driver.OracleDriver \
-jdbcUrl jdbc:oracle:thin:@datawarehouse_high?TNS_ADMIN=/home/opc/wallet_jdbc \
-jdbcUser tpcc \
-jdbcPass TccP12#_TccP12#_
・・・・・
09:32:42 [INFO ] Tiny TPC-C
09:32:42 [INFO ] Scale factor : 16
09:32:42 [INFO ] tx0 : New-Order transaction
09:32:42 [INFO ] tx1 : Payment transaction
09:32:42 [INFO ] tx2 : Order-Status transaction
09:32:42 [INFO ] tx3 : Delivery transaction
09:32:42 [INFO ] tx4 : Stock-Level transaction
09:32:44 [INFO ] [Warmup] -299 sec, 0,8,1,0,1 tps, (0,8,1,0,1 tx)
・・・・・


<参考>

qiita.com

 

docs.oracle.com

autonomous databaseに接続してみる

Oracle Cloud always free Advent Calendar 2019の15日目です。

 

今日はalways freeのComputeインスタンスからalways freeのautonomous database(datawarehouse)に接続してみようと思います。
接続はSQLPLUSから行います。
autonomous database(datawarehouse)は作成済みとします。

 

#oracle instant clientのインストール
sudo yum -y install oracle-instantclient18.3-sqlplus


ウォレットのダウンロード
#方法1
Autonomous Database->Autonomous Data Warehouse で接続したいDBを選択
DB接続をクリックし、ウォレットのダウンロードをクリック
パスワードを入力する。

Wallet_datawarehouse.zipがダウンロードされるので、always free Computeインスタンスへアップロードする。(格納先は~/walletとする)

 

#方法2(OCI CLIが使用できることが前提)
oci db autonomous-database listコマンドで接続したいDBのOCIDを確認

oci db autonomous-database list
・・・・
"freeform-tags": {},
"id": "ocid1.autonomousdatabase.oc1.ap-tokyo-1.abxhiljrdouplsv4h3cmqjkyphjr6lkpie72fgrgvr2ehXXXXXXX",
"is-auto-scaling-enabled": false,
"is-dedicated": false,
・・・・
#idがOCID


#ウォレットのダウンロード
mkdir ~/wallet
cd ~/wallet
oci db autonomous-database generate-wallet \
--autonomous-database-id ocid1.autonomousdatabase.oc1.ap-tokyo-1.abxhiljrdouplsv4h3cmqjkyphjr6lkpie72fgrgvr2ehm5i2tiXXXXXX \
--file Wallet_datawarehouse.zip \
--password Passw0rd

 

#ウォレットの解凍
unzip Wallet_datawarehouse.zip


#zipファイルの削除
rm -f Wallet_datawarehouse.zip

 

#接続設定の確認
cat tnsnames.ora
datawarehouse_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=XX96e1s4zxgj0_datawarehouse_high.adwc.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))

datawarehouse_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=XXw96e1s4zxgj0_datawarehouse_low.adwc.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))

datawarehouse_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=XXsw96e1s4zxgj0_datawarehouse_medium.adwc.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))

 

#sqlnet.oraファイルの編集
#"~"は認識しないので、フルパスで記入する必要あり。
cat << EOF > sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/opc/wallet")))
SSL_SERVER_DN_MATCH=yes
EOF

 

#環境変数の設定
#必要に応じて以下を~/.bash_profileに追加する
export PATH=/usr/lib/oracle/18.3/client64/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib/oracle/18.3/client64/lib:$LD_LIBRARY_PATH
export TNS_ADMIN=~/wallet

 

#接続
[opc@docker wallet]$ sqlplus ADMIN/XXXXXX@datawarehouse_high

SQL*Plus: Release 18.0.0.0.0 - Production on Mon Nov 18 06:18:43 2019
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle. All rights reserved.

Last Successful login time: Mon Nov 18 2019 06:16:20 +00:00

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0

SQL>

 

<参考>

itedge.stars.ne.jp

 

www.system-exe.co.jp

 

qiita.com

 

qiita.com

 

docs.oracle.com

(番外編)Oracle Cloudアカウント作成できなかった話(解決済)

Oracle Cloud always free Advent Calendar 2019の14日目です。

今日は番外編として、Oracle Cloudのサインアップに関することです。

 

<経緯>
always freeを使っていた既存Oracle Cloudアカウントが何故か使用できなくなった。
cloud support chatに問い合わせるものの、unusuallyな挙動を検知したため、accountがdisabledになったとのこと。
これ、どうにもならないパターンだなと思ったので、新規にアカウントを作成することに。

 

<アカウント登録>
元々使用していたメールアドレスはalready exists(登録済み)となってしまうので、別のメールアドレスで登録します。
しかしながら、支払い情報の最後で以下のメッセージがでてしまい、登録完了になりません。

"We're unable to process your transaction. If you continue to encounter the error, you may contact Oracle Customer Service."

上記状況は、メールアドレス変えても使用するクレジットカード変えてもダメで、システム上で何かを見ているように思えます。

 

<問い合わせその1>
アカウントがないため、SRはもちろん上げることはできません。
どうしようかとtwitter上でつぶやいたところ、Oracle Cloudのページ左下のチャットで相談してみたら?というアドバイスがありました。
アドバイスに従い、チャット(日本語)で相談します。
連絡先などを伝えると折り返しで電話がありました。
アカウント作成にまつわる問題は Cloud Support Chatというところで対応してもらえるとのこと。
基本英語での問い合わせになってしまうが、直接やり取りしたほうが早いとのこと。
日本オラクルの人がやっても問い合わせ先も同じなので、詳細なやり取りであれば本人からやってもらったほうが良いとのこと)

Cloud Support Chatの行き方は、「Oracle Cloud Cost」で検索すると、Cloud Cost Estimatorのページが引っかかるので、
そのページの右下のチャットボタンを押し、Cloud Support Chat のstart chatを押す そうです。

英語かぁ。。。。


<問い合わせその2>
Start Chatを押し、必要事項を入力すると、chat botが起動してきます。
How can we help you today? と聞いてきますので、
現在の状況を記載します。
私は英語のWritingが苦手なので、グーグル先生に翻訳してもらったのをそのまま入力しています。

入力するとFAQが表示されるので、Exit Question Areaを押下します。
(FAQに答えはないので)

Exit Question Area を押すと、
Did this answer your question? と聞かれるので、Noを押します。
Noを押すと Would you like to chat with a live agent? と聞かれるので、
Yes を押します。
Yesを押すとLive Agent(生身の人)がchatで応じてくれます。

そこで、再度現在の状況を伝えますが、別担当チームが対応する旨、言われました。
その場でOracle Helpというところへメールを送ってくれます。
(私へはCCで宛先が追加されます)

 

<問い合わせその3>
翌日、Oracle Helpから調べているので、進捗があったら連絡するよメールがきました。

さらに翌日、進捗確認を含めて、以前無効化されたアカウントが影響しているかもしれない旨メールで伝えます。
すると、その日中に もう一度アカウント作成してみてとメール返信があり、
アカウント作成を試みると無事作成できました。

always freeにOracle Database 18c XEを入れてみる(失敗)

Oracle Cloud always free Advent Calendar 2019の13日目です。

今日はOracle Database XE 18cをインストールしてみようと思います。
インストール対象は昨日GUI化したOracle Linux7環境です。

 

#Database Preinstallation RPMのインストール
sudo yum -y install oracle-database-preinstall-18c

 

#Oracle Database XE 18cのダウンロード
Always Free ComputeインスタンスへRDPログインして、firefoxを起動してOracle Database XE 18cのダウンロードをします。
https://www.oracle.com/database/technologies/xe-downloads.html

f:id:KNOPP:20191116232604p:plain

XEダウンロード

#Oracle Database XE 18cのインストール

sudo yum -y localinstall /home/opc/ダウンロード/oracle-database-xe
-18c-1.0-1.x86_64.rpm
読み込んだプラグイン:langpacks, ulninfo
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ oracle-database-xe-18c.x86_64 0:1.0-1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
Package アーキテクチャ
バージョン
リポジトリー 容量
================================================================================
インストール中:
oracle-database-xe-18c x86_64 1.0-1 /oracle-database-xe-18c-1.0-1.x86_64 5.2 G

トランザクションの要約
================================================================================
インストール 1 パッケージ

合計容量: 5.2 G
インストール容量: 5.2 G
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
[SEVERE] Oracle Database 18c Express Edition requires a minimum of 1GB of physical
memory (RAM). This system has 971 MB of RAM and does not meet minimum
requirements.

エラー: %pre(oracle-database-xe-18c-1.0-1.x86_64) スクリプトの実行に失敗しました。終了ステータス 1
Error in PREIN scriptlet in rpm package oracle-database-xe-18c-1.0-1.x86_64
検証中 : oracle-database-xe-18c-1.0-1.x86_64 1/1

失敗:
oracle-database-xe-18c.x86_64 0:1.0-1

完了しました!

 

なんと! メモリ不足でチェック失敗してしまいました。

 

悔しいので以下を見ながら頑張ってみることにします。

community.oracle.com

 

#scriptの抜き出し

rpm -qp --scripts /home/opc/ダウンロード/oracle-database-xe-18c-1.0-1.x86_64.rpm > xe-scripts.sh

 

#preinstall scriptの抜き出し

sed -n '2,327p' xe-scripts.sh > xe-pre.sh

vi xe-pre.sh


#1行目のコメントアウト
#preinstall scriptlet (using /bin/sh):

#メモリチェックの部分を変更
#if [ $PhyMem -lt 1024 ]
if [ $PhyMem -lt 900 ]

 

#preinstall scriptの実行

sudo bash xe-pre.sh 1

 

#rpmのみのインストール

sudo rpm -i --noscripts /home/opc/ダウンロード/oracle-database-xe-18c-1.0-1.x86_64.rpm

 #postinstall scriptの抜き出し、実行

sed -n '329,392p' xe-scripts.sh > xe-post.sh

sudo bash xe-post.sh

 

あとは、通常インストールと同じです。

sudo /etc/init.d/oracle-xe-18c configure
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:
Confirm the password:
Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle Database XE.
[WARNING] [DBT-11209] 現在の使用可能メモリーは、データベースの作成に必要な使用可能メモリー(388MB)を下回っています。
原因: 次のノードには必要な使用可能メモリーがありません:
ノード:ol77 使用可能なメモリー:264.2656MB (270608.0KB)

[WARNING] [DBT-11205] 指定した共有プール・サイズが推奨の最小サイズ要件を満たしていません。これにより、データベースの作成が失敗します。
アクション: 共有プール・サイズに少なくとも(383 MB)を指定してください。
SYSユーザー・パスワードを入力してください:
*************
SYSTEMユーザー・パスワードを入力してください:
**************
PDBADMINユーザー・パスワードを入力してください:
**************
DB操作の準備
7%完了
データベース・ファイルのコピー中
8%完了
[WARNING] ORA-00821: Specified value of sga_target 292M is too small, needs to be at least 400M
ORA-01078: failure in processing system parameters

9%完了
[FATAL] ORA-01034: ORACLE not available

29%完了
100%完了
[FATAL] ORA-01034: ORACLE not available

7%完了
0%完了
詳細はログ・ファイル"/opt/oracle/cfgtoollogs/dbca/XE/XE.log"を参照してください。

Database configuration failed. Check logs under '/opt/oracle/cfgtoollogs/dbca'.

 

やはりメモリが足りなかったようです。

メモリ関連の初期パラメータをいじって無理やり構成することも考えましたが、経験上ケチりすぎるとまともに動かないので止めておきます。

 

アンインストール

sudo /etc/init.d/oracle-xe-18c delete

sudo rpm -e oracle-database-xe-18c-1.0-1.x86_64

 

というわけで不本意ながら本日はここまで。

Computeインスタンス(Oracle Linux7)をGUI化する

Oracle Cloud always free Advent Calendar 2019の12日目です。

今回はComputeインスタンスGUI化します。
6日目にもdockerイメージでGUIを使用できるようにしましたが、今回は直接ホストOSごとGUI化してみます。
デスクトップ環境には軽量と言われているXFCEを使用します。

なお、今回xrdp接続用のポート(3389)は公開せず、SSH転送(ポートフォワーディング)で接続することにします。

 

#XFCE/XRDPのインストールと有効化
sudo yum -y groupinstall Xfce
sudo yum -y install xrdp
sudo systemctl enable xrdp
sudo systemctl start xrdp

 

#日本語フォントのインストール

sudo yum -y install vlgothic-*

#日本語入力メソッドのインストール
sudo yum -y install ibus-kkc

#firefoxのインストール
sudo yum -y install firefox

#ロケールを日本語に変更

sudo localectl set-locale LANG=ja_JP.UTF-8

 

#xrdp接続時にxfceセッションが起動するようにする
cat > ~/.Xclients <<EOF
#!/bin/bash
export LANG="ja_JP.UTF-8"
export XMODIFIERS="@im=ibus"
export XMODIFIER="@im=ibus"
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export DefaultIMModule=ibus
ibus-daemon -drx
exec xfce4-session
EOF
chmod +x ~/.Xclients

 

#パスワードの設定
sudo passwd opc

 

Computeインスタンス側の設定が終わったら、WindowsクライアントからTeratermでComputeインスタンスSSH接続します。


SSH接続したらポートフォワーディングの設定です。
設定->SSH転送で
ローカルのポート 3389
リモート側ホスト 127.0.0.1
ポート 3389

と設定します。

f:id:KNOPP:20191116151435p:plain

設定->SSH転送

 

f:id:KNOPP:20191116151510p:plain

ポートフォワーディング設定


SSH転送設定が終わったら、リモートデスクトップで接続します。

 

f:id:KNOPP:20191116151537p:plain

リモートデスクトップ起動

リモートデスクトップ画面ではコンピューターにlocalhostと入力します。

f:id:KNOPP:20191116151623p:plain

リモートデスクトップ接続画面

f:id:KNOPP:20191116151843p:plain

接続画面

 

XRDP接続画面になるので、先ほど設定したユーザー(opc)、パスワードを入力します。

f:id:KNOPP:20191116151946p:plain

XRDPログイン画面

パスワード入力が終わるとログイン画面です。

f:id:KNOPP:20191116222954p:plain

接続後

ComputeインスタンスGUIログインすることができました。

日本語入力も可能です。

 

<参考>

参考メモ/minimal installしたCentOS7にXfce4 + ibus-kkcで日本語入力可能にする - Qiita