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

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

Related posts
LinuxRouterWindows Server

DNS 再帰的な問い合わせ DDos攻撃について

1 Mins read

世の中の「DNS の再帰的な問い合わせを使った DDoS 攻撃」が相変わらず多いようです。

公開している外向きのDNSサーバーは再帰的な問合せをローカルIP以外からは使用できないよう設定する必要がありますが、昔のDNSサーバーは標準で外向きにも答えるようになっているものが多いみたいです。今回、色々な場所=GlobalIPから攻撃が飛んできているのもそのためであり、一定期間でアクセス元が変わってしまい捕まえるのが大変な状況になります。(また、被害者が加害者になってしまう構図も問題です)

以下はRTX1200でDDos攻撃を防ぐ目的で調査した際に判明したことを覚書しておきます。

DNSサーバーで有名なBIND(LINUX)はローカルIPからの問い合わせのみ再帰的な問合せに応答し、外部からの問い合わせには応答しない設定が出来ますので、DMZ内などに1台置くことでセキュリティ対策と保持Domainサーバーの2機能を賄うことが可能となっています。

一方、ActiveDirectryに対応する関係でWindows DNSサーバーを使用している会社さんも結構います。WindowsのDNSサーバーはローカルIPからの問い合わせと外部からの問い合わせに対する切り替え機能がないので、再帰的な問合せに対し応答するかしないかの2つしか設定できないので、社内に上位DNS情報のキャッシュサーバーを置きたい且つ、今まで通り保持Domainは社内のDNSサーバーを使いたいといった場合、セキュリティーの関係上、DMZに外用DNSサーバー、ローカルに内用DNSサーバーと2台立てることが必要となります。

プロバイダーが公開しているDNSを上位指定することでキャッシュサーバーを立てなくても解決できますが、多数のクライアントがある時、引っ越しなどの時は大変になりますね。(そこまで考えなくても良いかもしれませんが。。。)

雑学でした。。。

ExchangeServerWindows Serverパソコンのこと

Exchange Server 2010 移行について

1 Mins read

Exchange Server 2010 を同一ドメイン内で、新サーバーへお引越しした際の注意点!

同一ドメインに新規にExchange Server 2010をインストールし、EMCを使用してメールボックスの移動を行う。

EMCを使用した移動だけではDatabase内のデータを全て移動させることが出来ないのでShellコマンドを使用して残データを移動させる

#データベース内を空にする(残骸を削除)
引っ越し元:Mailbox Database 1234567890
引っ越し先:Mailbox Database send123456

#メールボックスの確認
Get-Mailbox -Database 'Mailbox Database 1234567890'
 
#メールボックスのプラン確認
Get-Mailbox -Database 'Mailbox Database 1234567890' -Archive
 
#調達メールボックスの確認
Get-Mailbox -Database 'Mailbox Database 1234567890' -Arbitration
 
#調達メールボックスの移動
Get-Mailbox -Arbitration -Database 'Mailbox Database 1234567890' | New-MoveRequest -TargetDatabase 'Mailbox Database send123456'

この後、EMCを使用して引っ越し元のDatabseを削除して完了

#パブリックフォルダを移動し削除(残骸を削除)
引っ越し元パブリックフォルダ:Public Folder Database 0123456789
引っ越し元Hostname:hoge.moto.local
引っ越し先Hostname:hoge.send.local

#パブリックフォルダ確認・調査
Get-PublicFolderDatabase 'Public Folder Database 0123456789' | Format-List
 
Get-PublicFolderStatistics -Server hoge.moto.local
Get-PublicFolder -Server hoge.moto.local
Get-PublicFolder -Server hoge.moto.local \ -Recurse | Remove-PublicFolder -Server hoge.send.local -Recurse:$True -ErrorAction:SilentlyContinue
Get-PublicFolder -Server hoge.moto.locall \Non_Ipm_Subtree -Recurse | Remove-PublicFolder -Server hoge.send.local -Recurse:$True -ErrorAction:SilentlyContinue
 
#Exchange Server 2010に用意されているPowerShellを使用して移動処理
C:\[インストール先Path]\V14\Scripts\MoveAllReplicas.ps1 -Server hoge.moto.local -NewServer hoge.send.local
 
#パブリックフォルダDatabase削除
Remove-PublicFolderDatabase -Identity 'Public Folder Database 0123456789'

ExchangeServerWindows Serverパソコンのこと

Exchange Server 2010 アドレス帳の更新

1 Mins read

Exchange Server 2010 に新規ユーザー登録時や、メーリングリストを変更した際にグローバールアドレス帳の反映がクライアントに遅くなることがあるので、以下のコマンドを送ることで少しでも早める!

注意!クライアントサイドに確実に反映されるわけではない

Update-GlobalAddressList -Identity "既定のグローバル アドレス一覧"
Update-AddressList -Identity "すべてのグループ"
Update-AddressList -Identity "すべてのユーザー"

また、クライアントOutlookの設定では標準でExchangeをキャッシュモードで利用しているのでオフラインアドレス帳(OAB)の反映もおこなう必要がある。既定ではこの更新時間は毎日5:00時に設定されている。

Exchange Server 2010のEMCにて「組織の構成」「メールボックス」の「オフラインアドレス帳」タブを開き「既定のオフライン アドレス帳」を右クリックし「更新」をおこなってあげる。

チームを強化する

サービスの
サブスクリプションの利点を説明するテキストを追加します。