皆さん、こんにちは!
Oracle12cよりマルチテナント構成(CDB・PDB)が導入されました。
11g以前のようにDB接続しようすると…
ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
が発生するケースがあります。
『ORA-01017のエラーは解消できるんかな…』
『 どうやってPDBに接続するんだろう な…』
こんな疑問に答えます。
SE歴25年のオッサンが解説するぞい!
SEおっさん
OracleのPDB接続エラー:ORA-01017の解消方法
プラガブル・データベース(PDB)は、TNS経由の接続しか受け付けません。
更に、TNS経由でもコンテナ・データベース(CDB)の接続文字列では「ORA-01017」エラーになります。
ERROR: ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
なんだかトラップみたいやね
たろちゃん
SEおっさん
せやなぁ。
実はおっさんもコレにはヤラれたわ。
プラガブルデータベース(PDB)のサービス名で定義されたTNS接続文字列で接続しなきゃあきまへん
実はおっさんもコレにはヤラれたわ。
プラガブルデータベース(PDB)のサービス名で定義されたTNS接続文字列で接続しなきゃあきまへん
OracleのPDB接続手順:PDBサービス名の確認とtnsnames定義
OracleのPDB接続手順です。
SEおっさん
PDBサービス名の確認し、
tnsnames定義するのがミソじゃ
tnsnames定義するのがミソじゃ
- lsnrctl statusでプラガブル・データベースのサービス名を確認する
OS上でコマンド実行(OS…LinuxやWindows)
lsnrctl status
… (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=XXXXX)(PORT=1521)))に接続中 バージョン TNSLSNR for 64-bit Windows: Version 12.2.0.1.0 - Production リスニング・エンドポイントのサマリー... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XXXXX)(PORT=1521))) サービスのサマリー... サービスorclには、1件のインスタンスがあります。←「これはCDB!!」 インスタンスorcl、状態READYには、このサービスに対する1件のハンドラがあります... サービスorclpdbには、1件のインスタンスがあります。←「これはPDB!!」 インスタンスorclpdb、状態READYには、このサービスに対する1件のハンドラがあります...
実行結果より、CDBのサービスがorclで、PDBのサービスがorclpdbと推測する
- tnsnames.oraでプラガブル・データベースのサービス名で定義された接続文字列を定義
CDBの定義をパクッてPDBのサービス名と接続文字列のみ変更したらOK
↓tnsnames.oraの格納先の例
C:appxxxxxproduct12.2.0dbhome_1networkadmintnsnames.oraORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXXXX)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ORCLPDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXXXX)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCLPDB) ) )
- 接続先をPDBへ変更
SQL*Plusでコマンド実行
alter session set container = ORCLPDB;
セッションが変更されました。
- tnsnames.oraに追加したプラガブルデータベースのサービス名でtns経由で接続する
サンプルスキーマHRに接続する例
SQL*Plusでコマンド実行
conn HR/xxxxx@orclpdb
接続されました。
以上の作業で、ユーザログイン(conn接続)が可能となります。
おっさんは11gから様変わりしてて、ものすごく苦労しました。
connectロールを付与したり、色々試したがダメだったけど、結局はPDB独自の設定が必要ってことでした。
~『PDB・CDBって何?』という方はこちら~
Oracleマルチテナントアーキテクチャーの概要をまとめました。
Oracleマルチテナントとは?CDBとPDBの3つのメリット!
~CDBで共通ユーザ作成時のエラー解消方法はこちら~
OracleのCDBで共通ユーザ作成!ORA-65096の解消法
SEおっさん
ここまで読んでくれてありがとう!
「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪
「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪
LINEでのお問合わせも受付中!
LINE公式アカウント
メッセージをお待ちしています!
「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪
「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪
LINEでのお問合わせも受付中!
LINE公式アカウント
メッセージをお待ちしています!
取得資格
- 応用情報技術者
- Oracle Master Gold
- Java SE Gold
- Java EE Webコンポーネントディベロッパ
- Python エンジニア認定データ分析
- 簿記2級