UJP - 技術情報2 : Oracle XEのデータベースをSJISで作り直す Oracle/11g/express/05createdb.batSJIS

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

Page Top

はじめに anchor.png

 Oracle XEをインストールする際に文字コードなどを指定する部分がないので,Unicode(UTF-8)でインストールされてしまう.これをSJISに変更したい場合,データベースの作り直しが必要となる.このドキュメントでは,現在の文字コードを調べたあと,文字コードをSJISに変更する手順を説明する.  なお,SJISのデータベースを作成する手順となっているが,UTF8のデータベースを作成する時も手順としては同じである.

Page Top

現在の文字コードを確認する anchor.png

 systemユーザでOracleに接続し,次のようなSQL文を実行する.

SQL> select value from nls_database_parameters where parameter='NLS_CHARACTERSET';
VALUE
------------------------------------------------------------------------------------
AL32UTF8
SQL>

 文字コードがUTF8で設定されていることがわかる.

Page Top

データベースを削除する anchor.png

Page Top

コマンドプロンプトを管理者権限で起動する anchor.png

 データベースを削除するにはファイルを削除する権限が必要なので,管理者権限でコマンドプロンプトを起動して実行する.

index.php?page=view&file=3247&Oracle11gXEsjis01.jpg

 Windowsロゴを右クリックしてメニューから[コマンド プロンプト(管理者)]を選択する.

index.php?page=view&file=3248&Oracle11gXEsjis02.jpg

 ウインドウの上部に管理者権限であることが確認できる.

Page Top

CleanUp.batを実行する anchor.png

 データベースを削除するために,CleanUp.batが用意されている. ファイルの中身を確認する.

C:\Users\oratest>type C:\oraclexe\app\oracle\product\11.2.0\server\bin\CleanUp.bat
@echo off
C:\oraclexe\app\oracle\product\11.2.0\server\bin\lsnrctl stop LISTENER > nul 2>&1
C:\oraclexe\app\oracle\product\11.2.0\server\bin\oradim -SHUTDOWN -SID XE -SHUTTYPE SRVC,INST -SHUTMODE ABORT > nul 2>&1
C:\oraclexe\app\oracle\product\11.2.0\server\bin\oradim -DELETE -SID XE > nul 2>&1
C:\Users\oratest>

 リスナーとデータベースを停止して,SIDを削除している.SIDなどはWindowsの場合レジストリに登録されているので,それを削除している.(ハズ)  実行する.

C:\oraclexe\app\oracle\product\11.2.0\server\database>C:\oraclexe\app\oracle\product\11.2.0\server\bin\CleanUp.bat
C:\oraclexe\app\oracle\product\11.2.0\server\database>

 コマンド実行後,停止まで10数秒待ち時間がある.

Page Top

残骸のファイルを削除 anchor.png

 データベースを論理削除してもファイルが残っているので,不要となったデータベースを削除する.

Page Top

dbs anchor.png

 dbsディレクトリにはインスタンスに関わる管理ファイルが設置されている.まずはディレクトリに何が入っているか確認する.

C:\Windows\system32>cd C:\oraclexe\app\oracle\product\11.2.0\server\dbs
C:\oraclexe\app\oracle\product\11.2.0\server\dbs>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は E406-5F3A です
 C:\oraclexe\app\oracle\product\11.2.0\server\dbs のディレクトリ
2016/04/26  00:40    <DIR>          .
2016/04/26  00:40    <DIR>          ..
2011/08/27  09:59             2,917 $RT6YM0E.ora
2016/04/25  23:29             2,560 SPFILEXE.ORA
               2 個のファイル               5,477 バイト
               2 個のディレクトリ  341,497,143,296 バイトの空き領域
C:\oraclexe\app\oracle\product\11.2.0\server\dbs>

 管理ファイルが2つ設置してあるので,これらを消して,消えたことを確認する.

C:\oraclexe\app\oracle\product\11.2.0\server\dbs>del *
C:\oraclexe\app\oracle\product\11.2.0\server\dbs\*、よろしいですか (Y/N)? y
C:\oraclexe\app\oracle\product\11.2.0\server\dbs>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は E406-5F3A です
 C:\oraclexe\app\oracle\product\11.2.0\server\dbs のディレクトリ
2016/04/26  00:46    <DIR>          .
2016/04/26  00:46    <DIR>          ..
               0 個のファイル                   0 バイト
               2 個のディレクトリ  341,497,151,488 バイトの空き領域
C:\oraclexe\app\oracle\product\11.2.0\server\dbs>

 ファイルが消えたことが確認できた.

Page Top

初期データベースを作成する anchor.png

 Windows版のOracleでは,CreateDB.batを使って初期データベースを作成する.まずは,シェルを確認する.

C:\oraclexe\app\oracle\product\11.2.0\server\bin>dir CreateDB*
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は E406-5F3A です
 C:\oraclexe\app\oracle\product\11.2.0\server\bin のディレクトリ
2011/08/27  09:58            19,849 CreateDB.bat
               1 個のファイル              19,849 バイト
               0 個のディレクトリ  338,888,560,640 バイトの空き領域
C:\oraclexe\app\oracle\product\11.2.0\server\bin>

 CreateDB.batを実行する.

C:\oraclexe\app\oracle\product\11.2.0\server\bin>CreateDB.bat -dbchar JA16SJIS
ORACLE_HOME must be set and %ORACLE_HOME%\database must be writeable
CreateDB.bat terminated unsucessfully.
C:\oraclexe\app\oracle\product\11.2.0\server\bin>

 ORACLE_HOME環境変数が設定されてないとエラーがでたので,設定する.

Page Top

環境変数ORALCE_HOMEを設定する anchor.png

 CreateDB.batを実行するためにはORACLE_HOMEが必要なので,実行する.

C:\oraclexe\app\oracle\product\11.2.0\server\bin>set ORACLE_HOME=C:\oraclexe\app\oracle\product\11.2.0\server
C:\oraclexe\app\oracle\product\11.2.0\server\bin>echo %ORACLE_HOME%
C:\oraclexe\app\oracle\product\11.2.0\server
C:\oraclexe\app\oracle\product\11.2.0\server\bin>
Page Top

CreateDB.batを実行する anchor.png

 CreateDB.batを実行する.この時,コマンドプロンプトは管理者権限で実行されていることを確認しておく.CreateDB.batを実行する際に,SJISとしてデータベースを作成するため,dbcharにJA16SJISというパラメータをつける.

C:\oraclexe\app\oracle\product\11.2.0\server>CreateDB.bat -dbchar JA16SJIS
ORACLE_HOME=C:\oraclexe\app\oracle\product\11.2.0\server
ORACLE_SID=XE
Existing database will be erased, hit ctrl-c to cancel.
続行するには何かキーを押してください . . .

 何かキーを押す.

インスタンスが作成されました。
SQL*Plus: Release 11.2.0.2.0 Production on 月 5月 23 22:55:14 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
接続されました。
ORA-01081: ???????Oracle???????? - ???????????????
データベースが作成されました。
表領域が作成されました。
DOC>######################################################################
DOC>######################################################################
DOC>    The following statement will cause an "ORA-01722: invalid number"
DOC>    error and terminate the SQLPLUS session if the user is not SYS.
DOC>    Disconnect and reconnect with AS SYSDBA.
DOC>######################################################################
DOC>######################################################################
DOC>#

 しばらく待つ.どれくらいしばらくかというとコンピュータのスペックによる.色々と表示されるが,最後は次のように表示される.

TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_END  2016-05-23 23:22:53
DOC> The following query reports the number of objects that have compiled
DOC> with errors (objects that compile with errors have status set to 3 in
DOC> obj$). If the number is higher than expected, please examine the error
DOC> messages reported with each object (using SHOW ERRORS) to see if they
DOC> point to system misconfiguration or resource constraints that must be
DOC> fixed before attempting to recompile these objects.
DOC>#
OBJECTS WITH ERRORS
-------------------
                  0
DOC> The following query reports the number of errors caught during
DOC> recompilation. If this number is non-zero, please query the error
DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC> are due to misconfiguration or resource constraints that must be
DOC> fixed before objects can compile successfully.
DOC>#
ERRORS DURING RECOMPILATION
---------------------------
                          0
ファンクションが作成されました。
PL/SQLプロシージャが正常に完了しました。
ファンクションが削除されました。
PL/SQLプロシージャが正常に完了しました。
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Productionとの接続が切断されました。
C:\oraclexe\app\oracle\product\11.2.0\server>

 30分ほどしたら完了した.

Page Top

Oracleが起動しているかtasklistコマンドで確認する. anchor.png

C:\oraclexe\app\oracle\product\11.2.0\server>tasklist | find "oracle"
oracle.exe                    5352 Services                   0    211,100 K
C:\oraclexe\app\oracle\product\11.2.0\server>
Page Top

TNS Listnerが起動しているか確認する anchor.png

 データベースを削除する時に停止しているが,念のためリスナーのプロセスを確認する.

C:\oraclexe\app\oracle\product\11.2.0\server\bin>tasklist | find "TNSLSNR.EXE"
C:\oraclexe\app\oracle\product\11.2.0\server\bin>
Page Top

TNS Listnerを起動する anchor.png

 TNS Listnerの場所を確認する.

C:\oraclexe\app\oracle\product\11.2.0\server>cd %ORACLE_HOME%/bin
C:\oraclexe\app\oracle\product\11.2.0\server\bin>dir LSNRCTL.EXE
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は E406-5F3A です
 C:\oraclexe\app\oracle\product\11.2.0\server\bin のディレクトリ
2011/08/27  10:00            94,208 LSNRCTL.EXE
               1 個のファイル              94,208 バイト
               0 個のディレクトリ  338,020,982,784 バイトの空き領域
C:\oraclexe\app\oracle\product\11.2.0\server\bin>

 TNSリスナーを起動する.

C:\oraclexe\app\oracle\product\11.2.0\server\bin>lsnrctl.exe start
LSNRCTL for 32-bit Windows: Version 11.2.0.2.0 - Production on 24-5月 -2016 22:45:02
Copyright (c) 1991, 2010, Oracle.  All rights reserved.
tnslsnrを起動しています。お待ちください...
TNSLSNR for 32-bit Windows: Version 11.2.0.2.0 - Production
System parameter file is C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\listener.ora
Log messages written to C:\oraclexe\app\oracle\diag\tnslsnr\win8120160422\listener\alert\log.xml
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=win8120160422)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))に接続中
リスナーのステータス
------------------------
別名                      LISTENER
バージョン                TNSLSNR for 32-bit Windows: Version 11.2.0.2.0 - Production
開始日                    24-5月 -2016 22:45:06
稼働時間                  0 日 0 時間 0 分 3 秒
トレース・レベル          off
セキュリティ              ON: Local OS Authentication
SNMP                      OFF
デフォルト・サービス           XE
パラメータ・ファイル      C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\listener.ora
ログ・ファイル            C:\oraclexe\app\oracle\diag\tnslsnr\win8120160422\listener\alert\log.xml
リスニング・エンドポイントのサマリー...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=win8120160422)(PORT=1521)))
サービスのサマリー...
サービス"CLRExtProc"には、1件のインスタンスがあります。
  インスタンス"CLRExtProc"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります...
サービス"PLSExtProc"には、1件のインスタンスがあります。
  インスタンス"PLSExtProc"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。
C:\oraclexe\app\oracle\product\11.2.0\server\bin>

 TNS Listnerプロセスが起動したことを確認する.

C:\oraclexe\app\oracle\product\11.2.0\server\bin>tasklist | find "TNSLSNR.EXE"
TNSLSNR.EXE                   1860 Services                   0     39,612 K
C:\oraclexe\app\oracle\product\11.2.0\server\bin>
Page Top

systemユーザのパスワードを設定する anchor.png

 データベースを消しているので,systemユーザのパスワードが設定されていない.インストーラを使うと途中でsystemのパスワードを設定する画面も表示されるが,手動なので設定されていない.もしかして?とおもってchange_on_installを試してみたがそれもダメだった.  初期データベースでSQL*Plusに接続し,sysユーザでコネクトしてみる.

C:\oraclexe\app\oracle\product\11.2.0\server\bin>sqlplus /nolog
SQL*Plus: Release 11.2.0.2.0 Production on 火 5月 24 22:59:47 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
SQL> connect sys as sysdba
パスワードを入力してください:
接続されました。
SQL>

 この時,パスワードは不要.空エンターで接続できた.そして,次のようにsystemユーザにパスワードmanagerをつける.

SQL> ALTER USER system IDENTIFIED BY manager
  2  ;
ユーザーが変更されました。
SQL>

 SQL*Plusを切断し,systemユーザで接続しなおす.

SQL> exit
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Productionとの接続が切断されました。
C:\oraclexe\app\oracle\product\11.2.0\server\bin>sqlplus system/manager@xe
SQL*Plus: Release 11.2.0.2.0 Production on 火 5月 24 23:05:03 2016
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
に接続されました。
SQL>
Page Top

存在しているユーザを確認する anchor.png

 この手順で作成されたORACLEのユーザを確認する.

SQL> select username from dba_users;
USERNAME
------------------------------------------------------------
OUTLN
SYS
SYSTEM
CTXSYS
ANONYMOUS
HR
MDSYS
DIP
ORACLE_OCM
XS$NULL
DBSNMP
USERNAME
------------------------------------------------------------
XDB
APPQOSSYS
13行が選択されました。
SQL>

 scottユーザは無い.

Page Top

変更後の文字コードを確認する anchor.png

 インストーラを使ってインストールするとUTF8(AL32UTF8)だったが,SJISに変更作業したので,実際変更されているか確認する.

SQL> select value from nls_database_parameters where parameter='NLS_CHARACTERSET';
VALUE
--------------------------------------------------------------------------------
JA16SJIS
SQL>

 文字コードがSJIS(JA16SJIS)に変更されていることが確認できた.


トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 27336, today: 6, yesterday: 8
最終更新: 2016-05-24 (火) 23:21:06 (JST) (2865d) by shinnai(shinnai)

広告スペース
Google