java.lang.NoClassDefFoundErrorが発生
Eclips + Tomcat + wtp
にて java.lang.NoClassDefFoundError が発生した。
Tomcatのsharedの中にjarファイルを置いていたのでクラスパスが通っていると思っていたが、
Eclipseのサーバーの起動構成でクラスパスを設定しないとだめだそうです。
初心者ですいません。
Eclips + Tomcat + wtp
にて java.lang.NoClassDefFoundError が発生した。
Tomcatのsharedの中にjarファイルを置いていたのでクラスパスが通っていると思っていたが、
Eclipseのサーバーの起動構成でクラスパスを設定しないとだめだそうです。
初心者ですいません。
今までOracleの開発には、
SI Object Browserを使用していました。
たまたま仕事先にあったので使っていますが、
今後これがない所で働く事になったら非常にやっかいだと思い別なツールを使おうと思いました。
そこでOracleのサイトをみると無償のツールOracle SQL Developerがありまた。
JDeveloperもありましたが、しばらくOracle SQL Developerを使ってみようと思います。
10gにてDBMS_DEBUGを利用してPL/SQLのデバッグをする場合。
デバッガに接続するセッションにDEBUG CONNECT SESSIONシステム権限が必要。
その他、EXECUTE権限とDEBUG権限。
Oracle Sql Developer で パッケージをコンパイルしたら
やたらと警告メッセージが出てきた。
はじめは、PLW-XXXXXを調べて修正していたが、作業が全然進まなくなってしまったので、
警告がでないように変更。
1.メニューバーの[Tools]-[Preferences]を選択
2.[PL/SQL Compiler Options ]を選択
3.[Generate PL/SQL Debug Information]のチェックをはずす
4.すべて[DISABLE]を選択
コンパイルすると警告メッセージがでなくなって、めでたし、めでたし。
[アドレス]
http://ホスト名:ポート番号/em
[ポート番号の確認]
$ORACLE_HOME/install/portlist.ini に書いてある。
[例]
http://127.0.0.1:5500/em
{ゴミ箱の中身を確認する}
SELECT * FROM RECYCLEBIN
{ゴミ箱の中身を空にする}
PURGE RECYCLEBIN
{ゴミ箱のテーブルを削除する}
PURGE TABLE テーブル名
{ゴミ箱のインデックスを削除する}
PURGE INDEX インデックス名
{ゴミ箱のテーブルスペースを削除する}
PURGE TABLESPACE テーブルスペース名
「DBA_SYS_PRIVS」にてロールに付与された権限を確認できます。
SELECT * FROM DBA_SYS_PRIVS
例:CONNECTロールに付与されている権限を確認する
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'CONNECT'
※今後のOracleのリリースでは、CONNECT,DBA,RESOURCE ロールは自動的に作成されないかも
だそうです。
すべてのロールを表示
SELECT * FROM DBA_ROLES
すべてのユーザーおよびロールに付与されたロールの表示
SELECT * FROM DBA_ROLE_PRIVS
select * from v$version
DBMS_OUTPUTにて標準出力に表示する時にバッファサイズを超えるとでる。
ORACLE 10G R1以前までバッファのサイズは2Kバイト~1Mバイト。行サイズ255バイト。
以下でバッファサイズを変更できる。
DBMS_OUTPUT.ENABLE(1000000);
ORACLE 10G R2はバッファのサイズは2Kバイト~無制限。行サイズ32Kバイト
DBMS_OUTPUT.ENABLE(NULL);
+-----------------+----------------------------------+
| ORU-10027 | バッファオーバーフロー |
+-----------------+----------------------------------+
| ORU-10028 | 行の長さオーバーフロー |
+-----------------+----------------------------------+
ストアドオブジェクト
(PROCEDURE、FUNCTION、PACKAGE、PACKAGE BODY、TRIGGER、TYPE、TYPE BODY)
のコンパイラの設定を調べるには、USER_PLSQL_OBJECT_SETTINGSを利用する
SELECT * FROM USER_PLSQL_OBJECT_SETTINGS
1.メニューバーの[Tools]-[Preferences]を選択
2.[Code Editer] - [Line Gutter]を選択
3.[Show Line Numbers]にチェックをつける
■UNDO保存の保障の確認
保障しないとUNDOデータが上書きされるかも
select tablespace_name,retention from dba_tablespaces where tablespace_name = 'UNDOTBS1'
■UNDO保存の保障
alter tablespace 'UNDOTBS1' retention GUARANTEE;
■SCNとタイムスタンプのマッピング
select current_scn,scn_to_timestamp(current_scn) from v$database
select timestamp_to_scn(systimestamp), systimestamp from dual
■フラッシュバック問合せ
SCNにて
select name from test as of scn 344387777 where id = 2
■フラッシュバック・バージョン問合せ
SCNにて
select
versions_xid XID,
versions_startscn START_SCN,
versions_endscn END_SCN,
versions_operation OPERATION,
id,name
from test versions between scn minvalue and maxvalue
■フラッシュバック・トランザクション問合せ
SCNにて
select * from flashbak_transaction_query where table_name='TEST'
■oracle flashbak query
update test set name= (select name from test as of scn 344387777 where id = 2) where id=2
■oracle flushbak table
※flashback table 権限 or flashback any table 権限 が必要
行移行を有効にしないとだめ
alter table test enable row movement
・対照表はロックされる
・システム表、固定表はNG
・表の定義が変更されているとNG
・関連する表は、同時にフラッシュバックする
flashback table test to scn 344494686
■oracle flushbak drop
flashback table test to before drop rename to 'test2'
・マテリアライズドビュー、ビットマップ結合索引、参照性合成制約はNG
・制約や索引などは手動でリネームする
--索引名の取得
select index_name from user_indexes where table_name='TEST';
--リネーム
alter index "BINXXXXXXXXXXXXX" rename to pk_test;
突然SQLPlusが起動しない・・・
ちなみに環境は
WinXP
SQL*Plus: Release 9.2.0.1.0 - Production
最近いろいろな物をインストールしていたので、
何が原因かわからない。。。
Webを徘徊した結果,
HD暗号化ソフトをインストールした時・・・・とか言うのを見つけた。
そういえばインストールしたと思い、一回削除しようと思ったが
勝手にアンインストールができないのであきらめ。
他にないか調査・・・
環境変数 の 『http_proxy』 の 設定 を 間違っていない?
というのがあった。
自分の環境変数を確かめると!!!!見事に間違っていた。
訂正前 : hoge.com:8080
訂正後 : http://hoge.com:8080
sqlplusを実行すると、見事に起動しました。
いやー、最近eclipseをインストールしていた時に、
プロキシ設定したような・・・・覚えていない・・・まあいいや。
PLSQLにてバッチ処理を作成した。
処理上、10万件以上のでーたをDELETEしていたが、
パフォーマンスが悪いので対策としてTRUNCATEへ置き換えする事にした。
TRUNCATEはロールバックできなかったり、実行前後でCOMMITされたり、
PLSQLから使用する場合には、動的SQLにて実行しなくてはいけなかったりする。
単純には、置き換えできないので注意する。
今回の自分のケースでは、10分ぐらいかかっていたのが、1分半ぐらいになった。
変更前
DELETE FROM WORK;
変更後
EXECUTE IMMEDIATE 'TRUNCATE TABLE WORK';
ServerTypeがVAR、VARCHAR2、ORATYPE_RAW_BINのORAPARM_OUTPUT変数の最大サイズは、
デフォルトで128バイト。
MinimumSizeにてサイズを予想されるサイズより大きい値を設定。
[VBの例]
OraDatabase.Parameters.Add "ret", 0, ORAPARM_OUTPUT
Set pret = OraDatabase.Parameters("ret")
pret.ServerType = ORATYPE_VARCHAR2
pret.MinimumSize = 1024
1.V$LOCKとV$SESSIONからSIDとSERIAL#を調べる。
SELECT SID, SERIAL#,USERNAME,STATUS,MACHINE,PROGRAM
FROM V$SESSION
WHERE SID IN (
SELECT SID
FROM V$LOCK
WHERE TYPE IN ('TM','TX')
);
2.セッションの切断
ALTER SYSTEM KILL SESSION 'SID,SERIAL#'例: ALTER SYSTEM KILL SESSION '10,5000';
3.それでもだめな場合、
サーバープロセスを強制終了。
いやな場合は、DB再起動か?