Showing posts with label oracle. Show all posts
Showing posts with label oracle. Show all posts
Friday, May 30, 2014
The best command to create raw datafile used by Oracle database
Oracle recommends creating new datafiles on devices with zero offset. The command "/usr/sbin/mklv -y LVname -T O -w n -s n -r n VGname NumPPs" can be used. Please contact Oracle customer support for more details.
Monday, March 31, 2014
How to trace a user login in oracle database
trace oracle user login
alter session set tracefile_identifier='login_test'; alter session set events '10046 trace name context forever ,level 12' conn fucker/larry alter session set events '10046 trace name context off' ;
Thursday, March 6, 2014
Auto Kill Bloking Session on Oracle Database with SQL
DECLARE
CURSOR c1 IS select process,sid,serial#, blocking_session from v$session where blocking_session is not null;
i NUMBER:= 0;
BEGIN
FOR e_rec IN c1 LOOP
i:= i+1;
EXECUTE immediate 'ALTER SYSTEM KILL SESSION ' ||''''|| e_rec.sid ||','|| e_rec.serial# ||''' ';
END LOOP;
END;
/
Monday, July 1, 2013
One liner to download Oracle JDK with wget
wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk-7u17-download-1501626.html;" http://download.oracle.com/otn-pub/java/jdk/7u25-b15/jdk-7u25-linux-i586.tar.gz --no-check-certificate -O jdk-7u25-linux-i586.tar.gz
Sunday, June 30, 2013
Create a read only monitor user to Oracle database
需要 SYSDBA 权限。
CREATE USER nagios IDENTIFIED BY oradbmon;
GRANT CREATE SESSION TO nagios;
GRANT SELECT any dictionary TO nagios;
GRANT SELECT ON V_$SYSSTAT TO nagios;
GRANT SELECT ON V_$INSTANCE TO nagios;
GRANT SELECT ON V_$LOG TO nagios;
GRANT SELECT ON SYS.DBA_DATA_FILES TO nagios;
GRANT SELECT ON SYS.DBA_FREE_SPACE TO nagios;
Sunday, February 17, 2013
Friday, June 29, 2012
Oracle数据库监控脚本
- 检查实例的可用性
- 检查监听器的可用性
- 检查alert日志文件中的错误信息
- 在存放log文件的地方满以前清空旧的log文件
- 分析table和index以获得更好的性能
- 检查表空间的使用情况
- 找出无效的对象
- 监控用户和事务
显示服务器上的可用实例:
$ ps -ef | grep smon oracle 21832 1 0 Feb 24 ? 19:05 ora_smon_oradb1 oracle 898 1 0 Feb 15 ? 0:00 ora_smon_oradb2 dliu 25199 19038 0 10:48:57 pts/6 0:00 grep smon oracle 27798 1 0 05:43:54 ? 0:00 ora_smon_oradb3 oracle 28781 1 0 Mar 03 ? 0:01 ora_smon_oradb4
显示服务器上的可用监听器:
$ ps -ef | grep listener | grep -v grep oracle 23879 1 0 Feb 24 ? 33:36 /8.1.7/bin/tnslsnr listener_db1 -inherit oracle 27939 1 0 05:44:02 ? 0:00 /8.1.7/bin/tnslsnr listener_db2 -inherit oracle 23536 1 0 Feb 12 ? 4:19 /8.1.7/bin/tnslsnr listener_db3 -inherit oracle 28891 1 0 Mar 03 ? 0:01 /8.1.7/bin/tnslsnr listener_db4 -inherit
查看Oracle存档目录的文件系统使用情况
$ df -k | grep oraarch /dev/vx/dsk/proddg/oraarch 71123968 4754872 65850768 7% /u09/oraarch
列出alert.log文件中的全部Oracle错误信息:
$ grep ORA- alert.log ORA-00600: internal error code, arguments: [kcrrrfswda.1], [], [], [], [], [] ORA-00600: internal error code, arguments: [1881], [25860496], [25857716], []
检查Oracle实例的可用性
oratab文件中列出了服务器上的所有数据库$ cat /var/opt/oracle/oratab ############################################################ ## /var/opt/oracle/oratab ## ############################################################ oradb1:/u01/app/oracle/product/8.1.7:Y oradb2:/u01/app/oracle/product/8.1.7:Y oradb3:/u01/app/oracle/product/8.1.7:N oradb4:/u01/app/oracle/product/8.1.7:Y
以下的脚本检查oratab文件中列出的所有数据库,并且找出该数据库的状态(启动还是关闭)
## ckinstance.ksh ## ORATAB=/var/opt/oracle/oratab echo `date` echo Oracle Database(s) Status `hostname` : db=`egrep -i :Y|:N $ORATAB | cut -d: -f1 | grep -v # | grep -v *` pslist=`ps -ef | grep pmon` for i in $db ; do echo $pslist | grep ora_pmon_$i > /dev/null 2>$1 if (( $? )); then echo Oracle Instance - $i: Down else echo Oracle Instance - $i: Up fi done
使用以下的命令来确认该脚本是可以执行的:
$ chmod 744 ckinstance.ksh $ ls -l ckinstance.ksh -rwxr--r-- 1 oracle dba 657 Mar 5 22:59 ckinstance.ksh*
以下是实例可用性的报表:
Thursday, April 19, 2012
Friday, September 2, 2011
AWR报告生成
一.生成AWR报告
[cce lang='text' line_numbers='false'][ractest@sun880-1 /u01/app/oracle/orahome/rdbms/admin]$ cd $ORACLE_HOME/rdbms/admin
[ractest@sun880-1 /u01/app/oracle/orahome/rdbms/admin]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Sun Jan 27 20:47:38 2008
Copyright (c) 1982, 2007, Oracle. All Rights Reserved/span>.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> @awrrpt
......[/cce]
//根据Oracle提示生成报告......
注:报告生成在[cci]$ORACLE_HOME/rdbms/admin/[/cci]目录下。
二.修改awr的默认设置
//半小时采集一次,采集信息保存3天。
[cce lang='sql' line_numbers='false']SQL>exec dbms_workload_repository.modify_snapshot_settings (interval=>30,retention =>3*24*60);[/cce]
三.关闭AWR自动收集
[cce lang='sql' line_numbers='false']SQL>exec dbms_workload_repository.modify_snapshot_settings (interval=>0,retention =>24*60);[/cce]
注:10g默认是自动开启awr信息收集的,会对系统有一定的影响(很小);如果要关闭awr信息收集,只需设置interval参数为0即可。但interval设0后,AWR报告无法生成。
Oracle常用命令
一.基础SQL语句
- 查:select * from employees;
- 增:insert into employees (Name , Birthday , Location , Salary) values ('hyddd','1984-10-1','guangzhou',999999);
- 改:update employees set Salary=999999999 where Name='hyddd';
- 删:delete from employees where name='zhangsan';
更多技巧请参考:SQL基本语句
二.PFile,SPFile管理
- SPFile->PFile:
##用生成对应SID的spfile生成pfile,生成的pfile位置:$ORACLE_HOME/dbs/init$ORACLE_SID.ora
SQL> create pfile from spfile;
--------
##自己指定生成文件的位置
SQL> create pfile='/home/oracle/initorcl.ora' from spfile;- PFile->SPFile
SQL> create spfile from pfile;
三.启动,关闭数据库
- 启动
SQL>startup
- 关闭
SQL>shutdown normal
SQL>shutdown transactional
SQL>shutdown immediate
SQL>shutdown abort
四.修改SGA参数
- 修改SGA的原则
- sga_target <= sga_max_size
- SGA加上PGA等其他进程占用的内存必须少于机器物理内存。
- 命令
SQL>alter system set sga_max_size=2048m scope=spfile;
SQL>alter system set sga_target=2048m scope=spfile;
##修改SGA的相关参数,只能spfile,然后重启数据库。不能直接scope=both!
五.查询Oracle配置参数- 命令
SQL>show parameter;
- 具体查询某个Oracle参数,只需输入部分关键字即可,比如:查询sga_target的值。
SQL> show parameter sga;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 2G
sga_target big integer 2G
SQL>
Friday, August 20, 2010
Oracle的redo和undo区别
写的次序:
redo → undo → datafile
insert一条记录时, 表跟undo的信息都会放进 redo 中, 在commit 或之前, redo 的信息会放进硬盘上. 故障时, redo 便可恢复那些已经commit 了的数据.
redo → 每次操作都先记录到redo日志中,当出现实例故障(像断电),导致数据未能更新到数据文件,则数据库重启时须redo,重新把数据更新到数据文件
undo → 记录更改前的一份copy,但你系统rollback时,把这份copy重新覆盖到原来的数据
redo → 记录所有操作,用于恢复(redo records all the database transaction used for recovery)
undo → 记录所有的前印象,用于回滚(undo is used to store uncommited data infor used for rollback)
redo → 已递交的事务,实例恢复时要写到数据文件去的
undo → 未递交的事务.
redo → undo → datafile
insert一条记录时, 表跟undo的信息都会放进 redo 中, 在commit 或之前, redo 的信息会放进硬盘上. 故障时, redo 便可恢复那些已经commit 了的数据.
redo → 每次操作都先记录到redo日志中,当出现实例故障(像断电),导致数据未能更新到数据文件,则数据库重启时须redo,重新把数据更新到数据文件
undo → 记录更改前的一份copy,但你系统rollback时,把这份copy重新覆盖到原来的数据
redo → 记录所有操作,用于恢复(redo records all the database transaction used for recovery)
undo → 记录所有的前印象,用于回滚(undo is used to store uncommited data infor used for rollback)
redo → 已递交的事务,实例恢复时要写到数据文件去的
undo → 未递交的事务.
Wednesday, April 21, 2010
为什么叫oracle1.com
但是在这个年代,注册一个简短但又有意思的域名真的太难了,本来想叫做DBA什么的,但是因为Oracle公司现在收购了SUN,所以就注册了oracle1.com这域名,意思就是说Oracle是No1的意思,虽然BLOG内容似乎与Oracle并没什么联系,但是这却成了一个可以填补的空白,就好像这是一支潜力股。
网络的未来属于Web与HTML.
Thursday, March 11, 2010
Oralce master-slave replication
Wednesday, February 24, 2010
不停地安装Oracle
今天在Xen上运行了两个2GB内存实例的CentOS5.3虚拟机安装oracle10g, 可是一直出现
[cc lang='bash' ] ./runInstaller -silent -ignoreSysPrereqs -responseFile /home/oracle/database/install/response/ee.rsp[/cc]
我想这是因为网络问题引起监听没有启动,所以,安装完成后直接运行
[cc]/opt/oracle/product/10.2.01/db_1/cfgtoollogs/configToolAllCommands[/cc]
接着在另外一个终端启动监听
[cc]lsnrctl start[/cc]
由于是动态监听.所以要大概30秒之后启动成功,注意是要在 PMON 服务进程启动成功之后才能运行 [cci]lsnrctl start[/cci]. 也就是说要在 [cci]/opt/oracle/product/10.2.01/db_1/cfgtoollogs/configToolAllCommands[/cci] 脚本建立数据库完成,创建实例并成功启动之后,也就是大概脚本运行到80%左右的时候.最后启动 em Web管理.
[cc] emctl start dbconsole[/cc]
EM启动有问题(我就遇到1158的java进程一直defunct状态,但是emangent却起来了),重新建立EM资料库,重新启动服务器.
[cc] emca -config dbcontrol db -repos recreate[/cc]
(*)update
后来发现是因为缺少 libXp.so.6 而不能启动的(我想oracle应该有trace的工具,但是我现在还不知道怎么用,就想gdb或者strace一样?),于是在CentOS5.3上安装了 libXp 的RPM问题解决.
Configuration assistant "Oracle Net Configuration Assistant" failed
[cc lang='bash' ] ./runInstaller -silent -ignoreSysPrereqs -responseFile /home/oracle/database/install/response/ee.rsp[/cc]
我想这是因为网络问题引起监听没有启动,所以,安装完成后直接运行
[cc]/opt/oracle/product/10.2.01/db_1/cfgtoollogs/configToolAllCommands[/cc]
接着在另外一个终端启动监听
[cc]lsnrctl start[/cc]
由于是动态监听.所以要大概30秒之后启动成功,注意是要在 PMON 服务进程启动成功之后才能运行 [cci]lsnrctl start[/cci]. 也就是说要在 [cci]/opt/oracle/product/10.2.01/db_1/cfgtoollogs/configToolAllCommands[/cci] 脚本建立数据库完成,创建实例并成功启动之后,也就是大概脚本运行到80%左右的时候.最后启动 em Web管理.
[cc] emctl start dbconsole[/cc]
EM启动有问题(我就遇到1158的java进程一直defunct状态,但是emangent却起来了),重新建立EM资料库,重新启动服务器.
[cc] emca -config dbcontrol db -repos recreate[/cc]
(*)update
后来发现是因为缺少 libXp.so.6 而不能启动的(我想oracle应该有trace的工具,但是我现在还不知道怎么用,就想gdb或者strace一样?),于是在CentOS5.3上安装了 libXp 的RPM问题解决.
Friday, February 5, 2010
Oracle Workforce Development Program
Oracle Workforce Development Program 简称WDP,中文为“甲骨文职业发展计划”,目的在于让更多的非专业DBA拿到OCP认证,目前WDP在国内大力推广,在重庆我也报名了。15天的课程被压缩到12天(每天多上几个小时?)。价格为10700,优惠为10350。但是今天却有人说(免费给C-BASE广告一下):
重庆ORACLE WDP_suki(1142980521) 2010-2-4 11:25:15ORACLE WDP西南中心和成都高新区合作.如公司在高新区注册及办公的公司员工学习OCP原厂培训三门课程+三门考试+1K的原厂教材仅需5350元...详情咨询023-78563505 刘小姐QQ客服-1142980521
我头都气大了,1W的费用降为5000,我靠这不是变向降价吗,要不是冲着OCP的国际认证,我真的要置疑WDP的含金量,其实这也反应出成都市在科技方面的投入,而重庆政府呢?大家都看得到。
Wednesday, February 3, 2010
Hello Oracle One
今天把从2006开始的BLOG迁移到了DH上面,域名换成了Oracle1.com。因为我现在已经是Oracle的fans了 ;)
从JAVA到MYSQL,再到LINUX,乃至根本的ORACLE DATABASE。都是我的研究方向,因为他们都属于ORACLE的业务!
Oracle One, This is!
从JAVA到MYSQL,再到LINUX,乃至根本的ORACLE DATABASE。都是我的研究方向,因为他们都属于ORACLE的业务!
Oracle One, This is!
Tuesday, November 20, 2007
Oracle Startup Script
#!/bin/sh
#
# dbora This scripts starts and shuts down the
# oracle database
#
# chkconfig: 345 99 10
# description: This script calls the dbstart script
# to start Oracle
# and dbshut to stop it
# processname: oracle*
# config: /etc/oratab
#
# Set ORACLE_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 ORACLE_HOME.
export ORACLE_BASE=/opt/oracle10
export ORACLE_HOME=/opt/oracle10
export ORACLE_SID=DSSDB
ORACLE_HOME=/opt/oracle10
ORA_OWNER=oracle
if [ ! -f $ORACLE_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
su $ORA_OWNER -c $ORACLE_HOME/bin/dbstart &
su $ORA_OWNER -c "$ORACLE_HOME/bin/lsnrctl start" &
;;
'stop')
su $ORA_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop " &
su $ORA_OWNER -c $ORACLE_HOME/bin/dbshut &
;;
'restart')
su $ORA_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop " &
su $ORA_OWNER -c $ORACLE_HOME/bin/dbshut &
sleep 15
su $ORA_OWNER -c $ORACLE_HOME/bin/dbstart &
su $ORA_OWNER -c "$ORACLE_HOME/bin/lsnrctl start " &
;;
esac
Subscribe to:
Posts (Atom)