最近はDBCSのことばかリ考えていて、夢にまででてきました。k.otsukaです。
この記事は「Oracle Cloud Infrastructure Advent Calendar 2020」12月22日の記事として書かれています。
今回は、DataBaseCloudServiceことDBCSを愛してやまないk.otsukaが、普段検証環境を立てるときに使っている初期設定案を公開します。作ってそのまま使うと、中途半端な米国仕様のDBCSになってしまうので、ちょこっと改良するイメージになりますね。気になる方は是非読んでみてください。
ただ、DBCSは「PaaS」です。むやみやたらに弄って良いものではありません。しっかり確認してから弄るようにしましょう。
※本blogは、Oracleのサポートに確認し、変更して良さそうな部分だけ記載しております。
DBCSを作る
何はともあれ、DBCSを作ります。
作るときのポイントとして、以下2つのポイントに注意してください。
-
「タイム・ゾーン」を設定しよう
この設定を入れることで、OSのタイムゾーンが「Asia/Tokyo」になります。
また、管理コンソール画面上の表示も「Asia/Tokyo」と表示されるので、忘れずに設定しましょう。
-
文字セットを設定しよう
文字コードやロケールとも言われていますね。
自分で使う分にはデフォルトで良いですが、実行させるアプリや環境によって指定の文字コードがあると思うので、忘れずに設定するようにしましょう。
OSのシステムロケールを変更する
米国で日本の時計を使っていることになってしまっているので、修正していきます。
今回は作成時にUTF-8に設定したので、OS側も同じく合わせていきます。
※キー配列は好みに合わせて設定しましょう。
[root]
$ localectl set-locale LANG=ja_JP.UTF-8
$ localectl set-keymap jp
$ localectl --no-convert set-x11-keymap jp
SJISを使いたい場合は、文字マップを生成することで設定できるようになります。
$ localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS
データベースのタイムゾーンを変更する
管理コンソール画面の拡張オプションでは、OSのタイムゾーンは変更されますが、データベースのタイムゾーンは変更されません。管理者権限でデータベース(CDB)に接続し、手動で設定していきましょう。
[oracle]
$ sqlplus / as sysdba
sql> alter database set time_zone = '+09:00';
再起動すると設定が反映されます。コンソール画面からの再起動でも、下記コマンドによる再起動でもどちらでも構いません。
sql> shutdown immediate
sql> startup
データベースのロケールを変更する
データベースのロケールも変更していきます。初期化パラメータを設定することで変更できますが、他の値を間違って設定するとデータベースが動かなくなってしまうこともあるので十分に注意しましょう。ただ、動かなくなっても復元できますので、安心してください。
※初期化パラメータ…データベース起動時に毎回読みこまれるパラメータ
sql> alter system set nls_language='JAPANESE' scope=spfile;
sql> alter system set nls_territory='JAPAN' scope=spfile;
NLS_LANGの設定をする
データベースを日本化したので「oracle」ユーザに、NLS_LANGの環境変数を設定します。
設定を怠ると、データベースに接続する際に文字化けしてしまいます。
.bash_pofileに書き込んでおくことで、ログイン毎に設定する必要がなくなるので、おすすめします。
[orcle]
$ vim ~/.bash_profile
↓を加えます
export NLS_LANG=Japanese_Japan.AL32UTF8
ここまでの設定で、DBCSの日本化が完成します。
バックアップからリストアした場合、拡張オプションの「Asia/Tokyo」が選択できないので、さらに設定が必要になりますが、これはまたの機会に紹介できればと思ってます。
(リストアも「Asia/Tokyo」が選べるようになれば解決なんですけどね…)
おまけ
Oracle Database19cでは、パスワードの使用期限が「60日」にデフォルト設定されています。こまめに変更すれば問題ないですが、
作る→放置→検証したい!
というとき、パスワードの期限切れで使えなくなってしまいます。
そういった事故を防ぐためには以下の設定をおすすめします。しかし、セキュリティ面で問題が発生する可能性もありますので設定の際はご注意ください。
設定時はsqlplusでCDBに接続してから実行します。
上から順に
・パスワードの有効期限廃止
・何度でもパスワードの再利用が可能
・パスワードの再利用までの期間を0日にする
・パスワード間違えによるアカウントロックを無効化
[oracle]
$ sqlplus / as sysdba
sql> alter profile default limit password_life_time unlimited;
sql> alter profile default limit password_reuse_max unlimited;
sql> alter profile default limit password_reuse_time unlimited;
sql> alter profile default limit failed_login_attempts unlimited;
おわり
初めに比べると親切になってきたDBCSですが、やはりまだ米国ファーストがぬぐい切れない印象があります。日本での利用者も増えてきているので、日本利用者にも有利になるような設定が増えていってくれると嬉しいですね。
それまでは、ぜひ本設定を参考にしてみてください。