よく使うOracle Database LINK集とDatabase関連作業手順備忘録 自分用メモ

#■ Oracle Database

## オフィシャル
- [OTN](https://www.oracle.com/technical-resources/)
- [Oracle Database 19c](https://docs.oracle.com/en/database/oracle/oracle-database/19/administration.html)
 - [DB getting started](http://ora-srv.wlv.ac.uk/oracle19c_doc/index.html)
 - [2 Day DBA](https://docs.oracle.com/en/database/oracle/oracle-database/19/admqs/index.html)
 - [Database Administrator’s Guide](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/index.html) 
 - [Database Net Services Reference](https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/index.html)
 - [SQL*Plus User's Guide and Reference](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqpug/index.html)
 - [SQL Language Reference](https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Preface.html#GUID-0897B474-6033-4398-AA8A-922F1C5CAF53)
- Blogs
 - [Oracle Blogs](https://blogs.oracle.com/)
 - [日本オラクル社員によるブログ･リンク集](https://www.oracle.com/jp/communities/blogs/)
- [ASK TOM](https://asktom.oracle.com/pls/apex/f?p=100:1000::::::) 
- [Oracle Communities](https://community.oracle.com/hub/)

## Basic/CheatSheet

- [Oracle Database に関係するいろいろなコマンドまとめ](https://qiita.com/sugimount/items/4d4f8ccee095353f51ec)
Oracleを利用するときに役立つSQL CheatSheet

- [「Oracle Database に関係するいろいろなコマンドまとめ」自分メモ用フォーク](https://qiita.com/TakuyaAma/private/0b94315d5c82f50cefca)

- [Oracle Databaseまとめ](https://qiita.com/fururun02/items/4ecf6e1aa2306acac247)
DBA向けのSQL CheatSheet

- [SQL CheatSheet](https://en.wikibooks.org/wiki/Oracle_Database/SQL_Cheatsheet)
BasicなSQL CheatSheet

- [oraclebase/dba](https://github.com/oraclebase/dba)
oracle-baseの作者によるscript集 → Versionごとに作成

- [jkstill/oracle-script-lib](https://github.com/jkstill/oracle-script-lib)
スクリプトが分類ごとに整理されていて探しやすい

- [DBA Cheat sheet](http://www.br8dba.com/tag/dba-cheat-sheet/)
Excelのダウンロードが必要だけど、Oracle Dabase CheatSheetとしてはこれがあれば十分？ Excelベースなので使いこなすのになれが必要そうだけど。。。

- [tanelpoder/tpt-oracle](https://github.com/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で[使い方解説](https://www.youtube.com/watch?v=9Ux2_sTMHsw)付き

## [Distributed Database Management](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/distributed-database-management.html#GUID-43B1A794-4C8E-4CC5-BF5B-A408A50EB6FA)
 - [Database Link](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/managing-a-distributed-database.html#GUID-B5950167-35F8-4C88-B063-382E0290CB53)
 - [Sharding](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/managing-a-distributed-database.html#GUID-76FC48D7-9852-4307-B21F-5AB27CB25530)
 - [External Table](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-external-tables-concepts.html#GUID-44323E01-7D72-45EC-915A-99E596769D9E)
 - 



## Autonomous Database

###- General

- マニュアル
 - [Autonomous Data Warehouse](https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/index.html)
 - [Autonomous Transaction Processing](https://docs.oracle.com/en/cloud/paas/atp-cloud/index.html)

###- データ連携

EAI/iPaaS : Oracle Integration Cloud/OIC

- [OICチュートリアル](https://community.oracle.com/tech/developers/discussion/4474333/oracle-integration-%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB)
- [OIC-integration-with-OracleATP](https://blogs.oracle.com/integration/oic-integration-with-oracleatp)
- [Oracle Integration: ICS to OIC Migration with transition to ATP](https://blogs.oracle.com/integration/oracle-integration%3a-ics-to-oic-migration-using-an-atp-database)
- [Using the Oracle Database Adapter with Oracle Integration](https://docs.oracle.com/en/cloud/paas/integration-cloud/database-adapter/migrate-oracle-database-oracle-autonomous-transaction-processing-or-oracle-database-warehouse-datab.html)

DB間リアルタイム連携/GoldenGate

- [データベース・エンジニアのためのGoldenGate 詳解 on TechNight 2019/5/19](https://videohub.oracle.com/media/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E7%AE%A1%E7%90%86%E8%80%85%E3%83%BB%E6%8A%80%E8%A1%93%E8%80%85%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE+GoldenGate+%E8%A9%B3%E8%A7%A3/0_ezw0wj2e)

ETL/ODI

###- 可用性

###- 性能

- [Automatic Indexはいかに運用/チューニングを変えるのか on TechNight:2019/8/20 ](https://www.oracle.com/jp/a/ocom/docs/jp-db-technight-content/30-1-automatic-indexing-print-final.pdf)
 - [補足資料](https://www.oracle.com/jp/a/ocom/docs/jp-db-technight-content/30-2-autoindex-optimizer-final.pdf)
- [津島博士 のDBパフォーマンスチューニング on Youtube](https://www.youtube.com/watch?v=5xXk2li4kig)


###- 運用

- [古典的な手法でAutonomous Database の スケジュールドスケールアップを行う](https://qiita.com/engineer_success/items/844f69dfc456599562bc)
Oracle CLIでADBのスケールアップ・スケールダウン、オートスケーリングの有効化・無効化を実施


###- Version Up/移行

- RAT/SPA

 - [RAT Documentation](https://docs.oracle.com/cd/F19136_01/ratug/introduction-to-oracle-database-testing.html#GUID-C6C2FA1F-3474-4B5A-B814-C41415B4C248)

 - [STS + SPA でADBアップグレード時にSQLの互換性とパフォーマンスを確保しましょう！](https://github.com/rexzj266/ADB-STS-SPA/blob/main/ja.md)
→ ADBでもSPA（SQL Performance Analyzer）は実行可能 ※ Replayには未対応

 - [Oracle Real Application TestingのSQL Performance Analyzerの活用：データベースのアップグレード（バージョンアップ）でのSQLテスト](https://qiita.com/ts_carp/items/a52c7a4063f9e6226dd6)

 - [SPA:@IT連載記事](https://www.atmarkit.co.jp/ait/series/6483/)


## Converged Database



## Handson

- [Autonomous Database ハンズオンラボ（ADB HOL）](https://community.oracle.com/tech/developers/discussion/4474304/autonomous-database-%E3%83%8F%E3%83%B3%E3%82%BA%E3%82%AA%E3%83%B3%E3%83%A9%E3%83%9C-adb-hol)

- [live labs](https://github.com/oracle/learning-library)
live labsのgithubページ

- [Live labs : Available Workshops (Database)](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/livelabs-workshop-cards?p100_focus_area=141&me=110)

- [Oracle Dev Gym](https://devgym.oracle.com/)



## まとめサイト

- [Shift the Oracle](https://www.shift-the-oracle.com/)
老舗のOracleまとめサイト。最終更新日がだいぶ古いけどBasicな機能をシンプルに記載

- [[Oracle Cloud] OCI Database(DBCS/DBaaS)関連情報まとめ（リンク集）](https://qiita.com/himiyaza/items/ebfbab15cee20bbcff45)
わかりやすくOracle DBA関連サイトのリンクが記載されている

- [ORACLE-BASE](https://oracle-base.com/)
かなり多くの情報量。使いこなせればかなり役立ちそう

- [システムエグゼのデータベース技術ブログ](https://www.system-exe.co.jp/blog/dbblog/)

- [ひとりでできるもん](https://xn--w8j8bac3czf5bl7e.com/category/oracle-database-%e7%ae%a1%e7%90%86/)



## 学習に役立つサイト

- YouTube
 - [Japan Oracle Developers](https://www.youtube.com/channel/UCDz9yA6Vp7OG0sPx3RhrtnA) 
 - [Oracle Database Product Management on youtube](https://www.youtube.com/channel/UCr6mzwq_gcdsefQWBI72wIQ)
- [sample schema](https://github.com/oracle/db-sample-schemas)
- [しばちょう先生の試して納得！DBAへの道](https://blogs.oracle.com/otnjp/shibacho-index)
- [基本からわかる！高性能×高可用性データベースシステムの作り方](https://blogs.oracle.com/otnjp/kusakabe-index)
- [津島博士のパフォーマンス講座](https://blogs.oracle.com/otnjp/tsushima-hakushi-index)
- [セクセムラボ：Oracleの仕組みをわかりやすく解説](https://www.ex-em.co.jp/labo/oracle-k/)
- [Live SQL: Learn and share SQL](https://livesql.oracle.com/)

#■ Oracle Cloud Infrasturecture ： OCI

## オフィシャル

- OCI Documentation（[日本語](https://docs.oracle.com/ja-jp/iaas/Content/home.htm) / [英語](https://docs.oracle.com/en-us/iaas/Content/home.htm)）：マニュアル
- Oracleアーキテクチャセンター（[日本語](https://docs.oracle.com/solutions/?lang=ja) / [英語](https://docs.oracle.com/solutions/)）
- [OCIサービスアップデート](https://blogs.oracle.com/oracle4engineer/4%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9%e3%83%bb%e3%82%a2%e3%83%83%e3%83%97%e3%83%87%e3%83%bc%e3%83%88)：毎月公開するOCIのサービス・アップデート情報
- Oracle Cloud Infrastructure Blog(/[英語](https://blogs.oracle.com/cloud-infrastructure/))
- [オラクルエンジニア通信](https://blogs.oracle.com/oracle4engineer/)：OCI含むオラクル全般の技術資料、コラム
- [OCI活用資料集](https://oracle-japan.github.io/ocidocs/) ：OCI向け技術ドキュメント集
- [OCI活用事例](https://blogs.oracle.com/oracle4engineer/oracle-cloud-platformpaasiaas)：OCIを活用したお客様の事例
- [OCIセミナー情報(Oracle Code Online)](https://blogs.oracle.com/oracle4engineer/column_cloud_seminar)：Developerのための開発者向けコミュニティ Meetup セミナー
- [チュートリアル: OCI を使ってみよう](https://oracle-japan.github.io/ocitutorials/)
- [OCI技術情報リンク集](https://www.oracle.com/jp/cloud/infrastructure/link/)

## Security

- [Approaching Zero Trust Security with Oracle Cloud Infrastructure](https://www.oracle.com/a/ocom/docs/cloud/zero-trust-security-with-oci.pdf)


## 学習に役立つサイト

- [Oracle公式チュートリアル集](https://docs.oracle.com/learn/)
 - [Analyze Sample Logs with OCI Logging Analytics Hands-on Lab](https://docs.oracle.com/en/learn/oci_logging_analytics_sample_logs_lab/index.html#introduction)
 - [Analyze Sample Logs with OCI Logging Analytics Tutorial](https://docs.oracle.com/en/learn/oci_logging_analytics_tutorial_sample_logs/index.html#introduction)
 - [Manage and monitor in autonomous database](https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/manage-monitor-autonomous-database/index.html#workshop-outline)
 - [Configure private DNS zones, views, and resolvers](https://docs.oracle.com/en/learn/oci_private_dns/index.html#introduction)
 - [https://docs.oracle.com/en/learn/get_started_audit/index.html](https://docs.oracle.com/en/learn/get_started_audit/index.html)
 - []()
 - []()

## Tips

- [Cloudii社ブログ](https://cloudii.jp/news/category/blog/)
- [TECHVAN社ブログ](https://blogs.techvan.co.jp/oci/category/oracle-cloud-infrastructureoci/)
- Qiita記事
 - [Oracle Cloud (OCI) のオススメの学習方法についてまとめてみる](https://qiita.com/Skogkatter112/items/a57a5ef1a72806f1c69a)


---

# Database関連作業手順備忘録

## Autonomous Database(ADB)

- Documentation
 - [Oracle Autonomous Database](https://docs.oracle.com/en/database/autonomous-database-cloud-services.html)
 - [DBMS_CLOUDパッケージ](https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/user/dbms-cloud-package.html#GUID-CE359BEA-51EA-4DE2-88DB-F21A9FC10721)
- [OCI CLI Command Reference - autonomous-database](https://docs.oracle.com/en-us/iaas/tools/oci-cli/2.23.0/oci_cli_docs/cmdref/db/autonomous-database.html)

### ADBへの接続

Autonomous databaseのIDを確認

```bash
$ oci db autonomous-database list
```

ウォレットファイルのダウンロード

```bash
$ 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接続

```bash
$ 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;
/
```

登録されたクレデンシャルの確認


```bash
SELECT credential_name, username, comments FROM all_credentials;
```

ウォレットをbucketにアップロード

```bash
$ oci os object put -bn ADB_DBLIN_DG4O --file '/home/oracle/Wallet/client_wallet/cwallet.sso' --name cwallet.sso
```

確認

```bash
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;
/
```

確認

```sql
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
SQL> ALTER SYSTEM SET GLOBAL_NAMES = FALSE;
 
System altered.

SQL> SHOW PARAMETER GLOBAL_NAMES
NAME                     TYPE        VALUE
----------------------   ----------- -----------
global_names             boolean     FALSE
```


DBLINKの作成

```sql
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`パラメータを追加する必要あり

```sql
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
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](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/distributed-database-concepts.html#GUID-93B235DD-BF66-444D-9F0F-9D4B2F590C41)

#### Sample

作成

```sql
SQL> CREATE PUBLIC DATABASE LINK DBLINK_DG4ODBC CONNECT TO "root" IDENTIFIED BY "WelCome123#123#" USING 'DG4ODBC';
```

削除

```sql
SQL> drop public database link DBLINK_DG4ODBC;
```

確認

```sql
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
SQL> SELECT VALUE FROM v$parameter WHERE NAME LIKE 'global_names';

VALUE
--------------------------------------------------------------------------------
TRUE
```

global_namesを使わない場合は、以下設定に変更する

```sql
SQL> alter system set global_names= false;

システムが変更されました。
```

### Oracleウォレットファイルの作成

orapkiを使って署名付き証明書の作成、Oracleウォレットの管理
Autonomous Databaseから他のDBにDBLINK接続する場合、ウォレットファイルを作成のうえ・DBLINK接続サーバへの配布が必要となる。

- [Oracle 19c DB Security Guide](https://docs.oracle.com/cd/F19136_01/dbseg/index.html)
 - [公開キー・インフラストラクチャ(PKI)要素の管理](https://docs.oracle.com/cd/F19136_01/dbseg/using-the-orapki-utility-to-manage-pki-elements.html#GUID-0F77F9B8-D425-4A0E-86FC-359D72DAD34F)

#### Sample

##### 自己署名付きウォレットの作成

ウォレットディレクトリの作成

```bash
$ 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
```

サーバ用自己署名付きウォレットの作成

```bash
$ 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
```

クライアント用自己署名付きウォレットの作成

```bash
$ 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

```bash
$ cd /u01/server/wallet/
$ orapki wallet export -wallet ./ -pwd Oracle123456 -dn "CN=dbcs" -cert /tmp/server.crt
```

クライアント証明書のExport

```bash
$ cd /u01/client/wallet/
$ orapki wallet export -wallet ./ -pwd Oracle123456 -dn "CN=client" -cert /tmp/client.crt
```

サーバウォレットにクライアント証明書をImport

```bash
$ cd /u01/server/wallet/
$ orapki wallet add -wallet ./ -pwd Oracle123456 -trusted_cert -cert /tmp/client.crt
```

クライアントウォレットにサーバ証明書をImport

```bash
$ cd /u01/client/wallet/
$ orapki wallet add -wallet ./ -pwd Oracle123456 -trusted_cert -cert /tmp/server.crt 
```

サーバウォレットのパーミッションを変更

```bash
$ cd /u01/server/wallet
$ chmod 640 cwallet.sso
```



### TCPS接続

上記で作成した自己署名付きウォレットを用いてTPCS接続できるようOracle Netを設定

#### Sample

##### サーバ（DBLINK接続先:DBCS）側の設定

ウォレットファイルを配置

```bash
$ ls /u01/server/wallet
cwallet.sso  ewallet.p12

$ chmod 640 cwallet.sso
```

sqlnet.oraの編集

```bash
# 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の編集
ファイルの先頭に以下を追記

```bash
wallet_location =
 (SOURCE=
  (METHOD=File)
  (METHOD_DATA=
   (DIRECTORY=/u01/server/wallet)))
```

TCPSエンドポイントの再構成

```bash
$ 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）側の設定

ウォレットファイルを配置

```bash
$ ls /u01/client/wallet

cwallet.sso  ewallet.p12
```

sqlnet.oraの編集

```bash
WALLET_LOCATION =
   (SOURCE =
     (METHOD = FILE)
     (METHOD_DATA =
       (DIRECTORY = /u01/client/wallet)
     )
   )
 
SSL_SERVER_DN_MATCH=(ON)
```

tnsnames.oraの編集

```bash
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 Documentation]()
 - [Regions and Availability Domains](https://docs.oracle.com/en-us/iaas/Content/General/Concepts/regions.htm)

### OCI CLI

- [Documentation - OS](https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/objectstorageoverview.htm)
- [Oracle Cloud Infrastructure CLI Command Reference](https://docs.oracle.com/en-us/iaas/tools/oci-cli/2.23.0/oci_cli_docs/)

### OCI CLIの準備

- [コマンドライン(CLI)でOCIを操作する](https://community.oracle.com/tech/developers/discussion/4474263/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3-cli-%E3%81%A7oci%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B-oracle-cloud-infrastructure%E3%82%A2%E3%83%89%E3%83%90%E3%83%B3%E3%82%B9%E3%83%89)

#### oci cli setupに必要な情報の収集

- OCIコンソールにログイン
- APIキーの追加
- 構成ファイルの表示を選択（未登録の場合はAPIキーを追加）
- 構成ファイルをコピー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38031/69e3f0ee-c606-16d4-49ac-005c869ce262.png)

#### setup 

- API秘密鍵をデプロイ
- 構成ファイルを元にconfigファイルを作成

```bash
$ 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
```
#### デフォルトコンパートメント値の設定

```bash
$ oci setup oci-cli-rc
```

~\.oci\oci_cli_rcの編集

```
[DEFAULT]
 compartment-id = <コンパートメントのOCID>
```

確認

```bash
$ oci compute shape list
```

##### auto completeの設定

```bash
$ oci setup autocomplete
```
### Object Stroageの操作：CLI

- [OCI CLI Command Reference - OS](https://docs.oracle.com/en-us/iaas/tools/oci-cli/2.23.0/oci_cli_docs/cmdref/os.html)

※ 参考 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]`

```bash
$ oci os bucket create --name ADB_DBLIN_DG4O
```

list object

`oci os object list --bucket-name [text] [OPTIONS]`

```bash
$ 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]`

```bash
$ 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]`

```bash
$ 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=="
}
```