Oracleで、テーブルに存在しない複数行データを生成するSQLは、以下の通り。 SELECT CASE ROWNUM WHEN 1 THEN 'a' WHEN 2 THEN 'b' WHEN 3 THEN 'c' END AS COL FROM dual CONNECT BY ROWNUM <= 3; EXISTS句などで、抽出条件となるSELECT文をテーブルを使わず書きたい時に便利。 関連リンク oracle – SQL to generate a list of numbers from 1 to 100 – Stack Overflow SQLで,テーブルに存在しない複数行のデータを取得する方法 (PostgreSQLの generate_series関数をマスターしよう) - 主に言語とシステム開発に関して
■RMANのDELETEコマンド使用 ①スレッド番号、ログ順序番号を指定する場合 例)スレッド番号1、ログ順序番号 200番まで(200番も含む)アーカイブログファイル を削除する oracleユーザで実行 %rman target / RMAN> delete archivelog until sequence 200 thread 1; ②日付を指定する場合 例)七日前までを削除する oracleユーザで実行 %rman target / RMAN> delete archivelog until time 'sysdate-7'; ③全削除する oracleユーザで実行 %rman target / RMAN> delete archivelog all ; ■OS コマンドでファイルを削除した後に、RMAN を使用 oracleユーザで実行 %rman target / ①OS 上
運用時に発生するエラー ORA-00257: アーカイブ・エラーです。解除されるまで内部接続のみにしてください。 REDOログ を アーカイブログに書き出せないために停止した状態。 原因 一般的には DISKFULL でアーカイブが行えない場合に発生する。 稀に 手動アーカイブモードの状態を忘れて放置した場合にも発生する。 対応 アーカイブ先のディスクの空き容量を確保する、不要なアーカイブログを削除する。(念のため直近のアーカイブファイルには手を出さないこと) 手動アーカイブ状態になっている場合は、自動アーカイブモードにするか、コマンドでアーカイブする。 以下の手順、参照 アーカイブ先の確認 SQL> ARCHIVE LOG LIST アーカイブ先のディスクが一杯なら不要なファイルを削除する。 アーカイブ先が USE_DB_RECOVERY_FILE_DEST の場合には DB_RECOV
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
2009年06月27日 Oracle テーブル定義時のエラー カテゴリ:DB Oracle のテーブル定義の際に、気づきにくいエラーが発生しました。 忘れないようにメモです。 create table M_USER( USER_SEQ number not null primary key, COMPANY_SEQ number, GROUP_NO number, AUTH_SEQ number, USER_ID varchar(255) not null, PASSWORD varchar(255) not null, NOT_DELETE_FLAG number, USER_NAME varchar(255) not null, LOGIN_TIME date, LAST_LOGIN_TIME date, LOGIN_FAIL_NUM number default 0, LAST_LO
あるお客様から「頻繁にアクセスされる大きな(というより巨大な)テーブルをメモリ上に常駐させて物理I/Oを削減したいのだけど。」という要望を受けました。 通常、Oracleは(9i以降であれば) 20ブロックもしくはv$buffer_pool.buffers / 50のいずれかより大きなテーブル(long table)は、全件検索時にDB_FILE_MULTIBLOCK_READ_COUNT分のブロックを読み込みながら、どんどんメモリ(キャッシュ)から追い出してしまいます。これは限りあるメモリ資源を有効に活用するための仕組みです。 従って、この場合SGAを単純に大きくすればよいというものではありません。明示的に”KEEP”バッファ・プールを指定して、当該テーブルの属性も”KEEP”に設定しage outされないようにする必要があります。 KEEPバッファ・プールというのは、それほど大きくはな
LinuxネタではなくOracleネタではあるのですが。 運用開始後にDBが正常に動作しているか監視したいという要件はよくあったりしますので、サービス監視ネタとしてまとめてみたいと思います。 環境は、Oracle11.2.0(2ノードRAC構成)、RedHat6.2環境をベースに書いています。 サービス監視の一環として、正常にDBが稼動しているかどうかを動作しているプロセスの個数で監視(いわゆるプロセス監視)するケースはよくありますが、Oracleは動作するプロセスが非常に多かったりしますし、サービスの動作確認用コマンドが用意されていたりするので、それを応用してシェルで自動チェックする仕組みを作ってみます。 利用するコマンドは、下記のcrsctlコマンドでリソースの状況を表示するオプションをつけて実行します。 $ crsctl stat res -t -------------------
オラクル 9i でエクスポート実行時に発生 [OSのVER]:WindowsXP Pro スタンドアロン [OracleのVER]:9.2.0.5.0 Exportを実行すると、Ora-000942が発生して中断する.※コメント1 調べたところ解決策らしきものを発見.※コメント2 要約すると,DB作成時のバージョンと現オラクルのバージョンが異なる場合 (もしくは必ず実行する必要がある) catexp.sql catalog.sql などのsqlを流すことで解決するらしい. ※sysでログイン後,流した. 但し,現在どういう場合にどのsqlを流せばよいのかは不明 1つ流してexp実行を繰り返したところ catexp.sql catalog.sql catproc.sql ここまで流してエクスポートが出来るようになるらしい.※下に追記あり 参考:sqlファイルの場所. C:\oracle\pr
Oracleからテキストタブ形式やCSV形式でデータをエクスポートして書き出す。 ■Oracleからテキストタブファイルとしてエクスポートする テープル: emp 書き出す列: id, last_name, first_name, address 書き出す行: 全レコード 書き出し先のファイル名: ファイル名.txt ■テキストタブ(TSV)でエクスポートするSQL文をテキストで保存する emp_export_tab.sql set echo off set heading off set termout off set pause off set pagesize 0 set linesize 1000 set trimspool on set feedback off spool ファイル名.txt SELECT id || ' ' || last_name || ' ' || fir
SQL Loader (SQL ローダ) ユーティリティの使用方法 SQL Loader 概要 SQLLoader を使用することで外部ファイルに記述されている制御ファイルと一定の書式で記述されたデータレコードのみの大量のテキストデータ(※)を効率よく高速にデータベースの表にローディングすることができる。 (※) テキスト形式だけではなく、Native な型のデータや LOB 型のデータもコントロールファイルの設定によってローディングすることが可能。 SQL Loader の主な特徴 ダイレクト・パス API を使用した高速なデータのローディング(ダイレクト・パス・インサート) 複数のデータファイルからのパラレルロード 漢字コード(キャラクタセット)の変換 SQL 関数、ユーザー関数、シーケンスなどを使用してデータの生成、合成、変換が可能 不適格データの排除とレポート、ログ SQL Loa
CSVファイルからOracleのテーブルへデータを流し込むツール。 大量のinsert文を発行するよりは、断然高速。 データであるCSVファイルや固定長ファイルと、ロード方法を指定するコントロールファイルを用意 して実行する。 (CSVファイルからのロードはこのSQL*Loaderが使えるが、CSV出力には標準的な方法は無いらしくて、select文で加工する方法がよく使われるらしい。 このSQL文をいちいち書くのは少々面倒なので、SQL生成用Excelマクロを作ってみました) コントロールファイル CSVファイルの各項目とテーブルの項目との関連付け等を指定する。 (コントロールファイルをテキストエディタで書くのはけっこう面倒なので、コントロールファイル作成用Excelマクロを作ってみました(CSVファイル用、固定長ファイル用)) 例)emp.ctl: OPTIONS(LOAD=100,SK
PROCEDURE(プロシージャ) プロシージャとはORACLEではPL/SQLと呼ばれているもので、事前にSQL文をデータベースにコンパイルして置いておき、使用するときはそれを呼び出すだけという使い方をします。 プロシージャでは1つのSQL文では記述することができない複雑な処理を書くことができます。また、ネットワークの負荷を少なくする、処理が早いといったメリットがあります。 プロシージャの作成 プロシージャの作成には、CREATE PROCEDURE句を使用します。 CREATE PROCEDURE構文 CREATE [OR REPLACE] PROCEDURE ストアドプロシージャ名[(引数名 {IN | OUT | INOUT} データ型,...)] IS 宣言部 BEGIN 処理部 EXCEPTION 例外処理部 END ; パラメータ 説明
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く