Oracleのsqlplusコマンドが見つからない

Oracleにコマンドラインでつなごうとするとsqlplusを使うと思います
Oracleと一緒にインストールされているはずが

$ sqlplus

とするとコマンドがないと..
無理やり探してみる

$ sudo find / -name sqlplus
/u01/app/oracle/product/11.2.0/xe/bin/sqlplus
/u01/app/oracle/product/11.2.0/xe/sqlplus

いました
このまま使おうとすると

$ /u01/app/oracle/product/11.2.0/xe/bin/sqlplus
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

環境変数を通さないとだめなようで

環境変数 (NLS_LANG、ORACLE_HOME、etc) – オラクル・Oracleをマスターするための基本と仕組み
を参考に

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/xe

としてあげれば使えるようになりました

Oracleで30文字より長いファンクション名(とかの識別子)は付けられない

Oracle 11gでFunctionで処理をしてしまおうと

CREATE OR REPLACE FUNCTION なんとかかんとか長いファンクション名 (code in VARCHAR) RETURN VARCHAR2
// 処理いろいろ
END;

を流すとエラーが

エラー・レポート -
ORA-00972: 識別子が長すぎます。
00972. 00000 -  "identifier is too long"
*Cause:    An identifier with more than 30 characters was specified.
*Action:   Specify at most 30 characters.

Function名に30文字以上はだめ..?
PL/SQLのプログラム上の制限

識別子は30Byteまででした
古い作りの名残でしょうか..

Oracleで途中からプライマリーキーを追加する

oracleを使って開発中に途中で、テーブルの世代管理が必要になるという悲劇に遭遇した際は
世代管理用フィールドの追加とPrimaryKeyを張り替えます

ALTER TABLE sample_table ADD (
    rev NUMBER(8)
);

ALTER TABLE sample_table DROP PRIMARY KEY;

UPDATE sample_table SET rev  = 0;

ALTER TABLE sample_table ADD PRIMARY KEY (ID, REV);

IDはもともと用意していたPrimary keyです
Primary keyにするにはnullではだめなので、0をセットしています

sqldeveloperでタブを固定する

sqldeveloperをつかっていると、テーブルを開くたびに同じタブが更新されて
タブが増えない..

というときは左上のピンをクリック、すればタブが固定され次からは新しいタブが開きます

sqldeveloper

いちいちピンをクリックするのが面倒..な人は
メニュー>ツール>プリファレンス、を開いて
データベース>Object Viewew、を開いて
オブジェクト・ビューア・ウィンドウの自動固定、にクリック、すれば常にピンがつきます

sqldeveloper2

これでだいぶ使いやすいです