2012/01/18
2010/10/21
セッションタイムアウト
概要
何らかの理由で、Oracle Database Server 側にセッションが残る場合がある。
プロファイルの CONNECT_TIME , IDLE_TIME を設定することで、セッションを終了させる事が出来る。
この機能を有効にするには、RESOURCE_LIMIT を TRUE に設定する必要がある。
確認
RESOURCE_LIMITを確認 (初期値はFALSE)
設定
RESOURCE_LIMITを有効にする
ユーザにプロファイルを割り当てる
プロファイルを削除する。
PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT
DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED
DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED
DEFAULT CPU_PER_SESSION KERNEL UNLIMITED
DEFAULT CPU_PER_CALL KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED
DEFAULT IDLE_TIME KERNEL UNLIMITED
DEFAULT CONNECT_TIME KERNEL UNLIMITED
DEFAULT PRIVATE_SGA KERNEL UNLIMITED
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITED
何らかの理由で、Oracle Database Server 側にセッションが残る場合がある。
プロファイルの CONNECT_TIME , IDLE_TIME を設定することで、セッションを終了させる事が出来る。
この機能を有効にするには、RESOURCE_LIMIT を TRUE に設定する必要がある。
確認
RESOURCE_LIMITを確認 (初期値はFALSE)
SHOW PARAMETER RESOURCE_LIMITユーザのプロファイルを確認 (注)ユーザは、明示してプロファイル指定しなければ、「DEFAULT」プロファイルが適用される
SELECT USERNAME, PROFILE FROM DBA_USERS;プロファイルの内容を確認 (注)プロファイルDEFAULTのCONNECT_TIME,IDLE_TIMEは共にUNLIMITEDが初期値である。
SELECT * FROM DBA_PROFILES;
設定
RESOURCE_LIMITを有効にする
ALTER SYSTEM SET RESOURCE_LIMIT = TRUE;(注)上記はデータベースの再起動なく変更できるが、再起動すると無効となるため、初期化パラメータに設定する必要がある。
ユーザにプロファイルを割り当てる
ALTER USER xxx IDENTIFIED BY XXXXX PROFILE aaa;プロファイルを作成する。
create profile test01 limit idle_time 100 connect_time 1000(注)IDLE_TIME,CONNECT_TIME共に単位は分。
プロファイルを削除する。
DROP PROFILE aaa;資料-DEFAULT
PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT
DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED
DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED
DEFAULT CPU_PER_SESSION KERNEL UNLIMITED
DEFAULT CPU_PER_CALL KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED
DEFAULT IDLE_TIME KERNEL UNLIMITED
DEFAULT CONNECT_TIME KERNEL UNLIMITED
DEFAULT PRIVATE_SGA KERNEL UNLIMITED
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITED
ラベル:
Oracle Database
2010/10/17
INACTIVEの状況を確認する
次のSQLで、アイドル時間を調べる。
SELECT SID,USERNAME,STATUS,LOGON_TIME,LAST_CALL_ET FROM V$SESSION;
select sid,username,status,last_call_et from v$session where status='INACTIVE' order by last_call_et desc;last_call_et は秒。
ラベル:
Oracle Database
2010/07/15
最大オープン・カーソル数を超えました。
状況
ホスト言語プログラムがオープンしようとしているカーソルの数が多すぎます。1ユーザー当たり(セッション毎)のカーソルの最大数は、初期化パラメータOPEN_CURSORSによって決定されています。
対応
1.初期パラメータを調べる。
a)不正なプログラムを修正する。
次のSQLを実行し、同じSQLが多数ある場合はクローズしていない可能性がある。
ORA-01000 最大オープン・カーソル数を超えました。原因
ホスト言語プログラムがオープンしようとしているカーソルの数が多すぎます。1ユーザー当たり(セッション毎)のカーソルの最大数は、初期化パラメータOPEN_CURSORSによって決定されています。
対応
1.初期パラメータを調べる。
SQL> SHOW PARAMETER OPEN_ CURSORS2.現在の状況を調べる。
SQL> SELECT SID, USER_NAME, COUNT(SID) FROM V$OPEN_CURSOR GROUP BY SID,USER_NAME3.処置する。
a)不正なプログラムを修正する。
次のSQLを実行し、同じSQLが多数ある場合はクローズしていない可能性がある。
SQL> SELECT SID, USER_NAME, SQL_TEXT FROM V$OPEN_CURSOR;b)初期パラーメータを変更する。
ラベル:
Oracle Database
2010/04/09
フラッシュリカバリ領域のアーカイブログをOSコマンドで消してしまったとき
flash_recovery_areaのアーカイブログファイルをOSコマンドで削除してしまうと管理上のサイズと不一致を起こす。
回復手順
rman target / nocatalog
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE EXPIRED ARCHIVELOG ALL;
回復手順
rman target / nocatalog
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE EXPIRED ARCHIVELOG ALL;
ラベル:
Oracle Database
2010/03/13
ネーミング・メソッド
環境
Oracle Databse 10g R2ネーミング・メソッド
データベース・サーバーへのクライアント接続に関する接続ための方法- ローカル・ネーミング クライアントのtnsnames.oraファイルに格納されたネット・サービス名を解決します。
- ディレクトリ・ネーミング 集中化されたLDAP準拠のディレクトリ・サーバーに格納されたデータベースのサービス名、ネット・サービス名またはネット・サービス別名を解決します。
- 簡易接続ネーミング 構成を行うことなく、データベース・サーバーにクライアントを接続できます。クライアントは、ホスト名、オプション・ポート、サービス名から構成される簡単なTCP/IPアドレスの接続文字列を使用します。
CONNECT username/password@host[:port][/service_name] - 外部ネーミング サード・パーティ製のネーミング・サービスに格納されているサービス情報を解決します。
tnsnames.oraサンプル
sales=
(DESCRIPTION=
(ADDRESS= (PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.acme.com)))
簡易接続ネーミング・メソッド構成検証手順
- Oracle Net Managerを起動します。
- ナビゲータ・ペインで、「ローカル」→「プロファイル」を展開します。
- 右ペインのリストから、「ネーミング」を選択します。
- 「メソッド」タブをクリックします。
「選択メソッド」リストにEZCONNECTがリストされていることを確認します。リストされていない場合は、ステップ5に進みます。 - 「使用可能なメソッド」リストから「EZCONNECT」を選択し、右矢印ボタンをクリックします。
- 「選択メソッド」リストから「EZCONNECT」を選択し、「上へ」ボタンを使用して選択済項目をリストのトップに移動します。
- 「ファイル」→「ネットワーク構成の保存」を選択します。
sqlnet.oraファイルは、NAMES.DIRECTORY_PATHパラメータで更新され、次のようにhostnameが最初に表示されます。
NAMES.DIRECTORY_PATH=(ezconnect, tnsnames)
Ref. http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/network.102/B19208-02/naming.htm
ラベル:
Oracle Database
WindowsでOracleインスタンスが自動起動しない
環境
Windows 2003 Server R2 SP2Oracle Database Server 10g R2
チェックポイント
1. Windowsサービス「OracleService[SID名]」のスタートアップの種類を「自動」にする。2. レジストリのORA_[SID名]_AUTOSTARTの値を「TRUE」にする。
3. ORACLE_HOME\NETWORK\ADMIN\sqlnet.oraで SQLNET.AUTHENTICATION_SERVICES =(NONE)を設定する。
x. NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ラベル:
Oracle Database
2010/03/02
Oracle Database 11gR2 リスナーの作成
ユーザ oracle でOSにログインし、Oracle Net Condiguration Assistant を起動する。
2.「追加」を選択
3.「リスナー名」←LISTENER
4.「選択済プロトコル」←TCP
5.「標準ポート番号の1521を使用」を選択
6. 他のリスナーを構成しますか←いいえ
7. 次へ
8. 完了
$ netca1.「リスナー構成」を選択
2.「追加」を選択
3.「リスナー名」←LISTENER
4.「選択済プロトコル」←TCP
5.「標準ポート番号の1521を使用」を選択
6. 他のリスナーを構成しますか←いいえ
7. 次へ
8. 完了
ラベル:
Oracle Database
Oracle Database 11g R2 をインストール
環境
Oracle Enterprise Linux 5Oracle Database 11g R2
ハードウェア VMware Server 2.0.2 VM, メモリ1GB, ディスク20GB
パッケージのインストール
# yum -y install binutils実際はこれで可能
# yum -y install compat-libstdc++-33
# yum -y install elfutils-libelf
# yum -y install elfutils-libelf-devel
# yum -y install glibc
# yum -y install glibc-common
# yum -y install glibc-devel
# yum -y install glibc-headers
# yum -y install gcc
# yum -y install gcc-c++
# yum -y install libaio
# yum -y install libaio-devel
# yum -y install libgcc
# yum -y install libstdc++
# yum -y install libstdc++-devel
# yum -y install make
# yum -y install sysstat
# yum -y install unixODBC-2.2.11
# yum -y install unixODBC-devel-2.2.11
yum -y install elfutils-libelf-devel
yum -y install glibc-devel
yum -y install glibc-headers
yum -y install gcc
yum -y install gcc-c++
yum -y install libaio
yum -y install libaio-devel
yum -y install sysstat
yum -y install unixODBC-2.2.11
yum -y install unixODBC-devel-2.2.11
グループとユーザーの作成
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
カーネル・パラメータ
/etc/sysctl.confファイルを編集をします。注意:現在の値いずれかが最小値より大きい場合は、大きい値を指定します。
fs.aio-max-nr = 1048576実際にはこんな感じ
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
# Kernel sysctl configuration file for Oracle Enterprise Linuxカーネル・パラメータの現行の値を変更するには、次のコマンドを入力します。
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1
# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536
# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 4294967295
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 268435456
### for Oracle Database 11gR2
fs.aio-max-nr = 1048576
fs.file-max = 6815744
#kernel.shmall = 2097152
#kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
# /sbin/sysctl -p
ディレクトリの作成
# mkdir -p /opt/oracle/product/11.2/db_1
# chown -R oracle:oinstall /opt/oracle
# chmod -R 755 /opt/oracle
oracleユーザーのシェル制限の設定
ソフトウェアのパフォーマンスを向上させるには、oracleユーザーの次のシェル制限を増やす必要があります。シェル制限 / limits.confにある項目 / 強い制限
最大オープン・ファイル記述子数 / nofile / 65536
単一ユーザーが使用可能な最大プロセス数 / nproc / 16384
シェル制限を増やすには、次の手順を実行します。
次の行を/etc/security/limits.confファイルに追加します。
oracle soft nproc 2047次の行が存在しない場合、/etc/pam.d/loginファイルに追加します。
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
session required pam_limits.sooracleユーザーのデフォルト・シェルに応じて、デフォルトのシェル起動ファイルに次の変更をします。
次の行を/etc/profileファイルに追加します。
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
oracleユーザーの環境の構成
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
alias ls="ls -FA"
ORACLE_SID=ol5h02; export ORACLE_SID
ORACLE_UNQNAME=ol5h02; export ORACLE_UNQNAME
JAVA_HOME=/usr/java/jdk1.6.0_18; export JAVA_HOME
ORACLE_BASE=/opt/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1; export ORACLE_HOME
NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"; export NLS_DATE_FORMAT
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
NLS_LANG=Japanese_Japan.AL32UTF8; export NLS_LANG
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
umask 022
インストール
./runInstallerセキュリティ・アップデート
「セキュリティ・アップデートをMy Oracle Support経由で受け取ります」←チェックを外す
インストール・オプション
「データベース・ソフトウェアのみインストール」←選択
Gridオプション
「単一インスタンス・データベースのインストール」←選択
製品の言語
「日本語」「英語」←選択
データベースのエディション
「Standard Edition」←選択
インストール場所
「Oracleベース」← /opt/oracle
「ソフトウェアの場所」← /opt/oracle/product/11.2/db_1
インベントリの作成
「インベントリ・ディレクトリ」← /opt/oracle/oraInventory
rootでシェルを実行
$ su -:
Password: [rootのパスワードを入力]
# /opt/oracle/oraInventory/orainstRoot.sh
# /opt/oracle/product/11.2/db_1/root.sh
Enter the full pathname of the local bin directory: [/usr/local/bin]: [Enter]を入力
:
:
ラベル:
Oracle Database
Oracle Database 11gR2 データベースの作成
前提
リスナー設定が完了していること。
ユーザ oracle でログインし、Database Configuration Assistant を実行する。
2.「汎用またはトランザクション処理」を選択
3.「グローバル・データベース名」← ol5h02.hk.dom
「SID」←ol5h02
4.次へ
5.「すべてのアカウントに同じ管理パスワードを使用」←パスワードを入力
6.次へ(「記憶域のタイプ」←ファイルシステム、「記憶域の場所」←テンプレートのデータベースファイル位置を使用)
7.次へ(「フラッシュ・リカバリ領域の指定」←チェック)
8.次へ
9.次へ
10.次へ
11.完了
リスナー設定が完了していること。
ユーザ oracle でログインし、Database Configuration Assistant を実行する。
$ dbca1.「データベースの作成」を選択
2.「汎用またはトランザクション処理」を選択
3.「グローバル・データベース名」← ol5h02.hk.dom
「SID」←ol5h02
4.次へ
5.「すべてのアカウントに同じ管理パスワードを使用」←パスワードを入力
6.次へ(「記憶域のタイプ」←ファイルシステム、「記憶域の場所」←テンプレートのデータベースファイル位置を使用)
7.次へ(「フラッシュ・リカバリ領域の指定」←チェック)
8.次へ
9.次へ
10.次へ
11.完了
ラベル:
Oracle Database
Oracle Database 10g R2 をインストール
環境
Oracle Enterprise Linux 5Oracle Database 10g R2
ハードウェア VMware Server 2.0.2 VM, メモリ1GB, ディスク20GB
パッケージをインストール
yum -y install compat-gcc-34
yum -y install compat-gcc-34-c++
yum -y install compat-libstdc++
yum -y install gcc
yum -y install gcc++
yum -y install glibc-devel
yum -y install libXp
yum -y install sysstat
yum -y install compat-db
yum -y install libgomp
yum -y install setarch
yum -y install make
yum -y install libaio
yum -y install openmotif
カーネルパラメータの設定
/etc/sysctl.conf を修正する。(注)既存の設定値が大きい場合は、大きい値を使用する。kernel.sem = 250 32000 100 128変更を有効にするため、次のコマンドを実行します。
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
/sbin/sysctl -p
ユーザとグループの作成
# groupadd oinstallインストール先ディレクトリの作成
# groupadd dba
# useradd oracle -g oinstall -G dba
# passwd oracle
# mkdir /opt/oracle/product/10.2/db_1/
# chown -R oracle:oinstall /opt/oracle
# chmod -R 755 /opt/oracle
インストール
Enterprise Manager
http://[host name]:[port]/em/
e.g) http://ol5h03.private.dom:1158/em/
ラベル:
Oracle Database
Oracle Database 10g R2 の自動起動
環境
Oracle Enterprise Linux 5Oracle Database 10g R2
Oracleの自動起動に必要なファイル
/etc/oratab インスタンスの定義ファイル/etc/init.d/dbora サービスのスクリプト
$ORACLE_HOME/bin/dbstart DB起動スクリプト
$ORACLE_HOME/bin/dbstop DB停止スクリプト
oratab
/etc/oratab を編集し、インスタンスを自動起動に設定する。$ORACLE_SID:$ORACLE_HOME:[Y|N] ←Y:自動起動
orcl:/opt/oracle/product/10.2/db_1:Y
dbora
以下のスクリプトを /etc/init.d/dbora に保存(リスナーはdbstartが起動するため、dboraでは起動しない)
#!/bin/sh
#
# chkconfig: 345 99 10
# description: Oracle Database 10g R2
# proccessname: ora_
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/opt/oracle/product/10.2/db_1
ORA_OWNER=oracle
export ORACLE_HOME=$ORA_HOME
if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
start)
# Start the Oracle databases:
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart"
# Start Oracle Net
#su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
# Start emctl
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole"
touch /var/lock/subsys/dbora
;;
stop)
# Stop Oracle Net
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
# Stop the Oracle databases:
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut"
# Stop emctl
su - $ORA_OWNER -c "$ORA_HOME/bin/emctl stop dbconsole"
rm -f /var/lock/subsys/dbora
;;
restart)
$0 stop
$0 start
;;
status)
if [ -f /var/lock/subsys/dbora ]; then
echo $0 started.
else
echo $0 stopped.
fi
;;
*)
echo "usage: dbora {start|stop|restart|status}"
exit 1
esac
exit 0
以下のコマンドを実行し、自動起動を登録する。
# chmod 755 /etc/init.d/dbora
# chkconfig --add dbora
# chkconfig dbora on
# chkconfig --list dbora
dbora 0:off 1:off 2:on 3:on 4:on 5:on 6:off
dbstart
# /etc/init.d/dbora start上記エラーの解消のため、$ORACLE_HOME/bin/dbstart (78行目)を修正する。
Failed to auto-start Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr
Processing Database instance "Ora10gTest": log file /opt/oracle/product/10.2/db_1/startup.log
修正前:ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
修正後:ORACLE_HOME_LISTNER=$ORACLE_HOME
手動起動
起動# /etc/init.d/dbora start停止
# /etc/init.d/dbora stop
ログ出力
dboraスクリプトの実行ログは$ORACLE_HOME配下に出力される。shutdown.log
startup.log
ラベル:
Oracle Database
sqlplus on Linux 文字化け
環境変数を設定する。
/home/[user]/.bash_profile に設定すれば、毎回コマンドを実行する必要はない。export NLS_LANG=Japanese_Japan.AL32UTF8
ラベル:
Oracle Database
登録:
投稿 (Atom)