share facebook facebook twitter menu hatena pocket slack

2016.12.12 MON

Oracle on CentOS にサンプルデータを入れるまで [cloudpack OSAKA blog]

那須隆

WRITTEN BY 那須隆

ナスです。

とある検証のために環境を準備した際にハマったことです。

作りたかった環境

EC2 × 1
OS: CentOS7
DB: Oracle12c
  DBの中に表領域数個と1つの表領域のテーブルの中に100万件レコードを入れる

たったこれだけなのに2日間もかかってしまったので、二度と同じ過ちを犯さないため&私みたいに DB に詳しくない人が同じところで困らないように書き残しておきます。

Oracle にテーブルを作るまで

CentOS の EC2 を起動した場合、ssh アクセスするユーザは centos です。まずこれで半日はかかりました…

Oracle をインストールするのは簡単です。
HowTos/Oracle12onCentos7 – CentOS Wiki

ただ、作られると思っていた orcl データベースが中途半端に出来上がり、mount できない状態でした。色々試したけど制御ファイルがどこにも見当たらなかったので、諦めようとしてたら、新しくデータベースを作ればいいことに気がつきました。

create database って SQL 文で作れるみたいですが、これはこれでなんかオプションいっぱいあるなーと思って途方に暮れてました。

で、さらに根気よく調べていくと、dbca っていうお手軽 GUI ツールがあることを知りまして、やってみると簡単に作れちゃいました。

oracle ユーザで ssh -X でログインした後に、dbca とだけ叩いて起動します。まずは何をするかを選択。今回はdb作る、で。

 20161202000021

db作るのに必要な情報を入れて次へ。

20161202000031

あとは前提条件チェックが走って、実際に DB が作られます。むちゃくちゃ楽チンでした。

サンプルデータ100万件入れる

さっき作った DB にサンプルデータはどうやって入れようかと調べてたら、最終的に Oracle さんの web にたどり着きました。

しばちょう先生の試して納得!DBAへの道 第3回 データ領域管理の理解~SQLチューニングにも挑戦~

ここの「再帰的With句を活用したSQL」という手法で100万件作ったんですが、5秒くらいで終わりました。早い。ただ、残念ながら、この再帰的With句がまだちゃんと理解できてません… またの機会に調べよう。

↓はこのページからの引用。

SQL> insert into 
  select i+j,rpad(to_char(i+j),100,'A')
    from  (
           with DATA2(j) as (
                             select 0 j from DUAL
                               union all
                             select j+1000 from DATA2 where j < 999000
                            )
           select j from DATA2
          ),
          (
           with DATA1(i) as (
                             select 1 i from DUAL
                               union all
                             select i+1 from DATA1 where i < 1000
                            )
           select i from DATA1
          );

と、ここまで書いてみて全然大したことしてないように見えますが、知識がないとこういう作業も数日かかってしまうので、いろんなことに手を出して勉強してみるのも大事だなと思いました。

元記事はこちら

Oracle on CentOS にサンプルデータを入れるまで [cloudpack OSAKA blog]

那須隆

那須隆

ネットワークエンジニア、SAPコンサルタントを経て、cloudpackにJOIN。Webサイトや基幹システムのインフラ構築および運用を主に行い、シェルやPythonなどでスクリプトを組んで、インフラ運用の効率化を目指している。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。