Oracle
<環境> Windows 10 SSMA(SQL Server Migration Assistant)という、Microsoft が配布しているコンバートツールにて、変換が可能です。 Oracle と SQL Server へ接続可能な端末で実行しています。 1. 配布ページより、「SSMA for Oracle」をダウンロード…
『期限切れとなるのは、登録日より1ヶ月後です』 『1か月前に告知されます』 というのを見た時、「何日だろ?」と思ったのがきっかけ。 法的に決められたルールや、国際ルールがあるんかな。 パッとググってみた感じ、見つけきれなかったんで、RDBに聞いて…
以前、配列を where句における in の条件式として使用するというエントリを書きましたが、update文にて、この書き方をすると、ORA-00902: データ型が無効です。というエラーが発生します。 ですので、update文の where 条件にて、配列を引数に取るには、fora…
Oracle 12cにて、PL/SQLをデバッグするために必要な設定 DEBUG CONNECT SESSION 権限の許可 DBMS_DEBUG_JDWP に対する EXECUTE 権限 デバッグするストアド・プロシージャーに対する EXECUTE 権限 JDWP ACL 実行権限 ストアドプロシージャが "Compiled for De…
こんな感じ。 type TYPE_NUM_LIST is table of number index by binary_integer; --//////////////////////////////// -- 配列データをINに渡して参照 --//////////////////////////////// PROCEDURE MY_PROCEDURE_02_4 ( IN_NUM_LIST IN TYPE_NUM_LIST --配…
Oracle開発ツールのいくつかは、PL/SQL の引数が配列の場合、自由に値がセットできなくて、苦労するケースもあるかと思います。 Oracle SQL Developer のデバッグ実行にて、『PL/SQL ブロック』を編集することで、配列型の引数に、好きな値を設定する事がで…
Oracle SQL Developerにて、select文の結果を、「Ctrl + A」「Ctrl + C」⇒「Ctrl + V」と操作すると、レコードのみがペーストされます。 「Ctrl + A」「Ctrl + Shift + C」⇒「Ctrl + V」で、列名を含めてコピーが可能です。
以下の関数を組み合わせて、大文字/小文字 半角/全角 ひらがな/カタカナ を区別せずに検索できます。 UPPER(小文字→大文字) TO_MULTI_BYTE(半角→全角) UTL_I18N.TRANSLITERATE(詳細は後述) (例) 以下で、「大文字・全角・カタカナ」に変換しています…
Oracle12にて、以下のようなメッセージが出てユーザが作成できなかった時の対処。 【エラーメッセージ】 ORA-65096: 共通ユーザーまたはロール名が無効です ググったら、何やら複雑な情報がバシバシと出てくるけど、要は「12からアーキテクチャが変わった」…
ODT(Oracle Developer Tools for Visual Studio)を使用して、プロジェクトから Oracleに接続する場合、 OracleClient用に設定した tnsnames.ora とは別に、ODT用の tnsnames.oraを用意する必要があります。 ODTをデフォルトのパスにインストールしていた場…
プライマリキーを編集するコマンドは無いみたいなんで、いったん削除した後に、もう1回作成する。 alter table <テーブル名> drop constraint <主キー制約名>; alter table <テーブル名> add constraint <主キー制約名> primary key <列名>; 再作成時にエラ…
(エラーメッセージ) ORA-00060: リソース待機の間にデッドロックが検出されました。 デッドロックの解除は、こんな感じで。 詳しく調べたい場合(デッドロックが発生しやすいSQLはどれか等)は、トレースファイルを確認する。 トレースファイルの保存先は…
正常稼働していたが、ある日突然繋がらなくなったので調査。 クライアントから接続した時のエラー内容 ORA-12514: TNS:listener does not currently know of service requested in connect descriptor サーバから接続した時のエラー内容 ORA-01034: ORACLE n…
Oracleのログの種類と出力先についてのメモ。 以下、出力先はデフォルト設定時となっています。 クライアントからDBへの接続が出来ない場合 sqlnet.log を確認する。 パスはバージョンによって異なる。 (10g以前) $ORACLE_HOME/network/log (11g以降) $O…
Oracleで、文字列を日付型に変換し、できなければnullを返すファンクションを書いてみた。 create or replace function CONVERT_TO_DATE ( ARG_DATE in varchar2) return date is FORMATTED_DATE varchar2(8); begin FORMATTED_DATE := substr(replace(ARG_D…
エクスポート・ファイルはEXPORT:V10.02.01によって従来型パス経由で作成されました。 IMP-00013:DBAのみ別のDBAがエクスポートしたファイルをインポートできます IMP-00000:エラーが発生したためインポートを終了します。 というメッセージが出た時の対処。…
Oracleで主キーのカラムを抽出するSQL select USER_CONS_COLUMNS.OWNER ,USER_CONS_COLUMNS.TABLE_NAME ,USER_CONS_COLUMNS.COLUMN_NAME ,USER_TAB_COLUMNS.DATA_TYPE ,USER_TAB_COLUMNS.DATA_LENGTH from USER_CONS_COLUMNS left join USER_TAB_COLUMNS on …
Oracleで異なるDBを使用する場合、DBLINKを使いますが、サービス名を記述しない書き方でもOKです。 記述例 CREATE DATABASE LINK <dblink_name> CONNECT TO <user_name> IDENTIFIED BY <password> USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=1521))(CONNECT_DATA=(SER</password></user_name></dblink_name>…
Oracle11g以降は、パスワードの有効期限がデフォルトで180日となっています。 そのままにしておくと、180日経過後に突然ログインできなくなるので、パスワードの有効期限を延ばす(もしくは無期限に設定する)必要があります。 以下、SYSDBAで実行。 パスワ…
Oracleでテーブルのみをエクスポートする方法。 expを使う場合 exp user/pass@net_service_name TABLES=% FILE=filename.dmp expdpを使う場合 expdp \"user/pass@net_service_name AS SYSDBA\" DIRECTORY=dump_save_directory DUMPFILE=filename.dmp TABLES=…
Oracleにて、表領域ごとの使用量、使用率、空き容量を表示するSQLを書いてみた。 SQL select DBA_DATA_FILES.TABLESPACE_NAME ,min(DBA_DATA_FILES.BYTES)/1024/1024 as "現サイズ(MB)" ,round(min(DBA_DATA_FILES.BYTES)/(1024*1024) - sum(DBA_FREE_SPACE.…
過去に発行されたSQLを表示 select * from v$sqlstats これだけだと、誰が実行したか(ユーザ、マシンなど)がわからないので、合わせて知りたい場合はセッション情報と結びつける。 セッション確認 select * from v$session v$sqlstats.sq_id と v$session.…
テーブル名一覧とコメントを取得 select USER_TABLES.TABLE_NAME ,USER_TAB_COMMENTS.COMMENTS from USER_TABLES left join USER_TAB_COMMENTS on USER_TABLES.TABLE_NAME = USER_TAB_COMMENTS.TABLE_NAME where 1=1 order by 1 カラム名一覧とコメントを取…
デッドロック発生時の対策。 ロックセッションサーチ select SID ,SERIAL# from V$SESSION where SID in ( select SID from V$LOCK where TYPE in ('TM','TX') ) SID、SERIAL# をメモし、以下のコマンドを実行。 ロックセッションKILL ※要管理者権限 alter s…
Oracleを使用しているシステムにて、サーバ側でエクスポートを実行する処理をクライアントからキックする時、ORDCOM(RPC)を使用してます。内部ではバージョンごとに異なるバイナリを使っていて、バージョンが切り替わるたびに入れ替える必要がある模様。 …
OracleでDB領域が足りなくなった時の拡張方法 1.DBFを拡張する alter database datefile 'E:oraclespace\tbspace01.dbf' resize 8192M ※resizeにて容量を指定。「MB」でなく「M」 2.DBFを追加する。(複数のdbfで構成する) alter tablespace TBL01 add …
エクスポートをSYSDBAで実行する時、ログイン識別子をエスケープシーケンスで囲ってやればOKです。 実行例 expdp \"user/pass@net_service_name AS SYSDBA\" DIRECTORY=dump_save_directory DUMPFILE=filename.dmp SCHEMAS=schema_name expdpは、旧コマン…
Oracleでの接続設定は tnsnames.oraに記述をしますが、別に書かなくても接続できちゃいます。 例:sqlplusからの接続 sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE…
EC2にOracleをインストールした時に躓いた点のメモ。 Windows Serverインスタンスを作成すると英語版が立ち上がり、デフォルト文字コードはANSIとなっています。「別に英語読む事なんか苦にならねーぜ!」と意気揚々とそのままOralceインストールしちゃうと…