テーブルスペースの作成をするには、「CREATE TABLESPACE」を使います。
Oracleへのログイン
テーブルスペース(表領域)を作成するには、OracleへSQL*Plusで接続して「SYS」ユーザーでログインします。
$ whoami
oracle
$ sqlplus sys/xxxxxxxx@PDB1 as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Apr 19 09:38:50 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL>
テーブルスペース(表領域)の作成
テーブルスペースを自動拡張を有効にして作成
下記のような条件で作成することにします。
項目 | 内容 |
---|---|
テーブルスペース名 | USR_DATA1 |
データファイル名 | /u06/app/oracle/oradata/CDB1/PDB1/usr_data11.dbf |
初期サイズ | 512メガバイト |
自動拡張 | 有効にして、128メガバイトずつ拡張 |
最大サイズ | 2048メガバイト |
では、条件に沿って、テーブルスペースを作成してみましょう。
SQL> SET SQLCO ''
SQL> CREATE TABLESPACE "USR_DATA1" -
DATAFILE '/u06/app/oracle/oradata/CDB1/PDB1/usr_data11.dbf' SIZE 512M -
AUTOEXTEND ON NEXT 128M MAXSIZE 2048M -
;
Tablespace created. ・・・ テーブルスペースが出来たことを確認
SQL>
テーブルスペースが作成されたかを見てみましょう。
SQL> SET SQLCO ''
SQL> SET LINE 32767 ・・・ 1行あたり32767バイトまでの表示幅に設定
SQL> COL "表領域名" FOR A10 ・・・ 「表領域名」という列を10バイトの表示幅に設定
SQL> COL "自動拡張" FOR A8
SQL> COL "データファイル" FOR A24
SQL> SELECT -
TABLESPACE_NAME AS "表領域名", -
BYTES/1024/1024 AS "初期サイズ(MB)", -
AUTOEXTENSIBLE AS "自動拡張", -
INCREMENT_BY AS "増分ブロック数", -
MAXBYTES/1024/1024 as "最大拡張サイズ(MB)", -
FILE_NAME AS "データファイル" -
FROM -
DBA_DATA_FILES -
WHERE TABLESPACE_NAME='USR_DATA1' -
;
表領域名 初期サイズ(MB) 自動拡張 増分ブロック数 最大拡張サイズ(MB) データファイル
---------- -------------- -------- -------------- ------------------ ------------------------
USR_DATA1 512 YES 16384 2048 /u06/app/oracle/oradata/
CDB1/PDB1/usr_data11.dbf
SQL>
テーブルスペースのDDL(Data Definition Language)を生成して見てみます。
SQL> SET SQLCO ''
SQL> SET PAGES 0
SQL> SET LINE 32767
SQL> SET LONG 20000
SQL> SET LONGC 20000
SQL> EXEC DBMS_METADATA.SET_TRANSFORM_PARAM -
(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',TRUE)
PL/SQL procedure successfully completed.
SQL> SELECT DBMS_METADATA.GET_DDL('TABLESPACE','USR_DATA1') FROM DUAL;
CREATE TABLESPACE "USR_DATA1" DATAFILE
'/u06/app/oracle/oradata/CDB1/PDB1/usr_data11.dbf' SIZE 536870912
AUTOEXTEND ON NEXT 134217728 MAXSIZE 2048M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
SQL>
テーブルスペースを自動拡張を無効にして作成
下記のような条件で作成することにします。
項目 | 内容 |
---|---|
テーブルスペース名 | USR_DATA2 |
データファイル名 | /u06/app/oracle/oradata/CDB1/PDB1/usr_data21.dbf |
初期サイズ | 512メガバイト |
自動拡張 | 無効 |
では、条件に沿って、テーブルスペースを作成してみましょう。
SQL> SET SQLCO ''
SQL> CREATE TABLESPACE "USR_DATA2" -
DATAFILE '/u06/app/oracle/oradata/CDB1/PDB1/usr_data21.dbf' SIZE 512M -
AUTOEXTEND OFF -
;
Tablespace created.
SQL>
テーブルスペースが作成されたかを見てみましょう。
SQL> SET SQLCO ''
SQL> SET LINE 32767
SQL> COL "表領域名" FOR A10
SQL> COL "自動拡張" FOR A8
SQL> COL "データファイル" FOR A24
SQL> SELECT -
TABLESPACE_NAME AS "表領域名", -
BYTES/1024/1024 AS "初期サイズ(MB)", -
AUTOEXTENSIBLE AS "自動拡張", -
INCREMENT_BY AS "増分ブロック数", -
MAXBYTES/1024/1024 as "最大拡張サイズ(MB)", -
FILE_NAME AS "データファイル" -
FROM -
DBA_DATA_FILES -
WHERE TABLESPACE_NAME='USR_DATA2' -
;
表領域名 初期サイズ(MB) 自動拡張 増分ブロック数 最大拡張サイズ(MB) データファイル
---------- -------------- -------- -------------- ------------------ ------------------------
USR_DATA2 512 NO 0 0 /u06/app/oracle/oradata/
CDB1/PDB1/usr_data21.dbf
SQL>
テーブルスペースのDDL(Data Definition Language)を生成して見てみます。
SQL> SET SQLCO ''
SQL> SET PAGES 0
SQL> SET LINE 32767
SQL> SET LONG 20000
SQL> SET LONGC 20000
SQL> EXEC DBMS_METADATA.SET_TRANSFORM_PARAM -
(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',TRUE)
PL/SQL procedure successfully completed.
SQL> SELECT DBMS_METADATA.GET_DDL('TABLESPACE','USR_DATA2') FROM DUAL;
CREATE TABLESPACE "USR_DATA2" DATAFILE
'/u06/app/oracle/oradata/CDB1/PDB1/usr_data21.dbf' SIZE 536870912
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
SQL>