さて、いよいよ、Oracle10gのインストールです。ではでは、いってみましょう!
1.Oracle10gのDVDを投入。
念のため、内蔵HDにコピーしておく。
2.Linuxにログインし、インストーラを実行
① xhostコマンドを投入
%)xhost +
②oracle ユーザにswith
%)su - oracle
③インストーラの実行
%)runInstaller
3.インストールの設定とインストール
GUIで操作していくので、それにしたがって入力を行っていく。
①拡張インストールを選択して、次へ
②Inventoryのインストール先を選択して、次へ
今回は、/opt/oracle/oraInventory 配下を選択
③Oracle インストール先を選択して、次へ
今回は、/opt/oracle/product/10.2.0.1.0 配下を選択
③Oracleのインストールタイプを選択、製品言語を追加して、次へ
インストールタイプは、Standard Edition、製品言語は、英語・日本語・中国語(2種類)を追加
④構成オプションの選択、次へ
後で、DBを作成するので、ここでは、データベースソフトのみをインストール
⑤各インストール要件のチェック
インストールのチェックをインストーラが行ってくれるので、
そこで、すべて問題がなければ、次へ
問題があれば、インストールに必要な条件を満たした上で
再度、インストールを実施すること
⑥確認後、インストール
⑦インストール後、rootにて、orainstRoot.sh,root.shを実行
別のterminal を開いて、rootにて、orainstRoot.sh, root.sh を実行
2008年7月20日日曜日
2008年7月18日金曜日
swapファイルの追加方法
1.ddコマンドの実行上記例の場合、/swapにswap1というswapファイルが作成される。
dd if=/dev/zero of=/swap/swap1 bs=1024 count=65536
"of="以降は、作成するswapファイルを指定。
bsでバイト単位(ここでは1024バイト単位)を指定する。
countの数値は、幾らswap領域として新たに確保するのかに依る。
たとえば上記count=65536では、64MBのswapファイルを作成している。
計算式はbs値×用意MB(ここでは1024x64=65536)。
2.パーミッションの変更
chmod 600 /swap/swap13.swapファイルを初期化する。
mkswap /swap/swap1 65536
4.swap領域を有効にする
swapon /swap/swap1
※無効にするには
swapoff /swap/swap1
起動時に自動的に有効にする場合は、
/etc/fstab に以下の行を追加。
/swap/swap1 swap swap defaults 0 0
ORACLEのインストールに失敗したら・・・
ORACLEのインストールに失敗した場合、以下のファイルを削除すること。
1./etc/oraInst.locファイル
/etc/oratabファイル
/tmp/OraInstall* ファイルを削除する
2.中途半端にインストールされているOracle プロダクトも削除
1./etc/oraInst.locファイル
/etc/oratabファイル
/tmp/OraInstall* ファイルを削除する
2.中途半端にインストールされているOracle プロダクトも削除
rootアカウントを削除してしまったら・・・
1.シングルユーザモードで起動
LILOを使用している場合、マシンを再起動させて、
LILO boot: のプロンプトから
LILO boot:linux single を入力
もしくは、
LILO boot: linux 1
GRUBの場合は、
GUIのメニューが表示されたら[A]キーを押す。
すると、
grub append> ro root=/dev/hda1
のようなプロンプト(grub append>)と
コマンドライン(ro root=/dev/hda1)が表示されるので、最後に「s」を追加する。
grub append> ro root=/dev/hda1 s
2./etc/passwd を変更
root:x:0:0:root:/root:/bin/bash
という行を追加する。
もし/etc/shadowからもrootが消えているようなら、同じくエディタで開いて、
root::11376:0:99999:7:::
のような行を追加する。
ただし、この状態ではパスワードが設定されていないので、
すぐにpasswdコマンドでパスワードを設定する
LILOを使用している場合、マシンを再起動させて、
LILO boot: のプロンプトから
LILO boot:linux single を入力
もしくは、
LILO boot: linux 1
GRUBの場合は、
GUIのメニューが表示されたら[A]キーを押す。
すると、
grub append> ro root=/dev/hda1
のようなプロンプト(grub append>)と
コマンドライン(ro root=/dev/hda1)が表示されるので、最後に「s」を追加する。
grub append> ro root=/dev/hda1 s
2./etc/passwd を変更
root:x:0:0:root:/root:/bin/bash
という行を追加する。
もし/etc/shadowからもrootが消えているようなら、同じくエディタで開いて、
root::11376:0:99999:7:::
のような行を追加する。
ただし、この状態ではパスワードが設定されていないので、
すぐにpasswdコマンドでパスワードを設定する
バイナリファイルの表示方法
バイナリファイルの表示方法
Linuxでバイナリファイルを表示するときは、odコマンドを使う。
ただし、odは標準出力に結果を出力するので、moreやlessで画面が止まるようにしなければ、
一気に最後まで表示してしまう。
odの主なオプションは以下。
-a 文字の名前で表示する
-b 8進でバイトを表示する(デフォルト)
-c ASCII文字またはバックスラッシュ付きのエスケープ文字として表示する
-d 符号なし10進short として表示する
-f floatとして表示する
-h 16進shortとして表示する
-i 10進shortとして表示する
-l 10進longとして表示する
-o 8進shortとして表示する
-x 16進shortとして表示する
Linuxでバイナリファイルを表示するときは、odコマンドを使う。
ただし、odは標準出力に結果を出力するので、moreやlessで画面が止まるようにしなければ、
一気に最後まで表示してしまう。
odの主なオプションは以下。
-a 文字の名前で表示する
-b 8進でバイトを表示する(デフォルト)
-c ASCII文字またはバックスラッシュ付きのエスケープ文字として表示する
-d 符号なし10進short として表示する
-f floatとして表示する
-h 16進shortとして表示する
-i 10進shortとして表示する
-l 10進longとして表示する
-o 8進shortとして表示する
-x 16進shortとして表示する
OSの時間変更における影響について
Oracle 上で OS のシステム日時に変更があった場合には
下記のことが発生すると考えられます。
Oracle は時間情報を更新履歴のファイルと
各ファイル(制御ファイル、データファイル、REDO ログ)内に持っています。
* OS の時間を進める場合
特に問題は発生しないと考えられます。
* OS の時間を遅らせる場合
o 時間指定でのリカバリができなくなる。
+ OracleはREDOログにタイムスタンプを持っています。
このタイムスタンプはトランザクション実行時のシステム時刻が
ベースとなっています。時間ベースのリカバリでは、
リカバリ指定時刻より未来のタイムスタンプが現れた時点でREDOの適用は
終了します。
o 未来に作成された表などをアクセスできなくなる。
+ 未来の作成日時を持つオブジェクトにアクセスすると、
ORA-1466が発生してデータを読み込むことができません。
CONSISTENT=Yでのエクスポートについても
内部的にSET TRANSACTION READ ONLY文が実行されますので、
同様の状況が発生する可能性があります。
o SYSDATE を使用したアプリケーションが正常に動作しなくなる。
+ SYSDATE関数はシステム時刻をもとに値を返しますので、
システム時刻の変更によりユーザ・アプリケーション、
ユーザ・データの整合性に影響を及ぼす可能性があります。
o ジョブ・キュー・プロセスによって実行されるジョブが正常に動作しなくなる。
+ ジョブ・キュー・プロセス(SNP)によって実行されるジョブは、
システム時刻をもとにスケジュールされています。
ユーザが作成しスケジュールしたジョブばかりでなく、
マテリアライズド・ビュー(スナップショット)の自動リフレッシュや
遅延トランザクションの伝播等でもジョブ・キューは使用されています。
ジョブが実行されるタイミングに関して十分な考慮が必要となります。
但し、ミリ秒単位で戻すのは問題ないようです。
内部は秒単位で管理しているようです。
また、時間を通常より遅く進めても構わないようです。
但し、OS 時間で1秒間に SCN
(System Change Number : COMMIT する都度、
増加する数)が16,000以上増加させる事はできません。
Oracle ではインスタンス起動中での、
OS のシステム日時の変更はサポートされていません。
また、インスタンス停止中であってもシステム日時を戻すことは、
「OS の時間を遅らせる場合」の状況が発生する場合がある可能性があります。
システム時間を整合性を持って戻すには、データベースを停止し、
システム時刻を戻した後、データベースを停止した時点のシステム時刻になるまで
データベースを起動しない。のが一番良いと思います。
上記のことから、
構成
* クラスタを構築したシステムでは、外部との時間同期を行わない。
あくまでノード間でのみ時刻を同期させる。
(外部の時刻源に合わせて、クラスタ内の時間が進んだり、戻ったりすることが発生するから。)
* Windows Time(W32Times) の時刻源となるサーバを自分自身とする。
具体的には、コマンド・プロンプトから
net time /setsntp:サーバ名 と入力する。
設定を確認するのは
net time /querysntp と入力すると設定されている SNTP サーバ名が表示される。
o 但し、私の環境下では SNTP サーバを設定しても、
W32Time がイベントにエラーを吐いているのは消えなかったので、
net time の設定は削除しました。
予測ですが、このサーバは PDC FSMO ではないため、
自分自身の W32Time から見て、 SNTP サーバの役目を行っていないためだと思います。
自分自身を時刻源として設定できるのは、
自分が PDC FSMO でないとできないかと考えられます。
また、 Windows Time のサービス自体を止めてしまおうかと考えましたが、
Windows Time サービスに依存しているサービスとして
"Cluster Service"が存在したので停止できませんでした。
現状でも、このエラーは出ている状態です。
* 「タイム・リソース・サービス」を保有するノード上に Oracle の DB を構築する。
(時刻源であるノード上にあれば、Oracle の時間の戻りは発生しないと考えられる。)
* フェィル・オーバ、フェィル・バックが発生しても、
「タイム・リソース・サービス」で同期を取っているので、
問題は発生しないと考えられる。
(微妙に時間のずれが発生する可能性はあるが、特に問題は出ないと考えられる。)
時間の合わせ方
1. Oracle のインスタンスを停止させる。
(Oracle 保持しているクラスタ・グループをオフラインにする。)
2. 「タイム・リソース・サービス」を保有しているノードの時間を合わせる。
(手動で「net time」のコマンド等を使用して、外部の時刻源と時間を合わせる。)
3. 別のノードの時間を「net time」のコマンドを使用して、
「タイム・リソース・サービス」を保有しているノードに合わせる。
NET TIME \\サーバ名 /set /y
OS の時間を進める場合は問題ないと考えられるが、
OS の戻す場合には Oracle のインスタンスを停止させた後、
あるポイントでの時刻を記録し、その時刻を基準となる時刻が越えてから時刻合わせを行う。
4. Oracle のインスタンスを起動する。
(Oracle 保持しているクラスタ・グループをオンラインにする。)
大規模なサーバ環境下では、それなりのサーバを使用しており、
それなりのハードウェア・クロックを内蔵しており、
また、温度管理のされたマシンルーム等に設置されていると思われるので、
システム時間が大幅にずれてくることは少ないと思います。
その為、半年程度に1回程度、合わせるのが現実的かと思います。
下記のことが発生すると考えられます。
Oracle は時間情報を更新履歴のファイルと
各ファイル(制御ファイル、データファイル、REDO ログ)内に持っています。
* OS の時間を進める場合
特に問題は発生しないと考えられます。
* OS の時間を遅らせる場合
o 時間指定でのリカバリができなくなる。
+ OracleはREDOログにタイムスタンプを持っています。
このタイムスタンプはトランザクション実行時のシステム時刻が
ベースとなっています。時間ベースのリカバリでは、
リカバリ指定時刻より未来のタイムスタンプが現れた時点でREDOの適用は
終了します。
o 未来に作成された表などをアクセスできなくなる。
+ 未来の作成日時を持つオブジェクトにアクセスすると、
ORA-1466が発生してデータを読み込むことができません。
CONSISTENT=Yでのエクスポートについても
内部的にSET TRANSACTION READ ONLY文が実行されますので、
同様の状況が発生する可能性があります。
o SYSDATE を使用したアプリケーションが正常に動作しなくなる。
+ SYSDATE関数はシステム時刻をもとに値を返しますので、
システム時刻の変更によりユーザ・アプリケーション、
ユーザ・データの整合性に影響を及ぼす可能性があります。
o ジョブ・キュー・プロセスによって実行されるジョブが正常に動作しなくなる。
+ ジョブ・キュー・プロセス(SNP)によって実行されるジョブは、
システム時刻をもとにスケジュールされています。
ユーザが作成しスケジュールしたジョブばかりでなく、
マテリアライズド・ビュー(スナップショット)の自動リフレッシュや
遅延トランザクションの伝播等でもジョブ・キューは使用されています。
ジョブが実行されるタイミングに関して十分な考慮が必要となります。
但し、ミリ秒単位で戻すのは問題ないようです。
内部は秒単位で管理しているようです。
また、時間を通常より遅く進めても構わないようです。
但し、OS 時間で1秒間に SCN
(System Change Number : COMMIT する都度、
増加する数)が16,000以上増加させる事はできません。
Oracle ではインスタンス起動中での、
OS のシステム日時の変更はサポートされていません。
また、インスタンス停止中であってもシステム日時を戻すことは、
「OS の時間を遅らせる場合」の状況が発生する場合がある可能性があります。
システム時間を整合性を持って戻すには、データベースを停止し、
システム時刻を戻した後、データベースを停止した時点のシステム時刻になるまで
データベースを起動しない。のが一番良いと思います。
上記のことから、
構成
* クラスタを構築したシステムでは、外部との時間同期を行わない。
あくまでノード間でのみ時刻を同期させる。
(外部の時刻源に合わせて、クラスタ内の時間が進んだり、戻ったりすることが発生するから。)
* Windows Time(W32Times) の時刻源となるサーバを自分自身とする。
具体的には、コマンド・プロンプトから
net time /setsntp:サーバ名 と入力する。
設定を確認するのは
net time /querysntp と入力すると設定されている SNTP サーバ名が表示される。
o 但し、私の環境下では SNTP サーバを設定しても、
W32Time がイベントにエラーを吐いているのは消えなかったので、
net time の設定は削除しました。
予測ですが、このサーバは PDC FSMO ではないため、
自分自身の W32Time から見て、 SNTP サーバの役目を行っていないためだと思います。
自分自身を時刻源として設定できるのは、
自分が PDC FSMO でないとできないかと考えられます。
また、 Windows Time のサービス自体を止めてしまおうかと考えましたが、
Windows Time サービスに依存しているサービスとして
"Cluster Service"が存在したので停止できませんでした。
現状でも、このエラーは出ている状態です。
* 「タイム・リソース・サービス」を保有するノード上に Oracle の DB を構築する。
(時刻源であるノード上にあれば、Oracle の時間の戻りは発生しないと考えられる。)
* フェィル・オーバ、フェィル・バックが発生しても、
「タイム・リソース・サービス」で同期を取っているので、
問題は発生しないと考えられる。
(微妙に時間のずれが発生する可能性はあるが、特に問題は出ないと考えられる。)
時間の合わせ方
1. Oracle のインスタンスを停止させる。
(Oracle 保持しているクラスタ・グループをオフラインにする。)
2. 「タイム・リソース・サービス」を保有しているノードの時間を合わせる。
(手動で「net time」のコマンド等を使用して、外部の時刻源と時間を合わせる。)
3. 別のノードの時間を「net time」のコマンドを使用して、
「タイム・リソース・サービス」を保有しているノードに合わせる。
NET TIME \\サーバ名 /set /y
OS の時間を進める場合は問題ないと考えられるが、
OS の戻す場合には Oracle のインスタンスを停止させた後、
あるポイントでの時刻を記録し、その時刻を基準となる時刻が越えてから時刻合わせを行う。
4. Oracle のインスタンスを起動する。
(Oracle 保持しているクラスタ・グループをオンラインにする。)
大規模なサーバ環境下では、それなりのサーバを使用しており、
それなりのハードウェア・クロックを内蔵しており、
また、温度管理のされたマシンルーム等に設置されていると思われるので、
システム時間が大幅にずれてくることは少ないと思います。
その為、半年程度に1回程度、合わせるのが現実的かと思います。
ORA-28000 ユーザにロックが掛かってしまったとき・・・
1.sysもしくはsystemでログイン
sqlpus /nolog
conn sys as sysdba
2.ACCOUNT STATUSを確認
select username, account_status, lock_date from dba_users;
3.アカウントを解除
alter user (username) account unlock;
sqlpus /nolog
conn sys as sysdba
2.ACCOUNT STATUSを確認
select username, account_status, lock_date from dba_users;
3.アカウントを解除
alter user (username) account unlock;
登録:
コメント (Atom)
