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

Oracle Database 11g で新しいスキーマ/新しいユーザーを作成する方法は?

    一般的に言えば、Oracle のスキーマはユーザーと同じです。ユーザーを作成すると、Oracle Databaseによってスキーマが自動的に作成されます。 DDL ファイル拡張子を持つファイルは、SQL データ定義言語ファイルです。

    新しいユーザーの作成 (SQL Plus を使用)

    基本的な SQL Plus コマンド:

      - connect: connects to a database
      - disconnect: logs off but does not exit
      - exit: exists
    

    SQL Plus を開いてログに記録:

    / as sysdba
    

    sysdba はロールであり、UNIX の「ルート」または Windows の「管理者」に似ています。すべてを見て、すべてを行うことができます。内部的には、sysdba として接続すると、スキーマ名は SYS のように見えます。

    ユーザーを作成します:

    SQL> create user johny identified by 1234;
    

    すべてのユーザーを表示し、ユーザー johny がそこにいるかどうかを確認します:

    SQL> select username from dba_users;
    

    ここで johny としてログインしようとすると、エラーが発生します:

    ERROR:
    ORA-01045: user JOHNY lacks CREATE SESSION privilege; logon denied
    

    ログインするユーザーは、少なくともセッション権限を作成する必要があるため、この権限をユーザーに付与する必要があります:

    SQL> grant create session to johny;
    

    これで、ユーザー johny として接続できるようになりました:

    username: johny
    password: 1234
    

    ユーザーを削除するには、ドロップできます:

    SQL> drop user johny;
    

    これは、ユーザーの作成方法を示す基本的な例でした。もっと複雑かもしれません。上記では、オブジェクトがデータベースのデフォルトのテーブルスペースに格納されているユーザーを作成しました。データベースを整理するには、ユーザー オブジェクトを独自のスペースに配置する必要があります (テーブルスペースは、スキーマ オブジェクトを格納できるデータベース内のスペースの割り当てです)。

    作成済みのテーブルスペースを表示:

    SQL> select tablespace_name from dba_tablespaces;
    

    テーブルスペースを作成:

    SQL> create tablespace johny_tabspace
      2  datafile 'johny_tabspace.dat'
      3  size 10M autoextend on;
    

    一時テーブルスペースを作成します (一時テーブルスペースは、セッションの間だけ持続する一時データを含むことができるデータベース内のスペースの割り当てです。この一時データは、プロセスまたはインスタンスの障害後に回復することはできません。):

    SQL> create temporary tablespace johny_tabspace_temp
      2  tempfile 'johny_tabspace_temp.dat'
      3  size 5M autoextend on;
    

    ユーザーを作成します:

    SQL> create user johny
      2  identified by 1234
      3  default tablespace johny_tabspace
      4  temporary tablespace johny_tabspace_temp;
    

    いくつかの権限を付与:

    SQL> grant create session to johny;
    SQL> grant create table to johny;
    SQL> grant unlimited tablespace to johny;
    

    ジョニーとしてログインし、ジョニーが持っている権限を確認してください:

    SQL> select * from session_privs;
    
    PRIVILEGE
    ----------------------------------------
    CREATE SESSION
    UNLIMITED TABLESPACE
    CREATE TABLE
    

    テーブルの作成権限があれば、ユーザーはテーブルを作成できます:

    SQL> create table johny_table
      2  (
      3     id int not null,
      4     text varchar2(1000),
      5     primary key (id)
      6  );
    

    データを挿入:

    SQL> insert into johny_table (id, text)
      2  values (1, 'This is some text.');
    

    選択:

    SQL> select * from johny_table;
    
    ID  TEXT
    --------------------------
    1   This is some text.
    

    DDL データを取得するには、「データベース ディクショナリからメタデータを XML または作成 DDL として取得し、XML を送信してオブジェクトを再作成する方法を提供する」 DBMS_METADATA パッケージを使用できます。 "nofollow noreferrer noopener" href="https://www.dba-oracle.com/oracle_tips_dbms_metadata.htm">http://www.dba-oracle.com/oracle_tips_dbms_metadata.htm )

    表の場合:

    SQL> set pagesize 0
    SQL> set long 90000
    SQL> set feedback off
    SQL> set echo off
    SQL> SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
    

    結果:

      CREATE TABLE "JOHNY"."JOHNY_TABLE"
       (    "ID" NUMBER(*,0) NOT NULL ENABLE,
            "TEXT" VARCHAR2(1000),
             PRIMARY KEY ("ID")
      USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
    FAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE "JOHNY_TABSPACE"  ENABLE
       ) SEGMENT CREATION IMMEDIATE
      PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
    FAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE "JOHNY_TABSPACE"
    

    索引の場合:

    SQL> set pagesize 0
    SQL> set long 90000
    SQL> set feedback off
    SQL> set echo off
    SQL> SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;
    

    結果:

      CREATE UNIQUE INDEX "JOHNY"."SYS_C0013353" ON "JOHNY"."JOHNY_TABLE" ("ID")
      PCTFREE 10 INITRANS 2 MAXTRANS 255
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
    FAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE "JOHNY_TABSPACE"
    

    詳細:

    DDL

    DBMS_METADATA

    スキーマ オブジェクト

    スキーマとユーザーの違い

    特権

    ユーザー/スキーマの作成

    表領域の作成

    SQL Plus コマンド



    1. すべてのアクティブなセッションに対して準備されたすべてのステートメントを一覧表示するにはどうすればよいですか?

    2. SpringBoot +JPAを使用してPostgreSQLjsonbを保存する方法は?

    3. JDBCを使用してAndroidからMySQLに接続する

    4. 過去90日間のログインに基づいてアクティブユーザーをカウントします