0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle関連備忘録(運用編)

Last updated at Posted at 2020-08-24

パスワードの有効期限を確認する

SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_LIFE_TIME';

表領域の情報を確認する

SELECT
  DF.TABLESPACE_NAME AS "表領域名",
  DF.FILE_NAME AS "DBFファイル",
  DF.STATUS AS "ファイルの状態",
  DF.ONLINE_STATUS AS "オンライン状態",
  DF.AUTOEXTENSIBLE AS "自動拡張設定",
  TO_CHAR((DF.BYTES / 1024 / 1024),'999999999') AS "ファイルサイズ(MB)",
  DS.FREE_BYTES AS "残り空きサイズ(MB)",
  ROUND((1-(DS.FREE_BYTES / TO_CHAR((DF.BYTES / 1024 / 1024),'999999999')))*100,1) AS "使用率(%)"
FROM SYS.DBA_DATA_FILES DF
LEFT OUTER JOIN
  (SELECT DS.FILE_ID, TO_CHAR((SUM(DS.BYTES) / 1024 / 1024),'999999999') AS FREE_BYTES 
   FROM DBA_FREE_SPACE DS GROUP BY DS.FILE_ID) DS
  ON DF.FILE_ID = DS.FILE_ID
ORDER BY DF.TABLESPACE_NAME, DF.FILE_ID

表領域(データファイル)のサイズを変更する

ALTER DATABASE DATAFILE '/DATA/XXXX.DBF' RESIZE 9999M;

データファイルを追加する

ALTER TABLESPACE INDX ADD DATAFILE '/DATA/XXXX.DBF' SIZE 30G;

データベースバッファキャッシュを確認する

select
  o.object_name,
  blsiz,
  count(*) blocks
from
  x$bh b,
  dba_objects o
where
  b.obj = o.data_object_id and b.ts# > 0
group by o.object_name, blsiz
order by blocks desc;

表領域の使用状況を確認する

select
  tablespace_name,
  to_char(nvl(total_bytes / 1024 / 1024,0),'999,999,999') as "size(MB)",
  to_char(nvl((total_bytes - free_total_bytes) / 1024 / 1024,0),'999,999,999') as "used(MB)",
  to_char(nvl(free_total_bytes/1024 / 1024,0),'999,999,999') as "free(MB)",
  round(nvl((total_bytes - free_total_bytes) / total_bytes * 100,100),2) as "rate(%)"
from
  ( select
  tablespace_name,
  sum(bytes) total_bytes
  from
  dba_data_files
  group by
  tablespace_name
  ),
  ( select
  tablespace_name free_tablespace_name,
  sum(bytes) free_total_bytes
  from
  dba_free_space
  group by tablespace_name
  )
where
  tablespace_name = free_tablespace_name(+);

DBオブジェクトを確認する

例としてテーブルの場合

select object_name, created, timestamp from user_objects
where object_type='table'order by object_name;

SQL実行履歴を確認する

select last_active_time,parsing_schema_name,sql_text from v$sqlarea
where parsing_schema_name <> 'SYS'
  and parsing_schema_name <> 'SYSMAN'
  and parsing_schema_name <> 'DBSNMP'
  and parsing_schema_name <> 'MDSYS'
  and parsing_schema_name <> 'EXFSYS'
order by last_active_time asc;

統計情報を更新する(スキーマ単位)

OPTIONSは"GATHER=全オブジェクトが対象"、"GATHER AUTO=Oracleが必要とするオブジェクトが対象"となる。他にもあるが良くつかうのはこの2つ。

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS (OWNNAME => 'スキーマ名', OPTIONS => 'GATHER AUTO');

セッション・プロセスを確認する

select * from v$resource_limit
where resource_name = 'processes' or resource_name = 'sessions';
select * from V$SESSION where username='XXXX' and machine='XXXX';

コネクションを確認する

SELECT
     SID,USERNAME,STATUS,OSUSER,MACHINE,SQL_TEXT
 FROM
     V$SQLAREA,V$SESSION
 WHERE
     V$SQLAREA.ADDRESS(+)=V$SESSION.PREV_SQL_ADDR
 AND USERNAME='XXXX';

dmpファイルをエクスポートする

expdp ユーザーID/パスワード@DB schemas=スキーマ名 directory=Oracleディレクトリ名 dumpfile=XXXX.dmp logfile=xpdp.log exclude=statistics reuse_dumpfiles=YES

Oracleのバージョンを確認する

SELECT * FROM V$VERSION;

Oracleのパラメータ

以下2つの方法で扱うことになる
・テキスト形式のpfile(初期化パラメータ・ファイル)
・バイナリ形式のSPFILE(サーバー・パラメータ・ファイル)

Oracle接続方法

1.ローカル・ネーミング
 TNS(tnsnames.ora)に書かれた接続情報を用いて接続する方法
2.簡易接続ネーミング
 TNS(tnsnames.ora)を使わずに接続することが出来る方法
 例: sqlplus username/password@ホスト名:ポート番号/サービス名

重要ファイル① 制御ファイルについて

DBに必要不可欠で、少なくとも2ファイル以上存在している必要がある
デフォルトでは3ファイル作成される、中身はバイナリファイル(拡張子ctl)
複数ファイルのうち、1つが仮に壊れたとしても、正常な1つをコピーして復元すればよい

制御ファイルを確認するコマンドは以下。

show parameters control_files;

重要ファイル② データファイルについて

DBに必要不可欠
表領域と紐づいて存在する
中身はバイナリファイル(拡張子dbf)

重要ファイル➂ オンラインREDOログファイルについて

データの変更内容のコピーが保管される
v$logfileビューで確認可能

Sql plusをもっと見やすくする

--1行の長さを設定する
set linesize 1000;

ネットワークファイル

1.tnsnames.ora
 クライアント側に置かれるファイル
 ただし、サーバー側にもDB作成とともに作成される
 役割:接続情報を定義しておくもの
 重要なのは、listener.oraとの関連は全く無いということ
 (ADDRESS = ・・・の一文で指定しているPORTがリスナーのPORTであり、
 リスナーとDBがマッピングされるのは、この一文の指定でのみである 
 例:
 oradb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DB01)
)
)

「SID」と「SERVICE_NAME」は基本的には同じになっているはず。
接続する際に、SERVICE_NAMEにDB01を指定しても、SIDにDB01を指定しても繋がる。

2.sqlnet.ora
 サーバー側に置かれるファイル
 役割:どんな名前解決ルールでアクセスを受け付けるか
 ・SQLNET.AUTHENTICATION_SERVICES(認証方式)
  ・none ⇒認証方式を使用しない、ユーザーとパスワードを指定して認証する方法だけが使える
  ・all ⇒OS認証等、全ての認証方式を使用する
  ・nts ⇒WindowsOS認証方式を使用する
  他もあるが使わないので割愛
 ・NAMES.DIRECTORY_PATH(ネーミングメソッドの優先順)
  ・tnsnames ⇒クライアント上のtnsnames.oraファイル
  ・ldap ⇒LDAP
  ・ezconnectまたはhostname ⇒簡易接続
  ・nls ⇒外部ネーミングメソッド
 ・NAMES.DEFAULT_DOMAIN(接続識別子にドメインが省略された場合のデフォルトドメイン)

3.listener.ora
 サーバー側に置かれるファイル
 役割:リスナーの設定ファイル
 以下のサイトが詳しい
 https://oracle-chokotto.com/ora_nwfile.html
 例:
 LISTENER =  ←ここはリスナー名である(何を指定してもよい)
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ホスト名)(PORT = 1521))
)
)
上記があればクライアント用リスナーが定義されたことになり、通信できる
リスナーの数だけ上記定義を作るイメージ

例:以下は、ファイル内に1つだけ定義がある。そのままでも動くような。
  明示的に定義するなら、SID_DESCのブロックをDBごとに増やす
 SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\ora\product\12.1.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\ora\product\12.1.0\dbhome_1\bin\oraclr12.dll")
)
)

リスナーへの登録について

・静的な登録とは
 Oracleのlistener.oraファイルに定義を追加する方法。(ファイルを手作業で直接編集する、またはOracleが提供する各種GUIツール経由で編集する)

・動的な登録とは
 各DBごとのパラメータ(local_listner)に、リスナー名を設定する方法。(alter systemコマンドで設定する)

登録がされていないと、「ORA-12514」「ORA-12505」どちらかのエラーが発生し、DBに接続することが出来ない
リスナーのポートをデフォルトの1521で利用するとさまざまな設定を簡略化され、 バージョンによってはリスナーの設定作業自体が不要になる

用語

・正規化 データを複数の表に分けることで重複を避けること。
・DML データ操作言語(SELECTとか)
・DDL データ定義言語(CREATEとか)
・DCL データ制御言語(COMMITとか)
・パーティショニング 1つの表にあるデータを、内部的に表を分割した状態で持つことで、効率的にデータを読める。いくつか種類がある。
 ・レンジパーティション 期間
 ・リストパーティション 項目
 ・ハッシュパーティション 分散
・リダクション データにマスクをかけることができる機能。
 

その他:参考サイト

■Oracleの識別子周り
http://www.shift-the-oracle.com/config/oracle_sid-db_name-global_name.html

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?