Oracle Database 11g Express Edition Linux版

JA16SJISでインストール

更新 2013/09/12
Oracle Database 11g Express Edition Linux版を、インターネットでググリながらJA16SJISでインストールしてみたのですが、少し変わっていたので記録として残します。

Oracle Database 11g Express Edition (Linux)
  • oracle-xe-11.2.0-1.0.x86_64.rpm

Server Spec
  • CPU : Dual-Core AMD Opteron Processor 1216
  • Memory : 4GB
  • OS : CentOS 5.7 64bit

目標

今回は、以下の内容で作成します。

DATABASE NAME = XE
CHARACTER SET = JA16SJIS

Oracle Database 11g Express Edition のインストール

インストール自体は多くのサイトで書かれているので、そちらを参考にしてください!
$ rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
・・・以下省略(笑)
						

環境変数の設定

.bash_profile に下記の1行を追加します。
先頭に「.」と1個のスペースがあるのに注意してください。
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
						

作業開始

1. インスタンスの停止

XEでは、同時に1個しかインスタンスは起動できないそうです。
$ sqlplus / as sysdba
SQL> shutdown immediate
SQL> startup restrict mount
SQL> drop database;
SQL> quit
							

2. ディレクトリの作成

インスタンスの作成に必要なディレクトリを作成します。
$ mkdir -p /u01/app/oracle/admin/XE/adump
$ mkdir -p /u01/app/oracle/admin/XE/bdump
$ mkdir -p /u01/app/oracle/admin/XE/cdump
$ mkdir -p /u01/app/oracle/admin/XE/dpdump
$ mkdir -p /u01/app/oracle/admin/XE/pfile
$ mkdir -p /u01/app/oracle/admin/XE/udump
$ mkdir -p /u01/app/oracle/flash_recovery_area
$ mkdir -p /u01/app/oracle/oradata/XE
							

3. init.oraの作成

初期化ファイルを /u01/app/oracle/product/11.2.0/xe/dbs/ に作成します。
設定内容は本来マニュアルに沿って変更しますが、私はグーグル先生に聞いて設定しました。
・・つまり、いろんな所からコピーしてきました m(_ _)m すみません
古いバージョンからの置き換えなら「compatible」に注意しましょう!
$ vi /u01/app/oracle/product/11.2.0/xe/dbs/init.ora
							
db_domain = ''
db_name = 'XE'
java_pool_size=0
control_files = (/u01/app/oracle/oradata/XE/control01.ctl, /u01/app/oracle/oradata/XE/control02.ctl, /u01/app/oracle/oradata/XE/control03.ctl)
db_block_size = 8192
user_dump_dest = '/u01/app/oracle/admin/XE/udump'
background_dump_dest = '/u01/app/oracle/admin/XE/bdump'
core_dump_dest = '/u01/app/oracle/admin/XE/cdump'
shared_pool_size = 83886080
open_cursors = 300
db_block_size = 8192
db_file_multiblock_read_count = 16
sessions = 20
sga_target = 286261248
shared_servers = 4
undo_management = 'AUTO'
undo_tablespace = 'UNDOTBS1'
dispatchers = '(PROTOCOL=TCP) (SERVICE=XEXDB)'
remote_login_passwordfile = 'EXCLUSIVE'
db_recovery_file_dest_size = 10G
db_recovery_file_dest = '/u01/app/oracle/flash_recovery_area'
processes = 150
compatible='11.2.0'
							
ちなみに「Example INIT.ORA file」↓が入っていました。
#
# $Header: rdbms/admin/init.ora /main/23 2009/05/15 13:35:38 ysarig Exp $
#
# Copyright (c) 1991, 1997, 1998 by Oracle Corporation
# NAME
#   init.ora
# FUNCTION
# NOTES
# MODIFIED
#     ysarig     05/14/09  - Updating compatible to 11.2
#     ysarig     08/13/07  - Fixing the sample for 11g
#     atsukerm   08/06/98 -  fix for 8.1.
#     hpiao      06/05/97 -  fix for 803
#     glavash    05/12/97 -  add oracle_trace_enable comment
#     hpiao      04/22/97 -  remove ifile=, events=, etc.
#     alingelb   09/19/94 -  remove vms-specific stuff
#     dpawson    07/07/93 -  add more comments regarded archive start
#     maporter   10/29/92 -  Add vms_sga_use_gblpagfile=TRUE
#     jloaiza    03/07/92 -  change ALPHA to BETA
#     danderso   02/26/92 -  change db_block_cache_protect to _db_block_cache_p
#     ghallmar   02/03/92 -  db_directory -> db_domain
#     maporter   01/12/92 -  merge changes from branch 1.8.308.1
#     maporter   12/21/91 -  bug 76493: Add control_files parameter
#     wbridge    12/03/91 -  use of %c in archive format is discouraged
#     ghallmar   12/02/91 -  add global_names=true, db_directory=us.acme.com
#     thayes     11/27/91 -  Change default for cache_clone
#     jloaiza    08/13/91 -         merge changes from branch 1.7.100.1
#     jloaiza    07/31/91 -         add debug stuff
#     rlim       04/29/91 -         removal of char_is_varchar2
#   Bridge     03/12/91 - log_allocation no longer exists
#   Wijaya     02/05/91 - remove obsolete parameters
#
##############################################################################
# Example INIT.ORA file
#
# This file is provided by Oracle Corporation to help you start by providing
# a starting point to customize your RDBMS installation for your site.
#
# NOTE: The values that are used in this file are only intended to be used
# as a starting point. You may want to adjust/tune those values to your
# specific hardware and needs. You may also consider using Database
# Configuration Assistant tool (DBCA) to create INIT file and to size your
# initial set of tablespaces based on the user input.
###############################################################################

# Change '<ORACLE_BASE>' to point to the oracle base (the one you specify at
# install time)

db_name='ORCL'
memory_target=1G
processes = 150
audit_file_dest='<ORACLE_BASE>/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='<ORACLE_BASE>'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = (ora_control1, ora_control2)
compatible ='11.2.0'
							

4. データベースを作成

ここで「CHARACTER SET JA16SJIS」を指定します!
ユーザ表領域やTABLESPACEもここでマニュアルに沿って設定します。
私はこれもグーグル先生に教えてもらって /u01/app/oracle/product/11.2.0/xe/dbs/ に作成しました。
$ vi /u01/app/oracle/product/11.2.0/xe/dbs/createdb.sql
							
CREATE DATABASE "XE"
MAXINSTANCES 8
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
DATAFILE '/u01/app/oracle/oradata/XE/system.dbf' SIZE 300M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/u01/app/oracle/oradata/XE/sysaux.dbf' SIZE 120M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/oracle/oradata/XE/temp.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE '/u01/app/oracle/oradata/XE/undo.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
CHARACTER SET JA16SJIS
NATIONAL CHARACTER SET UTF8
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/XE/redo01.log') SIZE 50M,
GROUP 2 ('/u01/app/oracle/oradata/XE/redo02.log') SIZE 50M,
GROUP 3 ('/u01/app/oracle/oradata/XE/redo03.log') SIZE 50M;

CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/u01/app/oracle/oradata/XE/users.dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
ALTER DATABASE DEFAULT TABLESPACE "USERS";
							
$ sqlplus / as sysdba

SQL> @createdb.sql;
							

5. スクリプトを実行し、必要な機能をインストールします。

/u01/app/oracle/product/11.2.0/xe/rdbms/admin/ に入っていますので必要に応じて実行します。
とりあえずこれぐらいあれば普通の業務で使えるみたいです。
$ cd /u01/app/oracle/product/11.2.0/xe/rdbms/admin/
$ sqlplus / as sysdba

SQL> @/u01/app/oracle/product/11.2.0/xe/rdbms/admin/catalog.sql
SQL> @/u01/app/oracle/product/11.2.0/xe/rdbms/admin/catproc.sql
							

6. ユーザプロファイル情報をロード。

7.をquitしないで、SYSTEMユーザで接続しなおし以下のスクリプトを実行します。
SQL> connect system/manager
SQL> @/u01/app/oracle/product/11.2.0/xe/sqlplus/admin/pupbld.sql
SQL> quit
							

7. SPファイルの作成

ORACLEの設定をSPファイルに出力します。
$ sqlplus / as sysdba

SQL> CREATE SPFILE='/u01/app/oracle/product/11.2.0/xe/dbs/spfileXE.ora' FROM PFILE='/u01/app/oracle/product/11.2.0/xe/dbs/init.ora';
SQL> shutdown
SQL> startup  ←正常起動を確認
SQL> quit
							

おまけ

11g からデフォルトでパスワードの大文字小文字を区別するようになった!

古いシステム側を直せば良いけど面倒くさいときは・・(自己責任で)
$ sqlplus / as sysdba

SQL> ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;
SQL> quit
							

ORA-12519, TNS:no appropriate service handler found が出た時

DBA権限で最大プロセス数, 最大セッション数の確認して
$ sqlplus / as sysdba

SQL> select name, type, value from V$SYSTEM_PARAMETER where name = 'processes' or name = 'sessions';
							
必要ならDBA権限で最大プロセス数を適切に修正します。
下記の(PROCESSES=100)は例ですので適切に指定してください。
SQL> ALTER SYSTEM SET PROCESSES=100 SCOPE=SPFILE;
SQL> quit
							

ORA-28001: the password has expired が出た時

デフォルトでパスワードの有効期限が180日に設定されているとの事!
http://devrecord.blog56.fc2.com/blog-entry-60.html
$ sqlplus / as sysdba

SQL> alter profile default limit password_life_time unlimited;
							
んで、ユーザーとパスワードを再設定すればOKだと!
SQL> alter user [ユーザID] identified by [パスワード];
SQL> alter user [ユーザID] account unlock;
SQL> quit
							

InstantClient

  • oracle-instantclient11.2-basic-11.2.0.2.0.x86_64.rpm
  • oracle-instantclient11.2-devel-11.2.0.2.0.x86_64.rpm
  • oracle-instantclient11.2-jdbc-11.2.0.2.0.x86_64.rpm
  • oracle-instantclient11.2-sqlplus-11.2.0.2.0.x86_64.rpm