テーブルスペース(表領域)の作成 – 永続表領域

テーブルスペースの作成をするには、「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>
タイトルとURLをコピーしました