【CentOS】インストール時に解像度を指定して実行する
VMWare上で動作させようとすると、画面解像度が低くて文字が切れてしまい、思い通りにインストールが行えないかもしれない。
そのため、ディスクを入れて起動したらESCを押し、ブートオプションが入力できる画面に遷移し、画面解像度を変更する。
例えば1024×768でブートしてほしい場合
linux resolution=1024x768
「=」は日本語キーボードだと、キーボード右上にある「^」「へ」「~」が表記されているキーで入力可能。
「x」は小文字のエックス。
【VMware】起動タイミングをいじったりブートメニューやBIOS起動
vmwareで仮想OSを起動する際、BIOSをいじってブート順序を変更したかったりする場合、こんな感じにする。
【BIOSを起動させたい】
vmwareで仮想OSを起動した瞬間、仮想OSをクリックしてアクティブ状態にし、F2を押す。
【ブートメニューを起動させたい】
vmwareで仮想OSを起動した瞬間、仮想OSをクリックしてアクティブ状態にし、ESCを押す。
で、これが大変。起動が速すぎて、間に合わない。
そこで、vmxファイルに、必要に応じて以下を追加することで素敵になれる。
【ブートをnミリ秒待つ(例は5秒)】
bios.bootDelay = "5000"
【ブート時、必ずBIOSメニューを起動させる】
bios.forceSetupOnce = "TRUE"
正直、これに凄い助かった。
【ツール】Oracle テーブル定義の抽出とINSERT文の生成
随分前に、Oracleのテーブル定義の抽出と、そこからINSERT文を生成するマクロを作っていたので、アップしておきます。
アップしていたと思っていたのに、アップしていなかった・・・。
作った経緯は、ネット接続不可、定められたアプリケーションのインストール以外は不可、みたいな環境。
INSERT文をちまちま書くのが面倒だし、そんな環境だからレコードの投入もいちいちsqlplusを使わないとダメだとか、不便で原始的な状態を脱したかった為です。
今は色んなツールがあるし、そういう環境が特殊かもしれませんが、似たような環境下にいる方には、意外と使えます。
たったそんだけ、と思うかもしれませんが、意外とそれが出来ない環境よりよっぽど捗りますよ。
と言っても、ネットに繋がらないと、このツールのダウンロードすらままならないわけですが・・・。
微妙にシートクリア処理にバグがありますが、ご愛嬌で。
Oracle テーブル項目定義取得・INSERT文生成
※oo4oのインストールが必須です。
【Oracle】Oracle Instant Client をセットアップするバッチを作った
Oracle Instant Client をセットアップする時に、いちいちオペレーションするのが面倒だったのでバッチ実行できるようにした。
UnZipとFastCopyの力を借りて、バッチ一発実行でOK!
ライセンス上、問題があるならご連絡ください。
一応、環境変数の設定も調べまくって、少しは融通の利いたものになってます。
【内容】
- Instant Client を任意のディレクトリに配置します。
- tnsnames.oraを任意のディレクトリに配置します。
- システム環境変数にNLS_LANG、TNS_ADMIN、PATHを設定します。(Administrators権限を要します。)
【システム要件】
- Windows XP SP3
- Windows 7 x86
- Windows 7 x64
【問題】
【Oracle】Oracleの使用メモリ容量、SGA容量を変更するのと、トラブルシューティング
DBAの知識ないから、DBの設定ぶっ壊して、1から入れなおしかなーなんて思える状態から脱却できたので、メモっておこう!
SGAの現在のメモリ割当を確認。
sqlplus / as sysdba show parameter sga_; NAME TYPE VALUE ------------- ------------ ------- sga_max_size big integer 2G sga_target big integer 2G
ここで、以下のように容量変更を実行するのはダメ。
sqlplus / as sysdba alter system set sga_max_size = 4G scope=spfile; alter system set sga_target = 4G scope=spfile;
なぜなら、メモリの物理的な割当を超過したSGAを設定すると、壊れる。
以下を実行し、memory_max_target、memory_targetがそれにあたる。
メモリ割当容量を変更する場合には、この物理的な割当容量を確認する手順は必須だ。
sqlplus / as sysdba show parameter memory_; NAME TYPE VALUE ------------------------- ------------ -------- hi_shared_memory_address integer 0 memory_max_target big integer 3G memory_target big integer 3G shared_memory_address integer 0
MEMORY_MAX_TARGET、MEMORY_TARGETの説明によると、MEMORY_TARGETがOracleが利用するメモリ割当量で、その範囲内でSGAやPGAを設定する。
つまり、いきなりSGAのメモリ割当量を変更し、MEMORY_TARGET割当量≦SGA割当量となると、設定としてはNGだ。
よって、まず変更すべきはSGAではなくMEMORY_TARGETだ。
また、SGAに4GBを割り当てたいなら、MEMORY_TARGETは4GBより大きくなければならない。
それぞれの項目の説明はSGA_MAX_SIZE、SGA_TARGETを参照してほしい。
sqlplus / as sysdba alter system set memory_max_target = 5G scope=spfile; alter system set memory_target = 5G scope=spfile;
そのあとにSGAを変更する。
sqlplus / as sysdba alter system set sga_max_size = 4G scope=spfile; alter system set sga_target = 4G scope=spfile;
んでインスタンス再起動
sqlplus / as sysdba shutdown immediate startup
これで、Oracleで利用する物理メモリ容量の増加と、SGA容量の増加を行える。
で、これから俺がやらかした状態と、解消手順。
壊した経緯
- もともと物理的に1.6GBくらいしか割り当ててない。
- 物理割当を確認せずにSGAを4GBに変更。
- インスタンスの再起動ができなくなる。
再起動すると、こんなメッセージが。
ORA-00844: Parameter not taking MEMORY_TARGET into account ORA-00851: SGA_MAX_SIZE 4294967296 cannot be set to more than MEMORY_TARGET 1690304512.
SGA_MAX_SIZEがMEMORY_TARGETを超えてんぞコラってことみたい。
こうなると、もうインスタンスへの接続もできないので、以下の手順を踏まないと直せない。
- spfileからpfileを生成する。
sqlplus / as sysdba プラガブルの場合、コンテナを指定する必要がある。 sqlplus /@コンテナ名 as sysdba
create pfile from spfile;
%ORACLE_HOME%\database\INIT<SID>.ORAが作成されます。
%ORACLE_HOME%は、11gのデフォルトなら「D:\app\Administrator\product\11.2.0\dbhome_1」とかで、
INIT<SID>.ORAは、インスタンス名が「HOGE」なら「INIThoge.ORA」ってファイルがある。 - INIT<SID>.ORAをテキストエディタで編集する。
以下では、MEMORY_TARGETを5GB、SGAを4GBに設定してみる。
<SID>.__sga_target=4294967296
*.memory_target=5368709120
*.sga_max_size=4294967296
*.sga_target=4294967296
- INIT<SID>.ORAを利用してインスタンスを起動する。
注意する点は、指定するのはファイル名だけではなくてフルパスで指定する。
sqlplus / as sysdba
startup pfile="D:\app\Administrator\product\11.2.0\dbhome_1\database\INIT<SID>.ORA"
- 起動できたら、pfileの設定をspfileに書き戻す。
注意する点は、指定するのはファイル名だけでいい。
/ as sysdba
create spfile='SPFILE<SID>.ORA' from pfile='INIT<SID>.ORA';
- んでいつも通りのインスタンスの再起動をしてみて、起動すればOK。
sqlplus / as sysdba
shutdown immediate
startup
【Oracle】Oracleで、データポンプによるエクスポート(expdp)、インポート(impdp)
いっつもOracle10gから追加されたデータポンプによるエクスポート・インポートのやり方を忘れるのでメモしとく!
準備として、処理を行うディレクトリが登録されていないとダメ。
SYSTEMユーザーなどで以下のようにディレクトリを切る。
CREATE OR REPLACE DIRECTORY BACKUP_DIR AS 'D:\Backup';
エクスポート
(スキーマhogeの全オブジェクトをtest.dmpにエクスポートする。同名のファイルがあったら上書きする)
expdp system/manager@service DUMPFILE=test.dmp DIRECTORY=BACKUP_DIR SCHEMAS=hoge REUSE_DUMPFILES=YES
インポート
(スキーマhogeのエクスポートデータをスキーマtestにインポートする)
impdp system/manager@service DIRECTORY=BACKUP_DIR DUMPFILE=test.dmp REMAP_SCHEMA=hoge:test
インポートの際、インポート先のスキーマは存在しなくてもインポートできて、勝手に対象スキーマが作成される。
が、パスワードが何だか分からない状態(ランダムに生成されてる?)になるので、インポートが終わったらパスワードを変更しよう。