ADW/ATP(Autonomous DB)でObject StorageにアップロードされたCSVファイル(gzip圧縮済)を外部表(EXTERNAL TABLE)として直接参照する。(OCI, Oracle Cloud Infrastructure)
- 1. サンプルのCSVファイル(gzip圧縮済み)
- 2. CSVファイル(gzip圧縮済)をObject Storageにアップロード
- 3. ADW/ATPにCREDENTIALを作成
- 4. 外部表の作成(DBMS_CLOUD.CREATE_EXTERNAL_TABLEプロシージャ)
- 5. 作成した外部表の参照
- 6. まとめ
表題の通り、ADW/ATP(Autonomous DB)でObject Storageにアップロードされた
CSVファイル(gzip圧縮済)を外部表(EXTERNAL TABLE)として参照してみるやで彡(゚)(゚)
下記マニュアルを参照しています。
Using Oracle Autonomous Data Warehouse
Query External Data
https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/user/query-external.html#GUID-72DC8BB6-5245-4262-A100-C35A2E553F70
1. サンプルのCSVファイル(gzip圧縮済み)
下記のCSVファイル(gzip圧縮済み)をサンプルとします。
$ ls -la total 16 drwxrwxr-x. 2 opc opc 4096 Mar 10 16:16 . drwxrwxr-x. 23 opc opc 4096 Mar 10 15:15 .. -rw-rw-r--. 1 opc opc 47 Mar 10 16:00 sample1.csv.gz -rw-rw-r--. 1 opc opc 44 Mar 10 16:16 sample2.csv.gz $ zcat sample1.csv.gz 1,a 2,b 3,c $ zcat sample2.csv.gz 4,d 5,e 6,f
2. CSVファイル(gzip圧縮済)をObject Storageにアップロード
OCI CLI でCSVファイル(gzip圧縮済)をObject Storageにアップロードします。
OCI CLI のセットアップ方法はこちらの記事のリンク先を参照してね彡(゚)(゚)
oci os object bulk-upload -ns namespace -bn bucket-name --src-dir ./ Uploaded sample1.csv.gz [####################################] 100% { "skipped-objects": [], "upload-failures": {}, "uploaded-objects": { "sample1.csv.gz": { "etag": "f4484cbe-48a3-4533-98f8-3e7d927bbd92", "last-modified": "Sun, 10 Mar 2019 16:27:33 GMT", "opc-content-md5": "Y9kGzFq93i/9X/f+jkmo0Q==" }, "sample2.csv.gz": { "etag": "4c92564c-bffb-4f1d-a637-a09a3cff85b8", "last-modified": "Sun, 10 Mar 2019 16:27:33 GMT", "opc-content-md5": "K0TW745KejkBs9vRuciT2A==" } } }
3. ADW/ATPにCREDENTIALを作成
DBMS_CLOUD.CREATE_CREDENTIALプロシージャでADW/ATPにCREDENTIALを
作成します。作り方はこちらの記事やリンク先のマニュアルを参照してね彡(゚)(゚)
4. 外部表の作成(DBMS_CLOUD.CREATE_EXTERNAL_TABLEプロシージャ)
DBMS_CLOUD.CREATE_EXTERNAL_TABLEプロシージャで外部表を作成します。
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE( table_name => 'EXT_SAMPLE_CSV_GZ', credential_name => 'OCI_CLI_AYS_ATP', file_uri_list => 'https://swiftobjectstorage.region.oraclecloud.com/v1/namespace/bucket-name/sample*.csv.gz', format => '{ "type" : "CSV" , "compression" : "gzip" }' , column_list => 'ITEM_ID NUMBER, ' || 'ITEM_NAME VARCHAR2(30)' ); END; /
それぞれのパラメータの意味は下記の通りです。
- table_name:外部表名を指定しています。
- credential_name:上記3. で作成したCREDENTAILを指定しています。
- file_url_list:Object Storage上のファイルURLをワイルドカード(*)で指定しています。URL形式の詳細は "こちら"
- format:幾つか指定方法がありますが、本ケースではJSON形式でtype属性(CSV)とcompression属性(gzip)を指定しています。詳細は "こちら"
- column_list:カラム定義を外部表(EXTERNAL TABLE)形式で指定します。
下記マニュアルも参照やで彡(゚)(゚)
A Packages DBMS_CLOUD and DBMS_CLOUD_ADMIN
CREATE_EXTERNAL_TABLE Procedure
https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/user/dbmscloud-reference.html#GUID-2AFBEFA4-992E-4F53-96DB-F560084C7DA9
5. 作成した外部表の参照
上記4. で作成した外部表を参照してみます。
SELECT * FROM EXT_SAMPLE_CSV_GZ; ITEM_ID ITEM_NAME ---------- ------------------------------ 1 a 2 b 3 c 4 d 5 e 6 f 6 rows selected.
Object Storage にアップロードしたCSVファイル(gzip圧縮済)のファイルを参照できたやで!彡(^)(^)
6. まとめ
ADW/ATPはObject Storage にアップロードしたファイルを直接参照できる!
という事は、Object StorageをData Lakeとしてデータを貯めこみながら参照しつつ、
使用頻度が高いデータはAutonomous DB(ADW/ATP)上にロード&加工して
Data Warehouse, Data Mart的に使えるということ彡(゚)(゚)
皆さん、どんどん活用してね彡(^)(^)
Autonomous DB(ADW/ATP) に Java の JDBC Thin Driver で接続してみる。(OCI, Oracle Cloud Infrastructure)
- 1. Autonomous DB(ADW/ATP) とは?
- 2. Autonomous DB(ADW/ATP) に接続する時のポイント(※ウォレットが必須)
- 3. ウォレット、JDBC Driver Full版 のダウンロードと展開
- 4. 方法1:ウォレットのパス(TNS_ADMIN) を JDBC URL に記述
- 5. 方法2:ウォレットのパス(TNS_ADMIN) を 環境変数に指定
- 6. 方法3:ウォレットのパス(TNS_ADMIN) を -D でシステム・プロパティとして指定
- 7. まとめ
表題の通り、Autonomous DB(ADW/ATP) に Java の JDBC Thin Driver で
接続してみます。下記の構成で試すやで彡(゚)(゚)
前回の記事の続きになります。
OCI Database(DBaaS) の PDB に Java の JDBC Thin Driver で
接続してみる。(Oracle Cloud Infrastructure)
https://gonsuke777.hatenablog.com/entry/2019/02/21/014614
1. Autonomous DB(ADW/ATP) とは?
Autonomous DB は ORACLE が提供する Full Managed なデータベースの Cloud Service です。
DWH向きの ADW(Autonomous Data Warehouse) と
OLTP向きの ATP(Autonomous Transaction Processing) が有るんやで彡(゚)(゚)
Autonomous Data Warehouse
https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/Autonomous Transaction Processing
https://docs.oracle.com/cd/E83857_01/paas/atp-cloud/
2. Autonomous DB(ADW/ATP) に接続する時のポイント(※ウォレットが必須)
通常のOracle Databaseへの接続 と Autonomous DB(ADW/ATP)への接続 の違いとして、
ウォレットによる暗号化通信が必須である点が挙げられます。
Autonomous Data Warehouse Instanceへの接続について
https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/user/connect-intorduction.html#GUID-CD4C10A6-1C1E-4969-8F67-1433B6CE626AAutonomous Transaction Processing Instanceへの接続について
https://docs.oracle.com/cd/E83857_01/paas/atp-cloud/atpug/connect-intorduction.html#GUID-CD4C10A6-1C1E-4969-8F67-1433B6CE626A
sqlplus や SQL Developer での接続については下記マニュアルを参照彡(゚)(゚)
Oracle SQL Developer (18.2)以上で接続
https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/user/connect-sql-dev182.html#GUID-14217939-3E8F-4782-BFF2-021199A908FDConnect with SQL*Plus
https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/user/connect-sqlplus.html#GUID-A3005A6E-9ECF-40CB-8EFC-D1CFF664EC5A
何かしらの手段でウォレットを指定する事が、ADW/ATP接続の必須事項となります。
本記事では JDBC Thin driver + TNS_ADMIN による接続を幾つか試してみますやで彡(゚)(゚)
3. ウォレット、JDBC Driver Full版 のダウンロードと展開
手順は幾つか有りますが、下記マニュアルの「Plain JDBC using Oracle Wallets」を実行します。
Java Connectivity with Autonomous Database (ATP or ADW) using 18.3 JDBC
https://www.oracle.com/technetwork/database/application-development/jdbc/documentation/atp-5073445.html
ウォレットのダウンロードと展開は下記が参考になります。
自律型データベース(Autonomous Transaction Processing)に Golang を使って接続
https://qiita.com/sugimount/items/69e11c116a895c9feb97
# Autonomous DB の Wallet を展開
unzip Wallet_xxxxxx.zip
JDBC Driver の最新版(18.3)は現時点(2019/2/26)で下記ですが、最新版を参照して下さい。
Oracle Database 18c (18.3) JDBC Driver & UCP Downloads
https://www.oracle.com/technetwork/database/application-development/jdbc/downloads/jdbc-ucp-183-5013470.html
ojdbc8-full.tar.gz をダウンロードして、Compute上に展開(tar xvzf ~)します。
# JDBC Driver Full版を展開
tar xvzf ojdbc8-full.tar.gz
ウォレットは/home/opc/app/opc/product/18.0.0/client_1/network/adminに、
JDBC Driver は/home/opc/work/ojdbc8-full にそれぞれ展開したものとします。
# Wallet(TNS_ADMIN) ls -la /home/opc/app/opc/product/18.0.0/client_1/network/admin total 76 drwxr-xr-x. 3 opc opc 4096 Feb 25 16:26 . drwxr-xr-x. 10 opc opc 4096 Jan 17 06:46 .. -rw-rw-r--. 1 opc opc 6661 Feb 25 15:01 cwallet.sso -rw-rw-r--. 1 opc opc 6616 Feb 25 15:01 ewallet.p12 -rw-rw-r--. 1 opc opc 3242 Feb 25 15:01 keystore.jks -rw-rw-r--. 1 opc opc 87 Feb 25 15:01 ojdbc.properties drwxr-xr-x. 2 opc opc 4096 Jan 17 06:44 samples -rw-r--r--. 1 opc opc 1441 Aug 26 2015 shrept.lst -rw-rw-r--. 1 opc opc 114 Feb 25 15:01 sqlnet.ora -rw-rw-r--. 1 opc opc 155 Feb 4 11:23 sqlnet.ora.bak -rw-rw-r--. 1 opc opc 2771 Feb 25 15:01 tnsnames.ora -rw-rw-r--. 1 opc opc 3336 Feb 25 15:01 truststore.jks -rw-rw-r--. 1 opc opc 19823 Feb 25 15:01 Wallet_xxxxxx.zip # JDBC Driver full ls -la /home/opc/work/ojdbc8-full total 8328 drwx------. 2 opc opc 4096 Aug 20 2018 . drwxrwxr-x. 22 opc opc 4096 Feb 25 15:33 .. -r--r--r--. 1 opc opc 4161744 Aug 2 2018 ojdbc8.jar -r-xr-xr-x. 1 opc opc 11596 Aug 2 2018 ojdbc.policy -r--r--r--. 1 opc opc 144428 Aug 2 2018 ons.jar -r--r--r--. 1 opc opc 307817 Aug 2 2018 oraclepki.jar -r--r--r--. 1 opc opc 1661545 Aug 2 2018 orai18n.jar -r--r--r--. 1 opc opc 205152 Aug 2 2018 osdt_cert.jar -r--r--r--. 1 opc opc 306854 Aug 2 2018 osdt_core.jar -rw-r--r--. 1 opc opc 2595 Aug 20 2018 README.txt -r--r--r--. 1 opc opc 29103 Aug 2 2018 simplefan.jar -r--r--r--. 1 opc opc 1398331 Aug 2 2018 ucp.jar -r--r--r--. 1 opc opc 262415 Aug 2 2018 xdb6.jar
4. 方法1:ウォレットのパス(TNS_ADMIN) を JDBC URL に記述
JDBC 18.3 では ウォレットのパスを TNS_ADMIN として
JDBC URL に記述できるようになっています。
URLに指定されています。 次に例を示します。
https://docs.oracle.com/cd/E83857_01/paas/atp-cloud/atpug/connect-jdbc-thin-wallet.html#GUID-F1D7452F-5E67-4418-B16B-B6A7B92F26A4
final static String DB_URL="jdbc:oracle:thin:@atpconnection_low?TNS_ADMIN=.";
この書き方の場合、接続文字列はtnsnames.oraの記述子を使用します。サンプルは下記
import java.sql.*; public class GetContainerName { public static void main(String[] args) { final String path = "jdbc:oracle:thin:@xxxxxx_high?TNS_ADMIN=/home/opc/app/opc/product/18.0.0/client_1/network/admin"; final String id = "ADMIN"; //ID final String pw = "xxxxxxxxxxxxx"; //password try ( Connection conn = DriverManager.getConnection(path, id, pw); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT NAME FROM V$CONTAINERS"); ) { while (rs.next()) { String cn = rs.getString("name"); System.out.println("Container Name => " + cn); } } catch(SQLException ex) { ex.printStackTrace(); //Error } } }
コンパイルと実行は下記。マニュアルの記述の通り oraclepki.jar,
osdt_core.jar, osdt_cert.jarを classpath に含めておくんやで彡(゚)(゚)
export JAVA_HOME=/home/opc/work/jdk-11.0.2 export PATH=${JAVA_HOME}/bin:${PATH} javac GetContainerName.java java -classpath /home/opc/work/ojdbc8-full/ojdbc8.jar:\ /home/opc/work/ojdbc8-full/ucp.jar:\ /home/opc/work/ojdbc8-full/oraclepki.jar:\ /home/opc/work/ojdbc8-full/osdt_core.jar:\ /home/opc/work/ojdbc8-full/osdt_cert.jar:. \ GetContainerName Container Name => VRWV9351YZ4NXNS_XXXXXX
成功(`・ω・)Ъ
5. 方法2:ウォレットのパス(TNS_ADMIN) を 環境変数に指定
ウォレットのパスをTNS_ADMIN環境変数に指定します。
この場合は JDBC URL に TNS_ADMIN の記述は不要で、ソースは下記彡(゚)(゚)
import java.sql.*; public class GetContainerName { public static void main(String[] args) { final String path = "jdbc:oracle:thin:@xxxxxx_high"; final String id = "ADMIN"; //ID final String pw = "xxxxxxxxxxxxx"; //password try ( Connection conn = DriverManager.getConnection(path, id, pw); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT NAME FROM V$CONTAINERS"); ) { while (rs.next()) { String cn = rs.getString("name"); System.out.println("Container Name => " + cn); } } catch(SQLException ex) { ex.printStackTrace(); //Error } } }
コンパイルと実行結果は以下の通りです。
export JAVA_HOME=/home/opc/work/jdk-11.0.2 export PATH=${JAVA_HOME}/bin:${PATH} javac GetContainerName.java export TNS_ADMIN=/home/opc/app/opc/product/18.0.0/client_1/network/admin java -classpath /home/opc/work/ojdbc8-full/ojdbc8.jar:\ /home/opc/work/ojdbc8-full/ucp.jar:\ /home/opc/work/ojdbc8-full/oraclepki.jar:\ /home/opc/work/ojdbc8-full/osdt_core.jar:\ /home/opc/work/ojdbc8-full/osdt_cert.jar:. \ GetContainerName Container Name => VRWV9351YZ4NXNS_XXXXXX
再び成功(`・ω・)Ъ
6. 方法3:ウォレットのパス(TNS_ADMIN) を -D でシステム・プロパティとして指定
ウォレットのパスをシステム・プロパティoracle.net.tns_admin として
-Dオプションで指定します。javaソースは上記 5. と同じなので省略。
実行コマンドは下記となります。
export JAVA_HOME=/home/opc/work/jdk-11.0.2 export PATH=${JAVA_HOME}/bin:${PATH} javac GetContainerName.java unset TNS_ADMIN java -classpath /home/opc/work/ojdbc8-full/ojdbc8.jar:\ /home/opc/work/ojdbc8-full/ucp.jar:\ /home/opc/work/ojdbc8-full/oraclepki.jar:\ /home/opc/work/ojdbc8-full/osdt_core.jar:\ /home/opc/work/ojdbc8-full/osdt_cert.jar:. \ -Doracle.net.tns_admin=/home/opc/app/opc/product/18.0.0/client_1/network/admin \ GetContainerName Container Name => VRWV9351YZ4NXNS_XXXXXX
三たび成功(`・ω・)Ъ
7. まとめ
oraclepki.jar, osdt_core.jar, osdt_cert.jar の classpath指定で
くっそハマった……まずはマニュアルの通りにやるのが、王道ですやね彡(-)(-)
OCI Database(DBaaS) の PDB に Java の JDBC Thin Driver で接続してみる。(Oracle Cloud Infrastructure)
表題の通り、OCI(Oracle Cloud Infrastructure) Database(DBaaS) の PDB に
Java の JDBC Thin Driver で接続してみます。下記の構成で試すやで彡(゚)(゚)
Compute(Java, JDBC Thin Driver) ⇒ (Private Subnet) ⇒ DBaaS(PDB)
前回の記事の続きになります。
OCI Database(DBaaS) の PDB に sqlplus で接続してみる。(Oracle Cloud Infrastructure)
https://gonsuke777.hatenablog.com/entry/2019/02/19/211953
1. 接続先情報の確認
以下のPDBに接続します。
ホスト名(Private):dbname.subnetname.vcnname.oraclevcn.com
ポート番号 :1521
PDBサービス名 :ayspdb2.subnetname.vcnname.oraclevcn.com
JDBC URL(thin) :jdbc:oracle:thin:@//dbname.subnetname.vcnname.oraclevcn.com:1521/ayspdb2.subnetname.vcnname.oraclevcn.com
2. Java のソースコード
PDBに接続してV$CONTAINERSビューからPDB名を取得してます。
接続文字列は前回同様の簡易接続(ホスト名:ポート番号/サービス名)やで彡(゚)(゚)
import java.sql.*; public class GetContainerName { public static void main(String[] args) { final String path = "jdbc:oracle:thin:@//" + "dbname.subnetname.vcnname.oraclevcn.com:" + //hostname "1521/" + //port "ayspdb2.subnetname.vcnname.oraclevcn.com"; //PDB Service final String id = "xxxxxxxx"; //ID final String pw = "yyyyyyyy"; //password try ( Connection conn = DriverManager.getConnection(path, id, pw); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT NAME FROM V$CONTAINERS"); ) { while (rs.next()) { String cn = rs.getString("name"); System.out.println("Container Name => " + cn); } } catch(SQLException ex) { ex.printStackTrace(); //Error } } }
3. コンパイルと実行
いつもの生コンパイルなスタイル彡(゚)(゚)
export JAVA_HOME=/home/opc/work/jdk1.8.0_191 export ORACLE_HOME=/home/opc/app/opc/product/18.0.0/client_1 export PATH=${JAVA_HOME}/bin:${PATH} javac GetContainerName.java java -classpath .:${ORACLE_HOME}/jdbc/lib/ojdbc8.jar GetContainerName Container Name => AYSPDB2 ★←PDB名
PDB名が出力されてるで!彡(^)(^)
4. まとめ
PDBのサービス名さえ分かっていれば、至ってフツー彡(゚)(゚)
次回は Autonomous DB(ADW/ATP) の接続を書いてみるやで。
OCI Database(DBaaS) の PDB に sqlplus で接続してみる。(Oracle Cloud Infrastructure)
表題の通り、OCI(Oracle Cloud Infrastructure) Database(DBaaS) の PDB に
sqlplus で接続してみます。下記の構成で試すやで彡(゚)(゚)
Compute(Oracle Client, sqlplus) ⇒ (Private Subnet) ⇒ DBaaS(PDB)
1. PDB, MTA(Multitenant Architecuture) とは?
PDB, MTA(multitenant architecture) は Oracle Database 12cR1以降の機能で、
一つの管理用DB(CDB)上に複数のコンテナ・データベース(PDB)を作成できる機能なんやで彡(゚)(゚)
詳細やメリットはマニュアルや公開資料を参照してね。
Oracle Database 12c マルチテナント・アーキテクチャとプラガブル・データベース
https://www.oracle.com/technetwork/jp/ondemand/branch/dosanko-3rd-mta-2844750-ja.pdfOracle Databaseデータベース概要, 18c
マルチテナント・アーキテクチャ
https://docs.oracle.com/cd/E96517_01/cncpt/introduction-to-oracle-database.html#GUID-ED16D715-761B-4F8B-8503-BC058E216D2F
2. OCI Database(DBaaS)の作成
ここはマニュアルや他の方のブログを見ませう彡(゚)(゚)
クラウドでOracle Databaseを使う - Oracle Cloud Infrastructureを使ってみよう(その7)
https://community.oracle.com/docs/DOC-1019568データベース・デプロイメントの作成
https://docs.oracle.com/cd/E83857_01/paas/database-dbaas-cloud/csdbi/create-db-deployment-overview.html
3. DBaaSのIPアドレス/管理サービス(CDB)名の参照とポート開放
ここは下記ブログを参照やで彡(゚)(゚)
[Oracle Cloud] SQL DeveloperでDBaaSに接続してみた
http://itedge.stars.ne.jp/oracle-cloud-dbaas_sql-developer/
OCIコンソールの下記から簡易接続(ホスト名:ポート番号/サービス名)の接続文字列として確認可能です。
下記のホスト名/ポート番号/管理サービスに接続するものとします。
※これらのホスト名/管理サービス(CDB)名は架空のものです。
ホスト名(Private) :dbname.subnetname.vcnname.oraclevcn.com
ポート番号 :1521
管理サービス(CDB)名:dbname_cdb32r.subnetname.vcnname.oraclevcn.com
管理サービス(CDB)への接続文字列(簡易接続):dbname.subnetname.vcnname.oraclevcn.com:1521/dbname_cdb32r.subnetname.vcnname.oraclevcn.com
4. 管理サービス(CDB)への接続確認とPDB名(PDBサービス名)確認
Compute への Oracle Client のインストールは下記記事を参照彡(゚)(゚)
Oracle Cloud(OCI)のIaaSからDbaaSへSQLPlusで接続してみた
https://qiita.com/feifo/items/d21b7050d0d4799f5d47
Compute にインストールした Oracle Client の sqlplus から管理サービス(CDB)にSYSで接続してみます。
なおこの後は特に断りが無い限り、接続文字列は簡易接続(ホスト名:ポート番号/サービス名)です。
8.1 簡易接続ネーミング・メソッドの理解
https://docs.oracle.com/cd/E96517_01/netag/configuring-naming-methods.html#GUID-B0437826-43C1-49EC-A94D-B650B6A4A6EE
export ORACLE_HOME=/home/opc/app/opc/product/18.0.0/client_1 export LD_LIBRARY_PATH=${ORACLE_HOME}/lib export TNS_ADMIN=${ORACLE_HOME}/network/admin export PATH=${ORACLE_HOME}/bin:${PATH} sqlplus /nolog CONNECT SYS/xxxxxxxxxxxxxxx@dbname.subnetname.vcnname.oraclevcn.com:1521/dbname_cdb32r.subnetname.vcnname.oraclevcn.com AS SYSDBA SHOW CON_NAME SHOW PDBS
結果は以下の通り。CDB(CDB$ROOT)に接続できてるやね彡(゚)(゚)
SQL> CONNECT SYS… Connected. SQL> SHOW CON_NAME CON_NAME ------------------------------ CDB$ROOT SQL> SHOW PDBS CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ---------- ---------- ---------- 2 PDB$SEED READ ONLY NO 3 AYSPDB2 READ WRITE NO ★これに接続する。 SQL>
上記のPDB名と管理サービス(CDB)名より、PDBサービス名は下記の通りとなります。
■管理サービス(CDB)名
dbname_cdb32r.subnetname.vcnname.oraclevcn.com
^^^^^^^^^^^^^
↓
■PDBサービス名
ayspdb2.subnetname.vcnname.oraclevcn.com
なお DBaaS の OS にログイン可能な場合は、DBaaS OS の opcユーザーで接続して、
gridユーザーにsu後に lsnrctl statusコマンドを実行すれば、より確実にPDBサービス名を確認できます。
# DBaaS の OS に opcユーザーで接続 sudo su - grid lsnrctl status LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 19-FEB-2019 11:20:38 Copyright (c) 1991, 2017, Oracle. All rights reserved. : Services Summary... : Service "dbname_cdb32r.subnetname.vcnname.oraclevcn.com" has 1 instance(s). Instance "dbname", status READY, has 2 handler(s) for this service... Service "ayspdb2.subnetname.vcnname.oraclevcn.com" has 1 instance(s). ★このPDBサービスに接続する。 Instance "dbname", status READY, has 2 handler(s) for this service... : The command completed successfully
5. PDBにSYSで接続してユーザー作成&権限付与
上記で確認したPDBサービスにSYSで接続して、PDBに一般ユーザーを作成&権限付与します。
sqlplus /nolog CONNECT SYS/xxxxxxxxxxxxxxx@dbname.subnetname.vcnname.oraclevcn.com:1521/ayspdb2.subnetname.vcnname.oraclevcn.com AS SYSDBA ^^^^^^^ここが違う SHOW CON_NAME CREATE USER AYSHIBAT IDENTIFIED BY xxxxxxxxxxxxxxx DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; GRANT DBA TO AYSHIBAT;
結果は下記の通りです。
$ sqlplus /nolog SQL*Plus: Release 18.0.0.0.0 - Production on Tue Feb 19 11:43:26 2019 Version 18.5.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. SQL> CONNECT SYS/xxxxxxxxxxxxxxx@dbname.subnetname.vcnname.oraclevcn.com:1521/ayspdb2.subnetname.vcnname.oraclevcn.com AS SYSDBA Connected. SQL> SHOW CON_NAME CON_NAME ------------------------------ AYSPDB2 SQL> CREATE USER AYSHIBAT IDENTIFIED BY xxxxxxxxxxxxxxx 2 DEFAULT TABLESPACE USERS 3 TEMPORARY TABLESPACE TEMP; User created. SQL> GRANT DBA TO AYSHIBAT; Grant succeeded.
6. PDBに作成した一般ユーザーで接続
PDBに作成した一般ユーザーで接続してみます。
sqlplus /nolog CONNECT AYSHIBAT/xxxxxxxxxxxxxxx@dbname.subnetname.vcnname.oraclevcn.com:1521/ayspdb2.subnetname.vcnname.oraclevcn.com SHOW CON_NAME
結果は下記の通りです。
sqlplus /nolog SQL*Plus: Release 18.0.0.0.0 - Production on Tue Feb 19 11:47:58 2019 Version 18.5.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. SQL> CONNECT AYSHIBAT/xxxxxxxxxxxxxxx@dbname.subnetname.vcnname.oraclevcn.com:1521/ayspdb2.subnetname.vcnname.oraclevcn.com Connected. SQL> SHOW CON_NAME CON_NAME ------------------------------ AYSPDB2
DBaaS の PDB に一般ユーザーで接続できたやで!彡(^)(^)
7. まとめ
上記 4. の PDB名(PDBサービス名)確認がひと手間ですやね!彡(゚)(゚)
管理サービス(CDB)名への接続文字列はコンソール画面に表示できてるんやから、
PDBへの接続文字列も同様にコンソール画面に表示して欲しいもんです(゚ε゚`)
なおこの記事は 生Java(JDBC Thin) to DBaaS接続編、
生Java(JDBC Thin) to Autonomous(ADW/ATP)接続編に続く予定……彡(゚)(゚)
ADW(Autonomous Data Warehouse) に OCI の Object Storage にアップロードした dmp を インポート(impdp)してみる。
- 1. データのエクスポート(expdp)
- 2. dmpファイルの Object Storage へのアップロード
- 3. Object Storage にアップロードしたdmpファイルの Pre-authenticated URL生成
- 4. OCIユーザーの作成とGROUP設定、Auth Token生成
- 5. DBMS_CLOUDパッケージで ADW に Credential を作成
- 6. インポート(impdp)の実行
- 7. まとめ
ADW(Autonomous Data Warehouse) は ORACLE が提供する
Full Managed なデータベースの Cloud Service なんやで彡(゚)(゚)
Autonomous Data Warehouse
https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/
今回はこの ADW に OCI(Oracle Cloud Infrastructure) の Object Storage に
アップロードした dmp をインポート(impdp)してみます。
1. データのエクスポート(expdp)
まずはデータをエクスポート(expdp)します。オプションは下記参照彡(゚)(゚)
Export Your Existing Oracle Database to Import into Autonomous Data Warehouse
https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/user/load-data.html#GUID-7068E963-C464-4ABB-AC60-BA56DFC98650
実際に流したコマンドは下記です。index は exclude してません。
Object Storage に置けるファイルは 1ファイルあたり5GB までという制限があるので、
FILESIZEパラメータでdmpファイルのサイズを制限します。
expdp xxxxxxxx/yyyyyyyy@zzzzzzzz \ exclude=cluster,indextype,materialized_view,materialized_view_log,materialized_zonemap,db_link \ data_options=group_partition_table_data \ parallel=4 \ schemas=soe \ directory=DATA_PUMP_DIR \ LOGFILE=exp_soe.log \ DUMPFILE=exp_soe%U.dmp \ FILESIZE=4900MB \ REUSE_DUMPFILES=YES \ VERSION=12.2.0
expdpの実行結果は下記の通りです。
Export: Release 18.0.0.0.0 - Production on Mon Jan 21 16:25:09 2019 Version 18.2.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 "PDBADMIN"."SYS_EXPORT_SCHEMA_01": PDBADMIN/********@10.0.2.3:1521/ayspdb2.sub12070931432.vcnayshibat.oraclevcn.com exclude=cluster,indextype,materialized_view,materialized_view_log,materialized_zonemap,db_link data_options=group_partition_table_data parallel=4 schemas=soe directory=DATA_PUMP_DIR LOGFILE=exp_soe.log DUMPFILE=exp_soe%U.dmp FILESIZE=4900MB REUSE_DUMPFILES=YES VERSION=12.2.0 Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_INDEX/INDEX_STATISTICS Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS : : /u01/app/oracle/product/18.2/dbhome_1/rdbms/log/7C6D751E07A94BB2E0530302000AFD1F/exp_soe01.dmp /u01/app/oracle/product/18.2/dbhome_1/rdbms/log/7C6D751E07A94BB2E0530302000AFD1F/exp_soe02.dmp /u01/app/oracle/product/18.2/dbhome_1/rdbms/log/7C6D751E07A94BB2E0530302000AFD1F/exp_soe03.dmp /u01/app/oracle/product/18.2/dbhome_1/rdbms/log/7C6D751E07A94BB2E0530302000AFD1F/exp_soe04.dmp Job "xxxxxxxx"."SYS_EXPORT_SCHEMA_01" successfully completed at Mon Jan 21 16:27:24 2019 elapsed 0 00:02:13
2. dmpファイルの Object Storage へのアップロード
dmpファイルを Object Storage にアップロードします。ブラウザ画面から
アップロードすることも可能なんですが、今回は OCI CLI の
コマンド(oci os object bulk-upload ...)で Object Storage にアップロードしてしまいました。
oci os object bulk-upload -ns xxxxxxxx -bn yyyyyyyy-objs001 --src-dir /u01/app/oracle/product/18.2/dbhome_1/rdbms/log/7C6D751E07A94BB2E0530302000AFD1F/ Uploaded exp_soe02.dmp [####################################] 100% { "skipped-objects": [], "upload-failures": {}, "uploaded-objects": { "exp_soe01.dmp": { "etag": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "last-modified": "Mon, 21 Jan 2019 16:35:00 GMT", "opc-multipart-md5": "yyyyyyyyyyyyyyyyyyyyyyyyyyy" : }
成功するとアップロードされたファイルの情報がJSON形式で返ってきます。
OCI CLIのセットアップ方法は下記のブログ群が参考になります。
コマンドライン(CLI)でOCIを操作する - Oracle Cloud Infrastructureアドバンスド
https://community.oracle.com/docs/DOC-1019624#jive_content_id_3_CLIOracle Cloud Infrastructure CLIの導入 (後編:環境設定)
https://cloudii.atomitech.jp/entry/2018/08/01/104038[Oracle Cloud] OCI DatabaseにCLIを設定してみた
http://itedge.stars.ne.jp/http-itedge-stars-ne-jp-oracle-cloud-oci-database-cli/
3. Object Storage にアップロードしたdmpファイルの Pre-authenticated URL生成
※(追記)2019年8月現在では Object Storage の Native な URL で impdp できるようになったため、本手順によるPRA-URLの生成は不要です。
下記ドキュメント(※要アカウント)の記載の通り、Object Storage に
アップロードした dmpファイル の Pre-authenticated URL を生成します。
ATP : Import to ATP From Object Store Fails with
'ORA-17500: ODM Err:ODM HTTP Unauthorized' (ドキュメントID 2446550.1)
https://support.oracle.com/epmos/faces/DocumentDisplay?id=2446550.1
これもブラウザ画面から生成可能なんですが、今回は OCI CLI の
コマンド(oci os preauth-request create ...)で生成してしまいました。
oci os preauth-request create -ns xxxxxxxx -bn yyyyyyyy-objs001 --access-type ObjectRead --name prauth_exp_soe01 --time-expires 2099-12-31 -on exp_soe01.dmp oci os preauth-request create -ns xxxxxxxx -bn yyyyyyyy-objs001 --access-type ObjectRead --name prauth_exp_soe02 --time-expires 2099-12-31 -on exp_soe02.dmp oci os preauth-request create -ns xxxxxxxx -bn yyyyyyyy-objs001 --access-type ObjectRead --name prauth_exp_soe03 --time-expires 2099-12-31 -on exp_soe03.dmp oci os preauth-request create -ns xxxxxxxx -bn yyyyyyyy-objs001 --access-type ObjectRead --name prauth_exp_soe04 --time-expires 2099-12-31 -on exp_soe04.dmp
下記が実行ログです。成功すると生成された Pre-authenticated URL が
JSON形式で出力されます。後からは参照不可なので、テキストファイル等に保全しておきます。
oci os preauth-request create -ns xxxxxxxx -bn yyyyyyyy-objs001 --access-type ObjectRead --name prauth_exp_soe01 --time-expires 2099-12-31 -on exp_soe01.dmp { "data": { "access-type": "ObjectRead", "access-uri": "/p/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/n/xxxxxxx/b/yyyyyyyy-objs001/o/exp_soe01.dmp", "id": "...exp_soe01.dmp", "name": "prauth_exp_soe01", "object-name": "exp_soe01.dmp", "time-created": "2019-01-21T16:38:20.118000+00:00", "time-expires": "2099-12-31T00:00:00+00:00" } } : }
4. OCIユーザーの作成とGROUP設定、Auth Token生成
Menu => Identity => Users => Create User で OCIユーザーを作成します。
作成したOCIユーザーをクリック => Groups で Administrator を付与します。
作成したOCIユーザーをクリック => Auth Tokens で Auth Token を生成します。
後から参照する事はできないので、テキストファイル等に保全しておきます。
5. DBMS_CLOUDパッケージで ADW に Credential を作成
下記マニュアルの手順を元に ADW に Credantial を作成します。
Import Data Using Oracle Data Pump Version 18.3 or Later
https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/user/load-data.html#GUID-297FE3E6-A823-4F98-AD50-959ED96E6969
ADW に接続して DBMS_CLOUD.CREATE_CREDENTIALプロシージャを実行します。
credential_name には任意の文字列、username には上記 4. で作成したOCIユーザー名、
passwordには上記 4. で生成した Auth Token をセットします。
CONNECT ADMIN/xxxxxxxxxxxxx@yyyyyy_high BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'OCI_CLI_AYS_ADW', -- 任意の文字列 username => 'aysapi', -- OCIユーザー名 password => 'xxxxxxxxxxxxxxxxxxxx' -- 生成したAuth Token ); END; / PL/SQL procedure successfully completed.
6. インポート(impdp)の実行
impdpを実行してADWにデータをロードします。dumpfileパラメータには
3. で生成した Pre-authenticated URL を ,(カンマ)区切りで指定します。
impdp ADMIN/xxxxxxxxxxxxx@yyyyyy_high \ credential=OCI_CLI_AYS_ADW \ directory=data_pump_dir \ dumpfile=https://objectstorage.us-ashburn-1.oraclecloud.com/p/zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/n/xxxxxxxx/b/yyyyyyyy-objs001/o/exp_soe01.dmp,\ https://objectstorage.us-ashburn-1.oraclecloud.com/p/zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/n/xxxxxxxx/b/yyyyyyyy-objs001/o/exp_soe02.dmp,\ https://objectstorage.us-ashburn-1.oraclecloud.com/p/zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/n/xxxxxxxx/b/yyyyyyyy-objs001/o/exp_soe03.dmp,\ https://objectstorage.us-ashburn-1.oraclecloud.com/p/zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/n/xxxxxxxx/b/yyyyyyyy-objs001/o/exp_soe04.dmp \ parallel=2 \ partition_options=merge \ transform=segment_attributes:n \ exclude=cluster, indextype, materialized_view, materialized_view_log, materialized_zonemap, db_link \ logfile=impdp_schema_SOE.log
impdpの実行結果は以下の通りです。
Import: Release 18.0.0.0.0 - Production on Tue Jan 22 06:24:47 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 12.2.0.1.0 - 64bit Production Master table "ADMIN"."SYS_IMPORT_FULL_03" successfully loaded/unloaded : Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT : Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA . . imported "SOE"."ORDERS" 1.289 GB 14298586 rows . . imported "SOE"."ORDER_ITEMS" 2.236 GB 42511747 rows : Job "ADMIN"."SYS_IMPORT_FULL_03" completed with 1 error(s) at Tue Jan 22 06:42:27 2019 elapsed 0 00:17:25
データを確認してみると。。。
sqlplus /nolog connect SOE/yyyyyyyy@xxxxxx_high SELECT COUNT(*) FROM ORDERS; COUNT(*) ---------- 14298586
データがセットされてるで!彡(^)(^)
7. まとめ
上記3. の Pre-authenticated URL生成 がハマりポイントかも。つかワイはハマった彡(-)(-)
※(追記)2019年8月現在では Object Storage の Native な URL で impdp できるようになったため、PRA-URLの生成は不要です。
だがコレでexpdp/impdpでデータ移行して、ADWをバリバリ(死語)使うんや!彡(゚)(゚)
まとめ:Oracle Database or GoldenGate Advent Calendar 2018 を振り返る!【Day 25】
このエントリは Oracle Database or GoldenGate Advent Calendar 2018 の Day 25 の
記事となります。最後も一日遅れてしまいました。本当にスミマセン……:(;゙゚'ω゚'):
Oracle Database or GoldenGate Advent Calendar 2018
https://adventar.org/calendars/3525
執筆して頂いた皆さん、ありがとうございました!彡(^)(^)
最終日は各記事を振り返りつつ、一言コメントをしていきますやで。彡(゚)(゚)
Day 1. SQL性能計測1
Oracle DatabaseでSQLの性能計測1(SET AUTOTRACE TRACEONLY と SET TIMING ON編)
https://gonsuke777.hatenablog.com/entry/2018/12/01/210651
Day 1 はワイのSET AUTOTRACE TRACEONLY と SET TIMING ON による SQL性能計測記事や!
記事にも書いてますが、SET TIMING と AUTOTRACE は sqlplus だけで
操作が完結するんで、SQLチューニングで超高速PDCAを廻してる
タイミングでは重宝するんやで彡(゚)(゚)
Day 2. Data Guard 奮闘記
Data Guard 奮闘記
[Oracle Database or GoldenGate Advent Calendar 2018] Oracle on Hyper-V 2018
http://charade.seesaa.net/article/462984231.html
Day 2 は charade_oo4oさん の Data Guard記事となります。12cR2(12.2) の Data Gurad の
主に PDB にフォーカスして、便利な使い方やハマりポイントを解説してくれています。
PDBフラッシュバック中は REDO適用 が止まるの、知らんかったやで…彡(-)(-)
Day 3. MOSナレッジをWeb検索
[Oracle] My Oracle Supportのナレッジ記事がWeb検索可能になった話
http://itedge.stars.ne.jp/tips_my-oracle-support/
Day 3 は itedgeblogさん のMOSナレッジがWeb検索できるようになった話です。
Google検索とかで My Oracle Support のナレッジが引っかかるようになったのはエエですね彡(^)(^)
公開状況はナレッジにより様々ですが、どんどん公開していって欲C。
Day 4. GoldenGate布教活動①
GoldenGate布教活動① ~GoldenGateの基本のキ~ - Qiita
https://qiita.com/ch0c0bana0/items/0567de420c2a40128e94
Day 4 は Unoki Yoshifumiさん の GoldenGate記事となります。
ORACLE のレプリケーション製品である Oracle GoldenGate について、
基本的なところを語ってくれてます。Capture! Datapump! Replicat!彡(゚)(゚)
Day 5. VirtualBox で DB 18c環境を楽々構築
OTN の VirtualBoxイメージ で Oracle DB 18c環境 を 楽々構築
https://gonsuke777.hatenablog.com/entry/2018/12/05/231350
Day 5 はワイの VirtualBox による Oracle DB 18c環境の構築記事。
ovaイメージをダウンロードしてきてポチポチするだけなんで、めっちゃ楽彡(^)(^)
なお VirtualBox の NAT(ポートフォワード)は知らなかった、と云う声も頂きました。
Terminalソフトによるssh接続は馴染みが有るんで、ワイ好きなんすよね彡(゚)(゚)
Day 6. GoldenGate布教活動②
GoldenGate布教活動② ~GoldenGateのインストール~
https://qiita.com/ch0c0bana0/items/a57debf29a8d907e9feb
Day 6 は Unoki Yoshifumiさん の GoldenGate記事で、Day 4 の続き。
GoldenGate のインストールについて書いてくれています。
zip展開してrunInstaller実行するだけなんで、めっちゃ楽。
まあ昔はzip展開だけだったんですけどね……パッチとか色々事情は有りまして(゚ε゚ )
Day 7. GoldenGate布教活動③
GoldenGate布教活動③ ~GoldenGateを使ってみよう 事前準備編~
https://qiita.com/ch0c0bana0/items/2486c8481305ecf5de6f
Day 7 は引き続き Unoki Yoshifumiさん の GoldenGate記事。
サプリメンタルロギング設定、Capture/Datapump/Replicatの各プロセス構成など、
レプリケーションへの準備は着々や!彡(゚)(゚)
Day 8. SQL性能計測2
Oracle DatabaseでSQLの性能計測2(DBMS_XPLAN&DBMS_SQLTUNE編)
https://gonsuke777.hatenablog.com/entry/2018/12/08/215428
Day 8. はワイの DBMS_XPLAN と DBMS_SQLTUNE による SQL性能計測記事や!
特に DBMS_SQLTUNE は最高や~~。コイツが有ると無いとでSQLチューニングの
効率が全く違う。要オプションなんやけど、有る所ではどんどん使おうな彡(゚)(゚)
過去講演(DDD 2013)の資料もよろしくや~~彡(^)(^)
Day 9. GoldenGate布教活動④
GoldenGate布教活動④ ~GoldenGateプロセスの構成~
https://qiita.com/ch0c0bana0/items/651e8378a74ba9c0059e
Day 9 は Day 7 から続く Unoki Yoshifumiさん の GoldenGate記事。
ついにレプリケーション(データ伝播)が現実のものに!彡(゚)(゚)
GoldenGateは比較的シンプルな製品で、レプリケーションの構成も
堅牢かつ柔軟に組み立てられるので、ガンガン使ってやで彡(^)(^)
Cloud の Data Integration Platform Cloud(DIPC) でもお手軽に使えますよ!
Day 10. GoldenGate布教活動⑤
GoldenGate布教活動⑤ ~GoldenGateスターターキット~
https://qiita.com/jimaz/items/f6b45d1400306b4dfc79
Day 10 は jimaz26さん のエントリで、GoldenGate関連のマニュアル、
セミナー資料、ホワイトペーパーのリンクをまとめてくれてますやで彡(^)(^)
Day 11. SDW(SQL Developer Web) on DBCS
SDW(SQL Developer Web) on DBCS をお試ししてみる。
https://gonsuke777.hatenablog.com/entry/2018/12/11/230110
Day 11 はワイが DBCS上で動作する SDW(SQL Developer Web) について、
セットアップ方法のサンプルや一部画面のお試しをしています。彡(゚)(゚)
まだまだ未完成なところも有りますが、SDW の今後に期待や!
Day 12. GoldenGate用Datapump(expdp)新機能 インスタンス化SCN
インスタンス化SCNを使ってお手軽初期移行
https://qiita.com/kurouuuron/items/118afdc6b6d15d46e7dd
Day 12 は kurouuuron1さんがDatapump(expdp)のGoldenGate用新機能となる
インスタンス化SCN(instantiation scn)について、解説&サンプル提示してくれてます。
こいつが有ればexpdp時のflashback_scn指定やそのORA-1555から開放されて、
Replicat起動時のaftercsn指定も不要になって、いいこと尽くめや!彡(^)(^)
Day 13. Python で Statspack を見える(グラフ)化
PythonでStatspackのTOP5待機イベントを見える化する
https://qiita.com/kngsym2018/items/feee8c43db8399821365
Day 13 は kngsym2018さんが Statspack の Top5待機イベント を
Python で見える(グラフ)化する方法を書いてくれています。
こいつが有れば Standard Edition でも闘えるんや!彡(゚)(゚)
Day 14. CDBフリート管理
Day 14 は moritaxp_oironさん が Oracle Database 18c 新機能 の
CDBフリート管理について検証記事を書いてくれています。
フリートとは艦隊の意味なので、CDB艦隊の意味……
複数CDBを1つの艦隊として捉えて、その中をPDBがグルグルするイメージですやね彡(゚)(゚)
Day 15. Oracle text の Create index を LogMiner
ログマイナーを活用した内部処理の検証・出力方法~Oracle text のcreate indexを例に~
http://ectogre.hatenablog.com/entry/2018/12/15/000000
Day 15 は SPIRYTUS_alc96さん が Oracle Text の create index時の
ORA-1031エラーを、ログマイナー(LogMiner)によって深堀りしてくれています。
LogMinerはワイも過去何回か使った事が有りますが、初めて使った時には
「ま、まさか…!!」「こんなことが…!!」「物理的に可能なのか」(マッスルドッキング並感
てな感じの衝撃を受けた記憶が彡(゚)(゚)
Day 16. Oracle Database 18c XE on Docker
Oracle Database 18c XE をDockerで動かしてみる。
http://knopp.hatenablog.jp/entry/2018/12/16/162002
Day 16 はあらゆるプラットフォーム(AWS, Azure, GCP, Docker, etc...)で
RAC を動作させる事で有名な、RACウィザード の s4r_agent(KNOPP)さん が
Oracle Database 18c XE を Docker上で動作させるサンプルを書いてくれてます。
ワイも Docker はやらないとなぁ… VirtualBox や Multitenant(MTA, PDB) で
代替できてしまうので、つい後回しになっちゃうんよね彡(-)(-)
Day 17. OCI VM DB の バックアップ構成
OCI Virtual Machine DBシステムのバックアップ構成
http://cosol.jp/techdb/2018/12/oci-virtual-machine-db-system-backup-config.html
Day 17 は wrcsus4さん が OCI(Oracle Cloud Infrastructure)の
VM Database の バックアップ構成を紐解いてくれています。
OCI上の DB では Object Storage が テープデバイス(sbt_tape)として
構成されていて、その Object Storage にバックアップが取られるんですやね。
Object Storage は確かにテープデバイスと似た、巨大ファイルの
Sequential Access が得意という特性が有るので、納得の構成ですやね彡(゚)(゚)
Day 18. GoldenGate布教活動⑥
GoldenGate布教活動⑥ ~GoldenGate管理コマンド編1~
https://qiita.com/jimaz/items/5a0271255b021a9af50d
Day 18 は jimaz26さん が GoldenGate の 管理コマンド、
INFOコマンドやSTATSコマンド等について解説してくれています。
twitterでも呟いたんやけど、GoldenGateの管理コマンドと云えば
LAGは外せないでしょ。Capture の LAG! Datapump の LAG! Replicat の LAG! 彡(゚)(゚)
来たる GoldenGate管理コマンド編2 に期待ですやね彡(^)(^)
Day 19. Oracle Database to EnterprisePostgres
Oracle Database Advent Calendar2018 Day 19
https://ameblo.jp/shinogi-gogo/entry-12428728474.html
Day 19 は Naotaka Shinogiさん がOracle Database から EnterprisePostgres への
移行についての エントリを書かれています。移行しちゃいやん……彡(゚)(゚)
Day 20. SQL性能計測3
Oracle DatabaseでSQLの性能計測3(SQLトレース編)
https://gonsuke777.hatenablog.com/entry/2018/12/21/190057
Day 20. はワイの SQLトレースによる SQL性能計測記事や!
DBMS_SQLTUNEが無くたって、SQLトレースが有れば同等レベルの分析は可能なんや!
こいつが有れば Standard Edition でも闘える!彡(゚)(゚)
あとは TRCSESSユーティリティとか V$DIAG_TRACE_FILE や
V$DIAG_TRACE_FILE_CONTENTS からのトレース採取など、
ネタはまだまだ有るやね。
Day 21. RAC One Nodeアラートログ
【Oracle】押さえておきたいRAC One Nodeのアラートログの仕組み | アシスト
https://www.ashisuto.co.jp/db_blog/article/201812-rac-one-alert.html
Day 21 は satoayu_twさん が RAC One Node の
アラートログの仕組みについて解説してくれています。
記事を読むとよく解るんですが、なるほどちょっとクセが有る……彡(゚)(゚)
Day 22. キャンディちゃんが語る投票ディスク
キャンディちゃんに叱られる!~どうして投票ディスクは奇数個がいいの?~ -
https://qiita.com/HIROKAZU_MIRUMIRU/items/1162fbbeccd7fa273538
Day 22 は HIROKAZU YATSUNAMIさん が RAC の投票ディスクは
なぜ奇数個が良いのか、可愛く説明してくれてます。
可愛さに嫉妬……!彡(゚)(゚)
Day 23. Oracle DB 18c マニュアルのマニュアル
Oracle Database 18c マニュアルのマニュアル(※よく使うマニュアルのリンク集)
https://gonsuke777.hatenablog.com/entry/2018/12/24/232621
Day 23 はワイが Oracle Database 18c のマニュアルで、
頻繁に見るマニュアルのリンクを簡単に解説しつつ、貼っていってます彡(゚)(゚)
記事にも書いたんですが、書くのが意外と大変だった割りに地味wwwww
Day 24. Oracle Databaseバージョン考察2018師走
もし師走に『Oracle Databaseバージョン選択における考察’18』を創るなら
https://wmo6hash.hatenablog.jp/entry/2018/12/24/000000
Day 24 は wmo6hashさん が Oracle Databaseバージョンの選択について、
2018年師走版の考察を書いてくれています。
LTS(Long Term Support) の DB 19c か、取り敢えず DB 18c を採用するか……彡(゚)(゚)
Day 25. Oracle DB or OGG Advent Calendar 2018 振り返り
まとめ:Oracle Database or GoldenGate Advent Calendar 2018 を振り返る!
https://gonsuke777.hatenablog.com/entry/2018/12/26/195137
この記事や!いったん投稿して、URLを確定させないとURLを書けない罠……:(;゙゚'ω゚'):
お隣 Advent Calendar
Oracle Cloud Advent Calendar 2018
https://adventar.org/calendars/3077
Oracle Cloud その2 Advent Calendar 2018
https://adventar.org/calendars/3522
(全部俺) Oracle Cloud Infrastructure Advent Calendar 2018
※一人Advent Calendar
https://adventar.org/calendars/3088
Oracle OpenStack R5 への道。 Advent Calendar 2018
※一人Advent Calendar
https://adventar.org/calendars/3716
Oracle絡みの Advent Calendar です。どれも必見や!彡(゚)(゚)
一人Advent Calendar は侠気(狂喜)に満ち溢れているので、オススメですwwwww
過去の JPOUG Advent Calendar
JPOUG Advent Calendar 2017
https://jpoug.doorkeeper.jp/events/67051
JPOUG Advent Calendar 2016
https://jpoug.doorkeeper.jp/events/53797
JPOUG Advent Calendar 2015
https://jpoug.doorkeeper.jp/events/33345
JPOUG Advent Calendar 2014
https://jpoug.doorkeeper.jp/events/17313
※JPOUG Advent Calendar 2013 と JPOUG Advent Calendar 2012 は消えちゃってますね(´・ω・`)
まとめ&お礼
繰り返しになりますが、執筆して頂いた皆さん、
本当にありがとうございました!彡(^)(^)
スタートダッシュ時の状況から、埋まらないかな~~?と感じてましたが、
皆様のご協力のお陰で埋まりました。感謝感激雨霰(`・ω・)ゞ
それでは皆様、良いお年を!
Oracle Database 18c マニュアルのマニュアル(※よく使うマニュアルのリンク集)【Oracle Database or GoldenGate Advent Calendar 2018 Day 23】
※(追記)19c版も書いたのでご覧くださいね。彡(^)(^)
https://qiita.com/ora_gonsuke777/items/5da877698ac681806175
このエントリは Oracle Database or GoldenGate Advent Calendar 2018 の Day 23 の
記事となります。またまた一日遅れてしまいました。ほんとスミマセンスミマセン……:(;゙゚'ω゚'):
Oracle Database or GoldenGate Advent Calendar 2018
https://adventar.org/calendars/3525
Oracle Database のマニュアルは、ワイ的には良くできてると思うんですが、
いかんせん数と種類が多過ぎる……彡(-)(-)
そこで今日は「Oracle Database 18c マニュアルのマニュアル」と称して、
ワイが頻繁に見る Oracle Database のマニュアルのリンクを張りつつ、
簡単な解説をしていくやで! 彡(゚)(゚)
※下記リンクは2018年12月時点のものです。リンク切れの際はご容赦下さい。
1. ブック(全マニュアル)のリンク
Oracle Database 18c ブック
https://docs.oracle.com/cd/E96517_01/books.html
まずはココから!全マニュアルへのリンクがここに有るんやで。ココをブックマークしとくんや!彡(゚)(゚)
Oracle Database Cloud Service ブック
https://docs.oracle.com/cd/E83857_01/paas/database-dbaas-cloud/books.html
こちらは DB の PaaS(DBaaS) のマニュアルなんやで。現在は Cloud の時代、ここも要チェックやで。
2. 頻繁に見るマニュアル
Oracle Databaseデータベース・リファレンス 18c
https://docs.oracle.com/cd/E96517_01/refrn/index.html
初期化パラメータ、データディクショナリ(DBA_~)、動的ビュー(V$~)、データベースの制限事項(最大サイズとか)、待機イベント説明、各種統計(V$SYSSTATのレコード)の説明、など重要情報が満載や!
彡(゚)(゚)
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス 18c
https://docs.oracle.com/cd/E96517_01/arpls/index.html
DBMSほにゃららパッケージ系のご説明はこちら。DBMS_STATS、DBMS_XPLAN、DBMS_SQLTUNEなんかを良く見るかなぁ彡(゚)(゚)
3. 言語開発(SQL, PL/SQL, 等)系のマニュアル
Oracle Database SQL言語リファレンス, 18cバージョン18.1
https://docs.oracle.com/cd/E96517_01/sqlrf/index.html
各種SQLコマンド(SELECT, INSERT, UPDATE, DELETE, ALTER, CREATE, DROP, etc..)の構文図やオプション、標準ファンクション(TO_CHAR、SYSDATEとか)、ヒントの構文など彡(゚)(゚)
Oracle DatabaseデータベースPL/SQL言語リファレンス 18c
https://docs.oracle.com/cd/E96517_01/lnpls/index.html
PL/SQLの制御文(IF文, CASE文)、繰り返し(LOOP文, FOR文, WHILE文)、コレクションの使い方、BULK処理(FORALL処理)、ストアド系、トリガー、テーブル・ファンクションの作り方、etc...
うん、書き切れないなwwwww
Oracle Database Databaseグローバリゼーション・サポート・ガイド 18c
https://docs.oracle.com/cd/E96517_01/nlspg/index.html
文字コード系、NLS_~ほにゃらら、タイムゾーン、サマータイム、年号元号とかはここ彡(゚)(゚)
Oracle Database JSON開発者ガイド 18c
https://docs.oracle.com/cd/E96517_01/adjsn/index.html
実はそこまで馴染みは無いんですが、JSONは避けては通れない道なんで彡(゚)(゚)
12cR1あたりから滅茶苦茶強化されてます。
4. ユーティリティ、ツール系のマニュアル
Oracle Databaseデータベース・ユーティリティ 18c
https://docs.oracle.com/cd/E96517_01/sutil/index.html
Datapump(expdp, impdp), SQL*Loader(sqlldr), 外部表(EXTERNAL TABLE), LogMiner, ADRCI, 従来型エクスポート/インポート(exp, imp) などがこちら彡(゚)(゚)
SQL*Plusユーザーズ・ガイドおよびリファレンス 18c
https://docs.oracle.com/cd/E96517_01/sqpug/index.html
SQL*Plus(sqlplus)の使い方、SETコマンド、AUTOTRACEのオプションなど彡(゚)(゚)
5. 性能系(チューニング系)のマニュアル
Oracle Databaseデータベース・パフォーマンス・チューニング・ガイド 18c
https://docs.oracle.com/cd/E96517_01/tgdba/index.html
全体最適化、インスタンス・チューニング系のマニュアル。パフォーマンスの計画の話に始まり、Time Model、待機イベント、AWR分析、CPU/Memory/IO分析、メモリーチューニング、etc...
良く出来てます。オススメや!彡(^)(^)
Oracle Database SQLチューニング・ガイド 18c
https://docs.oracle.com/cd/E96517_01/tgsql/index.html
こちらは単体のSQLチューニングに特化した内容。SQLの解析(Parse)、実行計画、オプティマイザ統計、アクセスパスの解説、アドバイザ&SQLプロファイル、SPM、etc...SQLトレースやtkporfの使い方もココ。
こちらも非常に良く出来ていて、オススメ!彡(^)(^)
Oracle Database VLDBおよびパーティショニング・ガイド 18c
https://docs.oracle.com/cd/E96517_01/vldbg/index.html
VLDB ⇒ Very Large Database の略、パーティション(RANGE, LIST, HASH, COMPOSITE, etc...) と パラレル・クエリ のマニュアルと覚えときゃ大体おk(雑
6. SQL*Net系(tnsnames.oraとか sqlnet.oraとか 簡易接続とか)のマニュアル
Oracle Database Net Servicesリファレンス 18c
https://docs.oracle.com/cd/E96517_01/netrf/index.html
tnsnames.ora, sqlnet.ora, listener.ora のパラメータの意味などです。辞書っぽく使う感じ。
Oracle Database Net Services管理者ガイド 18c
https://docs.oracle.com/cd/E96517_01/netag/index.html
前者のマニュアルがパラメータ系のリファレンスなのに対し、こちらはNet Serviceのアーキテクチャ解説など。
でも一番良く読んだのは、簡易接続(EZCONNECT)とローカル・ネーミング・メソッドの接続記述子の書き方か……彡(゚)(゚)
7. DBA系のマニュアル
Oracle Databaseデータベース概要 18c
https://docs.oracle.com/cd/E96517_01/cncpt/index.html
Oracle Database に詳しくなくても、この画像は見たこと有る人も多いかも。RDBMSの成り立ちから始まり、トランザクションの説明、データベースとインスタンスの関係、プロセス構造、メモリ構造、記憶域構造、読取一貫性、etc...
アーキテクチャのお勉強や!彡(゚)(゚)
Oracle Database 2日でデータベース管理者 18c
https://docs.oracle.com/cd/E96517_01/admqs/index.html
DBA の一連の作業を広く網羅的に。インストールから始まり、DBCAによるDB作成、ネットワーク構成(リスナー、tnsnames.oraなど)、インスタンスの起動/停止、表領域やREDO&UNDOの管理、バックアップ・リカバリ、監視、チューニング、パッチ適用
Oracle Database管理者ガイド, 18c
https://docs.oracle.com/cd/E96517_01/admin/index.html
DBA の一連の作業の深めなところ。でもワイがこれで一番読んだのって、dbca の サイレント・モード の コマンド・リファレンスかなぁ…彡(゚)(゚)
8. バックアップ・リカバリ, RMAN系のマニュアル
Oracle Databaseバックアップおよびリカバリ・リファレンス 18c
https://docs.oracle.com/cd/E96517_01/rcmrf/index.html
こちらは RMAN のコマンド・リファレンスとなります。BACKUP, CONFIGURE, RESTORE, RECOVER, DELETE, DUPLICATE あたりをよく見るですやろうか彡(゚)(゚)
Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド, 18c
https://docs.oracle.com/cd/E96517_01/bradv/index.html
こちらは RMAN によるバックアップ&リカバリのアーキテクチャ、戦略等が解説されてます。フラッシュバックについても。RMANを使わない、ユーザー管理のバックアップ話も有るよ彡(゚)(゚)
9. RAC, Clusterware, ASM のリファレンス・マニュアル
Oracle Real Application Clusters管理およびデプロイメント・ガイド 18c
https://docs.oracle.com/cd/E96517_01/racad/index.html
RAC(Real Application Cluster) の コマンド系のマニュアルです。srvctlコマンドのリファレンスと覚えておけばおk(雑
Oracle Clusterware管理およびデプロイメント・ガイド 18c
https://docs.oracle.com/cd/E96517_01/cwadd/index.html
こちらは Oracle Clusterware のコマンド系のマニュアルです。crsctlコマンドのリファレンス、たまにoifcfgのリファレンスと覚えておけばおk(雑2
Oracle Automatic Storage Management管理者ガイド 18c
https://docs.oracle.com/cd/E96517_01/ostmg/index.html
ASM(Automatic Storage Management)による Storage や ディスク・グループ の設計指針、管理など。asmcmdコマンドやacfsutilのリファレンスも有るよ!彡(゚)(゚)
10. Data Guard系のマニュアル
Oracle Data Guard概念および管理 18c
https://docs.oracle.com/cd/E96517_01/sbydb/index.html
Data Guard と言えばまずこれ。Data Guard のアーキテクチャ、スタンバイの作成、REDO転送と適用、ロール変換、Data Guard系の各種パラメータご説明も彡(゚)(゚)
Oracle Data Guard Broker 18c
https://docs.oracle.com/cd/E96517_01/dgbkr/index.html
Data Guard構成(Primary-Standby)を一つの論理的な構成として扱う Data Guard Broker。Broker と言えば自動Failover(ファスト・スタート・フェイルオーバー)を
思い出されるかもしれませんが、ワンコマンドのスイッチオーバー、MRP自動起動、ロール・ベース・サービスなど、その他のメリットも一杯!彡(^)(^)
11. インストール系のマニュアル
Oracle Databaseインストレーション・ガイド, 18c for Linux
https://docs.oracle.com/cd/E96517_01/ladbi/index.html
まずは Single構成 のインストールから。近年のバージョンのインストールは Oracle Preinstallation RPM のお陰でラクになった…彡(-)(-)
Oracle Grid Infrastructureインストレーションおよびアップグレード・ガイド 18c for Linux
https://docs.oracle.com/cd/E96517_01/cwlin/index.html
Single構成の次は GI(Grid Infrastructure) のインストール。昔よりはラクになったんですが、GIインストールの難易度は今も高め……彡(゚)(゚)
Oracle Real Application Clustersインストレーション・ガイド 18c for Linux and UNIX
https://docs.oracle.com/cd/E96517_01/rilin/index.html
最後に RAC(Real Application Clusters)のインストール。GIがインストールできてれば、こっちのインストールは楽勝なんかと彡(゚)(゚)
12. セキュリティ系のマニュアル
Oracle Databaseセキュリティ・ガイド 18c
https://docs.oracle.com/cd/E96517_01/dbseg/index.html
Oracle Database のセキュリティ一般の話。認証、認可(権限付与)、アクセス制御、暗号化、監査の話など彡(゚)(゚)
Oracle Database Vault管理者ガイド 18c
https://docs.oracle.com/cd/E96517_01/dvadm/index.html
Database Vaultは管理者同士の権限分掌と相互監視によって、特定管理者のセキュリティ違反を防止/追跡する機能。レルムじゃレルムじゃ~~彡(゚)(゚)
Oracle Database Advanced Securityガイド, 18c
https://docs.oracle.com/cd/E96517_01/asoag/index.html
主に暗号化に関するマニュアル。いつの間にかこんなのが彡(゚)(゚) Oracle Cloudでは暗号化がデフォルトなんで、新しく作られたのかね彡(゚)(゚)
13. 新機能&アップグレード系のマニュアル
Oracle Database新機能ガイド 18c
https://docs.oracle.com/cd/E96517_01/newft/index.html
新機能と言えばまずはこのガイド。つらつらと眺めていると、意外な発見が有りますやね彡(^)(^)
Oracle Databaseアップグレード・ガイド 18c
https://docs.oracle.com/cd/E96517_01/upgrd/index.html
既存の Oracle Database を直接アップグレードするためのガイド。でもこのやり方のアップグレードは、昔よりは少なくなったなぁ……彡(-)(-)
14. その他のマニュアル
Oracle Databaseライセンス情報ユーザー・マニュアル 18c
https://docs.oracle.com/cd/E96517_01/dblic/index.html
各種Editionやオプション、Cloudのサービスで使用可能な機能を
俯瞰できるマニュアル。何気に重要な情報が満載彡(゚)(゚)
Oracle Databaseエラー・メッセージ 18c
https://docs.oracle.com/cd/E96517_01/errmg/index.html
ORA-xxxxxやRMAN-xxxxx等のエラー番号/メッセージを記載したマニュアル。エラーと言えばORA-600やORA-7445!
ORA-600やORA-7445と聞くと顔が曇る人も多いですが、エラー無しでクラッシュするより何百倍もマシなんやで彡(゚)(゚)
15. まとめ
このエントリ、書くのが意外と大変だった割りに地味やなぁwwwww
さりながら、めくるめくOracle Databaseの世界を巡る手助けになれば、本望ですやで!彡(^)(^)