サイレンスインストールってなんぞや?
サイレントインストールとは、インストーラ実行時にダイアログを表示してユーザからの応答を受けることなく、自動的にインストールを行う機能です。 インストール先のフォルダやインストールオプションがすべてのクライアントマシンで同じである場合には、この機能が便利です。 この機能を使用すると、ユーザのインストール時の手間が軽減されるとともに、誤った指定によるインストールミスを防ぐことができます。
4.4 サイレントインストール機能 - Fujitsu
ということらしいですね。
GUIの環境がないときに、コマンドでインストーラーを実行していくことができるということですかね。
というわけで、今回は、Oracle12cのサイレントインストールにトライしてまいりますか~。今回もハマりにハマってます(涙)。
独学の限界を感じますね...しかもネットの見識のみという(苦笑)。LinuxやOracle DataBase関連を書籍で学習したいとこですね。
ということで、大いに誤ってる可能性もあるかもしれませんが、何卒ご了承ください。
必要なOS(オペレーティング・システム)
Oracle Database 12c Release 2 (12.2.0.1.0)をインストールするためには、それに適したOSが必要のようで、
⇧ Oracleの公式の説明では、
項目 | タスク |
---|---|
OSの一般的な要件 | OpenSSHが手動でインストールされている(デフォルトのLinuxインストールの一部としてインストールしていない場合)。 このガイドに記載されているサポート対象のカーネルおよびリリースのリストにあるLinuxカーネル |
Linux x86-64 | 次のLinux x86-64カーネルがサポートされています。 Oracle Linux 7およびUnbreakable Enterpriseカーネル3: 3.8.13-35.3.1.el7uek.x86_64以上 Oracle Linux 7.2およびUnbreakable Enterpriseカーネル4: 4.1.12-32.2.3.el7uek.x86_64以上 Oracle Linux 7およびRed Hat互換カーネル: 3.10.0-123.el7.x86_64以上 Red Hat Enterprise Linux 7: 3.10.0-123.el7.x86_64以上 Oracle Linux 6.4およびUnbreakable Enterpriseカーネル2: 2.6.39-400.211.1.el6uek.x86_64以上 Oracle Linux 6.6およびUnbreakable Enterpriseカーネル3: 3.8.13-44.1.1.el6uek.x86_64以上 Oracle Linux 6.8およびUnbreakable Enterpriseカーネル4: 4.1.12-37.6.2.el6uek.x86_64以上 Oracle Linux 6.4およびRed Hat互換カーネル: 2.6.32-358.el6.x86_64以上 Red Hat Enterprise Linux 6.4: 2.6.32-358.el6.x86_64以上 SUSE Linux Enterprise Server 12 SP1: 3.12.49-11.1以上 パッケージの最小要件のリストは、システム要件に関する項を確認してください。 |
IBM: Linux on System z | 次のIBM: Linux on System zカーネルがサポートされています。 Red Hat Enterprise Linux 7.2: 3.10.0-327.el7.s390x以降 Red Hat Enterprise Linux 6.6: 2.6.32-504.el6.s390x以降 SUSE Linux Enterprise Server 12 SP1: 3.12.49-11-default s390x以上 パッケージの最小要件のリストは、システム要件に関する項を確認してください。 |
Oracle Linux用のOracle Preinstallation RPM | Oracle Linuxを使用している場合は、使用しているLinuxリリース用のOracle Preinstallation RPMを実行して、Oracle DatabaseおよびOracle Grid Infrastructureのインストール用にオペレーティング・システムを構成することをお薦めします。 |
IBM: Linux on System zでのOracle RPM Checkerユーティリティ | Oracle DatabaseまたはOracle Grid Infrastructureのインストールを開始する前に、Oracle RPM Checkerユーティリティを使用して、必要なRed Hat Enterprise LinuxまたはSUSEのパッケージがお使いのIBM: Linux on System zオペレーティング・システムにインストールされていることを確認することをお薦めします。 |
透過的なHugePagesの無効化 | パフォーマンスを強化するために、透過的なHugePagesを無効にして標準のHugePagesを使用することをお薦めします。 |
となっています。
そう!CentOSについては全く記載はないわけです(涙)。
『Oracle Linux 7およびRed Hat互換カーネル: 3.10.0-123.el7.x86_64以上
Red Hat Enterprise Linux 7: 3.10.0-123.el7.x86_64以上』の「Red Hat互換カーネル: 3.10.0-123.el7.x86_64以上」という言葉が、CentOS7系も含むことを信じるしかないかと。
で、Red Hat Enterprise Linux 7の場合、
⇧ 必要なパッケージが相当あるようです。
必要なパッケージのインストール
必要なパッケージをインストールしていくわけですが、
⇧ 上記サイト様のコマンドを利用させていただくことにしました。
yumコマンドでインストールすればパッケージのバージョンとかはよしなに取計らわれるのではなかろうか?と信じて。
とりあえず、仮想マシンにログインして、スーパーユーザー(root)になっときます。
su
そしたらば、必要パッケージをインストール。
yum -y install \ binutils \ compat-libcap1 \ compat-libstdc++-33.i686 \ compat-libstdc++-33 \ gcc-c++ \ glibc.i686 \ glibc \ glibc-devel.i686 \ glibc-devel \ ksh \ libaio.i686 \ libaio \ libaio-devel.i686 \ libaio-devel \ libgcc.i686 \ libgcc \ libstdc++.i686 \ libstdc++ \ libstdc++-devel.i686 \ libstdc++-devel \ libxcb.i686 \ libxcb \ libX11.i686 \ libX11 \ libXau.i686 \ libXau \ libXi.i686 \ libXi \ libXtst.i686 \ libXtst \ make \ net-tools \ smartmontools \ sysstat
パッケージがインストールできたようです。
別途、SSHも必要となるので、OpenSSHがインストールされているか確認します。
⇧ 上記サイト様を参考に、openssh-server がインストールされているか確認。
yum list installed | grep ssh
インストールされているようです。
⇧ 一応、rpmでも確認しておきます。
rpm -qa | grep ssh
カーネルパラメータの設定
『Oracle Database 12c Release 2 (12.2.0.1)のインストレーション・ガイド by Linux x86-64 版』に記載されているようです。
そも、カーネルパラメータって何ぞや?
そもそも呼び方が、「カーネルパラメータ」だったり「起動オプション」だったり 「引数」だったりと、統一されていないようですが、ここでは、 「カーネルパラメータ」と呼ぶことにします。
で、カーネルパラメータというのは、カーネルの個々の機能やドライバが解釈して、 それぞれの振る舞いを変更できるようにするためのものです。
カーネルパラメータ自体は、1つの文字列です。
具体的には、機能などを表すパラメータ名だけか、 「パラメータ名=値」で値を指定したものを、スペースで連結した形式になります。
う、う~ん...よく分からんですが、 Oracle Database 12c Release 2 (12.2.0.1)のインストレーション・ガイドで設定しろってなってるんで、設定しないといけないんでしょうね。
インストレーション・ガイドでは、
パラメータ値 | 要件値 |
---|---|
semmsl | 250 |
semmns | 32000 |
semopm | 100 |
semmni | 128 |
shmall | 物理メモリーサイズの 40%(単位:ページ) |
shmmax | 物理メモリーサイズの半分(単位:バイト) |
shmmni | 4096 |
file-max | 6815744 |
panic_on_oops | 1 |
aio-max-nr | 1048576 |
ip_local_port_range | 最小:9000 最大:65500 |
rmem_default | 262144 |
rmem_max | 4194304 |
wmem_default | 262144 |
wmem_max | 1048576 |
となっています。
⇧ 上記サイト様を参考に、カーネルパラメータのチェックをしていきたいと思います。
「semmsl」「semmns」「semopm」「semmni」のチェック。OK。
sysctl -a | grep sem
「shmall」「shmmax」「shmmni」のチェック。 OK。
sysctl -a | grep shm
「file-max」のチェック。 NG。
sysctl -a | grep file-max
「ip_local_port_range」のチェック。 NG。
sysctl -a | grep ip_local_port_range
「rmem_default」「rmem_max」のチェック。 NG。
sysctl -a | grep rmem
「wmem_default」「wmem_max」のチェック。 NG。
sysctl -a | grep wmem
「aio-max-nr」のチェック。 NG。
sysctl -a | grep aio-max-nr
/etc/sysctl.confの修正。viエディターで/etc/sysctl.confを開きます。
vi /etc/sysctl.conf
下記を追記します。
fs.file-max = 6815744 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_max = 4194304 net.core.rmem_default = 262144 net.core.wmem_max = 1048576 net.core.wmem_default = 262144
追記したら、「Esc」キーを押して、「:wq」で保存してviエディターを終了します。
そしたらば、一旦、仮想マシンを停止し、再起動します。
仮想マシンにログインします。
カーネルパラメータが設定されているかチェック。
修正した値が反映されています。
再起動しなくても、
/sbin/sysctl -p
/etc/sysctl.conf ファイルに設定した値を反映できるみたいですね。
OS グループの作成
Oracle Database のインストールに oracle ユーザーを使用するには、OS グループおよびユーザーを作成する必要があるようです。
グループ名 | グループ ID | 備考 |
---|---|---|
oinstall | 54321 | Oracle Inventory グループ |
dba | 54322 | Database 用 OSDBA グループ |
oper | 54323 | Database 用 OSOPER グループ |
backupdba | 54324 | Database 用 OSBACKUPDBA グループ |
dgdba | 54325 | Database 用 OSDGDBA グループ |
kmdba | 54326 | Database 用 OSKMDBA グループ |
racdba | 54327 | OSRACDBA グループ |
というわけで、スーパーユーザー(root)で下記コマンドを実行。
groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper groupadd -g 54324 backupdba groupadd -g 54325 dgdba groupadd -g 54326 kmdba groupadd -g 54327 racdba
追加されてればOK。
OS ユーザーの作成
Oracleというユーザーを作成。
ユーザー名 | oracle |
---|---|
ユーザーID | 1200 |
プライマリ・グループ | oinstall |
セカンダリ・グループ | dba,oper,backupdba,dgdba, kmdba,racdbahome |
ディレクトリ | /home/oracle |
useradd -u 1200 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba -d /home/oracle oracle
Oracleユーザーの パスワードを変更。
passwd oracle
インストール・ディレクトリの準備
インストールに必要なディレクトリを作成します。
項目 | ディレクトリ・パス | 所有 OS ユーザー |
---|---|---|
Oracle Database 用 ORACLE ベース | /opt/app/oracle | oracle |
mkdir -p /opt/app/oracle chown oracle:oinstall /opt/app/oracle chmod -R 775 /opt/app/oracle
インベントリディレクトリの作成。(サイレントインストールの場合に必要らしいです。)
mkdir -p /opt/app/oraInventory chown oracle:oinstall /opt/app/oraInventory chmod -R 775 /opt/app/oraInventory
リソース制限の設定
インストール・ソフトウェア所有者で、リソース制限が以下の推奨範囲にあるかを確認します。oracleユーザーが利用できるリソースが足りているかのチェックですかね。
/etc/security/limits.confに設定していきます。
vi /etc/security/limits.conf
ファイルが開けたらば、下記を追記します。
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768
保存して、viエディターを終了。
Oracle Database 12c Release 2 (12.2.0.1.0)のインストーラーを配置
インストーラーをダウンロードします。
http://www.oracle.com/technetwork/jp/database/enterprise-edition/downloads/index.html
にアクセスします。(Oracleへのユーザ登録が済んでいない場合は登録します。)
「ライセンスに同意する」のラジオボタンにチェックを入れます。
「Accept License Agreement」にチェックを入れます。
zipファイルをダウンロードします。
サインインしていないと、ダウンロードが進まないので、サインインします。
ダウンロードできました。
ダウンロードしたzipファイルを仮想マシンに転送したいわけですが、今回は、Tera Termを使っていきたいと思います。
インストールしてない方は、
⇧ 上記サイト様を参考にインストールしてみてください。
(※Tera TermはWindowsでしか使えないようです。)
⇧ 上記サイト様が参考になるかと。
Tera Termでの接続情報を調べます。
「ユーザー名」「パスワード」はともに、『OSユーザーの作成』で作成した「Oracle」ユーザーのものを利用していきます。
IPアドレスについては、仮想マシンにsshログインしてる場合は、ifconfigで調べられます。
もしくは、Vagrantfileで確認するのもありです。(Vagrantを使っている場合)
Tera Termを起動し、ホスト(T):に仮想マシンのIPアドレスを入力。
初回のみ警告が出ますが、「続行(C)」をクリック。
「ユーザー名」に「oracle」、「パスフレーズ」に「oracle」ユーザーのパスワードを入力し、「OK」。
接続されました。
接続ができたので、ダウンロードしていたzipファイルを仮想マシンに転送したいのですが、
⇧ 上記サイト様によると、Tera Termでは、Windows側から仮想マシン側へは、ドラッグ&ドロップでファイル転送ができるとのこと。
「SCP」をクリック。
ファイルが転送されます。
/home/oracleにzipファイルが配置されました。
Oracle Database 12c Release 2 (12.2.0.1.0) インストールのための準備
まずは、仮想マシンに配置したzipファイルを展開します。引き続き、Tera Termで作業していきます。
⇧ zipファイルの場合はunzipコマンドを使って展開(解凍)する必要があるみたいですね。
unzip linuxx64_12201_database.zip
出た...command not found。
⇧ 上記サイト様によると、zip、unzipのコマンドはともにインストールされていないことがあるらしいですね(涙)。
というわけで、登録されてるリポジトリにunzipコマンドが存在し、yumでインストールできるか確認。
sudo yum --enablerepo=epel,remi,rpmforge info zip
⇧ なんかむっちゃ怒られてる?と思いきや、
⇧ 上記サイト様によると、sudoコマンドを利用したときに、初回だけ表示されるメッセージだそうです。
内容的には、先輩プログラマーからのメッセージ的な感じで、プログラマーとしての心構えとかを贈ってくれているようです。送辞みたいな感じで、感動的ですらある雰囲気を漂わせてくれているようでした。(エラーじゃなかったんですね...失礼いたしました。)
⇧ 上記サイト様は、sudoのメッセージをソースコードから追っているようです。C言語ができる方はためしてガッテンですかね。
まぁ、sudoコマンド初回利用時のメッセージが問題ない(怒られているとかでは無い)こと、つまりエラーが出ているとかではないということは分かりましたが、
su: Authentication failure
⇧ こっちは完全にエラーっぽいですね。というか、failure(失敗)とか表示されちゃってますから...。
偉大な発明家として名高いトーマス・エジソンは、
失敗したわけではない。 それを誤りだと言ってはいけない。 勉強したのだと言いたまえ。私は失敗したことがない。 ただ、1万通りの、 うまく行かない方法を 見つけただけだ。
と仰っているのに~、failrue!
すみません、脱線しました。『su: Authentication failure』の話に戻りますと、
⇧ 上記サイト様によると、権限の問題ということですかね?
『oracle is not in the sudoers file. This incident will be reported.』 と怒られていたのは、一般ユーザー(今回で言うと、oracleユーザー)にsudoコマンドを使えるグループに入っていなかったからのようです。
/etc/sudoers ファイルにユーザーを追加すればいいのですが、/etc/sudoers ファイルには、あらかじめsudoコマンドを利用できるグループが用意されています。Debianの場合は、sudoグループ。CentOSの場合はwheelグループ。このグループにユーザーを追加するだけでsudoコマンドが利用できるようになります。
そもそも、sudoとsuって何?
sudo は sudo パッケージに含まれている。
su は util-linux パッケージに含まれている。
つまり開発元が別。ソースをちら見してみたら、全然別物のようだった。
sudoとsuって何のためにあるの?
どうやら、Unixの歴史から、root権限作業を合理的に行うためにsudoは生まれたようですかね。
sudo su と su の違いとしては、パスワードで保護されている場合、sudo su で入れるのは今ログインしている一般ユーザのパスワード、su はrootのパスワードという違いがあります。/etc/sudoers の設定でsudoする際にパスワード不要にも出来ます。
Ubuntuで、suとsudoの違いが分かりません。 -Ubuntuで、suとsudoの違い- UNIX・Linux | 教えて!goo
sudo、suのどちらのコマンドも、root権限での作業を行うためのもののようです。
⇧ 上記サイト様でも仰っていますが、sudoコマンドを使う場合、sudoを実行するユーザにsudo権限がついていることが前提条件となるので、
- /etc/sudoers ファイルを編集
- 「usermodコマンド」を利用
のどちらか(他にも方法はあると思われますが)で、sudoコマンドを利用できるグループに、一般ユーザー(作成したユーザー、今回で言うとoracleユーザー)を追加してあげる必要があるようです。
現段階で、sudoコマンドが使えないのは納得。
じゃあ、suコマンドが使えないのは?
⇧ 上記サイト様によると、
- パスワードを間違っている
- suコマンドがsetuidされてない
- pam.wheel.soが入ってる(/etc/pam.d/suでauth required pam.wheel.so use_uidが有効になってしまっている)
このへんが影響してくるようです。
一旦、コマンドプロンプトでvagrantユーザーでsshログインして確認してみます。
だが、しかし!
特に問題なさそうな感じ?と思いきや、Vagrantの仕様の問題によりPAM(Pluggable Authentication Modules)がかっちり設定されている場合があるという情報が!
⇧ 上記サイト様によると、
account required pam_succeed_if.so user notin root:vagrant
⇧ の部分がrootとvagrantのユーザーのみsuが利用できるという設定になってしまっているということみたいです。
ちなみにPAM(Pluggable Authentication Modules)については、
⇧ 上記サイト様が説明してくれています。
・PAM の設定を理解する - いますぐ実践! Linuxシステム管理 / Vol.105
⇧ 上記サイト様も詳しいです。
Wikipediaによると、PAM(Pluggable Authentication Modules)は、
A pluggable authentication module (PAM) is a mechanism to integrate multiple low-level authentication schemes into a high-level application programming interface (API). It allows programs that rely on authentication to be written independently of the underlying authentication scheme. PAM was first proposed by Sun Microsystems in an Open Software Foundation Request for Comments (RFC) 86.0 dated October 1995. It was adopted as the authentication framework of the Common Desktop Environment. As a stand-alone open-source infrastructure, PAM first appeared in Red Hat Linux 3.0.4 in August 1996 in the Linux PAM project. PAM is currently supported in the AIX operating system, DragonFly BSD,FreeBSD, HP-UX, Linux, Mac OS X, NetBSD and Solaris.
Since no central standard of PAM behavior exists, there was a later attempt to standardize PAM as part of the X/Open UNIX standardization process, resulting in the X/Open Single Sign-on (XSSO) standard. This standard was not ratified, but the standard draft has served as a reference point for later PAM implementations (for example, OpenPAM).
と説明してくれています...分からん~。
困ったときは、日本のサイト!
PAM(Pluggable Authentication Module)とは、 各種の認証処理を実行するモジュール群と、 それを利用するための標準的なAPI(Application Programming Interface)を備えたライブラリからなるユーザー認証システムのことです。 ユーザーに各種サービスを提供するアプリケーションプログラムは、PAMのAPIを通してPAMモジュールに認証処理を依頼することができます。
ということらしいっすね。
長々と脱線しましたが、rootとvagrant以外のユーザーである、一般ユーザー(今回で言うとoracleユーザー)でsuが利用できるようにしたいですね。
⇧ 上記サイト様を参考に、設定できるかトライ。
まずは、スーパーユーザー(rootユーザー)に切り替わります。exitコマンド連打の理由は、
⇧ 上記サイト様で。
そしたらば、viエディターで、/etc/pam.d/suファイルを開きます。スーパーユーザー(rootユーザー)以外の一般ユーザーの場合は、sudo viでファイルを開かないとファイルの保存ができないので注意ですかね。
vi /etc/pam.d/su
で開いてみたけど...
『account required pam_succeed_if.so user notin root:vagrant』ていう記述は見当たらいっすね...CentOS7系だとまた異なるっちゅうことですかね。
#%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. #auth required pam_wheel.so use_uid auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-auth password include system-auth session include system-auth session include postlogin session optional pam_xauth.so ~
⇧ 上記サイト様によると、
『account sufficient pam_succeed_if.so uid = 0 use_uid quiet』の記述があるとrootユーザーのみsuできるってことですかね?
というか、
⇧ 上記サイト様によりますと、
『auth sufficient pam_rootok.so』という記述があると、「それ以上のチェックを行わずに、rootユーザのアクセスを許可する。」となっていますね、vagrantユーザーでsuできるのは何でやねん!と謎が深まるばかり。
と思ったけど、rootユーザーじゃない場合は、『auth sufficient pam_rootok.so』の条件で処理を抜けずに、次の『auth substack system-auth』の条件にマッチするかっていう感じで、次へ次へとチェックしていく感じですかね。
そんじゃ、uidを調べてみますか~。
あいや~、結果からすると、/etc/pam.d/suファイルにvagrantユーザーの設定は無さそうなんですが~。『account sufficient pam_succeed_if.so uid = 0 use_uid quiet』はrootユーザー向けの設定ってことですね。
行き詰った感が...。
ちなみに、モジュールは、
モジュールの正式な一覧は存在しないが、以下では、利用される可能性の高いモジュールについて説明する。通常、PAMモジュールは「/lib/security」(64ビット版の場合は「/lib64/security」)に用意されているが、ディストリビューションによっては「/usr/lib/security」になっていることもある。
詳細については、「man <PAMモジュール名>
」を実行して確認してほしい。
ということみたいですね。
PAM認証の設定ファイルは、/etc/pam.d/ に配置されてるそうな。
確かに、
「system-auth」「postlogin」とかいますね。
だから、何?と思ってしまうわけです。suコマンドに関しての問題は全く前進してないですしね。
とりあえず、/etc/pam.d/su のバックアップを作成して、編集してみますか。
lsコマンドで文字化けすると思ったら、ロケール設定がダメらしい。
⇧ 上記サイト様によると、 locale -a で指定できるロケールの一覧が表示できるそう。
日本語対応のutf8にすれば解消されますかな?
export LC_ALL=ja_JP.utf8 export LANG=ja_JP.utf8 export LANGUAGE=ja_JP.utf8 export LC_CTYPE="ja_JP.utf8" export LC_NUMERIC="ja_JP.utf8" export LC_TIME="ja_JP.utf8" export LC_COLLATE="ja_JP.utf8" export LC_MONETARY="ja_JP.utf8" export LC_MESSAGES="ja_JP.utf8"
localeが変わったようだけど、
全く解消されず...
⇧ コマンドプロンプトだと限界かな...。このへんの問題は時間のあるときに調査で。
/etc/pam.d/su のバックアップとしてsu.bakファイルができてるのを確認できたので、/etc/pam.d/su を編集していきます。「account sufficient pam_succeed_if.so uid = 0 use_uid quiet」行のすぐ下に、追記。(uid、gidの値は、作成したoracleユーザーのものを指定しています。)
account [success=ignore default=1] pam_succeed_if.so uid = 1200 quiet account required pam_succeed_if.so gid = 54321 use_uid quiet
で、編集したけど全く解消されず。しかも日本語になってもしょうがないところが日本語になってるし...。
致し方ないので、rootユーザーに戻るときは、exitコマンドでいく方針で。
誰か解決策あったら教えてください!
ともかく、unzipコマンドをyumでインストールっすね。 unzipコマンドは登録されてるリポジトリに存在するようです。
さっそくインストール。
sudo yum install unzip
ようやく、zipファイル(Oracle Database 12c Release 2 )を展開(解凍)できますかね。一応、oracleユーザーに切り替えて、cd ~ で/home/oracle に移動しておきます。(zipファイルを配置したディレクトリまで移動)
そしたらば、unzip!
unzip linuxx64_12201_database.zip
databaseフォルダとして展開されています。
レスポンスファイルの作成
GUIでインストーラーの指示があるときに入力していく項目などを、ファイルに設定しておくことで、サイレントインストールを行うことができるようです。
本来であれば、AnsibleやChefやPuppetなどの「構成管理ツール」(Configuration Management) と呼ばれるもので、インストールしていくのが良いとは思われますが、技術習得の時間がないため割愛。
話を戻しまして、レスポンスファイルの雛形が展開されたフォルダの中にあり、「database/response/db_install.rsp」がそれにあたります。バックアップを作成しておきます。
編集するので、一旦、rootユーザーに切り替えてから、viエディターで開きます。
ファイルの中身を書き換えます。(今回は、ファイルの中身を一旦、全部削除してますが、必要な設定箇所に追記する感じのほうが良いかもです。)
全選択削除は、
・Vimで全選択コピーをクリップボードに | じゃがいもは野菜です
⇧ 上記サイト様を参考に、
ggVGd
「--No lines in buffer--」と表示されていれば削除されてるので、
⇧ ここに設定を張り付けます。内容は、
⇧ 上記サイト様を参考にさせていただきました。
database/response/db_install.rspに下記内容を記述します。
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0 oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME= UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/opt/app/oraInventory SELECTED_LANGUAGES=ja,en ORACLE_BASE=/opt/app/oracle ORACLE_HOME=/opt/app/oracle/product/12.2.0.1/dbhome_1 oracle.install.db.InstallEdition=EE ############################################################################### # # # PRIVILEGED OPERATING SYSTEM GROUPS # # ------------------------------------------ # # Provide values for the OS groups to which SYSDBA and SYSOPER privileges # # needs to be granted. If the install is being performed as a member of the # # group "dba", then that will be used unless specified otherwise below. # # # # The value to be specified for OSDBA and OSOPER group is only for UNIX based # # Operating System. # # # ############################################################################### oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=oper oracle.install.db.BACKUPDBA_GROUP=backupdba oracle.install.db.DGDBA_GROUP=dgdba oracle.install.db.KMDBA_GROUP=kmdba oracle.install.db.OSRACDBA_GROUP=racdba ############################################################################### # # # Grid Options # # # ############################################################################### oracle.install.db.rac.configurationType= oracle.install.db.CLUSTER_NODES= oracle.install.db.isRACOneInstall= oracle.install.db.racOneServiceName= oracle.install.db.rac.serverpoolName= oracle.install.db.rac.serverpoolCardinality= ############################################################################### # # # Database Configuration Options # # # ############################################################################### oracle.install.db.config.starterdb.type= oracle.install.db.config.starterdb.globalDBName= oracle.install.db.config.starterdb.SID= oracle.install.db.ConfigureAsContainerDB= oracle.install.db.config.PDBName= oracle.install.db.config.starterdb.characterSet= oracle.install.db.config.starterdb.memoryOption= oracle.install.db.config.starterdb.memoryLimit= oracle.install.db.config.starterdb.installExampleSchemas= ############################################################################### # # # Passwords can be supplied for the following four schemas in the # # starter database: # # SYS # # SYSTEM # # DBSNMP (used by Enterprise Manager) # # # # Same password can be used for all accounts (not recommended) # # or different passwords for each account can be provided (recommended) # # # ############################################################################### oracle.install.db.config.starterdb.password.ALL= oracle.install.db.config.starterdb.password.SYS= oracle.install.db.config.starterdb.password.SYSTEM= oracle.install.db.config.starterdb.password.DBSNMP= oracle.install.db.config.starterdb.password.PDBADMIN= oracle.install.db.config.starterdb.managementOption= oracle.install.db.config.starterdb.omsHost= oracle.install.db.config.starterdb.omsPort= oracle.install.db.config.starterdb.emAdminUser= oracle.install.db.config.starterdb.emAdminPassword= ############################################################################### # # # SPECIFY RECOVERY OPTIONS # # ------------------------------------ # # Recovery options for the database can be mentioned using the entries below # # # ############################################################################### oracle.install.db.config.starterdb.enableRecovery= oracle.install.db.config.starterdb.storageType= oracle.install.db.config.starterdb.fileSystemStorage.dataLocation= oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation= oracle.install.db.config.asm.diskGroup= oracle.install.db.config.asm.ASMSNMPPassword= MYORACLESUPPORT_USERNAME= MYORACLESUPPORT_PASSWORD= SECURITY_UPDATES_VIA_MYORACLESUPPORT= DECLINE_SECURITY_UPDATES=true PROXY_HOST= PROXY_PORT= PROXY_USER= PROXY_PWD= COLLECTOR_SUPPORTHUB_URL=
右クリックで貼り付けたら(稀に、先頭行の先頭が欠けてペーストされることがあるので注意です。自分は気づかず相当ハマりました。)、「Esc」キーを押し、「:wq」で保存し、viエディターを閉じます。
2018年5月6日(日) 追記(超超超重要):
データベースを作成した後でキャラクタ・セットを変更すると、一般的に、時間およびリソースの面で大きなコストがかかります。このような処理を行うには、データベース全体をエクスポートした後で再びインポートすることにより、すべての文字データの変換が必要な場合もあります。そのため、データベース・キャラクタ・セットは、インストールの時点で慎重に選択することが重要です。
インストール中のキャラクタ・セット選択について - Oracle® Databaseグローバリゼーション・サポート・ガイド リリース2 (12.2)
ってあるように、データベース・キャラクタ・セットはインストール時に設定しておく必要があるようです。
設定できるデータベース・キャラクタ・セットは、種類がいろいろあり、
#------------------------------------------------------------------------------- # Specify the Starter Database character set. # # One of the following # AL32UTF8, WE8ISO8859P15, WE8MSWIN1252, EE8ISO8859P2, # EE8MSWIN1250, NE8ISO8859P10, NEE8ISO8859P4, BLT8MSWIN1257, # BLT8ISO8859P13, CL8ISO8859P5, CL8MSWIN1251, AR8ISO8859P6, # AR8MSWIN1256, EL8ISO8859P7, EL8MSWIN1253, IW8ISO8859P8, # IW8MSWIN1255, JA16EUC, JA16EUCTILDE, JA16SJIS, JA16SJISTILDE, # KO16MSWIN949, ZHS16GBK, TH8TISASCII, ZHT32EUC, ZHT16MSWIN950, # ZHT16HKSCS, WE8ISO8859P9, TR8MSWIN1254, VN8MSWIN1258 #------------------------------------------------------------------------------- oracle.install.db.config.starterdb.characterSet=
で、どれ設定すれば良いの?ですが、
Oracle Databaseのキャラクタ・セット「UTF8」mutatsu.wordpress.com
⇧ 上記サイト様によりますと、「AL32UTF8」を設定しておけば良さそうです。
database/response/db_install.rspの中で、「oracle.install.db.config.starterdb.characterSet」の項目を
oracle.install.db.config.starterdb.characterSet=AL32UTF8
としておけば問題なさそうです。
Oracleの説明でも、
国際的な汎用性を維持し、最新技術や今後の技術、言語の要件に合せるためにUnicodeを選択することをお薦めします。Unicode規格で規定されているキャラクタ・セットは、使用頻度が高い最近の書き言葉にも、めったに使用されない古い文字にもすべて対応しています。また、技術分野、科学分野、音楽表記などの各種の記号にも対応しています。Java、Windows、HTML、XMLなどの各種技術に固有のキャラクタ・セットであり、また推奨のキャラクタ・セットです。このような汎用キャラクタ・セットは他にありません。さらに、Unicodeは工業分野で大きな支持を受けており、採用する動きが急速に広まっています。
キャラクタ・セットの移行の概要 - Oracle® Databaseグローバリゼーション・サポート・ガイド リリース2 (12.2)
となっており、
AL32UTF8はOracleが実装したUnicodeであり、ASCII文字の文字コードを1バイト、欧州系の文字と中東地方の言語を2バイト、東南アジア系の言語を3バイトで表現します。したがって、Unicodeの保存に必要な領域は通常、同じ言語で比較した場合に、従来のキャラクタ・セットの必要領域よりも多くなります。
キャラクタ・セットの移行の概要 - Oracle® Databaseグローバリゼーション・サポート・ガイド リリース2 (12.2)
「AL32UTF8」 を推奨?してそうです。
⇧ 2018年5月6日(日)追記 終了。
2018年5月13日(日) 追記(超超超重要):
どうやら、文字データに関しては、
Oracleでは、データベースが文字データを保存する際の文字コードを示す「データベースキャラクタセット」と、クライアント環境に適した文字コードを指定する「NLS_LANG」と呼ばれる2つのパラメータで、主に文字コードの扱いを決定しています。
⇧ 上記サイト様によりますと、
- データベース・キャラクタ・セット
- NLS_LANG
の2つが影響してくるようで、「NLS_LANG」の設定も行ってあげる必要があるようです。 (ただし、JDBC接続を利用する場合はこの限りではない。後述)
「NLS_LANG」は、NLSパラメータのうちの1つで、
NLS (各国語サポート)パラメータにより、クライアントおよびサーバー両方でのロケール固有の動作が決定します。NLSパラメータは、次の4通りの方法で指定できます。
NLSパラメータの設定 - Oracle® Databaseグローバリゼーション・サポート・ガイド リリース2 (12.2)
⇧ 4つの方法で設定できるようです。
「NLS_LANG」に何も設定しない場合は、デフォルトの設定が適用されるらしく、
⇧ 上記サイト様によりますと、「US7ASCII(AMERICAN_AMERICA.US7ASCII)」になってしまうようです。
ただ、JDBC接続で接続時は、「NLS_LANG」は利用されないようです。
Oracle JDBCを使用してOracle Databasesに接続するJavaアプリケーションは、NLS_LANGを使用しません。かわりに、アプリケーションが実行されるJava VMのデフォルト・ロケールが、Oracle JDBCによってOracle Databaseの言語とテリトリ設定にマップされます。Oracle JDBCは、これらの設定を使用して、接続されたデータベース・セッションを構成します。Javaは内部的にUnicodeで動作するため、クライアント・キャラクタ・セットは常にUnicodeに設定されます。アプリケーションで明示的に変更した場合を除き、Java VMのデフォルト・ロケールは、Java VMが実行されるユーザーのオペレーティング・システムに基づいて設定されます。Java VMのデフォルト・ロケールの設定の詳細は、Java VMのドキュメントを確認してください。
クライアント接続の言語およびロケール・プリファレンスの設定 - Oracle® Databaseインストレーション・ガイド リリース2 (12.2) for Linux
JavaからJDBC接続でDBとやり取りする場合は、「データベース・キャラクタ・セット」「Java VMのデフォルト・ロケール」の2つを考えておけば良さそうです。
⇧ 2018年5月13日(日)追記 終了。
oracleユーザーでインストール
oracleユーザーに切り替えておきます。
フォルダを移動して、インストーラーを実行!
/home/oracle/database/runInstaller -ignoreSysPrereqs -waitforcompletion -silent -responseFile /home/oracle/database/response/db_install.rsp
[WARNING]とか出てるし...
⇧ 上記サイト様によると、この[WARNING]は出ても大丈夫そうです。
しばし待つと、手順が表示されます。
rootユーザーになってから、
- /opt/app/oraInventory/orainstRoot.sh
- /opt/app/oracle/product/12.2.0.1/dbhome_1/root.sh
のコマンドを実行すれば良さそうですね。
rootユーザーに切り替えて、
さっそく、コマンドを実行。1つ目。
/opt/app/oraInventory/orainstRoot.sh
⇧ 無事にコマンドが実行されたようです。
では、2つ目のコマンドを実行。
/opt/app/oracle/product/12.2.0.1/dbhome_1/root.sh
⇧ 分かりづらいですが、OKみたいです。
で、本当にインストールされたんですかね?Checkって言われてるけど、log見れば良いんですかね?
で、log見ますと、
ってなってますね。ORACLE_HOMEにいろいろインストールされていればOKのようです。
⇧ 無事、インストールされてますね。sqlplusやsqldeveloperなど(SQL*Plus、 SQL Developerのこと)のクライアントソフト(DBに接続するためのソフト)などもインストールされています。
sqlplusの実行ファイルは、 $ORACLE_HOME/bin/sqlplus にあるようです。
ちなみに、ORACLE_HOMEを環境変数に追加してないので、
⇧ echo $ORACLE_HOMEを実行しても、まだ何も表示されない状態です。
・
⇧ 公式の説明だと、何かしら設定する感じですね。
ORACLE_HOMEやORACLE_SIDの設定やデータベースの作成などは、また時間を見てトライしていきたいですね。
そして、Tera Termほとんど使ってないですね....
今回はこのへんで。
番外編:Windowsだけでもsshできる時代
ちょっと前までは、WindowsでSSHを利用するには、Tera TermやPuttyなどのSSHに対応しているクライアントソフトを導入するか、コマンドプロンプトの代わりにMsys2(Minimal SYStem2) やCygwinなどのUnix系のコマンド(OpenSSHとかが使える)が実行できる環境を導入する必要があったわけです、たぶん。
・日記/2017/10/09/MSYS2,MinGW64,Cygwinの違い - Glamenv-Septzen.net
⇧ Msys2とかについては上記サイト様が詳しいかと。
ですが、Microsoftも『それではいかんよね、時代の波に乗らねば』ということで、
ということらしく、
⇧ 上記サイト様によると、
Windows10 バージョン1607(Anniversary update)から、SSH(Secure Shell)を暗にサポートしてきたWindows 10だが、現在のバージョン1709(Fall Creators Update)では、より簡単な操作でSSHの利用が可能になる。
Windows 10のあるバージョンからは、デフォルトでSSHが使えるようになってきているらしいですね。
そんなこんなで、コマンドプロンプトで仮想マシンにログインしようとして、
ありゃ?エラーですやん。仮想マシンにログインできとらんですね...。
ネットで調べても、「Write failed: Broken pipe」ってワードが圧倒的にヒットしますが、『packet_write_wait: Connection to <host> port 22: Broken pipe』と同じ意味と考えて良さそうな気がします。
・Linux環境設定/Broken pipeでsshが切断される場合の対処 - Linuxと過ごす
⇧ 上記サイト様によりますと、
⇧ 上記サイト様によると、
⇧ 上記サイト様によると、MACアドレスの問題も絡んでる場合があるようですね。
自分の場合ですと、VM(仮想マシン)を結構作成していたので、知らず知らずのうちにMACアドレスが同じになってしまっていたということですかね。
今回は、設定とかを変えることなく再度sshコマンドを実行したら、接続できましたが、MACアドレスの設定とかも考慮しないといけないようですね。
ネットワークの知識が欲しいですね~。