自宅で勉強用にORACLEデータベースを無償でダウンロードし構築する方法


ここでは、自宅でORACLEデータベース環境を構築して、自己学習する方法を消化します。

ORACLEダウンロードから構築までの手順

1.ORACLEアカウントの作成

ORACLEのページに遷移しアカウントの作成を行います。
非常に簡単ですぐに終わります。ORACLEページはこちら

(1)まずはORACLEのトップ画面から「アカウント作成」を選択してください。
規約の詳細はこちら

ORACLE DataBaseダウンロードページはこちら

(1)ファイルをダウンロードします。
最新バージョンの12cR2もありますが、ここでは12cR1を選択します。
2つのファイルをダウンロードすれば完了です。

ORACLEダウンロードから構築までの手順で悩んだ時
手順、何度か繰り返しやってみましたが、いくつか注意点を追記しておきます。

・P60のchmod -R 775 /u01
ここは775だとその後のインストールか構築だかでエラーになります。
正しくは、権限を777にrootで設定してください。

・rootユーザでのスクリプト実行
LINUX初心者の方もいらっしゃると思います。
手順の中にはoracleユーザで接続しているときに、「rootユーザで実行してください」ということが度々があります。
このときは、「su – 」でrootユーザに切り替えて実行してください。

・データベースを作成しても接続できない
データベース作成して接続するときは、LISTENERを起動してください。
パスが通っていれば「lsnrctl start」で実行できます。

もしリスナーが正しく作成されていない場合は、リスナーを作りなおしてください。
この場合は、「cd $ORACLE_BASE/bin」にカレントディレクトリを変更し、「./netca」を実行してください。
oracle net configuration assistanceが起動しますので、手順に沿ってリスナーを作成してください。

・P89のoracleユーザの初期ログイン時の設定
ここでTEMPやTMPDIRに設定している「$HOME/tmp」ディレクトリは事前に作成してください。
「mkdir tmp」で作成できます。

ORACLEの構築後の自己学習手順

一通りデータベースのインストールからインスタンス構築まで終わったら、色々やってみましょう。
参考までに私が試したコマンドを紹介します。初めての方は試してみてください。

・表領域作成
CREATE BIGFILE TABLESPACE hwdtbs DATAFILE ‘/u01/app/oracle/oradata/CDB/datafile/hwdtbs01.dbf’ SIZE 5G;

・ユーザ作成
create user hwduser identified by “oracle” default tablespace hwdtbs TEMPORARY TABLESPACE temp;

GRANT DBA TO hwduser;
GRANT UNLIMITED TABLESPACE TO hwduser;
grant SELECT ANY DICTIONARY to hwduser;

・テーブル作成
CREATE TABLE hwd_emp(
emp_id VARCHAR2(8)
,emp_name VARCHAR2(100)
,emp_age NUMBER(3,0)
,CONSTRAINT PK_emp PRIMARY KEY(emp_id)
)TABLESPACE hwdtbs;

・データ作成
insert into hwd_emp(emp_id,emp_name,emp_age) values (‘00000001′,’user1’,20);
insert into hwd_emp(emp_id,emp_name,emp_age) values (‘00000002′,’user2’,20);
insert into hwd_emp(emp_id,emp_name,emp_age) values (‘00000003′,’user3’,20);
insert into hwd_emp(emp_id,emp_name,emp_age) values (‘00000004′,’user4’,20);
insert into hwd_emp(emp_id,emp_name,emp_age) values (‘00000005′,’user5’,20);
insert into hwd_emp(emp_id,emp_name,emp_age) values (‘00000006′,’user6’,20);
insert into hwd_emp(emp_id,emp_name,emp_age) values (‘00000007′,’user7’,20);
insert into hwd_emp(emp_id,emp_name,emp_age) values (‘00000008′,’user8’,20);
insert into hwd_emp(emp_id,emp_name,emp_age) values (‘00000009′,’user9’,20);
insert into hwd_emp(emp_id,emp_name,emp_age) values (‘00000010′,’user10’,20);
insert into hwd_emp(emp_id,emp_name,emp_age) values (‘00000011′,’user11’,20);

・データのコミット
commit;

・データの確認
select * from hwd_emp;

・データの更新
update hwd_emp set emp_age = 30 where emp_id = ‘00000003’;

・データの削除
delete from hwd_emp where emp_id = ‘00000011’;

・データの確認
select * from hwd_emp;

・バックアップ
RMAN TARGET /
show all;
backup database;

・リストア
SQL> alter tablespace hwdtbs offline immediate;

RMAN> restore datafile ‘/u01/app/oracle/oradata/CDB/datafile/hwdtbs01.dbf’;

RMAN> recover datafile ‘/u01/app/oracle/oradata/CDB/datafile/hwdtbs01.dbf’;

SQL> alter tablespace hwdtbs online;

・エクスポート前処理
mkdir dmp_dir
chmod 777 dmp_dir

SQL>create or replace directory dmp_dir as ‘/home/oracle/dmp_dir’;

・表単位のエクスポート、インポート
expdp hwduser/oracle dumpfile=dmp_dir:expdat_tb.dmp tables=HWD_EMP
impdp hwduser/oracle dumpfile=dmp_dir:expdat_tb.dmp tables=HWD_EMP TABLE_EXISTS_ACTION=REPLACE

・スキーマ単位のエクスポート、インポート
expdp hwduser/oracle dumpfile=dmp_dir:expdat_scm.dmp schemas=hwduser
impdp hwduser/oracle dumpfile=dmp_dir:expdat_scm.dmp schemas=hwduser TABLE_EXISTS_ACTION=REPLACE

・表領域単位のエクスポート、インポート
expdp hwduser/oracle dumpfile=dmp_dir:expdat_tbs.dmp tablespaces=hwdtbs
impdp hwduser/oracle dumpfile=dmp_dir:expdat_tbs.dmp tablespaces=hwdtbs TABLE_EXISTS_ACTION=REPLACE

まとめ

これでシングルインスタンスの基本的な構築手順は学べます。
さらにORACLEはRAC環境の構築手順も公開してくれているので、そちらもぜひやってみてください。

また、更にORACLEのSQLなど勉強をやってみたい方はこちらを参考にしてください。

最後に

最後までお読みいただきありがとうございます。

SQLのチューニングについては、「SELECT文のSQLチューニング方法まとめ」で詳しく解説していますので、ぜひ参考にしてください。