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

Oracleの既存のアカウントと同じ権限でスキーマを複製するにはどうすればよいですか?

    Oracle SQL Developerで、「DBA」、「セキュリティ」、および「ユーザー」セクションを開きます。

    アカウントを選択してください。

    右クリックします。

    選択して、「いいね」を作成します。

    「オブジェクト特権のコピー」をオンに切り替えます

    新しいユーザー名/パスワードを入力します。

    出来上がり。

    SQLページに移動して、データディクショナリから取得したコードを確認してください。

    クォータ、ロール、システム特権、およびオブジェクト特権を取得しました。

    バージョン18.1では、ユーザーを開いてSQLページに移動し、そこに提供されているコードのスキーマ名をコピー/貼り付け/置換することもできます。

    ああ! (これを行うにはコードが必要だとおっしゃっています。)

    SQL Developerで「ログ」パネルを開き、「ステートメント」ページをクリックすると、DBからこの情報を取得するために使用しているSQLを確認できます。

    そのコードは次のとおりです:

    select M.NAME,
           decode(
        NVL(
            S.ADMIN_OPTION,
            'NULL'
        ),
        'NO',
        'YES',
        'NULL',
        'NO',
        'YES'
    ) GRANTED,
           NVL(
        ADMIN_OPTION,
        'NO'
    ) ADMIN
      from SYSTEM_PRIVILEGE_MAP M,
           (
        select *
          from DBA_SYS_PRIVS
         where (
            GRANTEE   =?
                or ?         = null
        )
    ) S
     where S.PRIVILEGE (+)   = M.NAME
     order by 1;
    
    select R.ROLE,
           decode(
        S.NAME,
        R.ROLE,
        'YES',
        'NO'
    ) GRANTED,
           NVL(
        S.ADMIN,
        'NO'
    ) ADMIN,
           NVL(
        S.DEF,
        'NO'
    ) DEF
      from DBA_ROLES R,
           (
        select GRANTED_ROLE NAME,
               ADMIN_OPTION ADMIN,
               DEFAULT_ROLE DEF
          from DBA_ROLE_PRIVS
         where GRANTEE   =?
    ) S
     where S.NAME (+)   = R.ROLE
       and R.AUTHENTICATION_TYPE != 'GLOBAL'
     order by 1;
    
    select OWNER,
           TABLE_NAME,
           PRIVILEGE,
           GRANTABLE
      from DBA_TAB_PRIVS
     where GRANTEE   =?;
    
    select ACCOUNT_STATUS,
           DEFAULT_TABLESPACE DEF,
           TEMPORARY_TABLESPACE TEMP,
           PASSWORD,
           EXTERNAL_NAME,
           EDITIONS_ENABLED,
           ALL_SHARD
      from DBA_USERS
     where USERNAME   =?;
    
    select T.TABLESPACE_NAME,
           NVL(
        Q.UNLIMITED,
        'NO'
    ) UNLIMITED,
           Q.QUOTA,
           Q.UNIT,
           T.CONTENTS
      from DBA_TABLESPACES T,
           (
        select TABLESPACE_NAME,
               decode(
            MAX_BYTES,
            -1,
            'YES',
            'NO'
        ) UNLIMITED,
               decode(
            MAX_BYTES,
            -1,
            null,
            MAX_BYTES / 1024
        ) QUOTA,
               'K' UNIT
          from DBA_TS_QUOTAS
         where (
            USERNAME   =:1
                or :1         = null
        )
    ) Q
     where Q.TABLESPACE_NAME (+)   = T.TABLESPACE_NAME
     order by 1;
    


    1. ckfinder php 2.6.2設定の表示、表示、並べ替えが機能しない

    2. デスクトップクライアントをMySQLに直接接続することは賢明ですか?

    3. 単純なパラメータ化と簡単な計画—パート3

    4. Pythonを使用して結果セットオブジェクトの2つの連続する行の値を比較する方法