OracleWindows Server

Windows 2008R2 に Oracle Database 11g を SJIS でセットアップ および Data Pump(データポンプ)使用可にする

2 Mins read

日本企業の金融系で使用されているOracleはまだまだSJISが多く使われている。
テストや開発環境構築時にSJISで立ち上げるための覚書

まとまってなくきたなくて。。。ごめん

●Oracle XEのデータベースをSJISで再構築
再作成後はデータポンプが使用できないので使用可能に設定する

/*========================================
■環境
========================================*/

Windows 2008R2 Standard SP1 (x64)
Oracle Database 11g Express Edition Release2 (11.2.0.2.0 – 64bit Production)

標準セットアップが正常に完了している前提(標準ではUTF-8になる)
SJISも「JA16SJIS」、「JA16SJISTILDETILDE」などあるから環境にあわせてください。今回は「JA16SJISTILDE」です。
文字コードについて

/*========================================
■データベースの再構築
========================================*/
前提、1インスタンス、1データベースとなるOracle
文字コード変更を行う場合、再作成が必要となる
XEでは複数インスタンスを作成できないので、
SIDを増やす方法ではなくインストール時のデータベースを削除し新しく再作成する
余談だが上位エディッションであれば複数インスタンス、複数データベースの運用が可能となる
その際はSIDを決め環境変数など設定が必要

・Dosプロンプトを管理者権限でオープンする

・データベースを削除するためのCleanUp.batが用意されている
CleanUp.batを走らせる

/*
C:\oraclexe\app\oracle\product\11.2.0\server\bin\CleanUp.bat
*/

・手作業で残ったファイルを削除
/*
cd C:\oraclexe\app\oracle\product\11.2.0\server\dbs
*/

/*
del *
*/

・新規データベースを作成する
データベースを作成するためのCreateDB.batが用意されている
文字コードを指定し、再作成する

この処理にはマシンスペックによるが30分から1時間はかかる

/*
cd C:\oraclexe\app\oracle\product\11.2.0\server\bin

CreateDB.bat -dbchar JA16SJISTILDE
*/

・システムのプロパティから環境変数を設定する
(存在しなければ設定する)
/*
ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server
ORACLE_SID = XE
PATH = C:\oraclexe\app\oracle\product\11.2.0\server\bin
NLS_LANG = JAPANESE_JAPAN.JA16SJISTILDE
*/

・DosプロンプトをCloseし管理者権限で再度オープンする
(環境変数を反映させるため)

・Oracleが起動しているかチェックする
/*
tasklist | find “oracle”
*/

・TNS Listnerの起動と確認
/*
lsnrctl.exe start
tasklist | find “TNSLSNR.EXE”
*/

・管理者アカウントのパスワードが設定されていないので再設定を行う
/*
sqlplus /nolog
connect sys as sysdba
*/

・パスワード[hogehoge]で設定 ※環境で変えてくださいね
/*
ALTER USER SYS IDENTIFIED BY “hogehoge”;
ALTER USER SYSTEM IDENTIFIED BY “hogehoge”;
*/

・登録ユーザーの確認とキャラクターセットの確認
/*
select username from dba_users;

select value from nls_database_parameters where parameter=’NLS_CHARACTERSET’;
*/

・パスワードの有効期限が180日になっているので無期限にする
(突然ロックされるので。。。環境によって変更してください)
/*
確認
select * from dba_profiles where resource_name = ‘PASSWORD_LIFE_TIME’;

select username,profile from dba_users;

無期限に変更
alter profile default limit password_life_time unlimited;
*/

・外部からの接続のためにWindows2008R2のファイアーウォール受信「TCP 1521」ポートを開けてあげること!

/*========================================
■Data Pump(データポンプ)
※他にもっと良い方法があれば教えて!
========================================*/

再作成後は「expdb, impdp」が使用不可能になっている
(メタデータ処理が出来ないエラーが出る)

正規版(お試し版で可)の11gR2のOracleを別マシンにインストールし以下のフォルダからファイルコピーする
「$ORACEL_HOME\rdbms\xml\xsl」フォルダごと
XEの「C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\xml」の直下にコピー

「kupostdt.xsl」ファイルを作成し同じフォルダへコピー
参照先(https://forums.oracle.com/forums/thread.jspa?messageID=9958876)
xslフォルダ内のファイルは全部で180ファイルになる

・sysユーザでログインし以下のコマンドを実行すると使用可能となる
SQL>execute dbms_metadata_util.load_stylesheets

/*========================================
■個別スキーマ(ユーザー)作成
========================================*/

/*
[Oracle 11g XE re2]
ユーザー名は大文字で登録される’ADMINUSER’ ※環境で変えてくださいね
*/

create user ADMINUSER
identified by hogehoge
default tablespace USERS
temporary tablespace TEMP;
/* 指定の表領域を無制限に使用できるように設定します。 */
ALTER USER ADMINUSER QUOTA UNLIMITED ON USERS;

col USERNAME for a10
col ACCOUNT_STATUS for a20
col DEFAULT_TABLESPACE for a20
col TEMPORARY_TABLESPACE for a20
select USERNAME,ACCOUNT_STATUS,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users where USERNAME=’ADMINUSER’;

/* 権限付与・確認 */
GRANT CONNECT,RESOURCE TO ADMINUSER;
GRANT UNLIMITED TABLESPACE TO ADMINUSER;
GRANT CREATE SESSION TO ADMINUSER;
GRANT CREATE TABLE TO ADMINUSER;
GRANT CREATE PROCEDURE TO ADMINUSER;
GRANT SELECT ANY TABLE TO ADMINUSER;

col GRANTEE for a30
col GRANTED_ROLE for a30
select GRANTEE,GRANTED_ROLE from dba_role_privs where GRANTEE=’ADMINUSER’;

/* データポンプ処理 */
sqlplus /nolog
connect sys as sysdba;

sqlplus /nolog
connect system as sysdba;

/* エクスポートDir作成・権限付与 */
CREATE DIRECTORY expdp as ‘C:\oraclexe\expdir’;

GRANT READ, WRITE ON DIRECTORY expdp TO ADMINUSER;
GRANT EXP_FULL_DATABASE TO ADMINUSER;

/* インポートDir作成・権限付与 */
CREATE DIRECTORY impdp as ‘C:\oraclexe\impdir’;

GRANT READ, WRITE ON DIRECTORY impdp TO ADMINUSER;
GRANT IMP_FULL_DATABASE TO ADMINUSER;

/* インポートサンプル */
impdp ADMINUSER/hogehoge DIRECTORY=impdp DUMPFILE=DEMO.dmp LOGFILE=DEMO_20171017.log SCHEMAS=DEMO REMAP_SCHEMA=DEMO:ADMINUSER

/*========================================
■クライアント設定
========================================*/

Windows7 Pro Sp1(x64)

ファイアーウォール「TCP 1521」ポートを開放すること!
受信、ローカルポート:任意、リモートポート:1521

Oracle Database 11g Release 2 for Microsoft Windows (32-bit)をダウンロード
(64bit版もある)

解答したファイルからセットアップを開始する。
インストールするオプションは
「SQL*Plus」
「Oracle Net」
のみでよい(最小構成でOKなら)

テキストエディッタで「tnsnames.ora」を作成し内容はこんな感じ
IPやSIDが違う場合など状況により変更してください
=================================================
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.XX)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
=================================================

作成したファイルを以下のフォルダに入れてあげる
「C:\app\iagsqap\product\11.2.0\client_1\network\admin」フォルダ内に

Dosプロンプトで

tnsping XE

と叩き通信の疎通を確認する

Read more