#■ Oracle Database
オフィシャル
- OTN
- Oracle Database 19c
- DB getting started
- 2 Day DBA
- Database Administrator’s Guide
- Database Net Services Reference
- SQL*Plus User's Guide and Reference
- SQL Language Reference
- Blogs
- Oracle Blogs
- 日本オラクル社員によるブログ・リンク集
- ASK TOM
- Oracle Communities
Basic/CheatSheet
-
Oracle Database に関係するいろいろなコマンドまとめ
Oracleを利用するときに役立つSQL CheatSheet -
Oracle Databaseまとめ
DBA向けのSQL CheatSheet -
SQL CheatSheet
BasicなSQL CheatSheet -
oraclebase/dba
oracle-baseの作者によるscript集 → Versionごとに作成 -
jkstill/oracle-script-lib
スクリプトが分類ごとに整理されていて探しやすい -
DBA Cheat sheet
Excelのダウンロードが必要だけど、Oracle Dabase CheatSheetとしてはこれがあれば十分? Excelベースなので使いこなすのになれが必要そうだけど。。。 -
tanelpoder/tpt-oracle
These sqlplus scripts are for Oracle Database performance optimization & troubleshooting. Most of the scripts should be runnable directly from SQL Developer too.
Youtubeで使い方解説付き
Distributed Database Management
Autonomous Database
###- General
###- データ連携
EAI/iPaaS : Oracle Integration Cloud/OIC
- OICチュートリアル
- OIC-integration-with-OracleATP
- Oracle Integration: ICS to OIC Migration with transition to ATP
- Using the Oracle Database Adapter with Oracle Integration
DB間リアルタイム連携/GoldenGate
ETL/ODI
###- 可用性
###- 性能
###- 運用
-
古典的な手法でAutonomous Database の スケジュールドスケールアップを行う
Oracle CLIでADBのスケールアップ・スケールダウン、オートスケーリングの有効化・無効化を実施
###- Version Up/移行
-
RAT/SPA
-
STS + SPA でADBアップグレード時にSQLの互換性とパフォーマンスを確保しましょう!
→ ADBでもSPA(SQL Performance Analyzer)は実行可能 ※ Replayには未対応 -
Oracle Real Application TestingのSQL Performance Analyzerの活用:データベースのアップグレード(バージョンアップ)でのSQLテスト
Converged Database
Handson
-
live labs
live labsのgithubページ
まとめサイト
-
Shift the Oracle
老舗のOracleまとめサイト。最終更新日がだいぶ古いけどBasicな機能をシンプルに記載 -
[Oracle Cloud] OCI Database(DBCS/DBaaS)関連情報まとめ(リンク集)
わかりやすくOracle DBA関連サイトのリンクが記載されている -
ORACLE-BASE
かなり多くの情報量。使いこなせればかなり役立ちそう
学習に役立つサイト
- YouTube
- Japan Oracle Developers
- Oracle Database Product Management on youtube
- sample schema
- しばちょう先生の試して納得!DBAへの道
- 基本からわかる!高性能×高可用性データベースシステムの作り方
- 津島博士のパフォーマンス講座
- セクセムラボ:Oracleの仕組みをわかりやすく解説
- Live SQL: Learn and share SQL
#■ Oracle Cloud Infrasturecture : OCI
オフィシャル
- OCI Documentation(日本語 / 英語):マニュアル
- Oracleアーキテクチャセンター(日本語 / 英語)
- OCIサービスアップデート:毎月公開するOCIのサービス・アップデート情報
- Oracle Cloud Infrastructure Blog(/英語)
- オラクルエンジニア通信:OCI含むオラクル全般の技術資料、コラム
- OCI活用資料集 :OCI向け技術ドキュメント集
- OCI活用事例:OCIを活用したお客様の事例
- OCIセミナー情報(Oracle Code Online):Developerのための開発者向けコミュニティ Meetup セミナー
- チュートリアル: OCI を使ってみよう
- OCI技術情報リンク集
Security
学習に役立つサイト
- Oracle公式チュートリアル集
- Analyze Sample Logs with OCI Logging Analytics Hands-on Lab
- Analyze Sample Logs with OCI Logging Analytics Tutorial
- Manage and monitor in autonomous database
- Configure private DNS zones, views, and resolvers
- https://docs.oracle.com/en/learn/get_started_audit/index.html
Tips
Database関連作業手順備忘録
Autonomous Database(ADB)
- Documentation
- Oracle Autonomous Database
- DBMS_CLOUDパッケージ
- OCI CLI Command Reference - autonomous-database
ADBへの接続
Autonomous databaseのIDを確認
$ oci db autonomous-database list
ウォレットファイルのダウンロード
$ oci db autonomous-database generate-wallet --autonomous-database-id ocid1.autonomousdatabase.oc1.iad.xxxxxx --file /home/oracle/Wallet/Wallet_ADBS-Private.zip --password <your password>
ウォレットファイルを用いてSQL接続
$ sql /nolog
SQL> set cloudconfig /home/oracle/Wallet/Wallet_ADBS-Private.zip
Operation is successfully completed.
Operation is successfully completed.
Using temp directory:/tmp/oracle_cloud_config6589439447521943899
SQL> connect admin/WelCome123#123#@adbs_high
クレデンシャルの登録
credential登録 : ADB -> Object Storage
- username: OCI User(IAM User)
- Password: 認証トークン
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OS_CRED',
username => 'foo',
password => 'baa'
);
END;
/
credential登録 : DBLINK(ADB -> DG4O/MySQL)
- username: MySQL User
- Password: MySQL Password
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'MySQL_CRED',
username => 'root',
password => 'WelCome123#123#'
);
END;
/
credential削除
BEGIN
DBMS_CLOUD.DROP_CREDENTIAL(
credential_name => 'OS_CRED'
);
END;
/
登録されたクレデンシャルの確認
SELECT credential_name, username, comments FROM all_credentials;
ウォレットをbucketにアップロード
$ oci os object put -bn ADB_DBLIN_DG4O --file '/home/oracle/Wallet/client_wallet/cwallet.sso' --name cwallet.sso
確認
SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('OS_CRED', 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/idqyzd41fwn7/b/ADB_DBLIN_DG4O/o/');
OBJECT_NAME BYTES CHECKSUM CREATED LAST_MODIFIED
______________ ________ ___________________________________ __________ ______________________________________
cwallet.sso 6269 0b7425beae28120fab237db73e9cfbfd 20-APR-21 04.56.13.733000000 AM GMT
DBLINK : From ADB to Other Databases
CREATE DIRECTORY ADB_DBLINK_DG4O_DIR AS 'ADB_DBLINK_DG4O_DIR';
Walletファイルをディレクトリに取り込み
BEGIN
DBMS_CLOUD.GET_OBJECT(
credential_name => 'OS_CRED',
object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/idqyzd41fwn7/b/ADB_DBLIN_DG4O/o/cwallet.sso',
directory_name => 'ADB_DBLINK_DG4O_DIR');
END;
/
確認
SELECT * FROM DBMS_CLOUD.LIST_FILES('ADB_DBLINK_DG4O_DIR');
OBJECT_NAME BYTES CHECKSUM CREATED LAST_MODIFIED
______________ ________ ___________ ______________________________________ ______________________________________
cwallet.sso 6269 20-APR-21 05.18.15.000000000 AM GMT 20-APR-21 05.18.15.000000000 AM GMT
GLOBAL_NAMESをFALSEに設定
SQL> ALTER SYSTEM SET GLOBAL_NAMES = FALSE;
System altered.
SQL> SHOW PARAMETER GLOBAL_NAMES
NAME TYPE VALUE
---------------------- ----------- -----------
global_names boolean FALSE
DBLINKの作成
BEGIN
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
db_link_name => 'ADB_DBLINK_DG4O',
hostname => 'W.X.Y.Z',
port => '1522',
service_name => 'dbcs0502_iad1fq.subnet.vcn05.oraclevcn.com',
ssl_server_cert_dn => 'CN=dbcs',
credential_name => 'MySQL_CRED',
directory_name => 'ADB_DBLINK_DG4O_DIR');
END;
/
DBLINKの作成(Database Gateway for ODBC経由)
※ gateway_link => TRUE
パラメータを追加する必要あり
BEGIN
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
db_link_name => 'ADB_DBLINK_DG4O',
hostname => 'W.X.Y.Z',
port => '1522',
service_name => 'DG4ODBC',
ssl_server_cert_dn => 'CN=dbcs',
credential_name => 'MySQL_CRED',
directory_name => 'ADB_DBLINK_DG4O_DIR',
gateway_link => TRUE);
END;
/
確認
SQL> select * from all_db_links;
DBLINKの削除
BEGIN
DBMS_CLOUD_ADMIN.DROP_DATABASE_LINK(
db_link_name => 'ADB_DBLINK_DG4O'
);
END;
/
トラブった時の切り分け
分散環境向け機能
DBLINK
- Database Administrator’s Guide
- Database Links
Sample
作成
SQL> CREATE PUBLIC DATABASE LINK DBLINK_DG4ODBC CONNECT TO "root" IDENTIFIED BY "WelCome123#123#" USING 'DG4ODBC';
削除
SQL> drop public database link DBLINK_DG4ODBC;
確認
set linesize 1000
col owner format a10
col db_link format a50
col username format a20
col host format a15
SQL> select * from all_db_links;
OWNER DB_LINK USERNAME HOST CREATED
------------------------------ -------------------------------------------------- -------------------- --------------- ---------
SYS DG4ODBC.SUB04121421101.VCN05.ORACLEVCN.COM root dg4odbc 19-APR-21
PUBLIC DBLINK_DG4ODBC.SUB04121421101.VCN05.ORACLEVCN.COM root DG4ODBC 19-APR-21
PUBLIC DBLINK_DG4ODBCS.SUB04121421101.VCN05.ORACLEVCN.COM root DG4ODBCS 19-APR-21
Tips
- global_names
global_namesが有効になっている場合は、データベースリンクが接続するデータベースと同じ名前を持つ必要があります。
SQL> SELECT VALUE FROM v$parameter WHERE NAME LIKE 'global_names';
VALUE
--------------------------------------------------------------------------------
TRUE
global_namesを使わない場合は、以下設定に変更する
SQL> alter system set global_names= false;
システムが変更されました。
Oracleウォレットファイルの作成
orapkiを使って署名付き証明書の作成、Oracleウォレットの管理
Autonomous Databaseから他のDBにDBLINK接続する場合、ウォレットファイルを作成のうえ・DBLINK接続サーバへの配布が必要となる。
Sample
自己署名付きウォレットの作成
ウォレットディレクトリの作成
$ sudo mkdir -p /u01/server/wallet
$ sudo mkdir -p /u01/client/wallet
$ sudo mkdir -p /u01/certificate
$ sudo chown -R oracle:oinstall /u01/server
$ sudo chown -R oracle:oinstall /u01/client
$ sudo chown -R oracle:oinstall /u01/certificate
サーバ用自己署名付きウォレットの作成
$ sudo su - oracle
$ cd /u01/server/wallet/
$ orapki wallet create -wallet ./ -pwd Oracle123456 -auto_login
$ orapki wallet add -wallet ./ -pwd Oracle123456 -dn "CN=dbcs" -keysize 1024 -self_signed -validity 3650 -sign_alg sha256
クライアント用自己署名付きウォレットの作成
$ cd /u01/client/wallet/
$ orapki wallet create -wallet ./ -pwd Oracle123456 -auto_login
$ orapki wallet add -wallet ./ -pwd Oracle123456 -dn "CN=client" -keysize 1024 -self_signed -validity 3650 -sign_alg sha256
サーバ・クライアント間で証明書を交換(証明書のExport/Import)
サーバ証明書のExport
$ cd /u01/server/wallet/
$ orapki wallet export -wallet ./ -pwd Oracle123456 -dn "CN=dbcs" -cert /tmp/server.crt
クライアント証明書のExport
$ cd /u01/client/wallet/
$ orapki wallet export -wallet ./ -pwd Oracle123456 -dn "CN=client" -cert /tmp/client.crt
サーバウォレットにクライアント証明書をImport
$ cd /u01/server/wallet/
$ orapki wallet add -wallet ./ -pwd Oracle123456 -trusted_cert -cert /tmp/client.crt
クライアントウォレットにサーバ証明書をImport
$ cd /u01/client/wallet/
$ orapki wallet add -wallet ./ -pwd Oracle123456 -trusted_cert -cert /tmp/server.crt
サーバウォレットのパーミッションを変更
$ cd /u01/server/wallet
$ chmod 640 cwallet.sso
TCPS接続
上記で作成した自己署名付きウォレットを用いてTPCS接続できるようOracle Netを設定
Sample
サーバ(DBLINK接続先:DBCS)側の設定
ウォレットファイルを配置
$ ls /u01/server/wallet
cwallet.sso ewallet.p12
$ chmod 640 cwallet.sso
sqlnet.oraの編集
# sqlnet.ora Network Configuration File: /u01/app/19.0.0.0/grid/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
wallet_location =
(SOURCE=
(METHOD=File)
(METHOD_DATA=
(DIRECTORY=/u01/server/wallet)))
SSL_SERVER_DN_MATCH=(ON)
lisener.oraの編集
ファイルの先頭に以下を追記
wallet_location =
(SOURCE=
(METHOD=File)
(METHOD_DATA=
(DIRECTORY=/u01/server/wallet)))
TCPSエンドポイントの再構成
$ srvctl modify listener -p "TCP:1521/TCPS:1522"
$ srvctl stop listener
$ srvctl start listener
$ srvctl stop database -database dbcs0502_iad1fq #11gの場合は、-databaseの代わりに-dを用いる
$ srvctl start database -database dbcs0502_iad1fq
$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 17-APR-2021 02:59:33
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 17-APR-2021 01:06:13
Uptime 0 days 1 hr. 53 min. 20 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.0.0.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/dbcs0502/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=10.0.1.136)(PORT=1522)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.0.1.136)(PORT=1521)))
Services Summary...
Service "+APX" has 1 instance(s).
Instance "+APX1", status READY, has 1 handler(s) for this service...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_RECO" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "dbcs0502XDB.subnet.vcn05.oraclevcn.com" has 1 instance(s).
Instance "dbcs0502", status READY, has 1 handler(s) for this service...
Service "dbcs0502_iad1fq.subnet.vcn05.oraclevcn.com" has 1 instance(s).
Instance "dbcs0502", status READY, has 2 handler(s) for this service...
The command completed successfully
クライアント(DBLINK接続元:oracle client)側の設定
ウォレットファイルを配置
$ ls /u01/client/wallet
cwallet.sso ewallet.p12
sqlnet.oraの編集
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /u01/client/wallet)
)
)
SSL_SERVER_DN_MATCH=(ON)
tnsnames.oraの編集
DBCS0502_IAD1FQ =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.1.136)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbcs0502_iad1fq.subnet.vcn05.oraclevcn.com)
)
)
DBCS_TCPS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCPS)(HOST = 10.0.1.136)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbcs0502_iad1fq.subnet.vcn05.oraclevcn.com)
)
(SECURITY= (SSL_SERVER_CERT_DN="CN=dbcs"))
)
Tips
XXXXX
Sample
Tips
参考 : OCI操作手順
OCI basic
OCI CLI
OCI CLIの準備
oci cli setupに必要な情報の収集
- OCIコンソールにログイン
- APIキーの追加
- 構成ファイルの表示を選択(未登録の場合はAPIキーを追加)
- 構成ファイルをコピー
setup
- API秘密鍵をデプロイ
- 構成ファイルを元にconfigファイルを作成
$ mkdir -p ~/.oci
$ vim ~/.oci/config
[DEFAULT]
user=ocid1.user.oc1..aaaaaaaa4u6aqz2qqk6jnorhwunsz6bsvghki4mpsgipxcaq4ybmemwejsrq
fingerprint=91:b7:54:6e:95:37:3c:f9:88:25:dd:73:1d:6a:f7:f6
tenancy=ocid1.tenancy.oc1..aaaaaaaa7mpfrjmlgq5y7kx35a6cbsmqtnoi3nhv5urxbqh6hooj4itfp5jq
region=us-ashburn-1
key_file=<path to your private keyfile> # TODO
デフォルトコンパートメント値の設定
$ oci setup oci-cli-rc
~.oci\oci_cli_rcの編集
[DEFAULT]
compartment-id = <コンパートメントのOCID>
確認
$ oci compute shape list
auto completeの設定
$ oci setup autocomplete
Object Stroageの操作:CLI
※ 参考 URIルール
https://objectstorage.(region Identifier).oraclecloud.com/n/(name space)/b/(bucket name)/o/(object name)
region_name例
Region Name | Region Identifier | Region Key |
---|---|---|
Japan East (Tokyo) | ap-tokyo-1 | NRT |
Japan Central (Osaka) | ap-osaka-1 | KIX |
US East (Ashburn) | us-ashburn-1 | IAD |
例
https://objectstorage.us-ashburn-1.oraclecloud.com/n/idqyzd41fwn7/b/dbcs0502_dblink/o/cwallet.sso
list bucket
oci os bucket list [OPTIONS]
create bucket
oci os bucket create [OPTIONS]
$ oci os bucket create --name ADB_DBLIN_DG4O
list object
oci os object list --bucket-name [text] [OPTIONS]
$ oci os object list -bn dbcs0502_dblink
{
"data": [
{
"etag": null,
"md5": "C3Qlvq4oEg+rI323Ppz7/Q==",
"name": "cwallet.sso",
"size": 6269,
"time-created": "2021-04-17T07:49:38.307000+00:00",
"time-modified": null
}
],
"prefixes": []
}
get object
oci os object get [OPTIONS]
$ oci os object get -bn dbcs0502_dblink --file '/home/oracle/Wallet/client_wallet/cwallet.sso' --name cwallet.sso
put object
oci os object put [OPTIONS]
$ oci os object put -bn ADB_DBLIN_DG4O --file '/home/oracle/Wallet/client_wallet/cwallet.sso' --name cwallet.sso
{
"etag": "db6a6d3b-f553-492a-9f71-3ca6755586fe",
"last-modified": "Tue, 20 Apr 2021 04:56:13 GMT",
"opc-content-md5": "C3Qlvq4oEg+rI323Ppz7/Q=="
}