sql >> データベース >  >> RDS >> Oracle

Oracle Database12cORA01918および接続エラー

    データベースをどのように構成しましたか? Pluggable databaseのオプションを確認しましたか ?はいの場合は、必ずPDBにログインしてください。 CDBではありません 。

    Oracle 12c PostInstallationMandatoryをお読みください手順

    デフォルトでは、pre-installed SCOTTのようなユーザー 、HR などはcontainer databaseにあります pluggable databaseにはありません 。

    tnsnames.ora

    tnsnames.oraファイルを編集して、PDBの詳細を追加します。たとえば、

    PDBORCL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = pdborcl)
        )
      )
    

    すべてのPDBを開く

    ログオン直後にすべて/特定のPDBを開くには、起動後を作成します CDBのシステムレベルのトリガー。

    以来、PDBはCDBスタートを通じて開かれていません。見てみましょう:

    SHUTDOWN IMMEDIATE;
    STARTUP;
    
    SQL> SELECT name, open_mode FROM v$pdbs;
    
    NAME                           OPEN_MODE
    ------------------------------ ----------
    PDB$SEED                       READ ONLY
    PDBP6                          MOUNTED
    

    したがって、すべてのPDBを自動的に開くには、次のようにします:

    SQLPLUS / AS SYSDBA 」、次に実行します:

    CREATE OR REPLACE TRIGGER open_pdbs 
      AFTER STARTUP ON DATABASE 
    BEGIN 
       EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN'; 
    END open_pdbs;
    /
    

    CDBで起動後のシステムレベルのトリガーを作成します。

    SQLPLUS / AS SYSDBA

    最も一般的な誤解は、「SQLPLUS/ASSYSDBA」の使用法に関するものです。

    単一のCDBを作成するオプションをチェックしたので 、「SQLPLUS/ASSYSDBA」コマンドは常にCDBにログインします。通常、開発者はSYSDBAとしてログインした直後に「SCOTT」アカウントのロックを解除していました。しかし、ここにトリックがあります:

    「SCOTT」およびその他のサンプルスキーマはPDBにあり、CDBにはありません 。そのため、sysdbaとしてPDBにログインする必要があります。

    sqlplus SYS/[email protected] AS SYSDBA
    
    SQL> ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;
    
    sqlplus scott/[email protected]
    
    SQL> show user;
    USER is "SCOTT"
    



    1. Docker内のホストのlocalhostとpostgresの違い

    2. isqlによるSQLの実行方法の変更

    3. 構文エラーまたはアクセス違反:1055 SELECTリストの式#8がGROUP BY句になく、非集計列が含まれています

    4. ワークフローパターンを使用して任意のエンティティの状態を管理する