こしぞーのひとり情シス

Windows/仮想化の小規模環境を運用するリーマンの日々を綴っています。

SQL テストデータ作成(Oracle Database 19c)

Oracle Databaseの動作確認などをしたいときにテストデータ作成するのってけっこうめんどうだったりします

  • スキーマを作ってアクセス権制御などを試したい
  • 監査ログの生成量などを簡単にテストしてみたい
  • バックアップ(増分など)の動作確認をしたいのでサクッと変更データを用意したい
  • 自分はDBAなのでアプリを用意せずにテストデータ作成したい

「毎回やり方を調べる」。これが一番面倒くさいです。
自分のメモ用に残します

参考文書

日本オラクルのしばちょう先生を参考にします

ここにほぼすべてのことが書かれています

テストデータ作成方法

項目 パラメタ MEMO
ユーザ・スキーマ TRY この手順で新規作成
パスワード TRY この手順で新規作成
表領域 TBS21 この手順で新規作成
ASMディスクグループ DATA 既存を利用
  • TBS21表領域を作成
create tablespace TBS21 datafile '+DATA(DATAFILE)' size 1g uniform size 4m ;
  • TBS21をデフォルト表領域にするTRYユーザの作成
create user TRY identified by TRY default tablespace TBS21 ;
grant connect, resource, dba to TRY ;
  • TAB21表の作成とデータ・ローディング
connect TRY/TRY
create table TAB21 (COL1 number NOT NULL, COL2 char(1000)) pctfree 10 ;

insert /*+append */ into TAB21 select LEVEL, 'hoge'||to_char(LEVEL) from DUAL connect by LEVEL <= 7 * 128 * 508 ;
commit;
create unique index IDX_TBL21_COL1 on TAB21(COL1) ;
alter table TAB21 add primary key (COL1) using index ;
  • 150MB分のデータ更新を行う (差分データ生成に必要な際に活用)
$ sqlplus /nolog
connect TRY/TRY
select count(distinct(dbms_rowid.rowid_block_number(ROWID))) * 8 / 1024 as "UPDATED_MB" from TAB21 where COL1 < 7 * 128 * 150 ;

UPDATED_MB
----------
       150

SQL> -- 150MB分を更新
update TAB21 set COL2='updated' where COL1 < 7 * 128 * 150 ;
commit ;

関連記事です

現行のデータベースシステムは今すぐ19cにアップグレードする検討をしましょう
どうやら11gR2は、19cの次の23cに直接アップグレードは出来ないようで移行時に困難を極めそうです

www.hitoriit.com

Partitionの検討について

www.hitoriit.com

以上です