oracle11gをインストールしたところ、Scottスキーマがありませんでした。だから私はそれを自分で生成しようとしています。「Scott」スキーマのSQLスクリプトを取得しましたが、「tigerで識別されるScottを作成するユーザー」というクエリを実行しようとすると、次のエラーが表示されます。
ORA-65096:Oracleの共通ユーザーまたはロール名が無効です。
基本的に、ユーザー「Scott」を作成することはできません。それはなぜですか、どうすれば問題を解決できますか?
oracle11gをインストールしたところ、Scottスキーマがありませんでした。だから私はそれを自分で生成しようとしています。「Scott」スキーマのSQLスクリプトを取得しましたが、「tigerで識別されるScottを作成するユーザー」というクエリを実行しようとすると、次のエラーが表示されます。
ORA-65096:Oracleの共通ユーザーまたはロール名が無効です。
基本的に、ユーザー「Scott」を作成することはできません。それはなぜですか、どうすれば問題を解決できますか?
回答:
危険
このようなドキュメント化されていないパラメータの設定(先頭のアンダースコアで示される)は、Oracleサポートの指示の下でのみ行う必要があります。そのようなガイダンスなしでそのようなパラメーターを変更すると、サポート契約が無効になる場合があります。したがって、これは自己責任で行ってください。
具体的には、を設定する"_ORACLE_SCRIPT"=true
と、列ORACLE_MAINTAINEDが「Y」に設定された状態で、データディクショナリが変更されます。これらのユーザーとオブジェクトは、一部のDBAスクリプトから誤って除外されます。また、一部のシステムスクリプトに誤って含まれている場合があります。
上記のリスクに問題がなく、一般的なユーザーを正しい方法で作成したくない場合は、以下の回答を使用してください。
ユーザー実行を作成する前に:
alter session set "_ORACLE_SCRIPT"=true;
oracle11gをインストールしました
ORA-65096:Oracleの無効な共通ユーザーまたはロール名
いいえ、Oracle 12cをインストールしました。そのエラーはオン12c
になるだけで、オンになることはありません11g
。
常にデータベースのバージョンを小数点以下4桁まで確認します。
SELECT banner FROM v$version WHERE ROWNUM = 1;
Oracle 12cマルチテナントコンテナーデータベースには、
データベースをコンテナデータベースとして作成しておく必要があります。一方、コンテナ(つまりCDB $ ROOT)にユーザーを作成しようとしていますが、ユーザーをPLUGGABLEデータベースに作成する必要があります。
コンテナー内にアプリケーション関連のオブジェクトを作成することは想定されていません。コンテナーには、プラガブルデータベースのメタデータが保持されます。一般的なデータベース操作には、プラガブルデータベースを使用する必要があります。それ以外の場合は、コンテナとして作成せず、マルチテナンシーを使用しないでください。ただし、12cR2以降では、コンテナ以外のデータベースを作成することはできません。
そしておそらく、サンプルスキーマが既にインストールされている可能性があります。プラグイン可能なデータベースでそれらのロックを解除するだけです。
たとえば、プラガブルデータベースをpdborcl
次のように作成したとします。
sqlplus SYS/password@PDBORCL AS SYSDBA
SQL> ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;
sqlplus scott/tiger@pdborcl
SQL> show user;
USER is "SCOTT"
PDBを表示し、ルートコンテナーからプラガブルデータベースに接続するには:
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 ORCLPDB READ WRITE NO
SQL> alter session set container = ORCLPDB;
Session altered.
SQL> show con_name;
CON_NAME
------------------------------
ORCLPDB
Oracle 12cのインストール後の必須手順を読むことをお勧めします
注:_ORACLE_SCRIPT
非表示パラメーターを使用してtrueに設定することを提案する回答は、実動システムでは危険であり、サポート契約を無効にする可能性もあります。Oracleサポートに問い合わせることなく、非表示のパラメーターを使用しないでください。
Oracle 12c以降では、2種類のデータベースがあります。
ユーザーを作成する場合、2つの可能性があります。
「コンテナユーザー」または「共通ユーザー」を作成できます。
一般的なユーザーは、CBDだけでなく、現在および将来のPDBにも属しています。つまり、割り当てられた権限に応じて、コンテナDBまたはプラグ可能なDBで操作を実行できます。
create user c##username identified by password;
「プラグイン可能なユーザー」または「ローカルユーザー」を作成できます。
ローカルユーザーは単一のPDBにのみ属しています。これらのユーザーには管理特権を与えることができますが、そのユーザーが存在するPDBに対してのみです。そのためには、そのようなプラガブルデータブルに接続する必要があります。
alter session set container = nameofyourpluggabledatabase;
そこで、通常のようにユーザーを作成できます。
create user username identified by password;
使用するテーブルスペースを指定することを忘れないでください。これは、DBのインポート/エクスポート時に役立ちます。詳細については、こちらをご覧くださいhttps://docs.oracle.com/database/121/SQLRF/statements_8003.htm#SQLRF01503
データベース接続ツールへのユーザー依存関係を作成する
sql plus
SQL> connect as sysdba;
Enter user-name: sysdba
Enter password:
Connected.
SQL> ALTER USER hr account unlock identified by hr;
User altered
then create user on sql plus and sql developer
11g
です、あなたはオンにすべき12c
です。