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;

Friday, June 29, 2012

Oracle数据库监控脚本


  1. 检查实例的可用性
  2. 检查监听器的可用性
  3. 检查alert日志文件中的错误信息
  4. 在存放log文件的地方满以前清空旧的log文件
  5. 分析table和index以获得更好的性能
  6. 检查表空间的使用情况
  7. 找出无效的对象
  8. 监控用户和事务

显示服务器上的可用实例:

$ 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

oracle删除表

select 'drop table '||tname|| '; ' from tab;

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的原则

    1. sga_target <= sga_max_size

    2. 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 → 未递交的事务.

Wednesday, April 21, 2010

为什么叫oracle1.com

凡是名都有意义,字就是代号。博客名从前一直叫"Fred Chu's Weblog",当然是不知道该叫什么好才取了这个名,现在叫Oracle One,一是因为有了自己的顶级域名,虽然不是那么牛,几个字母加数字的混合.

但是在这个年代,注册一个简短但又有意思的域名真的太难了,本来想叫做DBA什么的,但是因为Oracle公司现在收购了SUN,所以就注册了oracle1.com这域名,意思就是说Oracle是No1的意思,虽然BLOG内容似乎与Oracle并没什么联系,但是这却成了一个可以填补的空白,就好像这是一支潜力股。

网络的未来属于Web与HTML.

Wednesday, February 24, 2010

不停地安装Oracle

今天在Xen上运行了两个2GB内存实例的CentOS5.3虚拟机安装oracle10g, 可是一直出现
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:15

ORACLE 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了 ;)

JAVAMYSQL,再到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