前回に引き続き、2020年6月30日現在の、FCCによる米国の固定ブロードバンド接続統計データの簡易分析です。今回はDataBaseにWindows上のoracle 19c、問い合わせクライアントにSQL Developerを使ってみました。
まず、データを取得します。今回は、こちらからダウンロードし、解凍しました。データサイズは以前より少し増えて11GB程です。
つづいて、フィールドがどうなっているか、WSL2/Debianで確認したところ、前回と同じでした。
次に、テーブルを作成し、データをcsvファイルからインポートします。
まず、データを取得します。今回は、こちらからダウンロードし、解凍しました。データサイズは以前より少し増えて11GB程です。
つづいて、フィールドがどうなっているか、WSL2/Debianで確認したところ、前回と同じでした。
$ head -n1 fbd_us_with_satellite_jun2020_v1.csv LogRecNo,Provider_Id,FRN,ProviderName,DBAName,HoldingCompanyName,HocoNum,HocoFinal,StateAbbr,BlockCode,TechCode,Consumer,MaxAdDown,MaxAdUp,Businessつづいて、Oracle19c上でDBを新規作成します。なお、Oracle 19cは、C:\Users\YourID\Downloads\WINDOWS.X64_193000_db_homeに解凍し、Databaseは、C:\Users\YourID\Oracle\以下にインストールしました。また、インスタンスを追加し、追加したインスタンスに本DBを作成するようにしています。
0. フォルダーとinit.oraを作成
mkdir C:\Users\YourID\Oracle\oradata\USBB
mkdir C:\Users\YourID\Oracle\oradata\USBB\orclpdb
mkdir C:\Users\YourID\Oracle\oradata\USBB\pdbseed
mkdir C:\Users\YourID\Oracle\recovery_area\USBB
==============================================================================
notepad "C:\Users\YourID\Oracle\admin\usbb\pfile\initUSBB.ora"
==============================================================================
##############################################################################
# Copyright (c) 1991, 2013 by Oracle Corporation
##############################################################################
###########################################
# NLS
###########################################
nls_language="JAPANESE"
nls_territory="JAPAN"
###########################################
# SGA Memory
###########################################
sga_target=9474m
###########################################
# Miscellaneous
###########################################
compatible=19.0.0
diagnostic_dest=C:\Users\YourID\Oracle
enable_pluggable_database=true
###########################################
# Cursors and Library Cache
###########################################
open_cursors=300
###########################################
# Cache and I/O
###########################################
db_block_size=8192
###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_tablespace=UNDOTBS_1
###########################################
# Security and Auditing
###########################################
audit_file_dest="C:\Users\YourID\Oracle\admin\usbb\adump"
audit_trail=db
remote_login_passwordfile=EXCLUSIVE
###########################################
# Sort, Hash Joins, Bitmap Indexes
###########################################
pga_aggregate_target=3158m
###########################################
# Database Identification
###########################################
db_name="usbb"
###########################################
# Network Registration
###########################################
local_listener=LISTENER_USBB
###########################################
# File Configuration
###########################################
control_files=("C:\Users\YourID\Oracle\oradata\USBB\control01.ctl", "C:\Users\YourID\Oracle\recovery_area\USBB\control02.ctl")
db_recovery_file_dest="C:\Users\YourID\Oracle\recovery_area"
db_recovery_file_dest_size=12732m
###########################################
# Processes and Sessions
###########################################
processes=480
###########################################
# Shared Server
###########################################
dispatchers="(PROTOCOL=TCP) (SERVICE=orclXDB)"
###########################################
# Plugable Database
###########################################
ENABLE_PLUGGABLE_DATABASE=TRUE
==============================================================================
1-1. 管理者権限でインスタンスを新規作成
cmd
set ORACLE_SID=USBB
oradim -NEW -SID USBB -STARTMODE AUTO -PFILE "C:\Users\YourID\Oracle\admin\usbb\pfile\initUSBB.ora"
1-2. パスワードファイルの作成
cd C:\Users\YourID\Downloads\WINDOWS.X64_193000_db_home\database
orapwd file=PWDusbb.ora password=PassW0rd format=12
2. sqlplus にて接続し、データベースを作成
cmd
#エラーメッセージをUSで出力する場合
set NLS_LANG=American_America.JA16SJIS
set ORACLE_SID=USBB
sqlplus /nolog
SQL> connect sys as sysdba
SQL> startup nomount pfile="C:\Users\YourID\Oracle\admin\usbb\pfile\initUSBB.ora"
SQL> CREATE DATABASE USBB
LOGFILE GROUP 1 ('C:\Users\YourID\Oracle\oradata\USBB\REDO01.log') SIZE 256M,
GROUP 2 ('C:\Users\YourID\Oracle\oradata\USBB\REDO02.log') SIZE 256M,
GROUP 3 ('C:\Users\YourID\Oracle\oradata\USBB\REDO03.log') SIZE 256M
DATAFILE 'C:\Users\YourID\Oracle\oradata\USBB\SYSTEM01.dbf'
SIZE 20000M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
SYSAUX DATAFILE 'C:\Users\YourID\Oracle\oradata\USBB\SYSAUX01.dbf'
SIZE 2000M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE TEMP01
TEMPFILE 'C:\Users\YourID\Oracle\oradata\USBB\TEMP01.dbf'
SIZE 2000M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
UNDO TABLESPACE UNDOTBS_1
DATAFILE 'C:\Users\YourID\Oracle\oradata\USBB\UNDOTBS01.dbf'
SIZE 2000M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
CHARACTER SET AL32UTF8
ENABLE PLUGGABLE DATABASE
SEED FILE_NAME_CONVERT=('C:\Users\YourID\Oracle\oradata\USBB\','C:\Users\YourID\Oracle\oradata\USBB\pdbseed\')
SYSTEM DATAFILES SIZE 1000M AUTOEXTEND ON MAXSIZE UNLIMITED
SYSAUX DATAFILES SIZE 1000M AUTOEXTEND ON MAXSIZE UNLIMITED
LOCAL UNDO ON
SET TIME_ZONE='Asia/Tokyo';
SQL> shutdown
3. spfileの作成とstartup
SQL> create spfile='C:\Users\YourID\Downloads\WINDOWS.X64_193000_db_home\database\SPFILEUSBB.ORA' from pfile='C:\Users\YourID\Oracle\admin\usbb\pfile\initUSBB.ora';
SQL> startup
4. lisnter.ora, tnsnames.oraの編集とtnsリスナの再起動
tnsnames.ora
===========================================
# tnsnames.ora Network Configuration File: C:\Users\YourID\Downloads\WINDOWS.X64_193000_db_home\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = I44)(PORT = 1521))
)
LISTENER_USBB =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = I44)(PORT = 1522))
)
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = I44)(PORT = 1521))
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = orcl)
)
)
USBB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = I44)(PORT = 1522))
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = usbb)
)
)
===========================================
listner.ora
===========================================
# listener.ora Network Configuration File: C:\Users\YourID\Downloads\WINDOWS.X64_193000_db_home\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\Users\YourID\Downloads\WINDOWS.X64_193000_db_home)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\Users\YourID\Downloads\WINDOWS.X64_193000_db_home\bin\oraclr19.dll")
)
(SID_DESC =
(SID_NAME = orcl)
)
(SID_DESC =
(SID_NAME = usbb)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = I44)(PORT = 1522))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = I44)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
===========================================
lsnrctl stop
lsnrctl start
# cdbの構成
cmd
set Path=C:\Users\YourID\Downloads\WINDOWS.X64_193000_db_home\perl\bin;%Path%
set ORACLE_SID=USBB
set ORACLE_HOME=C:\Users\YourID\Downloads\WINDOWS.X64_193000_db_home
mkdir C:\Temp
sqlplus sys as sysdba
SQL> @?\rdbms\admin\catcdb.sql
SQL> host perl -I &&rdbms_admin &&rdbms_admin_catcdb --logDirectory &&1 --logFilename &&2
1に値を入力してください: C:\Temp
2に値を入力してください: create_cdb.log
Enter new password for SYS: PassW0rd
Enter new password for SYSTEM: PassW0rd
Enter temporary tablespace name: TEMP
SQL> @?/rdbms/admin/catalog.sql
SQL> @?/rdbms/admin/catproc.sql
SQL> @?/rdbms/admin/utlrp.sql
SQL> @?/sqlplus/admin/help/hlpbld.sql HELPUS.SQL
SQL> exit
sqlplus system as sysdba
SQL> @?/sqlplus/admin/pupbld.sql
exit
ORADIM -EDIT -SID usbb -STARTMODE AUTO -SRVCSTART SYSTEM
sqlplus system as sysdba
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=I44)(PORT=1522))';
SQL> alter system register;
SQL> exit
# pdbの作成
sqlplus system as sysdba
SQL> create pluggable database usbbpdb admin user usbb identified by "PassW0rd"
file_name_convert = (
'C:\USERS\YourID\ORACLE\ORADATA\USBB\PDBSEED\',
'C:\USERS\YourID\ORACLE\ORADATA\USBB\USBBPDB\');
SQL> alter pluggable database USBBPDB open;
SQL> exit
sqlplus / as sysdba
SQL> select name, open_mode from v$pdbs;
SQL> ALTER SESSION SET CONTAINER = usbbpdb;
SQL> SHOW CON_NAME
SQL> CREATE USER usbb IDENTIFIED BY PassW0rd;
SQL> GRANT DBA, CONNECT , RESOURCE TO usbb;
SQL> exit
以上で、インスタンスUSBBにPlugable Database usbbpdbを作成し、ユーザ usbbを追加できました。次に、テーブルを作成し、データをcsvファイルからインポートします。
sqlplus usbb/PassW0rd@192.168.255.44:1522/usbbpdb CREATE TABLESPACE USBBPDB01 DATAFILE 'C:\USERS\YourID\ORACLE\ORADATA\USBB\USBBPDB\USBBPDB01.dbf' SIZE 20000M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED; CREATE TABLE jun2020 ( LogRecNo VARCHAR2(2000) NOT NULL, Provider_Id VARCHAR2(2000), FRN VARCHAR2(2000), ProviderName VARCHAR2(2000), DBAName VARCHAR2(2000), HoldingCompanyName VARCHAR2(2000), HocoNum VARCHAR2(2000), HocoFinal VARCHAR2(2000), StateAbbr VARCHAR2(100), BlockCode VARCHAR2(200), TechCode VARCHAR2(200), Consumer VARCHAR2(200), MaxAdDown VARCHAR2(100), MaxAdUp VARCHAR2(100), Business VARCHAR2(100), MaxCIRDown VARCHAR2(100), MaxCIRUp VARCHAR2(100), CONSTRAINT jun2020pk PRIMARY KEY (LogRecNo) ) TABLESPACE USBBPDB01; exit cd C:\Users\YourID\Downloads\US-Fixed-with-Satellite-Jun2020 notepad jun2020.ctl ================================= OPTIONS (ERRORS=50) LOAD DATA CHARACTERSET UTF8 INFILE 'C:\Users\YourID\Downloads\US-Fixed-with-Satellite-Jun2020\fbd_us_with_satellite_jun2020_v1.utf8.csv' APPEND INTO TABLE "JUN2020" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' AND '"' TRAILING NULLCOLS ( LogRecNo, Provider_Id, FRN, ProviderName, DBAName, HoldingCompanyName, HocoNum, HocoFinal, StateAbbr, BlockCode, TechCode, Consumer, MaxAdDown, MaxAdUp, Business, MaxCIRDown, MaxCIRUp ) ================================= ## wsl2にてデータをUTF8にコンバート(SJSでは途中でエラーが発生した) cd /mnt/c/Users/YourID/Downloads/US-Fixed-with-Satellite-Jun2020 time iconv -f WINDOWS-31J -t UTF8 fbd_us_with_satellite_jun2020_v1.csv -o fbd_us_with_satellite_jun2020_v1.utf8.csv real 8m50.756s user 1m15.809s sys 0m38.827s ## wsl2は以上 #sqlldrをつかってデータをインポート sqlldr usbb/PassW0rd@192.168.255.44:1522/usbbpdb CONTROL=jun2020.ctl LOG=jun2020.log BAD=jun2020.bad skip=1 ---- 表"JUN2020": 73874350 行は正常にロードされました。 #参考 インポート1850万件あたり約15分、約1時間で全件ロード #使用機材:HDD 2TB, Intel Corei5 6c6t Mem 32GB, Windows10 Pro Workstationデータのインポートができたので早速、クエリを実行してみます。なお、フロントエンドは前述のように、SQL Developwerを使いました。
select maxaddown,provider_id,providername, count(*) from jun2020
group by maxaddown, provider_id, providername
order by count(*) desc;
結果は以下の通りですが、相変わらず衛星経由の通信が半数程占めているのは前回・前々回と変わりがないようです。
今回は以上です。それでは。
コメント
コメントを投稿