SQL*Plusの使い方~基本からCSVファイルからデータをインポートするまで~

イントロダクション

OracleDBが無料でインストールしました。次は、ユーザーなどを作成し、そこからSQLを使って色々とやりたいので、データをインポートしたいと思います。今回は、その手順を書くことにしました。

Sql*Plusを使用する

現状としては、OracleDBをインストールして、SqlDeveloperをインストールして操作を行おうと思ったのですが、結局はSqlPlusを使うのが一番手っ取り早いということになりました。

SQL*Plusの使い方

オラクルのDBをインストールしたら、付随してくるのがこの*SqlPlus**です。コマンドで実行できるので、GUIでの操作よりも簡単に操作できます。
どのように簡単化というと、権限(ロール)による操作の可能不可能で惑わされないということです。

では早速学習を始めましょう。

まずは、ログイン

DBサーバーにアクセスして操作する」というのが基本的なスタンスになります。なので、前提としてアクセスするサーバーの情報を以下のように設定します。

ユーザー名:takunoji
パスワード:passwd

次のコマンドが使えるようです。しかし、パスワードが丸見えなので。。。

sqlplus ユーザー名/パスワード

次のコマンドを使用します。

sqlplus ユーザー名

ログイン後のコマンド

これを実行したらパスワードの入力を促されるのでそこで入力

そして、現在の使用しているDBを確認するのに「show con_name」で表示されるのがDB名で、「CDB or PDB」を見分けられる。

SQL> show con_name

そして、ログアウト

SQL> exit

環境変数について

Linuxの場合は下のような環境変数が必要になりますが、Windowsの場合は、レジストリにある値が使用されます。レジストリの値はインストール時にセットされます。

  1. ORACLE_BASE: OracleDBのインストールした場所
  2. ORACLE_HOME: セットアップファイル(setup.exe)を展開したディレクトリ(フォルダ)
  3. ORACLE_SID: データベースの名前(orclなど)
    ※Linuxの場合は、PATHに「${ORACLE_HOME}/bin」を追加しましょう。

ユーザー、サーバー、DBを指定するログイン

ログインするときのコマンド

sqlplus ユーザー名@サーバーURL:ポート番号/対象のデータベース

これを実行するときは下のような感じです。

sqplus system@localhost:1521/xepdb1

プラガブルデータベースの「XEPDB1」は自動で作成されるPDB(プラガブルデータベース)です。

動画を作成しました。こんな感じです。

プラガブルデータベースにアクセス

一度DBを切断して、再度アクセスします。

sqlplus system@localhost:1521/xepdb1

ユーザーの確認

下のSQLで一覧できます。

select username from all_users;

上のSQLでユーザーを確認したところ、作成したテストユーザーがいないので改めて作成します。

ユーザーの作成

ユーザー作成のSQL構文は以下の通りです。

CREATE USER ユーザー名 IDENTIFIED パスワード

それでは、実際に作成してみます。

ユーザ―に権限を付与します

各種権限がないと何も操作ができません。。。

  1. SESSION権限
    CREATE SESSION権限は、データベースに接続を許可するシステム権限です。

    grant create session to test;
  2. RESOURCE権限

    そのユーザーに関連付けられたスキーマで特定タイプのスキーマ・オブジェクトの作成、変更および削除を可能にします。このロールは開発者やスキーマ・オブジェクトの作成が必要なその他のユーザーにのみ付与されます。このロールにより、オブジェクト・システムの作成権限のサブセットが付与されます。たとえば、CREATE TABLEシステム権限は付与されますが、CREATE VIEW権限は付与されません。付与できる権限は、CREATE CLUSTER、CREATE INDEXTYPE、CREATE OPERATOR、CREATE PROCEDURE、CREATE SEQUENCE、CREATE TABLE、CREATE TRIGGER、CREATE TYPEのみです。

    grant resource to test;
  3. UNLIMITED TABLESPACE権限
    全ての表領域に対するサイズ無制限の表領域割当制限を付与する

    grant unlimited tablespace to test;

Sql*Plus起動後にDB接続

connect ユーザー名/パスワード as ロール

これを実行すると下のようになります。

connect sys/パスワード as sysdba

動画では下のようになります。

OracleDBの起動とシャットダウン

シャットダウンするコマンド

shutdown immediate

起動するコマンド

startup

動画では下のようになります。

プラガブルデータベースのみを停止

プラガブルデータベース(PDB)のみを停止する方法です。次のようなコマンドで実行します。

alter pluggable database <PDB名> close immediate

パスワードを忘れたとき

まずは、管理者権限でログインします。管理者のパスワードを忘れているとできません。。。

  1. sqlplusを起動する
    sqlplux /nolog
  2. SYSDBAでDBにアクセス
    connect sys as sysdba
  3. ユーザー一覧を確認する
    <全ユーザー>

    select username from all_users;
    select username from dba_users;
ALTER USER account IDENTIFIED BY password ACCOUNT UNLOCK;

SQL*Loaderを使う

この部分は、まだ作成中です。

コマンドの実行

それで、CSVデータをインポートするのに、SQLLoderが使える事を知りました。SqlPlusと一緒にインストールされているようです。
次のコマンドが使用できます。

sqlldr control=ファイル名(パス)

インポート用のコマンド

そして、DBにデータをインポートするのには、下のようなコマンドを使用します。

sqlldr (ユーザー名)/(パスワード)@(接続識別子) CONTROL=(制御ファイルへのパス) LOG=(ログファイルへのパス) BAD=(エラーファイルへのパス) skip=(読み飛ばすヘッダー行数)」

CSVファイルを作る

詳細に関しては、こちらの記事を参照ください。OpenOfficeを使用して、マクロを作成しました。作成方法に関しても記述しています。

OracleDBにインポート

使用するクライアント・アプリケーションは「Sqpl*Plus」です。コマンドで実行するので、GUIみたいな煩わしさがなく、シンプルに実行できます。
この部分は、現在作成中ですので少々お待ちください。

でわでわ。。。

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。