OracleでCREATE TABLEでテーブル作成する

OracleでCREATE TABLEでテーブル作成する

OracleでCREATE TABLEでテーブル作成します。

まずCREATE TABLE権限を付与します。その次に表領域作成権限を付与します。

C:\Users\test>sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on 土 9月 3 07:39:40 2016

Copyright (c) 1982, 2010, Oracle. All rights reserved.

SQL> conn / as sysdba
接続されました。
SQL> GRANT CREATE ANY TABLE TO USER002;

権限付与が成功しました。

SQL> GRANT CREATE TABLESPACE TO USER002;

権限付与が成功しました。

SQL>

これでCREATE TABLEすると、「ORA-01950: 表領域’SYSTEM’ に対する権限がありません」とエラーが出ます。

以下のように表領域を作成してから、表領域を指定してCREATE TABLEしてみます。

CREATE TABLESPACE SAMPLE_SPACE
DATAFILE 'C:\oraclexe\app\oracle\oradata\XE\SAMPLE_SPACE.dbf' SIZE 10M;

以下のようにCREATE TABLEします。

create table sample_table
(
no char(4) ,
name varchar2(10),
constraint pk_emp primary key( no )
) tablespace SAMPLE_SPACE;

次は「ORA-01950: 表領域’SAMPLE_SPACE’に対する権限がありません」とエラーが出ました。

ちょっとわからなかったので以下権限を付与しました。

GRANT UNLIMITED TABLESPACE TO USER002;

これだと表領域を指定しなくてもよさそうなので、表領域を指定せずにCREATE TABLEを再度してみます。

create table sample_table
(
no char(4) ,
name varchar2(10),
constraint pk_emp primary key( no )
);

これでテーブルを作成することができました。

ちなみに、作成した表領域は以下SQLで作成されたことを確認できます。

SELECT *
FROM dba_tablespaces;

テーブル定義を変更する

テーブル定義を変更するにはALTER TABLE文を使用します。

以下、sample_tableのnoの桁数をchar(4)からchar(10)に変更する例です。

ALTER TABLE SAMPLE_TABLE MODIFY (
NO CHAR(10)
);

コメント

タイトルとURLをコピーしました