Oracle8iで手動データベース作成 〜Windows2000〜
Oracle8iで手動データベース作成
〜Windows2000〜
0.更新履歴
- 2001.05.21 新規作成
- 2001.05.27 ロールバックセグメントをオンラインにするを追加
1.はじめに
このドキュメントでは,Oracle8.1.6 for NTを用いて,手動でデータベースを作成する手順を示す.
2.作業手順について
手動でデータベースを作成する場合,次のような手順が必要となる.
- インスタンス識別子(SID)を決定.
- 初期化パラメータファイルを作成.
- SYSDBAで,インスタンスに接続.
- NO MOUNTモードでインスタンスを起動.
- データベースを作成.
- ビュー・シノニム作成に必要なスクリプトの実行.
- データベースバックアップを作成.
このドキュメントでは,インスタンス識別子を"o8i4"として進める.
3.初期化パラメータファイルの作成
- 初期化パラメータファイル(init.ora)は,今回はOracleをインストールした時点で用意されているサンプルをカスタマイズして使用する.
- 今回のこの手順では,すべてE:\Oracle\oradata\o8i4ディレクトリ以下にファイルを保存する方式とするが,本来はI/O分散化を図る必要がある.
- init.oraの名前は,inito8i4.oraとした.
- inito8i4.oraの中身を,次のように編集した.
db_name = "o8i4"
db_domain = testinstall.com
instance_name = o8i4
service_names = o8i4.testinstall.com
db_files = 1024
control_files = ("E:\Oracle\oradata\o8i4\control01.ctl",
"E:\Oracle\oradata\o8i4\control02.ctl", "E:\Oracle\oradata\o8i4\control03.ctl")
open_cursors = 100
max_enabled_roles = 30
db_file_multiblock_read_count = 8
db_block_buffers = 2048
shared_pool_size = 5246976
large_pool_size = 614400
java_pool_size = 0
log_checkpoint_interval = 10000
log_checkpoint_timeout = 1800
processes = 50
parallel_max_servers = 5
log_buffer = 32768
max_dump_file_size = 10240
global_names = true
oracle_trace_collection_name = ""
background_dump_dest = E:\Oracle\oradata\o8i4\bdump
user_dump_dest = E:\Oracle\oradata\o8i4\udump
db_block_size = 8192
remote_login_passwordfile = exclusive
os_authent_prefix = ""
distributed_transactions = 500
compatible = 8.0.5
sort_area_size = 65536
sort_area_retained_size = 65536
|
※この設定項目は,オリジナルのINITSMPL.ORAでコメントアウトしていなかった項目を抜き出したものに,赤色で示した部分の値を変更しただけのものである.
4.サービスの登録
- oradimコマンドを使い,Windows2000のサービスに,Oracleインスタンスを登録する.
- net startコマンドにより,インスタンスが登録されていることがわかる.
- コントロールパネルの[サービス]を開いても確認できる.
C:\>oradim
ORADIM: <コマンド> [オプション]。マニュアルを参照してください。
次のコマンドの中から1つ入力してください:
インスタンスを作成するには次のパラメータを指定します:
-NEW -SID sid | -SRVC サービス [-INTPWD パスワード] [-MAXUSERS 数] [-STARTMO
DE a|m] [-PFILE ファイル] [-TIMEOUT 秒]
インスタンスを編集するには次のパラメータを指定します:
-EDIT -SID sid [-NEWSID sid] [-INTPWD パスワード] [-STARTMODE auto|manual] [
-PFILE ファイル名]
[-SHUTMODE a|i|n] [-SHUTTYPE srvc|inst|srvc,inst] [-TIMEOUT 秒数]
インスタンスを削除するには次の項目を指定します:
-DELETE -SID sid | -SRVC サービス名
サービスとインスタンスを起動するには次のパラメータを指定します:
-STARTUP -SID sid [-USRPWD パスワード] [-STARTTYPE srvc|inst|srvc,inst] [-PF
ILE ファイル名]
サービスとインスタンスをシャットダウンするには次のパラメータを指定します:
-SHUTDOWN -SID sid [-USRPWD パスワード] [-SHUTTYPE srvc|inst|srvc,inst] [-SH
UTMODE a | i | n]
ヘルプを参照するには次のパラメータを指定します: -? | -h | -help
C:\>oradim -new -sid o8i4 -intpwd oracle -startmode auto -pfile e:\oracle\oradat
a\o8i4\inito8i4.ora"
E:\>net start
次の Windows 2000 サービスが開始されています:
COM+ Event System
Computer Browser
DHCP Client
〜略〜
License Logging Service
Logical Disk Manager
Net Logon
Network Connections
OracleOraHome81TNSListener
OracleServiceO8I3
OracleServiceo8i4
Plug and Play
〜略〜
World Wide Web Publishing Service
コマンドは正常に終了しました。
E:\>
|
- ここでは,sys(internal)ユーザのパスワードをoracleとしている.
- また,このインスタンスはマシン起動時に自動(auto)で起動されることになる.
5.インスタンスの起動
- [コマンドプロンプト]を起動する.
- setコマンドで,現在のORACLE_SID環境変数を確認する.
- setコマンドで,先ほど稼動させたインスタンスのSIDを指定する.
C:\>SET ORACLE_SID
ORACLE_SID=o8i3
C:\>SET ORACLE_SID=o8i4
C:\>SET ORACLE_SID
ORACLE_SID=o8i4
C:\>
|
- サーバマネージャ(svrmgrl)を起動し,sysユーザでSYSDBAとして接続する.
E:\>svrmgrl
Oracle Server Manager Release 3.1.6.0.0 - Production
Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.
Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
SVRMGR> connect sys/oracle as sysdba
接続されました。
SVRMGR> startup nomount pfile="E:\oracle\oradata\o8i4\inito8i4.ora"
Oracleインスタンスが起動しました。
システム・グローバル領域合計 25486604バイト
Fixed Size 70924バイト
Variable Size 8560640バイト
Database Buffers 16777216バイト
Redo Buffers 77824バイト
SVRMGR>
|
- この状態で,インスタンスが起動した状態で,データベースファイルがマウントされていない.
- 今回は,次のようなSQL文でシステムデータベースを作成する.
Create Database文
CREATE DATABASE o8i4
LOGFILE
'E:\Oracle\oradata\o8i4\redo01.log' SIZE 1024K,
'E:\Oracle\oradata\o8i4\redo02.log' SIZE 1024K,
'E:\Oracle\oradata\o8i4\redo03.log' SIZE 1024K
DATAFILE
'E:\Oracle\oradata\o8i4\system01.dbf' SIZE 58M
REUSE AUTOEXTEND ON
NEXT 10M MAXSIZE 200M
CHARACTER SET JA16SJIS
NATIONAL CHARACTER SET JA16SJIS;
|
- データベースを作成する.
- データベースを作成した後に,サーバマネージャを終了する.
- 次に,SQL*Plusで接続する.
SVRMGR> CREATE DATABASE o8i4
2> LOGFILE
3> 'E:\Oracle\oradata\o8i4\redo01.log' SIZE 1024K,
4> 'E:\Oracle\oradata\o8i4\redo02.log' SIZE 1024K,
5> 'E:\Oracle\oradata\o8i4\redo03.log' SIZE 1024K
6> DATAFILE
7> 'E:\Oracle\oradata\o8i4\system01.dbf' SIZE 58M
8> REUSE AUTOEXTEND ON
9> NEXT 10M MAXSIZE 200M
10> CHARACTER SET JA16SJIS
11> NATIONAL CHARACTER SET JA16SJIS;
文が処理されました。
SVRMGR> quit
Sever Managerを終了しました。
E:\>sqlplus internal/oracle
SQL*Plus: Release 8.1.6.0.0 - Production on 火 May 22 19:59:00 2001
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
に接続されました。
SQL>
|
- ここでSQL*Plusに接続しなおしたのは,実行結果を表示するメッセージがSQL*Plusの方が詳しいからである.
5.一時ロールバックセグメントの作成
- このあとの作業のテーブルスペース作成作業用の一時ロールバックセグメントを作成する.
- この領域,rb_tempは後で消す.
- 作成した一時ロールバックセグメントをオンラインにする.
SQL> CREATE ROLLBACK SEGMENT rb_temp
2 STORAGE(INITIAL 100K NEXT 200K);
ロールバック・セグメントが作成されました。
SQL> ALTER ROLLBACK SEGMENT rb_temp ONLINE;
ロールバック・セグメントが変更されました。
SQL>
|
このロールバックセグメントは,システムテーブルスペース(system01.dbf)内に割り当てられている.
6.ロールバックセグメントの設定
- ロールバックセグメントを格納するためのテーブルスペースを作成する.
CREATE TABLESPACE rbs
DATAFILE 'E:\oracle\oradata\o8i4\rbs01.dbf'
SIZE 5M
AUTOEXTEND ON
NEXT 5M MAXSIZE 100M;
|
- この手順書では,ロールバックセグメントが格納されるテーブルスペース名を"rbs"としているが,なんでもよい.
- 次のようにスクリプトを実行する.
SQL> CREATE TABLESPACE rbs
2 DATAFILE 'E:\oracle\oradata\o8i4\rbs01.dbf'
3 SIZE 5M
4 AUTOEXTEND ON
5 NEXT 5M MAXSIZE 100M;
表領域が作成されました。
SQL>
|
- 作成したテーブルスペースrbsに対して,ロールバックセグメントを割り当てる.
SQL> CREATE ROLLBACK SEGMENT rb1
2 STORAGE(INITIAL 50K NEXT 250K)
3 TABLESPACE rbs;
ロールバック・セグメントが作成されました。
SQL> CREATE ROLLBACK SEGMENT rb2
2 STORAGE(INITIAL 50K NEXT 250K)
3 TABLESPACE rbs;
ロールバック・セグメントが作成されました。
SQL> CREATE ROLLBACK SEGMENT rb3
2 STORAGE(INITIAL 50K NEXT 250K)
3 TABLESPACE rbs;
ロールバック・セグメントが作成されました。
SQL>
|
- 作成したロールバックセグメントを,オンラインにする.
SQL> ALTER ROLLBACK SEGMENT rb1 ONLINE;
ロールバック・セグメントが変更されました。
SQL> ALTER ROLLBACK SEGMENT rb2 ONLINE;
ロールバック・セグメントが変更されました。
SQL> ALTER ROLLBACK SEGMENT rb3 ONLINE;
ロールバック・セグメントが変更されました。
SQL>
|
7.テンポラリテーブルスペースの設定
- ソート等で使うことになる,作業領域としてのテーブルスペースを作成する.
CREATE TABLESPACE temp
DATAFILE 'E:\oracle\oradata\o8i4\temp01.dbf'
SIZE 5M
AUTOEXTEND ON
NEXT 5M MAXSIZE 150M;
|
- ここでは,テンポラリテーブルスペース名を"temp"としているが何でもよい.
SQL> CREATE TABLESPACE temp
2 DATAFILE 'E:\oracle\oradata\o8i4\temp01.dbf'
3 SIZE 5M
4 AUTOEXTEND ON
5 NEXT 5M MAXSIZE 150M;
表領域が作成されました。
SQL>
|
- 次のように,systemユーザが作業領域として使う領域を指定する.
SQL> ALTER USER SYSTEM TEMPORARY TABLESPACE temp;
ユーザーが変更されました。
SQL>
|
8.ユーザ用のテーブルスペースの作成
- ユーザデータが格納されるテーブルスペースを作成する.
CREATE TABLESPACE users
DATAFILE 'E:\oracle\oradata\o8i2\users01.dbf'
SIZE 5M
AUTOEXTEND ON
NEXT 5M MAXSIZE 100M;
|
- ここでは,ユーザ用テーブルスペース名を"users"としているが何でもよい.
SQL> CREATE TABLESPACE users
2 DATAFILE 'E:\oracle\oradata\o8i2\users01.dbf'
3 SIZE 5M
4 AUTOEXTEND ON
5 NEXT 5M MAXSIZE 100M;
表領域が作成されました。
SQL>
|
- systemユーザがデフォルトで使用するテーブルスペースを,次のよう指定する.
SQL> ALTER USER SYSTEM DEFAULT TABLESPACE users;
ユーザーが変更されました。
SQL>
|
- これでユーザがテーブルスペースを指定せずにテーブルを作成しても,このusersテーブルスペースに作成されることになる.
9.一時ロールバックセグメントの削除
- システムテーブルスペースに作成した,一時作業用ロールバックセグメントを削除する.
- 現在オンライン(利用)中なので,オフラインにしたあとで削除する.
SQL> ALTER ROLLBACK SEGMENT rb_temp OFFLINE;
ロールバック・セグメントが変更されました。
SQL> DROP ROLLBACK SEGMENT rb_temp;
ロールバック・セグメントが削除されました。
SQL>
|
10.データディクショナリの作成
- システムデータベース内に,ディクショナリビューを作成する.
- 次のスクリプトを実行する.
SQL> @E:\Oracle\Ora81\RDBMS\ADMIN\catalog.sql
|
- 実行ログは長いので割愛.
- ログをみると,エラーになってたりするが,これは初期処理として残っていたらまずいテーブルなどをdropしているためで,正常動作である.(が,ちゃんとログを見ていないと後で痛い目にあったりする...)
- もう1つ,スクリプトを実行する.
SQL> @E:\Oracle\Ora81\RDBMS\ADMIN\catprc.sql
|
SQL> @E:\Oracle\Ora81\Rdbms\admin\catexp7.sql
|
SQL> @E:\Oracle\Ora81\Rdbms\admin\catproc.sql
|
SQL> @E:\Oracle\Ora81\RDBMS\ADMIN\caths.sql
|
- 次は,systemユーザで接続しなおして実行する.
- このスクリプトは,SQL*Plusを利用するためのものである.
SQL> connect system/manager
接続されました。
SQL> @E:\Oracle\Ora81\sqlplus\admin\pupbld.sql
|
11.ユーザを作成する
- 一般ユーザを作成する.
- ユーザ"test"を作成し,connect,resourceロール(権限)を与える.
SQL> CREATE USER test IDENTIFIED BY test
2 DEFAULT TABLESPACE users
3 TEMPORARY TABLESPACE temp;
ユーザーが作成されました。
SQL> GRANT connect,resource TO test;
権限付与が成功しました。
SQL>
|
この設定により,testユーザがcreate table等を行うとそのオブジェクト(テーブル)はusersテーブルスペースに格納され,作業領域はtempテーブルスペースを利用するようになる.
12.SQL*Plusで接続する
- Net8 Assistantを使い,ネットワークの設定を行う.
- ここでは,このサーバはo8i4.testinstall.comとして定義した.
- SQL*Plusで接続してみる.
C:\>sqlplus test/test@o8i4.testinstall.com
SQL*Plus: Release 8.1.6.0.0 - Production on 火 May 22 22:06:41 2001
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
に接続されました。
SQL>
|
ここまでで,とりあえずDBを設定した後に使えるようになった.
13.ロールバックセグメントをオンラインにしておく
- インスタンスを停止する.
- インスタンスを起動する.
SQL> shutdown
ORA-01031: 権限が不足しています。
SQL> connect internal/oracle
接続されました。
SQL> shutdown
データベースがクローズされました。
データベースがアンマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup
LRM-00109: パラメータ・ファイル'E:\Oracle\Ora81\DATABASE\INITo8i4.ORA'をオープン
できません。
ORA-01078: システム・パラメータの処理が失敗しました。
SQL> startup pfile="e:\oracle\oradata\o8i4\inito8i4.ora"
ORACLEインスタンスが起動しました。
Total System Global Area 25486604 bytes
Fixed Size 70924 bytes
Variable Size 8560640 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL>
|
- デフォルトでは,ORACLE_HOME\DATABASE以下にinit.oraファイルがあった方が良いようである.
- [サービス]コントロールパネルからの起動は,最初に行ったoradimコマンドで設定してあるので問題ない.
- ロールバックセグメントの状態を表示する.
SQL> SELECT segment_name,status FROM dba_rollback_segs;
SEGMENT_NAME STATUS
------------------------------ ----------------
SYSTEM ONLINE
RB1 OFFLINE
RB2 OFFLINE
RB3 OFFLINE
SQL>
|
- 先ほど手動でONLINEにしたのに,インスタンスが再起動されるとオフラインになっていることがわかる.
- 初期パラメータファイル(inito8i4.ora)を開く.
- ロールバックセグメントの指定を追加する.
db_name = "o8i4"
db_domain = testinstall.com
instance_name = o8i4
service_names = o8i4.testinstall.com
〜略〜
compatible = 8.0.5
sort_area_size = 65536
sort_area_retained_size = 65536
rollback_segments = (RB1,RB2,RB3)
|
- Oracleインスタンスを再起動して,ロールバックセグメントの状態を確認する.
SQL> shutdown
データベースがクローズされました。
データベースがアンマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup pfile="e:\oracle\oradata\o8i4\inito8i4.ora"
ORACLEインスタンスが起動しました。
Total System Global Area 25486604 bytes
Fixed Size 70924 bytes
Variable Size 8560640 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL> select segment_name,status from dba_rollback_segs;
SEGMENT_NAME STATUS
------------------------------ ----------------
SYSTEM ONLINE
RB1 ONLINE
RB2 ONLINE
RB3 ONLINE
SQL>
|
- ロールバックセグメントがオンラインになっていることが確認できる.
参考文献