Oracle Cloud/Google Cloud always free比較

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

今日は、Oracle Cloudのalways freeとGoogle Cloudのalways freeを比較してみようと思います。
(比較対象は主にComputeにしたいと思います)

Google Cloud Oracle Cloud
リージョン 以下の米国リージョンのうちの 1 つ)
オレゴン: us-west1
アイオワ: us-central1
サウスカロライナ: us-east1
Japan Eastを含む各リージョン
インスタンス 当月内の合計時間数と同等の時間数を使い切るまで 2
インスタンスタイプ f1-micro VM.Standard.E2.1.Micro
CPU 0.2vcpu(バーストあり) 1/8 OCPU
メモリ 0.60GB 1GB
HDD容量 30GB 2インスタンスあわせて 100GB
帯域 ー(見つからず) 480M ビット/秒
データ転送 1 GB の北米から全リージョン宛ての下りネットワーク(1 か月あたり、中国およびオーストラリアを除く) アウトバウンド・データ転送(10TB/月)


Oracle Cloudの太っ腹っぷりが目立ちますね!

<参考>
cloud.google.com

www.oracle.com

automounous databaseでAdvanced Analytics (Oracle Data Miner)を使う(失敗)

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

 

今日はAdvanced Analyticsを使って機械学習を行います。

前提として、ADWが作成されていること、SQLDeveloperからADWに接続できることです。

 

機械学習はSQLDeveloperのOracle Data Minerというツールを使います。

 

<準備>

まず、SQLDevelperからADWにADMINユーザで接続します。

 

dumuserの作成・権限の割り当て

create user dmuser identified by dmPWuser##1234
default tablespace data temporary tablespace temp
quota unlimited on data;

grant connect,resource to dmuser;

 

dumuserを作成したらdmuserで接続しなおします。

接続したら、表示ー>Data Miner->Data Minerの接続を選択します。

f:id:KNOPP:20191122003412p:plain

DataMinerの接続

 

Data Minerタブが現れるので、接続の追加をクリックします。

f:id:KNOPP:20191122003512p:plain

DataMinerの接続2

接続の選択 画面が現れるのでdmuser用の接続を選択します。

f:id:KNOPP:20191122003804p:plain

接続選択

 

接続が作成されるので、ダブルクリックします。

f:id:KNOPP:20191122004018p:plain

DataMiner接続初回



初回接続の際には、リポジトリをインストールしますかと出るので、

はい(Y)をクリックします。
 

f:id:KNOPP:20191122004115p:plain

初回接続

SYSのパスワードが求められてしまいました。

ADMINユーザで接続を試みてもはじかれてしまいます。

f:id:KNOPP:20191122005340p:plain

SYS接続

 

というわけで、ADWでは、Oracle Data Minerを使用することはできないようです。

 

 

<参考>

speakerdeck.com

autonomous databaseにデータをインポートする

Oracle Cloud always free Advent Calendar 201920日目です。
19日目では、autonomous databaseのデータをObject Storageへエクスポートしましたが、
本日は、Object Storage上のデータをautonomous databaseへインポートします。
エクスポート元、インポート先のユーザは別のユーザにします。(エクスポート元ユーザ soe / インポート先ユーザ soe_i)

 

流れとしては、
①Object Storageへインポートするファイルを配置
②autonomous databaseで使用するbucket操作用ユーザ&グループを作成
③クレデンシャルを作成
④インポートするDBユーザの作成
⑤Object Storageからautonomous databaseへインポート

 

①は昨日エクスポートしたファイルをそのまま使用し、②③は昨日やったことと同じなので、省略します。

 

#インポートするDBユーザの作成
環境変数の設定
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

 

sqlplus ADMIN/XXXXXXX@adw_high
SQL>CREATE USER soe_i IDENTIFIED BY TccP12#_TccP12#_ DEFAULT TABLESPACE DATA QUOTA UNLIMITED ON DATA TEMPORARY TABLESPACE TEMP;
SQL>GRANT connect, resource to soe_i;
SQL>GRANT execute on dbms_lock to soe_i;

 

#impdpの実行

#dumpfileはインポートするファイルの格納先
impdp admin/XXXXXX@adw_high directory=data_pump_dir credential=def_cred_name dumpfile= https://objectstorage.ap-tokyo-1.oraclecloud.com/n/nrz2zsre72gm/b/adw_bucket/o/exp%u.dmp REMAP_SCHEMA=soe:soe_i

Import: Release 18.0.0.0.0 - Production on Fri Dec 6 05:40:03 2019
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
ORA-31684: Object type USER:"SOE_I" already exists

Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PASSWORD_HISTORY
ORA-39111: Dependent object type PASSWORD_HISTORY:"SOE_I" skipped, base object type USER:"SOE_I" already exists
・・・・
. . imported "SOE_I"."ORDERS" 129.9 MB 1439835 rows
. . imported "SOE_I"."PRODUCT_DESCRIPTIONS" 222.5 KB 1000 rows
. . imported "SOE_I"."ORDER_ITEMS" 230.1 MB 4328189 rows
. . imported "SOE_I"."CARD_DETAILS" 64.06 MB 1503687 rows
. . imported "SOE_I"."CUSTOMERS" 108.4 MB 1003687 rows
. . imported "SOE_I"."INVENTORIES" 15.21 MB 898304 rows
. . imported "SOE_I"."PRODUCT_INFORMATION" 186.9 KB 1000 rows
. . imported "SOE_I"."ORDERENTRY_METADATA" 5.609 KB 4 rows
. . imported "SOE_I"."ADDRESSES" 110.3 MB 1503690 rows
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/VIEW/VIEW
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_INDEX/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Processing object type SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA
ORA-39082: Object type PACKAGE BODY:"SOE_I"."ORDERENTRY" created with compilation warnings

Job "ADMIN"."SYS_IMPORT_FULL_01" completed with 3 error(s) at Fri Dec 6 05:45:00 2019 elapsed 0 00:04:55

 

#コンパイルエラーが発生しているのでリコンパイル

sqlplus soe_i/TccP12#_TccP12#_@adw_high
SQL> alter package ORDERENTRY compile body;
Package body altered.

コンパイルエラーが解消されたので、問題なくインポートが終わりました。

 

<参考>
https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/user/load-data-data-pump.html#GUID-297FE3E6-A823-4F98-AD50-959ED96E6969

autonomous databaseのデータをエクスポートする

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

本日はautonomous databaseのデータをエクスポートしてみようと思います。
オンプレのOracle Databaseのデータをエクスポートする場合と異なり、Oracle Cloudのユーザが必要です。

 

エクスポートの流れとしては、
①autonomous databaseで使用するbucket操作用ユーザ&グループを作成
bucketを作成
③クレデンシャルを作成
④autonomous databaseからObject Storageへエクスポート
⑤Object Storageからエクスポートしたデータを取り出し

 

今回は、18日のswingbenchを使用するときに作成したデータをエクスポートしてみます。前提は15日のsqlplusからの接続ができていることとなります。

 

#ユーザの作成  (実行結果のid (user OCID)を控えておく)
oci iam user create --name bucketadmin --description bucketadmin
{
"data": {
"capabilities": {
"can-use-api-keys": true,
"can-use-auth-tokens": true,
"can-use-console-password": true,
"can-use-customer-secret-keys": true,
"can-use-smtp-credentials": true
},
"compartment-id": "ocid1.tenancy.oc1..aaaaaaaaeb3oom3w5bw3ebkgtvd2w2dbXXXXXXX",
・・・・・

 

#グループの作成 (実行結果のid (group OCID)を控えておく)
oci iam group create --name bucketgroup --description bucketgroup
{
"data": {
"compartment-id": "ocid1.tenancy.oc1..aaaaaaaaeb3oom3w5bw3ebkgtvd2w2dbljknl4ssgueXXXXXXX",
・・・・・


#グループへユーザの割り当て(user-idとgroup-idは先ほど作成したユーザーとグループのID)
oci iam group add-user \
--user-id ocid1.user.oc1..aaaaaaaaczvfhniqd6jses4jlgee2qsvn66lhyXXXXXXX \
--group-id ocid1.group.oc1..aaaaaaaamb25rdvw4pz3oirrgza7nbpepiqtbqlr73XXXXX

 

#bucketとobjectを管理できるポリシーの作成。ポリシーはグループに割り当てる
oci iam policy create --name bucketgroup_policy \
--statements '["Allow group bucketgroup to manage buckets in tenancy","Allow group bucketgroup to manage objects in tenancy"]' \
--description bucketgroup_policy

#AUTHトークンの作成
oci iam auth-token create \
--user-id ocid1.user.oc1..aaaaaaaaczvfhniqd6jses4jlgee2qsvn66lhymXXXXXXXX \
--description bucketgroup

#bukectの作成
oci os bucket create --name adw_bucket
{
"data": {
・・・・・
"namespace": "nrz2zsre72gm",
"object-events-enabled": false,
"object-lifecycle-policy-etag": null,
"public-access-type": "NoPublicAccess",
"storage-tier": "Standard",
"time-created": "2019-12-05T14:21:52.730000+00:00"
},
"etag": "0a2f0fbb-31bf-4de2-83ed-fb5e456103f0"
}
#後でnamespaceを使うのでメモしておく。


#expdpのインストール
sudo yum -y install oracle-instantclient18.3-tools.x86_64

 

環境変数の設定
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


soeユーザのオブジェクトをdata_pump_dirにエクスポート
expdp ADMIN/XXXXXXX@adw_high directory=data_pump_dir dumpfile=exp%U.dmp filesize=2G logfile=export.log schemas=soe
Export: Release 18.0.0.0.0 - Production on Thu Dec 5 13:53:25 2019
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Starting "ADMIN"."SYS_EXPORT_SCHEMA_01": ADMIN/********@adw_high directory=data_pump_dir dumpfile=exp%U.dmp filesize=2G logfile=export.log schemas=soe
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_INDEX/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PASSWORD_HISTORY
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/VIEW/VIEW
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/POST_SCHEMA/PROCACT_SCHEMA
. . exported "SOE"."ORDER_ITEMS" 230.1 MB 4328189 rows
. . exported "SOE"."ORDERS" 129.9 MB 1439835 rows
. . exported "SOE"."ADDRESSES" 110.3 MB 1503690 rows
. . exported "SOE"."CUSTOMERS" 108.4 MB 1003687 rows
. . exported "SOE"."CARD_DETAILS" 64.06 MB 1503687 rows
. . exported "SOE"."LOGON" 51.53 MB 2396105 rows
. . exported "SOE"."INVENTORIES" 15.21 MB 898304 rows
. . exported "SOE"."PRODUCT_DESCRIPTIONS" 222.5 KB 1000 rows
. . exported "SOE"."PRODUCT_INFORMATION" 186.9 KB 1000 rows
. . exported "SOE"."WAREHOUSES" 36.21 KB 1000 rows
. . exported "SOE"."ORDERENTRY_METADATA" 5.609 KB 4 rows
ORA-39173: Encrypted data has been stored unencrypted in dump file set.
Master table "ADMIN"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for ADMIN.SYS_EXPORT_SCHEMA_01 is:
/u03/dbfs/983C8A22693ADDAEE0531914000A0697/data/dpdump/exp01.dmp
Job "ADMIN"."SYS_EXPORT_SCHEMA_01" successfully completed at Thu Dec 5 13:58:19 2019 elapsed 0 00:04:51

 

 

#data_pump_dirにエクスポートされたデータの確認

sqlplus ADMIN/XXXXXX@adw_high
SQL> SELECT OBJECT_NAME FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR');

OBJECT_NAME
--------------------------------------------------------------------------------
export.log
exp01.dmp

 

#CREDENTIALの作成

BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'DEF_CRED_NAME',
username => 'bucketadmin',
password => 'KA<L6Woi2_nyDglvpp3b'
);
END;
/
PL/SQL procedure successfully completed.

 

#data_pump_dirのエクスポートデータをObject Storageへコピー
#ap-tokyo-1がregion名

#nrz2zsre72gmがnamespace名

#adw_bucketbucket
BEGIN
DBMS_CLOUD.PUT_OBJECT(credential_name => 'DEF_CRED_NAME',
object_uri => 'https://objectstorage.ap-tokyo-1.oraclecloud.com/n/nrz2zsre72gm/b/adw_bucket/o/exp01.dmp',
directory_name => 'DATA_PUMP_DIR',
file_name => 'exp01.dmp');
END;
/
PL/SQL procedure successfully completed.

 

#Object Storageへ格納されたデータの確認
oci os object list --bucket-name adw_bucket
{
"data": [
{
"md5": "jVYyubfkNMuPKjPTgfIBLw==",
"name": "exp01.dmp",
"size": 745684992,
"time-created": "2019-12-05T14:23:09.552000+00:00"
}
],
"prefixes": []
}

 

<参考>

docs.oracle.com

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