*[[Oracle TIPS]]
#author("2018-12-10T10:44:27+09:00","default:zzr12000","zzr12000")
*[[Oracle TIPS]] [#m6788b71]

#contents
**データベースのキャラクタセット
**データベースのキャラクタセット [#v0201a92]
よくわからない場合は、とりあえずJA16SJISTILDEにしておきましょう。
月間DBマガジン2006 2を参考に

**sysでログイン
**sysでログイン [#ec9b85f7]
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"

**表の名称変更
**表の名称変更 [#uf322dc2]
 RENAME 元の表 TO 新しい表;  

**列の削除
**列の削除 [#mf5ead15]
 ALTER TABLE テーブル名 DROP COLUMN 列名;

**データベースリンクの作成方法
**データベースリンクの作成方法 [#p8471c43]
 CREATE DATABASE LINK 作成リンク名
 CONNECT TO ユーザーID
 IDENTIFIED BY パスワード
 USING ’接続文字列’;
 select * from テーブル@作成リンク名
**文字コードの確認
**文字コードの確認 [#ne861b9b]
 select * from NLS_DATABASE_PARAMETERS where PARAMETER = ’NLS_NCHAR_CHARACTERSET’;
**現在アクティブな(ログインしている)ユーザーの検索、削除
**現在アクティブな(ログインしている)ユーザーの検索、削除 [#x61c62f3]
-検索
 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を使いましょう
**ライセンス数
**ライセンス数 [#eb7e2077]
 select * from v$license;
**カーソル数
**カーソル数 [#he1272f1]
 select * from v$open_cursor;
**ログイン時に実行されるトリガー
**ログイン時に実行されるトリガー [#yd62cae6]
 CREATE OR REPLACE TRIGGER LOG_LOGON
 AFTER LOGON ON DATABASE
 BEGIN
 INSERT INTO TBL_TEST VALUES(1,1);
 END;
**データファイルの場所
**データファイルの場所 [#gf2c5d52]
select * from dba_data_files;
**テーブルスペース確認
**テーブルスペース確認 [#q9a7b5fc]
 select * from dba_tablespaces; ※データファイルに関する情報の確認
 select * from dba_data_files; ※表領域に関する情報の確認
**データファイルの移動
**データファイルの移動 [#v32ed0d7]
 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 初期実行ファイル
**SQLPLUS 初期実行ファイル [#g977b018]
 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;
**データベース削除
**表領域を自動拡張に変更 [#gb40ebba]
 select file_name,autoextensible from dba_data_files;
で確認後
 ALTER DATABASE DATAFILE 'C:\APP\TEST\ORADATA\ORCL\HOGE.DBF' 
 AUTOEXTEND ON NEXT 100M 
 MAXSIZE UNLIMITED;
**データベース削除 [#e7bebc42]
 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
**PLAN_TABLE [#p720df63]
Oracle9i
 \oracle\ora92\rdbms\admin\utlxplan.sql
Oracle10g
 \oracle\product\10.1.0\Db_1\RDBMS\ADMIN\utlxplan.sql

**今実行されているSQLを知りたい
**今実行されているSQLを知りたい [#o661366c]
 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;  
**別のテーブルの値で更新したい場合
**別のテーブルの値で更新したい場合 [#dbc0e6e7]
テーブル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
**Enterprise Manager [#vb5ae452]
10gよりEnterprise Managerにブラウザからアクセスするようになりました。サービスのdbconsoleが起動しているのを確認してORACLE_HOME/install/portlist.iniを参照しましょう。
http://localhost:1158/em

**フラッシュバック
**フラッシュバック [#ref624e7]
9iからも一部実装されてましたが、過去に消したデータやテーブルを復活させることができます。このために10gにする価値はあります。
***テーブルを消した場合
***テーブルを消した場合 [#hc5aab92]
 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
**Caused by: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column [#d1a2abde]
JDBCで接続している場合このエラーがでたら、JDBCのバージョンを見直してみましょう。~
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31968&forum=12&6

**マテリアライズド・ビュー・ログは最終リフレッシュよりも新しいものです。のエラーが出た場合
**マテリアライズド・ビュー・ログは最終リフレッシュよりも新しいものです。のエラーが出た場合 [#d142f80a]
 DECLARE
 debug BINARY_INTEGER;
 BEGIN
 DBMS_MVIEW.REFRESH_ALL_MVIEWS(debug,'?','',FALSE,FALSE);
 END;
 /
 
** オプティマイザ統計情報の手動収集
** オプティマイザ統計情報の手動収集 [#fe56cebf]
 exec DBMS_STATS.GATHER_SCHEMA_STATS ('ユーザ名', estimate_percent=>dbms_stats.auto_sample_size);

** リスナーが起動せん
** リスナーが起動せん [#cd605402]
listener.logが4GBを超えた為、Listenerが起動できていなかった。~
http://mattari-oboe.blogspot.jp/2014/10/oracle-listenerlog4gb.html

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

** テーブルスペース移動
** テーブルスペース移動 [#k2610a42]
 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
** リンク
** リンク [#edf4d819]

** 参考書籍
** 参考書籍 [#g0b6f67f]

** コメント
** コメント [#ke28f5b6]
-#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS