Jennifer Lin’s Weblog

November 26, 2009

Load excel data into Oracle table in TOAD

Filed under: TOAD — jennyca @ 1:55 pm

- Create table
- Import from Text, Excel or Access

Create table
————
Table TAB (Right Click) => Create table
Schema: RXCANADA
Table Name: “Give table a name”
Click “Load Cols From File” button

Choose “XLS File” radio button
File name to choose by browsing
Click “OK” button
Click “OK” button

Import from Text, Excel or Access
———————————
Right Click
Click “Show Data” => “Next”
Choose “Excel file (*.xls)”
File:
Choose “Treat it as empty field” => “Next”
Source: A – T => “Next” => “Next”

Import Mode:
Choose “Append: add records to the destination table”

Before Import: Choose “Truncate table” => “Execute”

Importing ……

November 15, 2009

Red Hat Linux Enterprise 5.0安装oracle11G

Filed under: Installation — jennyca @ 10:42 pm

Linux: OS: Red Hat  Linux Enterprise  5.0

SoftWare:oracle11g

一、检查硬件

1.查看RAM和交换空间以及磁盘大小

命令:#grep MemTotal /proc/meminfo (检查内存大小)

#grep SwapTotal /proc/meminfo (检查交换区大小)

#df -h  (查看磁盘大小)

#df -k /tmp (查看tmp临时文件的大小oracle11G官方文档要求大于80M即可,但是在安装过程中可能要比这大一些)

要求:
所需最小 RAM 为 256MB,而所需最小交换空间为 512M。对于 RAM 小于或等于 2GB 的系统,交换空间应为 RAM 数量的两倍;对于 RAM 大于 2GB 的系统,交换空间应为 RAM 数量的一到两倍。
Oracle 10g 软件还需要 2.5GB 的可用磁盘空间,而数据库则另需 1.2GB 的可用磁盘空间。/tmp 目录至少需要 400MB 的可用空间。

10g官方要求为:最小RAM 为1024MB, SWAP为RAM的2倍。RAM为1025MB~2048MB,SWAP为RAM的1.5倍。RAM为2049MB~8192MB,SWAP与RAM相 等。RAM大于8192MB,SWAP为RAM的0.75倍。/tmp目录至少400MB。安装Oracle 10g软件需1.5GB~3.5GB磁盘空间。Oracle数据库需要1.2GB磁盘空间。

二、验证Linux安装

1、检查内核版本

命令:

#uname -r

所需版本:2.6.18(为官方RHEL 5.0的要求)

2、检查所需软件包

命令:

#rpm -q package-name(红色字体为所需包的名称)
所需包及其版本:

binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
gcc-4.1.1-52
gcc-c++-4.1.1-52
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-headers-2.5-12
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.1-52
libstdc++-4.1.1
libstdc++-devel-4.1.1-52.e15
make-3.81-1.1
sysstat-7.0.0
*******如果有软件包未安装,插入Linux系统安装光盘,使用以下方法安装*******

#rpm -ivh package-name-major-version*

例如:#rpm -Uvh compat-db-4*

注意:(unixODBC-2.2.11.i386.rpm和unixODBC-devel-2.2.11.i386.rpm这两个包虽然 oracle11G官方文档中没有列出但是在实际的安装过程中是需要的,在oracle检测硬件,软件环境及配置信息的时候会提示警告信息以上两个文件没 有找到。以上两个文件可以在网上搜索,也可以在centOS5.ISO文件中找。笔者是偷懒从此镜像文件中拉过来用的。)

三、针对Oracle配置Linux

1、新建组和用户

*以root用户登陆,用户帐户将称为 oracle,而组将称为 oinstall 和 dba。

命令:
# /usr/sbin/groupadd oinstall (创建组)
# /usr/sbin/groupadd dba(创建组)

#/usr/sbin/useradd -g oinstall -G dba /u01/oracle  oracle(创建oracle用户并将其属主改为oinstall和dba)

*设置Oracle用户口令

命令:

passwd oracle

*创建目录

以root用户登陆

命令:
#mkdir -p /u01/oracle (创建目录文件)

#chown -R oracle:oinstall /u01/oracle (将其目录的用户和属主改为oracle和oinstall便于下面的oracle11G的安装)

# id oracle

2、文件脚本创建及编辑

*以root用户登陆,#vi /etc/sysctl.conf在此文件最后添加如下内容:

fs.file-max = 512 * PROCESSES(如果内存在1G以上此行一般可以省略。具体参照oracle11G官方文档)
kernel.shmall = 2097152(脚本文件已经定义了 修改数值即可)
kernel.shmmax = 2147483648(脚本文件已经定义了 修改数值即可)kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
保存完毕后执行下面的命令 使上面的设置有效    # /sbin/sysctl -p*以root用户登陆#vi /etc/security/limits.conf在此文件最后添加一下内容:oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536
(此参数中的oracle可以更换成*,在oracle11G的官方文档中是以oracle开始的,是为了专供oracle用户调用)*以root用户登 陆,#vi /etc/pam.d/login 文件最后添加如下内容:session    required     /lib/security/pam_limits.sosession    required     pam_limits.so*以root用户登陆在#vi /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登录*切换到oracle用户下修改其环境变量:#su – oracle#vi .bash_profile在此文件最后加入以下内容:    ORACLE_BASE=/u01    ORACLE_HOME=$ORACLE_BASE/oracle    ORACLE_SID=WCHDB1(随便起名但是一定要和安装软件中的sid对应一致)    PATH=$ORACLE_HOME/bin:$PATH    export ORACLE_BASE ORACLE_SID ORACLE_HOME PATH保存完毕后用#env |grep ora查看配置的环境变量是否正确。*将oracle11G软件包解压缩:*如果是filename.cpio.gz此类文件用以下命令进行解 压:#gunzip filename.cpio.gz
#cpio -idcmv < filename.cpio然后得到database文件。*如果是file_name.zip文件,用以下命令进行解压:
#unzip filename.zip
解压后得到database文件。得到database文件后mv(移到)到/u01目录下,并将database文件的用户和属主更改为oracle和 oinstall#chown -R oracle:oinstall database到此为止linux的环境已经都部署完毕,接下来就是oracle11G的安装。五、 安装在安装oracle11g的机子上用oracle登录到图形界面打开命令终端运行:#cd /u01/database#./runInstaller然后就会出现提示对话框,更具提示一路next接可以了!(因为安装oracle数据库要弹出 图形界面对话框所以必须登陆图形界面。等安装完毕后推出图形界面,便于节省资源!) 安装完毕后再创建数据库。

http://www.boobooke.com/bbs/viewthread.php?tid=19502&extra=page%3D1

September 19, 2009

Create an Oracle 10g DB manually

Filed under: Creation — jennyca @ 11:38 pm

1.首先要有一个参数文件

$ sqlplus “/ as sysdba”

SQL> startup nomount;

2.创建脚本,参考其他数据库

SQL> create database dbstat
2    logfile   group 1 (‘/data1/dbstat/redo1.log’) size 50M,
3              group 2 (‘/data1/dbstat/redo2.log’) size 50M,
4              group 3 (‘/data1/dbstat/redo3.log’) size 50M
5    character set          ZHS16GBK
6    national character set utf8
7    datafile ‘/data1/dbstat/system.dbf’
8              size 500M  autoextend on  next 10M maxsize unlimited extent management local
12    sysaux datafile ‘/data1/dbstat/sysaux.dbf’
13              size 500M autoextend on  next 10M  maxsize unlimited
17    undo tablespace undotbs1
18              datafile ‘/data1/dbstat/undo.dbf’  size 100M
20    default temporary tablespace temp
21              tempfile ‘/data1/dbstat/temp.dbf’ size 100M;

Database created.

3.在后台跑其他脚本

$ nohup sqlplus “/ as sysdba” @?/rdbms/admin/catalog.sql &

nohup sqlplus “/ as sysdba” @?/rdbms/admin/catproc.sql &

4.还有一个脚本要运行

这是数据库用普通用户登录会出现一个错误,提示以SYSTEM运行PUPBLD.SQL脚本

SQL> @?/sqlplus/admin/pupbld.sql

http://www.eygle.com/archives/2009/09/createoracle_10.html

August 3, 2009

Special characters in Oracle password

Filed under: Oracle Password — jennyca @ 1:01 pm

1) Passwords can be from 1 to 30 characters.
2) The first character in an Oracle password must be a letter.
3) Subsequent characters may be letters, numbers, or the symbols #
(pound sign), $ (dollar sign) or _ (underscore).

If the password is not enclosed in quotes then it can include any
letter, any digit, “_”, “#” or “$” characters.  If on the other hand
you enclose the password in quotes then you can use any character in any
position.

Oracle passwords are not case sensitive so the valid alphabet is
reduced by 26 characters.

Change your password in SQL*Plus
passw

SQL> alter user fadi identified by “f@d1″;
User altered.

$ exp fadi/f@d1 file=exptest.dmp tables=test


EXP-00056: ORACLE error 12154 encountered
ORA-12154: TNS:could not resolve service name
EXP-00000: Export terminated unsuccessfully

$ exp fadi/\”f@d1\” file=exptest.dmp tables=test

alter user test identified by “aa/aa”;

$ exp ‘test/”aa/aa”‘ file=test.dmp buffer=65536

Windows

exp fad1/”"”f@d1″”"
three pairs of double quotes
exp test/”"”aa/aa”"” file=aa.dmp buffer=65536

transport_tablespace exp/imp

Oracle 9i
exp  “sys/pass@xxx as sysdba” file=…

exp “sys/pass as sysdba” file=…
OR
exp “/ as sysdba” file=…

July 7, 2009

dbms_system.ksdwrt:向告警日志文件写指定信息

Filed under: Oracle DBA — jennyca @ 9:48 pm

SQL> exec sys.dbms_system.ksdwrt(2, ‘ORA-99999 :Just For testing’);
PL/SQL procedure successfully completed.

$ tail -100 /u01/app/oracle/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log

Tue Jul  7 22:16:07 2009
ORA-99999 :Just For testing

SQL> desc dbms_system

PROCEDURE KSDWRT
Argument Name                  Type                    In/Out Default?
—————————— ———————– —— ——–
DEST                           BINARY_INTEGER          IN
TST                            VARCHAR2                IN

* 1 – Write to trace file.
* 2 – Write to alertlog.
* 3 – Write to both.

http://www.eygle.com/archives/2009/07/dbms_systemksdw.html

April 26, 2009

sqlnet.ora

Filed under: SQL*NET — jennyca @ 9:36 pm

When do SQLNET.ORA changes take effect ?

When we change some values in the SQLNET.ORA file, are the changes are immediately applied or  do we need to restart any services?

Solution

For client installations, changes to the SQLNET.ORA file take immediate effect for new outgoing connections, you do not need to restart any service.

For server side installations, the SQLNET.ORA file is being read only upon a server process is being started, or by the listener service when is being (re)started or reloaded. That means that, as a premise, only new incoming connections may see these changes.

For the listener service, if you made any changes also affecting the listener (e.g.
tcp.validnode_checking configuration), then you must restart or reload the listener (e.g. with “lsnrctl reload“) for the changes to take effect.

For the DB instance, since there are two DB server models (dedicated mode and shared server / MTS mode), which employ different methods to start server processes, we have two cases:

  1. if the DB works in dedicated mode (or clients use only dedicated connections), then new connections will see the SQLNET.ORA changes without requiring any services to be restarted
  2. if the DB works in shared server / MTS mode (or clients use only shared mode connections), then new connections will see the SQLNET.ORA changes only after the instance is being restarted

In second case described above you may work around restarting the whole instance by attempting to restart only the DB dispatcher processes — you will need to shutdown (all) running dispatcher processes with “ALTER SYSTEM SHUTDOWN [IMMEDIATE] Dxxxx” (see Note 1005259.6 for details). Please
take into account that this is not a recommended action.

References

Note 1005259.6 – Shared Server (MTS) Diagnostics

November 15, 2008

如何快速的成为一个合格的Oracle DBA?

Filed under: Learning Oracle — jennyca @ 5:52 pm

在这样一个清晨写下这样一个题目,是因为最近有越来越多的人问起我这个问题,我想还是试着把我的想法写下来。

1.快速有多快?
很多人都喜欢寻找捷径,所以经常问起快速,但是我经常反复告诉大家的是,没有捷径,或者说没有轻而易举的捷径可循。
当然快速两个字也是有意义的,这是这个快速的社会对于年轻人的要求,在《深入解析Oracle》一书的序言中,我写过这样一段话:随着技术以及时代的不断进步,社会留给DBA的成长时间越来越短,一个DBA从入门到成长为资深的时间不会超过2年。。。。张爱玲说过,成名要趁早。做技术的也是如此,成长越早越好,越快越好。

理解快速两个字的涵义,推荐仔细阅读我的《深入解析Oracle》一书序言,这里总结了很多我的学习经验和学习历程:
http://www.eygle.com/archives/2008/11/oracle_internals_preface.html

2.如何获得成功?
无疑每个人都热切的期待成功,那么如何才能获得成功?
我曾经总结了一个简单的公式,罗列了我认为及其重要的成功因素:兴趣 + 勤奋 + 坚持 + 方法 ≈ 成功
如果你对数据库感兴趣,由兴趣推动学习,再加上勤奋的努力,坚持不懈的探索,找到合适的方法,那么这就是你的快速学习之路,快速成功之路。

推荐阅读:
http://www.eygle.com/archives/2005/12/what_kind_of_dba_we_need.html

3.三种境界
关于境界,我在多篇文章中都谈到过,最早在《Oracle数据库性能优化》一书的序言中我引用了王国维的三种境界:

古今之成大事业、大学问者,罔不经过三种之境界。
“昨夜西风凋碧树。独上高楼,望尽天涯路。”此第一境界也。
“衣带渐宽终不悔,为伊消得人憔悴。”此第二境界也。
“众里寻他千百度,蓦然回首,那人却在灯火阑珊处。”此第三境界也。

这三种境界分别代表了,打下坚实的基础,不懈的坚持,峰回路转的提升,你在学习过程中,一定会面对这样的阶段和情形,所以要有一定的思想准备,坚持不懈。
推荐阅读:
http://www.eygle.com/archives/2005/08/ecinieoracleouo.html

4.由点及面、深入浅出
在学习方法上,我主张由点及面、深入浅出,在《深入浅出Oracle》一书的序言中,我这样写道:

书中贯彻的也是我一直主张的”由点到线再及面”的学习方法。特别是对于初学者,如果没有经过专门的培训和系统学习,那么 自己通过实践的学习和思考就应当深入,在知识上,从某个角度来说,是”不患寡,而患不精深”。在我们遇到问题时,就应该不断深入研究,直至问题的核心本 质,这样通过一个案例或实际问题的诊断学习和研究,我们就可以带动很多连带知识的学习,这样从一个点深入下去就形成一条线,再横向扩展就可以形成一个知识 网,解决和研究的问题多了,就可以逐渐覆盖一个面,形成一个知识体系,这样慢慢的你就会觉得学习不再困难,而是一件得心应手的事情。

推荐阅读:
http://www.eygle.com/archives/2008/10/sbsoracle_preface.html

5.工作机会
在工作选择上,如果能够快速进入Oracle的领域可能是幸运的,但是如果第一份工作没有找到理想的位置,那么接下来的职业道路可能就会稍微曲折一些。

很多朋友在进行了一段时间的学习之后,对转型迫不及待甚至焦虑不堪,这是不对的,在工作中应当切忌浮躁,我们每个人从毕业到工作、再到找到适合自己的位置,这通常都要经过一个较长的时期,学习、思考、进步、再次出发,所以要知道有时候等待是过程的必须
如果你手上已经有了一份工作,那你需要做的是,做好它,哪怕那不是你喜欢的!
你必须证明给别人看你有做好一件事情的能力,别人才会给你下一个机会,如果你从来没能很好的完成一项任务,那你应该冷静的反省一下。

对于处在这样境地的朋友们,我有16个字可供借鉴:去除浮躁,认真学习,不断积累,寻找机遇

推荐阅读:
http://www.eygle.com/archives/2008/06/oracle_and_dba.html

6.如何在有限的环境中学习?
很多朋友的工作环境、条件有限,可能没有小型机、可能没有UNIX,那么如何学习和提高呢?
我想说的是不一定要在多大的生产环境里才能锻炼出高手。据我所知很多高手都是从个人的简单环境中学习成长起来的,最重要的是自己学习一定要深入,多思考,多试验。

有朋友说:小库一样练水平。这句话是很有道理的。也有朋友在ITPUB上不断试验和重复别人有价值的试验或测试,说:不是自己的,通过试验动手,变成自己的。也说得非常好。

http://www.eygle.com/archives/2008/11/become_dba_quickly.html

如何成为一名合格的DBA

Filed under: Learning Oracle — jennyca @ 5:46 pm

许 多年来,我在不同的新闻组上花费了很多时间与那些想知道如何得到数据库管理员(DBA)的工作或者如何成长为一名DBA的IT人进行交谈,现在他们有了工 作。这些年来许多人针对如何达到这个目标提出了不同意见。本文即是那些意见的综合并且能够在如何才能出色的完成DBA的工作方面给出好的建议。这篇文章同 样对于如何让一名DBA变得对老板更有价值。假如你已经是一名DBA,那么也许你会希望跳过文章的前几段。

我应该成为一名DBA么?

我 曾问过的一个问题是一个人应该从事DBA这样的职业么。这个问题并不容易回答,因为它因人而异。有的人有成为一名好DBA所需要的天赋。而其他人并不认为 能够很容易掌握成为DBA的秘诀。DBA职业需要掌握一定的技能。而且还需要其他IT职业所不必需的要求。因此,为了回答这个问题,我通常给将要成为 DBA的人描述DBA职业所必需的要求。下面的段落中,我都将以问题结尾。在继续下一段以前请花一些时间考虑并且回答这些问题。

许多人因 为许多原因而立志要成为DBA。其中一个主要原因是薪水。DBA是IT业中薪水最高的职业之一。其他人想成为DBA是因为喜欢赞扬DBA是受到的荣誉,或 者因为他看上去很酷!我个人认为,成为DBA是很值得的。它是一个很有意思,令人兴奋的职业。那么,你把DBA作为一个可能的职业选择的原因是什么呢?

除 非你已经提前准备好了,否则你可能会发现从事DBA职业充满了挫折和令人头痛。一个数据库存在于操作系统和最终用户应用程序之间。同样地,DBA必须非常 精通他的数据库所在的操作系统。DBA并不一定需要知道所有有关操作系统的知识,但是他知道得越多越好。数据库与操作系统联系非常紧密。理解这种关联是十 分必要的。DBA还需要知道服务器硬件以及它如何影响与帮助数据库。同时,DBA必须理解应用软件。DBA 可能会被要求帮助开发人员创建可靠,健全的数据库应用程序。还有,最重要的也是最明显的,DBA必须十分彻底的理解数据库引擎,它是如何工作的,所有的引 擎是如何组合在一起的,以及如何影响数据库引擎向最终用户和应用程序传送数据的能力。我见过的最好的DBA有非常深刻的理解而且不仅仅在数据库本身。他们 知道一些系统管理与应用开发。好多时候他们在成为DBA之前有其中一个或两个背景。无论如何,成为一名合格的而不是出色的DBA也需要许多背景知识。你是 否已经做好准备开始学习直到你感到已经无法再学下去了?

许多和我交谈过的,在开始DBA职业时遇到困难的人,在尝试着吸收大量DBA所需 了解的信息时实际上都会有一些问题。毕竟系统管理员是全职学习操作系统的细节。应用程序开发人员全职学习如何编写好的程序。DBA不仅要非常了解这两种不 同的工作,而且还需要花费更多的时间去理解数据库的体系结构,以及理解每一样东西的每一块是如何组合在一起的!听起来是不是很让人畏缩?有许多人失败后这 样想,并且把DBA工作看作一项非常困难的事情。也有那些传播和理解所有这些信息,并且使用这些信息做出好的,听起来具有技术性的决定的人。正如我以前是 一名DBA时喜欢说的,所有这些对我来说看上去像一个大谜团。把这些所有的很好的组合在一起就是挑战。你是哪一种人?

许多DBA是随时侯 命的。他们会在白天或晚上的所有时间接到呼叫去解决他们的数据库出现的致命问题。数据库是商业信息技术基础组织的必不可少的组成部分。没有数据,就没有必 要拥有一个计算机系统。数据推动商业。假如amazon.com的网站不能在数据库中搜索产品并且假如没有人能够为他们的产品下订单,那么它会变成什么 样?它就不会在商业中存在很久。当数据库down掉,即使只是很短的时间,公司也会损失重大。基于这个原因,DBA到达现场后必须尽可能迅速的解决问题。 许多公司有自己的DBA团队以便可以轮流待命。这些DBA 24×7小时的维持数据库应用程序。假如工作需要的话,你准备好随时候命了么?

一 些DBA的职责包括为软件打补丁或者对数据库做些改变。通常,这些操作不能在公司职员工作的时候做,因为此时数据库必须运行以便他们能够工作。这意味着 DBA经常不得不在很早或者深夜甚至周末,总之,在正常工作时间以外来完成工作。你准备好在非正常时间工作,或者你在找一个朝九晚五的工作?

对 DBA而言,需要掌握的一个重要内容就是通常被称为“软技术”的东西。DBA需要在团队中很好的工作,通常团队是在变化的,如系统管理员,网络管理员,应 用程序开发人员,项目经理和其他人。DBA要能够用流利的英语解释复杂的技术概念,让团队中其他人明白。DBA还要能够在数据库相关问题上指挥团队队员。 你的软技术怎么样?

下面不是全部列表,但是包括了DBA的典型职责:
•把监视数据库实例当作每日必做工作以保证其可用性。解决不可用的问题。
•收集系统统计和性能信息以便定向和配置分析。
•配置和调整数据库实例以便在应用程序特定要求下达到最佳性能。
•分析和管理数据库安全性。控制和监视用户对数据库的访问。必要时审计数据库的使用。
•监视备份程序。必要时提供恢复。测试备份与恢复程序。
•升级RDBMS软件并且在必要时使用补丁。必要时升级或者迁移数据库实例。
•通过数据库相关动作来支持应用程序开发人员。
•跟随数据库趋向和技术。当可应用时使用新技术。安装,测试和评估Oracle新的相关产品。
•执行存储和物理设计。均衡设计问题以完成性能优化。
•创建,配置和设计信的数据库实例。
•诊断,故障检测和解决任何数据库相关问题。必要时联系Oracle支持人员以便使问题得到较好的解决。
•确保Oracle网络软件(SQL*Net, Net8, Names, OiD)配置和运行的很好。
•与系统管理员(Unix & NT)一起工作以保证Oracle相关事务得到很好的处理。
•为有效的,定期的维护数据库创建任何必要的脚本。

前 面各段的问题是为了使你考虑一名DBA该做些什么,帮助你决定这是不是适合你的职业。我并非意味着假如你的目标是成为DBA这些会阻止你。我只是尝试着展 现一些事实。我看到过一些DBA一旦被实际工作打击了就一蹶不振。他们花费时间,精力和一些金钱获得了他们的第一份DBA工作。我个人认为这个职业非常有 价值。而且我无法想像现在做任何其他的会怎样。所以,这一段帮助你决定这是不是你希望从事的。假如它是,那么尽你所有去得到它!

我怎样得到第一份DBA工作?

你已经阅读了前面的段落并且认为成为一名DBA是一个好的职业。祝贺你!我希望你的职业能变成你想像得那么令人兴奋和有意义。那么,你如何找到第一份DBA工作?这个问题我已经听别人问了许多许多遍。

在 90年代早期,因特网急速发展。它使公司象草一般萌芽。公司蜂拥而至并且开始创建他们在网上的形象。几乎所有这些有网站的公司都需要一个数据库作为web 应用的后台。不幸的是,当时在该领域却没有那么多DBA。在IT业,DBA变得奇缺。那段时间里,得到一份DBA工作看上去只要可以拼出“Oracle” 或者可能只是在大学里接触过一学期的数据库就行。为了使生活变得更好,DBA的匮乏促使公司付给有潜力的职员很高的薪水。假如你想要成为一名DBA,很容 易,非常容易。你需要做的就是证明你了解什么是数据库然后工作就会比你预期的更早的出现在你面前。

然后因特网的泡沫破灭了。大量投产因特 网的公司破产。许多给公司工作的DBA重新寻找工作。缺少DBA的公司找到一名有DBA经验的人比以前容易得多。在 21世纪初期,由于经济并不十分稳固,因此生活并不容易(至少在美国如此)。公司都勒紧了他们的裤腰带。所有这些转化为更少的工作机会和DBA候选人更少 的工作空缺。

得到第一份DBA工作的最艰难的部分是每一个职位都要求有一些工作经验。如果你从公司的角度出发,你就可以理解为什么对 DBA职位而言经验是必需的。假如他没有一点经验,你会付给这个人很高的工资让他去操作,维护和运行你IT基础组织的最大最重要的一部分么?你的公司会付 钱给一名没有经验的DBA么?并且,在等待他成长起来的过程中可能会损失上百万美元的收入。对大多数公司而言,这些问题的答案肯定是‘不’。所以,没有经 验,获得你的第一份DBA工作是很困难的。

第一份DBA工作现在成了恶性循环的境遇。假如我没有任何经验,我怎样才能得到DBA的工作呢?我没有工作的话又怎么能得到DBA经验呢?这是要战胜的最困难的障碍。最困难的部分是获得第一个DBA工作。这部分的剩下部分将针对实现你第一个DBA工作的目标给你一些建议。

提 示#1:接受教育。—尽可能多的学习有关数据库的知识。这很可能将占用你正常工作以外的部分时间也精力。参加本地大学举办的数据库培训班。许多培训公司都 会举办数据库管理员的培训班。假如你的老板不资助你的学习,那么你可能不得不自己支付这笔费用。许多DBA职业要求至少为计算机科学或相关专业本科以上学 历,因此你必须至少有那样的文凭。

提示#2:锻炼成为 DBA。—许多数据库供应商都允许你下载他们数据库系统的测试版或评估版。下载一份并且在自己的个人电脑上安装软件。练习使用数据库。故意破坏数据库并且 尝试修复它。尝试着履行你所能想到的尽可能多的DBA职责。测试和磨练你在自己的测试平台上的技能这样你就可以证明你的数据库管理能力。

提 示#3:获得认证。—许多数据库提供商都提供自己的数据库产品的认证。许多公司现在都把认证看作是一种标准。需要记住的一件事是仅获得认证是不够的。通过 DBA认证测试并不意味着你知道如何管理一个数据库。它只是告诉你以后可能的老板,现在你拥有了一定的技术。它还告诉你的老板你对DBA工作的态度是很认 真的。我看到许多人抱怨他们已经得到了认证但是没有经验,却仍然不能得到第一份DBA工作。认证本身并不能使你得到工作,但它是无害的。即使没有其他的, 在你进行认证的时候你也已经学到了许多知识。只是不要依赖认证来给你带来你要找的工作。你需要的比这还要多。但它会在最后帮助你。

提 示#4:利用你现有的技能。—许多DBA具有系统管理员背景。其他的有应用程序开发背景。假如可能,查看你能否利用现有的技能来得到工作。现在的目标就是 为你和你的老板创造一个双赢的局面。例如,让我们假设你已经是一名系统管理员而想进入DBA领域。也许你会找到一份工作,这份工作一部分时间里可以用到你 的系统管理技能,并且在剩下的时间里可以使你涉及到数据库管理领域。假如你已经是一名某个产品平台上的DBA但你希望转到其他产品平台,那么看看你能否找 到一份同时接触两个产品平台的工作。这样,公司和你都得到了想要的。在你定向到了DBA工作后,你可以试着得到一个能让你全职作它的职位,也许还可以在同 一个公司中。

提示#5:利用现在的机会。—有时候,一个人进入DBA领域仅仅需要的是正确的地方和正确的时机。假如你现在的老板有一个机 会让你进行任何数据库的项目,抓住这个机会!任何数据库经验就比没有数据库经验要好。让你的管理者知道你十分积极的在寻找任何可能的数据库机会。他们就有 可能在下次机会到来的时候想到你。进行这些数据库项目以及看到你要成为一个 DBA的渴望以后,他们可能会决定培训你,提拔你。许多许多人都是以这种方式获得他的第一个DBA工作,在进行了一些数据库相关的项目后不知不觉的成为一 名较低级的DBA。通常当一名DBA离开公司后,公司将在内部寻找一个候选人,假如他们认为这名候选人是可训练的话。

提示#6:寻找较低 级的DBA职位。—假如你只是为了一个较低级的DBA工作,看到DBA职位的需求描述说他们正在寻找高级DBA或者其他的。所以,让我们严谨一些。你并没 有一个高级方面的经验。我已经讨论过了对于这样的职位为什么公司不会考虑你。但是他们会在低级的职位上考虑你。低级的DBA在高级DBA 的指导下完成工作。他们摸索窍门。一般来说,高级DBA对数据库承担责任,同时也获得所有的荣誉。但是不要焦急。随着你的事业发展,你将会有越来越多的责 任和得到越来越多的信任。因为你没有任何经验,你应该从这里开始启航。

我也听到过一些公司寻找一名高级DBA,但是到最后,他们实际想要 雇一名低级的DBA。你或许希望申请这样的职位虽然你也许没有资格。他们可能还是会决定雇佣你。但是提前说明你仍然在摸索阶段并且已经是较低级的DBA水 平。不要试图欺骗他们让他们认为你是高级DBA的水平。这只会降低你得到这项工作的机会。

这些提示将帮助你得到第一份DBA的工作。祝你在寻找工作时有好运气。当你已经找到了第一份DBA工作后,继续下面的部分来学习如何往下走下去。

我刚得到我的第一份工作!现在该怎样?

祝 贺你!你现在是DBA俱乐部的正式成员了!对于这份梦寐以求的令人激动的职业,你准备好了么?你的工作才刚开始并且你在学习上已经落在后面。你将会发现要 成为一名高效的数据库管理员有大量的知识你必须掌握。你的第一年或前两年将花费比以前更多的时间来学习。假如你发现学习知识的数量使你大脑超负荷,那么休 息一下,歇口气,然后再回到学习中去。为了帮助你继续走下去,你可以按照下面的方法进行:

步骤#1: 关系型数据库理论 –这部分我假设你将管理的数据库是一个“关系型”数据库。其他数据库模型也存在,但是关系型模式是近二十年工业上占统治地位的一种数据库模式。假如你的数 据库系统是其他的模式,那么学习它的理论。相关数据库理论是十分重要的。它是其他一切的基础。我也看到许多跳到数据库管理职位的人从不想去学习纯粹的关系 型数据库理论。不可避免的,在他们的事业中对理论基础的匮乏作为缺点暴露了出来。假如你对关系型数据库理论理解得很好,那么你将非常容易的在任何平台的关 系型数据库管理系统(RDBMS)中转变。我使用Oracle数据库,或者IBM的DB2,或者微软的SQL Server是无关紧要的。他们都是关系型数据库系统。他们在最底层都在做着相同的事情。区别在于他们怎样去做相同的事情。纯粹的关系型数据库理论对于较 低级的DBA来说并非必需的。但是假如你想要超越低级DBA的水平它就是十分重要的。许多大学的教科书都很好的包含了关系型数据库的理论。其中一本被广泛 使用的教科书就是由Elmasri and Navathe编写的数据库系统基础,Bejamin/Cummings Press。

步 骤#2: 彻底的学习查询语言 –数据库都有语言让你能够从数据库中得到数据,把数据放到数据库中,以及修改数据库中的数据。对于关系型数据库而言,这种语言就是结构化查询语言 (SQL)。这门语言是你与数据库接触的工具。不能让这个工具成为以后学习的障碍,这一点很重要。在你的测试数据库中练习不同的SQL语句直到他们变成了 你的习惯。这方面的一本非常好的书叫做Oracle 9i完全参考(Oracle 9i The Complete Reference)由Loney 和Koch编写,Oracle Press。每一名OracleDBA都应该在他事业的早期阅读这本书。Oracle 9i参考手册(Oracle 9iSQLReference manual)是另一个很重要的知识来源。在他们的技术网站TechNet上(http://technet.oracle.com)你可以访问所有的 Oracle在线文档。你必须注册一个账号,但是它是免费的。每个都应该在TechNet上有一个账号。

步骤#3: 开始学习基本的数据库管理工作 –这难道不是你最开始在这里的原因?为什么它在列表的第三位?我们尝试着建造一个知识的金字塔,我强烈的感觉到一个人需要知道关系型数据库理论和SQL, 并且在你学习如何进行基本的数据库管理工作时把他们当作工具来使用。这些工作包括启动和关闭数据库,备份和恢复数据库,以及创建/删除/修改数据库对象。 对于Oracle数据库管理而言,在市面上有大量的书籍可以给你所期望的一个很好的体会。这本书是Oracle 9iDBA手册(Oracle 9iDBAHandbook by Loney on Oracle Press)。我知道的大多数DBA都在他们事业的早期不只一遍的阅读过这本书。这里,你应该同时阅读和理解Oracle 9i 概念指导,Oracle 9i管理员指导,以及Oracle 9i备份与恢复指导(Oracle 9i Concepts Guide, the Oracle 9i Administrator’s Guide, and the Oracle 9i Backup and Recovery Guide)都来自Oracle文档。

步骤#4: 阅读,阅读,再阅读 –由于你才刚开始你的DBA职业生涯,因此你正在开始为你的技能奠定基础。这需要一段很长的时间去形成,吸收和领会所有你将学到的知识。毫无疑问的,比你 资深的DBA由许多工作要做,因此他们可能不会总是腾出大量时间辅导你的学习。你不得不靠自己学习很多东西。这就是阅读的目的。市面上有许多书籍可以解答 许多数据库相关的话题。Oracle Press是Oracle公司的官方出版社,有大量的Oracle相关书籍。同时也有其他的出版社,如Wrox Press 和 O’Reilly Press。你也可以找到Oracle文档来阅读。并且还有许多网站和新闻组。尽可能多的读书使你能够继续下去。还有,不只一遍的阅读它们可以使你吸收你 第一次阅读时错过的内容。

步骤#5: 创建测试案例 –我经常看到初学者问一些很基础的问题,其实假如他们花一些时间来考虑,这些问题都是很容易解答的。毫无疑问的,在你开始学习Oracle的时候你会有许 多的问题。看看这些问题你能不能自己回答出来。例如,我又一次被问到能不能向有唯一性约束的列中插入空值。最开始,这看上去也许不是很容易回答的问题。但 它却是非常容易去试验的!只需要创建一个简单的表。在其中的一列,假如唯一性约束。尝试着在该列插入一个空值。有效么?你应该能够非常容易的回答出这个问 题了。那么,为什么要创建这些案例呢?一个原因是这样做可以提高你解决问题的能力。创建这些案例需要的技能就是解决问题用到的技能。解决问题的技能将会对 你的DBA事业有很大的帮助。另一个原因是随着你的事业的发展,你将经常需要创建更复杂的测试案例以便保证数据库和应用程序的成功。在将来,甚至简单的测 试案例也可以组成更复杂的数据库和应用程序分解。

步骤#6: 找一个良师 –一个良师能够为你的DBA生涯(或者其它类似的职业)引领方向。他们能够给你指示,回答问题以及在你的DBA的成长过程中帮助你节约一些时间。但愿这篇 文章能够在你事业发展的一段时间内起到良师益友的作用。假如你与一名资深的DBA共同工作,那么那个人应该有责任为你的事业进行有益的指导。你也可以同时 选择其他的人指导你。

步骤#7: 参加本地用户群 –许多跨国家的城市有本地用户群,他们定期聚会讨论数据库相关的话题。假如可能,参加其中一个本地用户群。这将给你一个与他人相互交流的很好的方法。

我如何能够从一名DBA初学者变为一个具有中级水平的DBA?

你 已经成为DBA一段时间了,你现在希望你的技术水平提高一阶么?下一步该怎么做?首先,往回看前面的部分,确认你已经完成了所有的步骤。彻底理解SQL语 言是十分重要的。理解关系型数据库理论和掌握基本的数据库管理任务也是非常重要的。到如今,你应该阅读文档和其他书籍到已经郁闷了。假如没有,那么你还没 准备好继续深造,增长你的DBA的技术水平。假如你已经准备好继续了,我已为你的继续深造准备了一些方法。

步骤#1: 学习操作系统和你的服务器硬件 – 正如我前面所说,数据库存在于操作系统和服务器硬件之上。理解这些组成部分如何工作是很必要的。你应该知道如何与特殊的操作系统相合。你如何删除或者编辑 文件?假如你的操作系统是Unix,你应该掌握命令行以及Unix命令如何辅助你工作。对于运行在Windows或其他操作系统上而言也是一样的。你同时 需要对服务器的硬件有一定的了解。物理内存和虚拟内存有什么区别?RAID是什么以及不同的级别是如何产生影响的?为什么数据库喜欢更多的物理硬盘而非一 个大硬盘卷?你需要知道这些事情以便你能够容易的与系统管理员进行如何配置好你的服务器以便使它能够充分的支持数据库方面的交谈。

步 骤#2: 学习应用程序设计因为它与数据库相关 – 如前面所述,数据库存在于操作系统与数据库应用程序之间。你真的需要这两者。SQL语言是如何帮助创建好的应用程序的?绑定变量是什么并且为什么他们很重 要?Tom Kyte 写了一本非常好的书,在Oracle应用程序设计上给出了很好的建议。他的Expert One-on-one Oracle书可在 Wrox Press找到。我强烈推荐阅读此书。他详细的叙述了那些能够生成和破坏Oracle应用程序的东西。你需要知道这些,因为你的应用程序开发人员希望从你 这里得到指导和数据库知识。学习任何与应用程序设计有关的知识。也许参加一个关于软件工程,操作系统或数据结构的课程班会有好处。

步 骤#4: 取得认证 – 也许你的工作并不需要,但是取得认证一定对你有益。作为DBA的每一天里,你学到了许多新的和令人激动的事情。也许在你职业生涯的这段时间里,有几天你没 学到任何新的东西。但你仍然有很多要学习。成为一名OCP(Oracle Certified Professional)DBA要求你必须已经学到了数据库管理所有方面的基础。我发现在OCP考试的学习过程中,我学到了在我工作中从未接触过的东 西。一次我学到了我从未碰到过的一个特殊课题,在后来的日子里我就能够使用那个知识解决问题。假如我从为在OCP考试中学倒它,那么我永远也不会用那种特 殊的方法去解决问题。这已经一次次的发生在我的面前。有的人可能会说认证实际上真的不值得。我要说它只会对你有益无害。所以,去取得认证吧!

步 骤#5: 获得一个资源库 – 在前面的部分中,我指出每个DBA都应该在Technet上有个账号。这是你其中一个主要资源。但是同时还有许多其他资源。很多人共享他们的Oracle 知识。假如你还没有开始,你应该用网络浏览器去搜索并收集很多Oracle资源。愿意的话,你可以从访问我的网站 (http://www.peasland.net)开始。下面是一些OracleDBA必须了解得网站列表:
Ask Tom – http://asktom.oracle.com
Jonathan Lewis web site – http://www.jlcomp.demon.co.uk/
Ixora (Steve Adams) – http://www.ixora.com.au
Orapub – http://www.orapub.com
Metalink (Oracle支持网站) – http://metalink.oracle.com

还有许多其它的好网站。

步 骤#6: 开始在不同的新闻组和论坛上交流 – 也许你已经发现了他们,但假如现在你还没有那么是时候去开始了。有许多的新闻组和论坛可以回答你的任何Oracle问题。在Oracle群落里还有许多高 手愿意和你共享他们的知识。你所要做的就是提问。下面是一个列表包含了可以开始交流的最好的因特网团体:

Usenet newsgroups – comp.databases.oracle.server 和 comp.databases.oracle.misc 是两个可以交流的非常著名的世界性的新闻组。他们拥有大量的针对Oracle问题的交流卷宗。观看这些组的最好的方法式使用新闻广播员。但是假如你想通过 基于web的方式访问,也可以通过Google搜索引擎搜索它。 (http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&group=comp.databases.oracle)
Quest Pipelines – 当他们在最开始还属于软件提供商RevealNet的时候,被称为the RevealNet Pipelines。现在,Quest购买了RevealNet 并且拥有Pipelines 。因为Pipelines是中等的,所以这些是我最喜欢的。你可以在这里找到Pipelines (http://www.quest-pipelines.com/index.asp)。

观察别人是如何经历考验和磨难的是一件好事。 假如你有问题,可以自由的在群里提出来。假如你要提出问题,通常应该包括一些信息,比如你的Oracle版本和 Oracle运行的平台。这些将会得到有很大的差别的答案。假如你忘记了,会有人提醒你!甚至你不用提问也可以从其他人的答案中学到许多知识。我已经记不 得多少次我之所以能够解决问题完全是因为我记得其他人在新闻组里问过相同的问题。

我如何从一名具有中级水平的DBA转变为一名高级DBA?

好,作为DBA你已经坚持不懈的努力了很长时间。你感到自己已经准备好往前再走一步。成为一名高级DBA需要什么?下面的部分将帮助你走下去。

步 骤#1: 阅读所有的文档 – Oracle文档通常并不是很容易阅读的。无数次,你翻阅文档只是为了要弄清整件事情。假如文档是最好的东西,那么那些站在你的书架里的Oracle书籍 就不会有市场。但是文档确实包含了一些无法在任何其他地方找到的信息。例如,你无法找到每一个专门的INIT.ORA参数或V$视图的详细说明。书本上也 许会涉及一部分,但是Oracle文档却包含它们所有。我遇到过一个非常厉害的高级DBA,他没有从头至尾的阅读过Oracle文档。这不是偶然的。 Oracle文档是必须阅读的。也许到现在为止你已经读过Oracle概念指导十二遍了。但是当Oracle 10i发布了,你还要再次阅读。任何有关10i的新概念将在文档里记录。假如你真的想更上一层,那么,去阅读那些文档。不要逃避它。

步 骤#2: 成为一名专家 – Oracle数据库是一个非常复杂的东西。为了更上一层,你必须精通产品的许多组成部分。以备份与恢复开始。成为一名备份与恢复的专家。故意的破坏数据库 然后察看如何恢复它。尝试以任何可能的方式破坏数据库然后查看还有没有可能恢复。你将彻底的理解备份与恢复的概念。在你成为了备份与恢复的专家以后,再去 成为其他领域的专家。你会有无穷无尽的题目要去掌握。在你整个职业生涯中都保持如此。但是请记住,无论你有多么专业,在某些领域,某些人会在某些方面知道 的比你多。不要带个人情绪。只是尽可能多的从那个人那里学到知识。

Route #3: 积极参加新闻组,论坛和用户组 – 在前面,我提过为什么不同的新闻组和论坛是学习新知识的很好的地方。现在轮到你进行下一步并且去回答任何你能够回答的问题。你将会惊讶于在这过程中你能学到那么多!

Route #4: 写白皮书并且展示它们 – 这与前面提到的方法类似。首先,共享你拥有的知识是很重要的。假如你的职业生涯已经走到这一步,那么从某种意义上讲,是离不开他人的贡献的。所以,现在是 你为他人奉献的时候了。第二,当你企图共享你的信息的时候会有令人惊异的事情发生。在你要用清楚的,简练的语言表述问题以便其他人能够使用时,那些信息在 你的头脑里经过了一个令人瞠目的过程。这个过程使你巩固了知识,这是无法通过其它方法进行的。所以在白皮书中共享那些信息,讨论会,以及新闻组和论坛都是 你学习和使你的能力更上一层的非常好的方法。顺着这条路,你应该作两件事。第一,认识到你将会犯错误。其他人将会很高兴的指出那些错误,有时在某种意义上 那并不是很好。不要企图掩藏你的错误。承认它们并从它们那里学习。第二,学会说你不知道答案而不是企图以欺骗的方式通过。人们早晚会知道你在企图蒙蔽他 们。简单的告诉他们现在你对答案并不肯定,但你会在查到答案后回来告诉他们。假如你时刻谨记这两件事,你就不会违背你的诚实而且你将成长为一名职业的IT 人。

步骤#5: 成为解决Oracle问题的专家– 高级DBA通常都是被看作是解决复杂的Oracle问题的人。你将会用到你所有的技术来解决许多问题,这些技术都是你的职业生涯中积累下来的。我前面提到 的任何事都将会在解决问题的过程中用到;文档,书籍,新闻组,测试案例,和其它DBA都将辅助你解决问题。

步骤#6: 成为性能调优的专家– 高级DBA通常都是被看作是调整数据库和应用程序性能的人。假如你是高级DBA但是你却不能分析性能瓶颈,那么你的公司将会到别处寻找这些服务。

步 骤#7: 成为承载能力计划的专家– 高级DBA通常都是被看作是根据数据增长量和交易增长来计划数据库承载能力的人。高级DBA需要在影响应用程序性能以前发现系统瓶颈。例如,DBA应该知 道在数据库将可用的磁盘空间用完以前预置更多的磁盘空间。不密切关注承载能力计划将会导致生产数据库宕机。

步骤#8: 密切关注新的技术– 高级DBA应该对IT界的关数据库技术的未来有好的建议。有什么可用的技术可以帮助数据库?例如,学习存储领域网的优缺点以及如何把它们应用到数据库系 统。有什么技术在不远的将来可以用,哪些能够帮助我们?例如,写这篇文章的时候,linux操作系统正在变得越来越流行。Lunix会给你的数据库操作系 统平台带来些什么?它能为你的公司工作么?

结论

从获得第一份工作,到从一名初级的DBA成长成一名高级DBA,我希望这篇文章在如何度过你的职业生涯的各个阶段方面给了你一些建议。无论你现在处在你的DBA职业生涯的哪一阶段都可以用到这篇文章。

Oracle学习的一些建议

Filed under: Learning Oracle — jennyca @ 5:41 pm

学 习Oracle是一个漫长艰辛的过程。如果没有兴趣,只是被迫学习,那么是很难学好的。学习到一定程度的时候,要想进一步提高,就不得不接触很多 Oracle之外的东西,如Unix,如网络、存储等。因此,要真的决心学好Oracle,就一定要有兴趣。有了兴趣,就会一切变得简单快乐起来。简单总 结一下,那就是:兴趣、学习、实践。

如何入门是许多初学者最头疼的事情。Oracle涉及的方面太多了:SQL、管理、优化、备份恢复……那么从哪开始学好呢?如果在大学期间学过数据 库理论,或有一定的数据库基础自然很好;如果没有的话,真的是个大问题。我个人认为还是应该从SQL语句学起。比较好的教材是Oracle OCP认证的《SQL and PL/SQL》。学习SQL的时候,尽可能坚持使用Oracle自带的工具:SQLPLUS。

有了一定的SQL基础后,就要尽可能的了解Oracle的体系结构,这就涉及到了Oracle管理的内容了。我学习的时候,机械工业出版社的 《Oracle9i DBA手册》这本书对我的帮助挺大。或许现在都出11g版本的了吧。Oracle公司的《Oracle Concepts》是非常棒的书,对了解Oracle体系结构很有好处。每个Oracle版本都有对应的版本,可以认真多读几次,每次都会有新的收获。

公司的产品现在几乎都采用Oracle了,我们做维护的时候,备份与恢复是不得不接触的内容。数据量少的,比如20、30多个G,还可以考虑用 exp/imp来备份与恢复,但数据量大了,这种方法就根本不适合了。于是学习Oracle备份与恢复技术也是必然的事情。大数据量情况下,Oracle 建议用RMAN来进行数据的备份与恢复。目前市场上有很多数据库备份恢复软件,其实好多也是后台调用RMAN。清华大学出版社出版的《Oracle 9i RMAN 备份与恢复技术》是一本非常不错的介绍RMAN的书。

有了以上的基础,可以说已经入门了,对遇到的一些初级Oracle问题将不再束手无策。然而我们的学习之路仍然还很漫长。我们的用户可能经常抱怨数 据库运行缓慢。这时,如果有一定的优化知识,那就好办了。有时你会看到优化前需要运行几个小时的作业,优化后也许几秒钟就能完成!Oracle9i的性能 诊断工具包statspack、Oracle10g/11g的自动工作符合存储库AWR都是调优的好帮手。机械工业出版社出版的《Oracle9i STATSPACK高性能调整》是学习statspack不错的书。

在数据库体系结构、编程优化方面,有一本书非常棒,这就是世界顶级的Oracle专家Thomas Kyte编写的《Oracle9i&10g编程艺术》(英文名为“Expert Oracle Database Architecture”)。Tom以前还写了一本叫做《Expert One-on-One Oracle》的书,也非常的经典。这两本书被很多Oracle学习者视为宝典,如果想在Oracle上深入学习的话,强烈建议认真研读。

掌握了以上内容,或者基本掌握以上内容,那么你在很多人的眼里也是Oracle的高手了,解决公司产品中的数据库问题应该不成问题。不过Oracle还有很多高级内容可以进一步学习。这里列举一些,仅供感兴趣的同仁参考。

1. 高级复制技术

2. Oracle Real Application Cluster (RAC)

3. Data Guard

4. Oracle Stream

5. 数据仓库

6. Proc、OCI编程

以上列举的这些高级内容,参考资料主要是Oracle公司的电子文档。实话实说,上面的列的数据仓库、Proc、OCI编程,我一点也不熟悉。

在学习Oracle过程中,充分利用网络资源可以起到事半功倍的作用。

总之,Oracle最大的问题是复杂,复杂是Oracle的最大魅力。让我们为了驾驭Oracle而共同努力吧!

From Turner Blog

November 7, 2008

List open cursors per user

Filed under: scripts — jennyca @ 5:16 pm
set pages 999
select 	sess.username
,	sess.sid
,	sess.serial#
,	stat.value cursors
from	v$sesstat stat
,	v$statname sn
,	v$session sess
where	sess.username is not null
and	sess.sid = stat.sid
and	stat.statistic# = sn.statistic#
and	sn.name = 'opened cursors current'
order by value
/

Or alternatively…


set lines 100 pages 999
select count(hash_value) cursors
,      sid
,      user_name
from   v$open_cursor
group by
       sid
,      user_name
order by
       cursors
/
Next Page »

Blog at WordPress.com.