Oracle TIPS

データベースのキャラクタセット

よくわからない場合は、とりあえずJA16SJISTILDEにしておきましょう。 月間DBマガジン2006 2を参考に

sysでログイン

sqlplusでsysでログインしようとすると

ORA-28009: connection to sys should be as sysdba or sysoper

と表示される場合があります。このときは、

sqlplus /nolog

でログインし、

connect sys as sysdba

と入力後、パスワードを入力します。もしくは、

sqlplus "sys/hogepass@hogetns as sysdba"

表の名称変更

RENAME 元の表 TO 新しい表;  

列の削除

ALTER TABLE テーブル名 DROP COLUMN 列名;

データベースリンクの作成方法

CREATE DATABASE LINK 作成リンク名
CONNECT TO ユーザーID
IDENTIFIED BY パスワード
USING ’接続文字列’;
select * from テーブル@作成リンク名

文字コードの確認

select * from NLS_DATABASE_PARAMETERS where PARAMETER = ’NLS_NCHAR_CHARACTERSET’;

現在アクティブな(ログインしている)ユーザーの検索、削除

  • 検索
    SQL> select sid,serial#,status,osuser,username,machine from v$session
      2     where username='hoge';
    SID             SERIAL#
    ---------- ----------
    9                  87
  • 削除
    SQL> alter system kill session ’9,87’;
    もっと簡単にやるには Enterprise Managerを使いましょう

ライセンス数

select * from v$license;

カーソル数

select * from v$open_cursor;

ログイン時に実行されるトリガー

CREATE OR REPLACE TRIGGER LOG_LOGON
AFTER LOGON ON DATABASE
BEGIN
INSERT INTO TBL_TEST VALUES(1,1);
END;

データファイルの場所

select * from dba_data_files;

テーブルスペース確認

select * from dba_tablespaces; ※データファイルに関する情報の確認
select * from dba_data_files; ※表領域に関する情報の確認

データファイルの移動

1.表領域をオフライン
alter tablespace testspace OFFLINE;
2.データファイル移動または、名前変更(エクスプローラ等)
3.Alter database rename file ’C:\data\test.ORA’ to ’C:\data\testnew.ORA’
4.表領域をオンライン
alter tablespace testspace ONLINE;

SQLPLUS 初期実行ファイル

C:\oracle\ora81\sqlplus\admin\glogin.sql
に
--orignal
set lines 160;
set pages  60;
def_editor=’C:\Program Files\Hidemaru\Hidemaru.exe’
--set heading off;
select * from v$version;
select * from NLS_DATABASE_PARAMETERS where PARAMETER = 'NLS_NCHAR_CHARACTERSET’;
select * from global_name;
select host_name,instance_name from v$instance;
set time on;
--set heading on;
--set pause on;

表領域を自動拡張に変更

select file_name,autoextensible from dba_data_files;

で確認後

ALTER DATABASE DATAFILE 'C:\APP\TEST\ORADATA\ORCL\HOGE.DBF' 
AUTOEXTEND ON NEXT 100M 
MAXSIZE UNLIMITED;

データベース削除

oraadim -DELETE -SID sid

これで、 サービス[OracleServicesid?] レジストリ[HKEY_LOCAL_MACHINE]-[SOFTWARE]-[ORACLE]-[HOME0] にあるORA_sidで始まる5項目が削除されます。 あとは、

oracle_home\oradata\sid
oracle_home\admin\sid

のファイルを削除 簡単にするには、OracleDatabaseConfiguration?を使いましょう。

PLAN_TABLE

Oracle9i

\oracle\ora92\rdbms\admin\utlxplan.sql

Oracle10g

\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\utlxplan.sql

今実行されているSQLを知りたい

SELECT  TO_CHAR(SES.LOGON_TIME, 'HH24:MI:SS') AS LOGON_TIME, 
       SES.USERNAME                          AS LOGON_USER, 
       SES.SID                               AS SID, 
       SES.SERIAL#                           AS SERIAL, 
       SES.STATUS                            AS STATUS, 
       SQL.SQL_TEXT                          AS SQL_TEXT 
FROM    V$SESSION SES, 
       V$SQLAREA SQL 
WHERE   SES.SQL_ADDRESS    = SQL.ADDRESS(+) 
   AND SES.SQL_HASH_VALUE = SQL.HASH_VALUE 
   AND SES.TYPE           = 'USER' 
ORDER BY SES.LOGON_TIME;  

別のテーブルの値で更新したい場合

テーブルtest1のc,d項目をテーブルtest2のc,d項目で更新する。このとき、test1.aとtest2.a、test1.bとtest2.bでジョインできるものとして、

update test1 a1
set (a1.c,a1.d) = (
select ba.c,ba.d
from test2 ba
where a1.a=ba.a
and  a1.b=ba.b
)
where exists(
select * 
from test2 ba
where a1.a=ba.a
and  a1.b=ba.b
)

Enterprise Manager

10gよりEnterprise Managerにブラウザからアクセスするようになりました。サービスのdbconsoleが起動しているのを確認してORACLE_HOME/install/portlist.iniを参照しましょう。 http://localhost:1158/em

フラッシュバック

9iからも一部実装されてましたが、過去に消したデータやテーブルを復活させることができます。このために10gにする価値はあります。

テーブルを消した場合

select * from user_recyclebin;

これで削除したテーブルが確認できますので、戻してみましょう。

flashback table tablename to before drop;

つまりWindowsのゴミ箱みたいなもんです。ですので、当然消さないとたまります。自分で消したい場合は、

PURGE RECYCLEBIN

ですべてを、またテーブルを指定したい場合は、

PURGE TABLE tablename

Caused by: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column

JDBCで接続している場合このエラーがでたら、JDBCのバージョンを見直してみましょう。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31968&forum=12&6

マテリアライズド・ビュー・ログは最終リフレッシュよりも新しいものです。のエラーが出た場合

DECLARE
debug BINARY_INTEGER;
BEGIN
DBMS_MVIEW.REFRESH_ALL_MVIEWS(debug,'?','',FALSE,FALSE);
END;
/

オプティマイザ統計情報の手動収集

exec DBMS_STATS.GATHER_SCHEMA_STATS ('ユーザ名', estimate_percent=>dbms_stats.auto_sample_size);

リスナーが起動せん

listener.logが4GBを超えた為、Listenerが起動できていなかった。
http://mattari-oboe.blogspot.jp/2014/10/oracle-listenerlog4gb.html

/u01/app/oracle/diag/tnslsnr/localhost/listener/trace

テーブルスペース移動

alter tablespace HOGE OFFLINE;

cd /u01/app/oracle/oradata/orcl12/pdborcl
cp -pi HOGE.DBF /home/oracle/oracle/
rm -i HOGE.DBF

alter tablespace HOGE rename datafile '/u01/app/oracle/oradata/orcl12/pdborcl/HOGE.DBF' to '/home/oracle/oracle/HOGE.DBF';
alter tablespace HOGE ONLINE;

http://qiita.com/nishimry/items/3d57e681c8f8dbdd6caa

リンク

参考書籍

コメント

  • #comment

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-12-10 (月) 10:44:27 (1967d)