??xml version="1.0" encoding="utf-8" standalone="yes"?>精品亚洲a∨,欧美精品国产一区二区,国产综合精品一区二区三区http://www.aygfsteel.com/liaojiyong/category/11451.htmlzh-cnSat, 10 Nov 2007 09:39:31 GMTSat, 10 Nov 2007 09:39:31 GMT60Installing Oracle 10g on RHEL AS 3 Step-by-Step(?http://www.aygfsteel.com/liaojiyong/archive/2007/11/10/159486.htmlliaojiyongliaojiyongFri, 09 Nov 2007 16:56:00 GMThttp://www.aygfsteel.com/liaojiyong/archive/2007/11/10/159486.htmlhttp://www.aygfsteel.com/liaojiyong/comments/159486.htmlhttp://www.aygfsteel.com/liaojiyong/archive/2007/11/10/159486.html#Feedback0http://www.aygfsteel.com/liaojiyong/comments/commentRss/159486.htmlhttp://www.aygfsteel.com/liaojiyong/services/trackbacks/159486.html

不久?Oracle(甲骨?公司在美国加州的总部宣布, Oracle 10g 数据??Oracle RAC ?TPC-H 基准试中创造了新的世界U录.q是个o人震惊的消息.因ؓq个试是在 Linux ( Red Hat Enterprise Linux Advanced Server 3) 的^Cq行? q充分显CZ Oracle 在低成本 Linux 集群服务器上高效理大规模数据仓库的能力, 也表?Linux 在性能h比上显而易见的优势,标志着Linux在大规模企业应用上已l成?

怿很多朋友已经?0g跃跃Ʋ试?现在从这里让我们开?0g之旅.

本文描述了在Red Hat Enterprise Linux Advanced Server 3 (RHEL 3)上安装Oracle 10g 必要的步骤和相关知识. 本文假定你的Linux 操作pȝ已经安装完毕,q且您应该具有一定的 Unix 操作pȝ背景知识.

配置RedHat AS 3

操作pȝ版本Q?/p>

Red Hat Enterprise Linux AS release 3 (Taroon)
Kernel 2.4.21-4.EL on an i686

按照常规来安装操作系l?记得要安装开发工?gcc{必要工?.

必要的硬件信息检?/h2>
查内?/strong> 最?/strong> 查命令参?/strong>
物理内存 512M # grep MemTotal /proc/meminfo
交换I间 1.0 GB或?倍内存大?/td> # grep SwapTotal /proc/meminfo
/tmp I间 400 MB # df -k /tmp
软g所需I间 2.5 GB # df -k (I间大好,如果是正式系l?应该q行详尽的规?
数据库文?/td> 1.2 GB # df -k (I间大好,如果是正式系l?应该q行详尽的规?

查完如上各项之后, 应该修改核心参数.执行如下命o:

#vi /etc/sysctl.conf

#注释:
#表示使用root用户操作,$表示使用oracle 用户q行操作.提示W后面的蓝色部分表示需要输入的命oQ以下同Q?

在该文g末尾加入如下内容:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
~辑完之?保存,执行 # /sbin/sysctl -p 命o操作来我们所做的变更生效.

?上面kernel.shmmax/kernel.sem{是典型的核心参数配|?您可能需要根据您的实际环境进行适当的变?

关于q些核心参数的说明在Oracle?Oracle9i Installation Guide Release 2 (9.2.0.1.0) for UNIX Systems 中有很详l的说明.( http://download-west.oracle.com/docs/html/A96167_01/toc.htm )

然后,应该查一下上面的操作是否正确:
# /sbin/sysctl -a | grep sem
# /sbin/sysctl -a | grep shm
# /sbin/sysctl -a | grep file-max
# /sbin/sysctl -a | grep ip_local_port_range

为Oracle用户讑֮Shell的限?/h2>

一般来_Z性能上的考虑,q需要需要进行如下的讑֮Q以便改qOracle用户的有?nofile(可打开的文件描q符的最大数)和nproc(单个用户可用的最大进E数?

# vi /etc/security/limits.conf
# d如下的行
*               soft    nproc   2047
*               hard    nproc   16384
*               soft    nofile  1024
*               hard    nofile  65536

d如下的行?etc/pam.d/login 文gQ?/p>

session    required     /lib/security/pam_limits.so

~辑 /etc/profile 文g,d如下部分Q?/p>

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

之后Q执? unlimit 验证一?

查ƈ安装相关补丁

在这个版本的RHEL上安装Oracle,必须要有几个软g? 认以下 rpm包都已经安装:

make-3.79
binutils-2.11
openmotif-2.2.2-16
setarch-1.3-1
compat-db-4.0.14.5
compat-gcc-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122

# rpm -qa | grep compat

 

# 在我的机器上输出如下:

compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122
compat-glibc-7.x-2.2.4.32.5
compat-db-4.0.14-5
compat-gcc-7.3-2.96.122
# rpm -qa | grep openmotif
openmotif-devel-2.2.2-16
openmotif-2.2.2-16
# rpm -qa | grep setarch
setarch-1.3-1

上面昄的内Ҏ在笔者已l安装了具体的RPM包之后的l果.一般情况下,你的pȝ上的输出l果和这个不?如果个别包没有安?把系l安装光盘mount?扑ֈ具体的Y件包(大多数在W三张光盘上),然后利用如下的命令来安装相应的包:

# rpm -ivh compat.....rpm

要额外注意的?q些软g包之间是有依赖性的,先后的顺序要扑֥.否则会报告不能安装的错误. 此外Q最好验证一?gcc和glibc的版?要求是gcc-3.2.3-2 或者更?:

#gcc -v
#rpm -q glibc

创徏用户和相关的l?/h2>
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -g oinstall -G dba oracle 

如果只是试目的的话Q不创徏 oinstall l也没什? 不过q是规范一Ҏ较好.如果 oracle 用户?dba l等已经存在Q作适当的调整即?

查ƈ调整环境变量

d为oracle用户

# su - oracle
$ cd
$ vi .bash_profile

#d如下内容,你的具体值应该不会和q个完全相同.

export ORACLE_BASE=/u/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1
export ORACLE_SID=TEST
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export LC_CTYPE=en_US.UTF-8

然后执行

$ source .bash_profile

使环境变量生? /u/app/oracle {目录应该徏立好q做合适的授权.

开始安?0g

mount你的安装?(我一般都是把文g拯到系l中一个具体的位置,比如/u/install ) .执行:

$ sh /u/install/runInstaller

如果不能出现安装画面Q查看本文后面的FAQ?/p>

非常值得U道的是,10g的安装相比以前的多了一?Checking operating system certification 的步骤。特别实用。安装文件会自动所需的条件。如果有不符合的地方Q安装程序会报告l你.q会l出具体原因。大大减了出错的可?下面是检查成功输出的内容 :

Checking operating system certification
Expected result: One of redhat-2.1,redhat-3,UnitedLinux-1.0
Actual Result: redhat-3
Check complete. The overall result of this check is: Passed
=======================================================================
Checking kernel parameters
Checking for VERSION=2.4.9.25; found VERSION=2.4.21. Passed
Checking for shmall=2097152; found shmall=2097152. Passed
Checking for shmseg=10; found shmseg=4096. Passed
Checking for semmsl=250; found semmsl=250. Passed
Checking for semmni=128; found semmni=128. Passed
Checking for filemax=65536; found filemax=65536. Passed
Checking for shmmni=4096; found shmmni=4096. Passed
Checking for semmns=32000; found semmns=32000. Passed
Checking for semopm=100; found semopm=100.Passed
Checking for shmmin=1; found shmmin=1. Passed
Checking for shmmax=2147483648; found shmmax=2147483648. Passed
Check complete. The overall result of this check is: Passed
=======================================================================
Checking recommended operating system packages
Checking for make-3.79; found make-3.79.1-17. Passed
Checking for binutils-2.11.90.0.8-12; found binutils-2.14.90.0.4-26. Passed
Checking for gcc-2.96; found gcc-3.2.3-20. Passed
Checking for openmotif-2.1.30-11; found openmotif-2.2.2-16. Passed
Check complete. The overall result of this check is: Passed
=======================================================================
Checking recommended glibc version
Expected result: 2.2.4.31.7
Actual Result: 2.3.2.95.3
Check complete. The overall result of this check is: Passed
=======================================================================
Validating ORACLE_BASE location (if set)
Check complete. The overall result of this check is: Passed
=======================================================================

 

其他的步骤比较清晎ͼ不再赘述.

最后系l会提示你运?root.sh 文g.按照提示做即?

FAQ (在Linuxq_安装Oracle比较常见的问?

1. 不能启动安装界面

q行runInstaller提示信息cM如下:

xlib:connection to "localhost:0.0" refused by server
xlib:client is not authorized to connect to server 
Exception in thread "main" java.lang.InternalError: can't connect to x11 window server using "localhost:0.0" at .......

解决办法: 讑֮你的DISPLAY环境参数.

# export DISPLAY= your_IPaddress :0.0

把your_IPaddress换成你的IP.或者用root单的执行一? xhost + (要注意这样会有安全上的隐?.

2.安装界面昄很多"口口"样子的ؕ?/h2>

解决办法:查看locale输出

# locale
LANG=en_US.UTF-8
LC_CTYPE=zh_CN.GB18030
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

执行#export LC_CTYPE=en_US.UTF-8 然后重新调用安装E序.

3. 用IEdLinux服务器上的em出现q

在Linux(Unix) 环境下成功安装了Oracle 10g,从windows下用IE览器登?10g 的em, 按钮?口口"q样的方?

解决办法: 参?

http://www.dbanotes.net/Oracle/Oracle-10g-font.properties.htm

 

4.创徏数据库的时候出现ORA-03113的错?/h2>

解决办法: 查看核心参数是否调整正确.参?

http://www.dbanotes.net/Oracle/ORA-03113.htm


5. RedHat 9 / FC1{系l?0g不支持如何安?


解决办法Q在10g不支持的Linux发行版上安装10g的解x?/p>

 

1). q行runInstaller -ignoreSysPrereqsQ这样会跌?

2). 摘自 www.puschitz.com 修改/etc/redhat-release文gQ?/p>

#su - root
#cp /etc/redhat-release /etc/redhat-release.backup
#cat > /etc/redhat-release <<   EOF
Red Hat Enterprise Linux AS release 3 (Taroon)
EOF

安装完毕Q执行如下操作:

#su - root
#cp /etc/redhat-release.backup /etc/redhat-release

3). http://www.dbanotes.net/Oracle/10G-Beta-Install-Bug.htm

同样的思\Q我们可以修改Oracle 的install/oraparam.ini文g辑ֈ目的.

6.如何x那些 ocssd.bin q程Q?/h2>

解决办法:~辑/etc/inittab文g(做好备䆾),注释掉这一?

h1:3:respawn:/etc/init.d/init.cssd run >/dev/null 2>................

参考信?/h2>

Werner Puschitz ?10g 安装指南 - http://www.puschitz.com/InstallingOracle10g.shtml
Werner Puschitz 的站点的文章很翔?如果您遇C本文没有说清的问?可以ȝ看那?本文借鉴了该站点不少内容Q?

http://www.google.com - http://www.google.com
关于核心参数{信息一定要用Google查找Q?

Oracle Database Quick Installation Guide 10g Release 1 (10.1) for Linux x86
http://download-west.oracle.com/docs/html/B10813_01/toc.htm

Oracle Database Installation Guide 10g Release 1 (10.1) for UNIX Systems http://download-west.oracle.com/docs/html/B10811_02/toc.htm



liaojiyong 2007-11-10 00:56 发表评论
]]>
oracle 安装http://www.aygfsteel.com/liaojiyong/archive/2007/11/06/158451.htmlliaojiyongliaojiyongTue, 06 Nov 2007 01:52:00 GMThttp://www.aygfsteel.com/liaojiyong/archive/2007/11/06/158451.htmlhttp://www.aygfsteel.com/liaojiyong/comments/158451.htmlhttp://www.aygfsteel.com/liaojiyong/archive/2007/11/06/158451.html#Feedback0http://www.aygfsteel.com/liaojiyong/comments/commentRss/158451.htmlhttp://www.aygfsteel.com/liaojiyong/services/trackbacks/158451.html 从网上下载升U补丁包,用于Oracle9.2.0升?.2.0.4:
p3006854_9204_LINUX.zip
所有的补丁说明如下Q?
p3095277_9204_LINUX.zip 9.2.0.4.0的升U补丁包.
p3006854_9204_LINUX.zip 在运?runInstaller 之前?
p3119415_9204_LINUX.zip 在升U到9.2.0.4.0之后?
p2617419_210_GENERIC.zip ?119415补丁所需要的补丁.

1.用rpm -qa│grep compat 查看pȝ中是否安有以下几个Y件包Q?
加蝲文g命oQ?rpm –ivh /mnt/cdrom/RedHat/RPMB/file.rpm
compat-libstdc++-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122
compat-db-4.0.14-5
compat-gcc-7.3-2.96.122
tcl-devel-8.3.5-92.i386.ipm

其他相关软g包(安装上述软g包时可能需要)Q?
glibc-kemheadsers-2.4-8.34.i386.rpm
glib-headers-2.3.2-95.20.i386.rpm
glib-derel-2.3.2-95.20.i386.rpm

2. rpm -qa ?grep openmotif查看下列软g?
openmotif21-2.1.30-8
3. rpm -qa ?grep setarch查看:
setarch-1.3-1

W二,准备安装q程中需要的用户和用L
在安装的q程中我们用两个用户同时进行,其中一个是root用户Q另外一个是你新建立的oracle用户?

1、打开一个终端,以root用户d或者是Qsu - root
2、徏立oracle 用户和密?
# groupadd oinstall (在安装oracle时UNIX Group nameQoinstall)
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle

W三,安装准备步骤.
1、准备文件目录:
# mkdir -p /opt/ora9/product/9.2
# mkdir /var/opt/oracle
# chown oracle.dba /var/opt/oracle
# chown -R oracle.dba /opt/ora9
注:如果提示参数太少Q可以在目录属性-权限 直接讄?oracle 权限 dba

2、设|内核参敎ͼ调节信号灯及׃n内存Q?

修改 /etc/sysctl.conf q个文gQ加入以下的语句Q?
kernel.shmmax = 2147483648 (机器内存2GQ如果你的没q么大可相应讄些)
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

sem 4个参CơؓSEMMSL(每个用户拥有信号量最大数)QSEMMNS(pȝ信号量最大数)QSEMOPM(每次semopmpȝ调用操作?QSEMMNI(pȝ辛苦量集数最大数).
Shmmax 最大共享内?GB 物理内存如果的话可以设|成 536870912.
Shmmni 最共享内?4096KB.
Shmall 所有内存大?

讄完成后用命o more /etc/sysctl.conf |grep kernel.s ?

3、设|oracleҎ件的要求Q?
~辑文gQ?etc/security/limits.conf 加入以下语句Q?
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

4、设|系l环境:
首先讄root用户q个l端的?
export ORACLE_BASE=/opt/ora9
export ORACLE_HOME=/opt/ora9/product/9.2
(Oracle被安装在q些位置)

5.讄oracle用户的环境, 新开一个终端,
su - oracle
***注意一定要新开一?***

打开.bash_profile文gQ将如下内容加入Q?
(命ovi $HOME/.bash_profile ~辑用VI使用可查手册 I q入edit ;w 存盘 ;q退?
#oracle 9i
export DISPLAY=”192.9.200.24:0.0” (127.0.0.1:0.0)
export ORACLE_BASE=/opt/ora9
export ORACLE_HOME=/opt/ora9/product/9.2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_OWNER=oracle
export ORACLE_SID=ora9i (数据库全局变量?
export ORACLE_TERM=xterm (xtermH口模式 vt100 l端调试模式)
export LD_ASSUME_KERNEL=2.4.1
export THREADS_FLAG=native
export LD_LIBRARY_PATH=/opt/ora9/product/9.2/lib:$LD_LIBRARY_PATH
export PATH=/opt/ora9/product/9.2/bin:$PATH
export NLS_LANG=AMERICAN (讄语言AMERICAN英文)
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
保存后退? 执行Q?source .bash_profile 查看 set | more
然后。退出登录,再次q入Q这时候oracle的环境就已经生效?

6、解压文Ӟ安装前打补丁Q切换到root用户的控制台Q?注:打补丁前执行以下语句)
#su – root
#mv /usr/bin/gcc /usr/bin/gcc323
#ln –s /usr/bin/gcc296 /usr/bin/gcc
#mv /usr/bin/g++296 /usr/bin/g++
#ln –s /usr/bin/g++ /usr/bin/g++296
W四,开始正式安?
1、徏立oracle安装临时目录 su - root
#cd /home
#mkdir ora9i
#cd ora9i
q些目录你可以自己定?用来存放安装文g?

2.解gz文g (H口模式解压不会把原档案删除Q终端模式解压后自动删除原档?
#gunzip gunzip lnx_920_disk1.cpio.gz
#gunzip lnx_920_disk2.cpio.gz
#gunzip lnx_920_disk3.cpio.gz

3.释放cpio文g
#cpio -idmv < lnx_920_disk1.cpio
#cpio -idmv < lnx_920_disk2.cpio
#cpio -idmv < lnx_920_disk3.cpio
//q个步骤生成三个文件夹QDISK1, DISK2, DISK3
rootw䆾q行Q在/home/ora9i
p3006854_9204_LINUX.zip 补丁安装Q?已经补丁解压到光盘)
#unzip p3006854_9204_LINUX.zip
#cd /home/ora9i /3006854
#sh rhe13_pre_install.sh
Applying patch...
Patch successfully applied

4Q完成Oracle的安装:
新开一个控制终?用root用户开)
#xhost +192.168.0.2 (本地IP地址)
(xhost disable讉K控制Q客L可以从Q何主行连?
q个命o用来保证oracle用户调用X11,否则无法安装
#su - oracle
在登录终端中切换到oracle用户Q?
在oracleȝ录里q行:# /home/ora9i/Disk1/runInstaller

**********************************************
安装q程中的注意事项Q?
1.在安装中让你输入 UNIX group nameQoinstall (#groupadd oinstall)
如果提示orainstRoot.sh权限问题Q在rootl端下执行:
#sh /tmp/orainstRoot.sh 然后l箋
2.在安装中选择 software only 不要建数据库
3. 安装q程中提C?opt/ora9/product/9.2 权限问题Q可另开H口修改权限为oracle-dba
在结束的时候还会提C权限问题,另开H口修改权限为root-root
注意的是以下几点:
Relink阶段,会出两个错误:ins_oemagent.mk ?ins_ctx.mk. ?Ignore 忽略.

在部分文档里,要求oracle用户的bash_profile文g中降LD_ASSUME_KERNEL讄?.4.19,千万不要q样讄,否则会在Rlink时会有一大堆报错

再安装过E中,pȝ会提醒你用rootw䆾L行两个sh文g,再root的登录终端中按提C操作就可以?
如果有NLS的错误提C,可以#unset LANG命o,把语a默认成英?

************************************************
5Q开始升Uoracle su - oracle
安装l束?HTTPD会自动运?在升U之?需要将它停下来.
$ cd $ORACLE_HOME/Apache/Apache/bin
$ apachectl stop
./apachectl stop: httpd stopped
LISTENER也需要停下来.
$ lsnrctl stop
LSNRCTL for Linux: Version 9.2.0.1.0 - Production on 07-NOV-2003 16:25:41
Copyright © 1991, 2002, Oracle Corporation. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))
The command completed successfully
注意: 如果不停的话,oracle会提CZ能覆盖文?q个时候再d服务停下来也可以,点Retry可以了.

开始打补丁升.
注意打补丁时使用root用户,切换到root用户控制収ͼ
解包:
# unzip /home/ora9i/p3095277_9204_LINUX.zip
Archive: p3095277_9204_LINUX.zip
inflating: 9204_lnx32_release.cpio
inflating: README.html
inflating: patchnote.css
(会在/home/ora9/Disk1下自动生?204_lnx32_release.cpio)
# cpio –idmv < /home/ora9/Disk1/9204_lnx32_release.cpio
做完q个后,再切换到oracle用户控制収ͼ 再次q行/home/ora9i/Disk1/runInstaller升Q注意必d选择最下面的安装选项Q安装OUI
要不然没有办法打那个最上面的升U补丁?
升完OUI后,要退出,再次q行/home/ora9i/Disk1/runInstaller
选择W一个选项,Oracle升?.2.0.4?
q时候还是会有一个错误出现。再ơ选择忽略它?
安装q程中如果出?opt/ora9/product/9.2 没有权限Q直接找到文件夹更改权限.

6.打其他的补丁Q?
切换到root的终端?
首先安装 opatch.
# unzip p2617419_210_GENERIC.zip
Archive: p2617419_210_GENERIC.zip
creating: OPatch/
creating: OPatch/docs/
inflating: Opatch/docs/FAQ
......
inflating: README.txt
#pwd (查看执行权限)
#export PATH=$PATH:/home/ora9i/Opatch:/sbin
(修改PATH时要要包括解压羃出来的Opatch ?sbin目录)
# unzip p3119415_9204_LINUX.zip
Archive: p3119415_9204_LINUX.zip
creating: 3119415/
inflating: 3119415/README.txt

# cd 3119415
# opatch apply

****如果提示HOME变量错误可执行语句:****
#export ORACLE_BASE=/opt/ora9
#export ORACLE_HOME=/opt/ora9/product/9.2
出现success的提C就全部安装成功.
(出现选择ORACLE_HOME=/opt/ora9/product/9.2选择N)

最后切换到oraclel端
#dbca (如果有ؕ码执行:#unset LANG)
建oracle数据?
(查看安装完成后的查和试内容)
***************************************
可能会出现错误提C: /etc/oratab file doesn’t exist
可执行下面语句:
#cd /opt/ora9/product/9.2/install/utl
#sh root.sh
****************************************

数据库徏立完成后挂voracle
启动oracle监听
$lsnrctl
lsnrctl>status (查状?
lsnrctl>start

查oracle服务是否挂v
$ps –ef |grep ora

q接数据?
$sqlplus /nolog
SQL>connect / as sysdba
SQL>startup mount
查是否连接oracle
SQL>select sysdate from dual;
Sp2-0640:Not connected
挂v
SQL>startup
**************************************************
如果出现错误信息Q?
ORA-01078:failucr in processing system parameters
LRM-00109:could not open parametet file/opt/ora9/product/9.2/dbs/initora9i.or
执行Q?
#cp /opt/ora9/admin/orcl/pfile/init.ora.613200412101 /opt/ora9/product/9.2/dbs/initora9.ora


liaojiyong 2007-11-06 09:52 发表评论
]]>
Oracle启动停止命o (? http://www.aygfsteel.com/liaojiyong/archive/2007/10/26/156094.htmlliaojiyongliaojiyongFri, 26 Oct 2007 04:48:00 GMThttp://www.aygfsteel.com/liaojiyong/archive/2007/10/26/156094.htmlhttp://www.aygfsteel.com/liaojiyong/comments/156094.htmlhttp://www.aygfsteel.com/liaojiyong/archive/2007/10/26/156094.html#Feedback0http://www.aygfsteel.com/liaojiyong/comments/commentRss/156094.htmlhttp://www.aygfsteel.com/liaojiyong/services/trackbacks/156094.html1、启动数据库Q?/p>
oracle@suse92:~> sqlplus /nolog
 
SQL*Plus: Release 9.2.0.4.0 - Production on Fri Jan 20 02:29:37 2006
 
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
 
SQL> connect /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
 
Total System Global Area 135352820 bytes
Fixed Size                   455156 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 679936 bytes
Database mounted.
2、关闭数据库Q?/div>
oracle@suse92:~> sqlplus /nolog
 
SQL*Plus: Release 9.2.0.4.0 - Production on Fri Jan 20 02:29:37 2006
 
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
 
SQL> connect /as sysdba
Connected to an idle instance.
SQL> shutdwon abort;
3、启动监听器
oracle@suse92:~> lsnrctl start
4、停止监听器
oracle@suse92:~> lsnrctl stop
5、查看监听器状?/div>
  oracle@suse92:~> lsnrctl
  LSNRCTL> status
  LSNRCTL> exit
-------------------------------------------------------------------
More Detail:
ORACLE 安装配置Ҏ (以ORACLE8.1.6Z)

一、安?/span>

1、服务端
  服务端安装前提条Ӟ操作pȝ为WINDOWS 2000、WINDOWS NT?br />   步骤Q?br />   1) 扑ֈORACLE 8.1.6的安装目录,点击SETUP.EXE文gQ进?Oracle Universal Installer"界面Q?br />    

  2) 在弹出的H体中选择"下一?l箋安装Q弹Z下窗体;如果以前安装qORACLEQ则点击"卸装产品"按钮(卸蝲q程见第二章Q卸?Q如果要查看以前安装的ORACLEQ点?已安装?按钮?br />    

  3) 选择文g来源和待安装目录Q点?下一?Q弹Z下界面;
来源路径一般ؓ默认路径Q但不管是本地安装还是在其它机器上安装,安装数据来源路径必须为ORACLE目录下STAGE文g夹下的PRODUCTS.JAR文g?br />   名称默认为:ORAHOME81Q该名称是ORACLE安装时在注册表中名称Q徏议不要修改,采用pȝ默认的名U?br />   路径为当前ORACLE待安装的路径Q可修改。修ҎQ徏议只修改安装的磁盘分区,如图中的"e"Q后面的"Oracle\Ora81"采用pȝ默认安装目录?br />    

  4) ?可用产品"H体中,如果安装服务端程序,则在"选择要安装的产品"选项中选择"Oracle 8i Enterprise Edition 8.1.6.0.0Q如果安装客LE序Q则?选择要安装的产品"选项中选择"Oracle 8i Client 8.1.6.0.0Q选择安装产品后,点击"下一?Q弹Z下窗体:
   

  5Q、选择安装cdQ一般选择默认?典型Q?001MBQ?Q?自定?为高U用户选项Q徏议不选择此项Q选择安装cd后,点击"下一?Q弹Z下窗体;
   

  6Q、输入全局数据库名和SIDQ全局数据库名为ORACLEq接Ԍ可Q意录入,如:test.softone.comQSID为ORACLEq接服务Q客L需以此录入的SIDq行q接Q需牢记Q,录入完成后,点击"下一?Q弹Z下界面;
   

  7Q在"摘要"H口点击"安装"Q弹Z下界面:
   

  8Q安装完成后出现以下界面Q进行系l自动配|NET8 CONFIGURATION ASSISTANT.
   

  9QNET8配置完成后,pȝ自动创徏数据?br />    

  10Q数据库创徏完成Q点?定" 退?br />    

  11Q安装完成,点击"退?按钮Q退出安装过E?br />    

2、客L
  操作q程同服务端安装?br />
二、卸?/span>

1、服务端
  1Q、找到ORACLE 8.1.6的安装目录,点击SETUP.EXE文gQ弹Z下界面:

  2Q、在弹出的窗体中选择"卸装产品"按钮Q弹Z下界面;

  3Q、选择已安装的产品Q点?删除"按钮Q弹Z下窗体;

  4Q在弹出"认"对话框,点击"?Q弹Z下窗体;

  5Q、删除完成后Q弹Z下界面,点击"关闭"按钮退出?br />
  6Q、退出后回到Ƣ迎界面Q?br />
  7Q、用户可点击"下一?q行安装或点?退?按钮l束卸蝲q程?br />
2、客L
  与服务端卸蝲q程相同?br />
三、ORACLE实例启动和关?/span>

1、用SQL*PLUS启动和终止实?/strong>

1.1、本地启?br />   在命令提C符下输入:
  SQLPLUS /NOLOG
  CONNECT /AS SYSDBA
  STARTUP

1.2、本地关?br />   在命令提C符下输入:
  SQLPLUS /NOLOG
  CONNECT /AS SYSDBA
  SHUTDOWN

1.3、远E启?br />   在命令提C符下输入(此方式必dq行关闭数据库操作,?.4、远E关闭(要求q程数据库必L已启动)Q在E:\ORACLE\ORA81\SYSMAN\IFILES目录下生成一个DE_TEST_ZCB_8112.ORA文g后,再以此文件启动数据库Q:
  SQLPLUS /NOLOG
  CONNECT INTERNAL/ORACLE@TEST.SOFTONE.COM AS SYSDBA
  STARTUP FILE=E:\ORACLE\ORA81\SYSMAN\IFILES\DE_TEST_ZCB_8112.ORA
  此\径ؓq程启动服务路径Q一般情况下在本地安装目录的ORACLE\ORA81\SYSMAN\IFILES下?br /> INTERNAL 为用户名QORACLE为密码,TEST.SOFTONE.COME服务连接串?br />
1.4、远E关?br />   在命令提C符下输入:
  SQLPLUS /NOLOG
  CONNECT INTERNAL/ORACLE@TEST.SOFTONE.COM AS SYSDBA
  SHUTDOWN
  INTERNAL 为用户名QORACLE为密码,TEST.SOFTONE.COME服务连接串?

2?用服务器理器启动和l止实例

2.1、本地启?br />   在命令提C符下输入:
  SVRMGRL
  CONNECT INTERNAL
  STARTUP

2.2、本地关?br />   在命令提C符下输入:
  SVRMGRL
  CONNECT INTERNAL
  SHUTDOWN

2.3、远E启?br />   在命令提C符下输入(此方式必dq行关闭数据库操作,?.4、远E关闭(要求q程数据库必L已启动)Q在E:\ORACLE\ORA81\SYSMAN\IFILES目录下生成一个DE_TEST_ZCB_8112.ORA文g后,再以此文件启动数据库Q:
  SVRMGRL
  CONNECT INTERNAL/ORACLE@TEST.SOFTONE.COM AS SYSDBA
  STARTUP
  PFILE= E:\ORACLE\ORA81\SYSMAN\IFILES\DE_TEST_ZCB_8112.ORA
  INTERNAL 为用户名QORACLE为密码,TEST.SOFTONE.COME服务连接串?br />   此\径ؓq程启动服务路径Q一般情况下在本地安装目录的ORACLE\ORA81\SYSMAN\IFILES下?br />
2.4、远E关?br />   在命令提C符下输入:
  SVRMGRL
  CONNECT INTERNAL/ORACLE@TEST.SOFTONE.COM AS SYSDBA
  SHUTDOWN

3?用实例管理程序启动和l止实例
  1Q、打开理E序,如图

  2Q、点击DBA STUDIOQ进?oracle enterprise manager d"H口

  3Q、选择"LAUNCH DBA STUDIO STANDALONE"Q点?定"按钮Q弹Z下窗体;

  4Q、在左边的列表中双击或点d键菜单中?q接"Q弹Z下窗体;

  5Q、录入用户名QINTERNALQ口令:oracleQ选择q接w䆾?SYSDBA"Q点ȝ定,出现以下界面Q选择例程下的数据库,点击"打开"单选框Q再点击"应用"按纽

  6Q如果没有用的数据库,可在文g菜单中选择"数据库d到树"

  7Q录入主机名Q端口号、SID和网l服务名。主机名为本地计机名,如果q接q程服务器,则录入远E计机名;端口号默认ؓ1521Q不能修改;SID为安装时录入的SIDQ必M_Q如果连接的E数据库Q则录入q程服务器的SIDQ网l服务名可ؓ安装时录入的|络服务名,可Q意修改;最后点?定"卛_?br />
  8Q、重复步???br />
4?使用服务控制面板启动和终止实?br />    

四、NET8监听?/span>

1Q?在命令提C符下录入:
  LSNRCTL
  STARTQ启动)
  STOPQ关闭)
  STATUSQ查看状态)

2Q、也可在控制面板的服务中选择ORACLE ORAHOME81 TNSLISTENERQ双L点击鼠标右键点击"启动"?

五、TNSNAMES.ORA配置

  在安装目录下Q如QE:\Oracle\Ora81\network\ADMIN下用写字板或C本打开TNSNAME.ORA文gQ文件内容大概如下:
  TEST.SOFTONE.COM =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = zcb_8115)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = test)
  )
  )
  蓝色部分为安装时录入的信息?br />
  如果该文件没有配|成功,该文件可通过以下步骤q行配置Q?br />   1Q、在E序菜单中打开NET8 CONFIGURATION ASSISTANT

  2Q、选择Net8 Configuration Assistant,打开Q进?Net8 Configuration Assistant:Ƣ迎"H口

  2Q、选择"本地|络服务名设|?Q点?下一?Q?弹出以下H体Q?br />
  3Q、在"Net8 Configuration Assistant:|络服务名配|?H口中选择"d"Q点?下一?Q?弹出以下H体Q?br />
  4Q在"Net8 Configuration Assistant:|络服务名配|,数据库版?H口中选择"ORACLE 8I数据库或服务"Q点?下一?Q弹Z下窗体;

  5Q在"Net8 Configuration Assistant:|络服务名配|,服务?H口输入服务名,此服务名跟安装时录入的服务名QSIDQ相同,录入后,点击"下一?Q弹Z下窗体;

  6Q、在"Net8 Configuration Assistant:|络服务名配|,请选择协议"H口选择"TCP"此时只能选择"TCP"Q点?下一?, 弹出以下H体Q?br />
  7Q在"Net8 Configuration Assistant:|络服务名配|,TCP/IP协议"H口输入L名(如果q接本地数据库,则录入本地计机名,如果q接q程数据库,则录入远E计机名)Q选择默认?请用标准端口号1521"Q徏议最好不要修改)Q点?下一?Q弹Z下窗体;

  8Q、在"Net8 Configuration Assistant:|络服务名配|,试"H口选择"是,q行试"Q点?下一?Q弹Z下窗体;

  9Q、当"Net8 Configuration Assistant:|络服务名配|,正在q接"H口对话框中出现提示"正在q接….试成功"信息Q表C测试通过。此时点?下一?Q进?Net8 Configuration Assistant: |络服务名配|,|络服务?H口Q?br />
  10Q、在"Net8 Configuration Assistant:|络服务名配|,|络服务?H口输入|络服务名,服务名ؓORACLEq接Ԍ可Q意录入,如:testQ点?下一?Q弹Z下窗体;

  11Q、在"Net8 Configuration Assistant:|络服务名配|,是否需要另一个网l服务名"H口中选择"?Q点?下一?Q进?|络服务名配|完? H口Q?br />
  12Q、在"|络服务名配|完?H口中点?下一?Q弹Z下窗体;

  13Q、在"Ƣ迎"H口点击"完成"Q退出配|过E?br />
  TNSNAMES.ORA配置完成后,再配|BDEQBDE如何配置略)Q可通过BDE、PLSQL、SQL EXPLORER和TNSPING命o来测试ORACLE是否q接正确。下面用TNSPING来测试是否连接?br />
  在命令提C符下录入: TNSPING TEST.SOFTONE.COM

六、表I间、用L创徏和删?/span>

1、表I间的创建、删?/strong>
  1Q、命令方式创I间
录入命oQ?br /> CREATE TABLESPACE CHECKUP_HISTORY DATAILE '/M01/ORADATA/BIBDB/CHECKUP_HISTORY.DBF' SIZE 1000M;
q条语句创徏了一个名为CHECKUP_HISTORY.DBF的文Ӟ定w?000MBQ容U了存储在CHECKUP_HISTORY表空间的所有数据?br />
  2Q、徏议用此方式徏立表I空?br />   打开DBA STUDIOQ?br />
  选择存储下表I间Q单d键,选择创徏Q出C下界面:

  录入名称和其他相关的讄Q其它设|徏议用默认|Q点?创徏"按纽
  如果要删除某表空_则选中该表I间Q然后点击鼠标右键,选择"Ud"卛_?br />
2、用L创徏、删?/strong>
  1Q、命令方式徏立、删除用?br />   建立
  create user pharmacy
  identified by pharmacy
  default tablespace PHARMACY
  temporary tablespace TEMP
  profile DEFAULT;
  grant dba to pharmacy;
   删除
  DROP USER PHARMACY CASCADE

  2Q、通过PLSQL建立、删除用?br />   建立Q?br />   打开PLSQLQ以SYSTEMQmanagerdQ选择USERSQ以鼠标右键选择NEWQ输入名U、密码、表I间、时表I间和用h限,点击"APPLY"?br />   删除
  选择用户Q以鼠标右键选择"DROP"

  3Q用ORACLE 建立、删除用?br />   建立Q?br />   打开DBA STUDIO
  选择安全下用P点击鼠标右键选择"创徏"
  输入名称、口令和用户权限Q点?创徏"按纽
  删除Q?br />   选择需删除的用P点击鼠标右键Q选择"Ud"?br />
七、数据脚本导入、导?/span>
1?导入
  1Q、命令方式导?br />   IMP PHARMACY/PHARMACY@TEST.SOFTONE.COM D:\DD\PHARMACY.DMP FULL=Y
  此方式导入的数据库带有表l构和数据内宏V?br />
  2Q、用PLSQL导入
  选择TOOLS菜单下的IMPORT TABLES Q选择需要导入的脚本Q点?IMPORT"按纽
  此方式导入的数据库文件中带有表结构和数据内容?br />   此方式导入的数据库可能只有表l构Q也可能只有数据内容Q根据录制的脚本而定Q?br />
  3Q、在PLSQL的NEW菜单下选择COMMAND WINDOW,右键菜单中选择"LOAD"Q选择需要导入的数据脚本Q系l自动进行导入操作?br />
2、导?/strong>
  1Q、命令方式导?br />   EXP PHARMACY/PHARMACY@TEST.SOFTONE.COM D:\DD\200.DMP
  此方式导出的数据库带有表l构和数据内宏V徏议用此方式q行数据导出?br />
  2Q、用PLSQL工具导出
  选择TOOLS菜单下的EXPORT TABLES Q选择需要导出的表名Uͼ录入需要导出的脚本名称Q点?EXPORT"按纽
   此方式导出的数据带有数据l构和数据内宏V?br />   此方式导出的数据只带有数据结构,不带数据内容?br />
  3Q在PLSQL工具的TOOLS菜单下选择EXPORT USER OBJECTS Q版本ؓ5.1以上才有此功能)Q录入需要导出的脚本名称Q默认ؓ全部选中Q如果只导出部分表或触发器等{,用鼠标在列表中自行选择Q,点击"EXPORT"按纽

  此方式导出的数据库只带有表结构,不导出数据内宏V如果只导出表结构,使用此方式进行导出?/div> http://blog.csdn.net/ak_2005/archive/2007/03/05/1520739.aspx

liaojiyong 2007-10-26 12:48 发表评论
]]>ORACLE应用常见ȝ问题1000问(轉)http://www.aygfsteel.com/liaojiyong/archive/2007/04/27/114006.htmlliaojiyongliaojiyongFri, 27 Apr 2007 02:24:00 GMThttp://www.aygfsteel.com/liaojiyong/archive/2007/04/27/114006.htmlhttp://www.aygfsteel.com/liaojiyong/comments/114006.htmlhttp://www.aygfsteel.com/liaojiyong/archive/2007/04/27/114006.html#Feedback0http://www.aygfsteel.com/liaojiyong/comments/commentRss/114006.htmlhttp://www.aygfsteel.com/liaojiyong/services/trackbacks/114006.html阅读全文

liaojiyong 2007-04-27 10:24 发表评论
]]>
关于数据库名(db_name)、实例名(instance_name)、ORACLE_SID(?http://www.aygfsteel.com/liaojiyong/archive/2007/04/27/113998.htmlliaojiyongliaojiyongFri, 27 Apr 2007 02:01:00 GMThttp://www.aygfsteel.com/liaojiyong/archive/2007/04/27/113998.htmlhttp://www.aygfsteel.com/liaojiyong/comments/113998.htmlhttp://www.aygfsteel.com/liaojiyong/archive/2007/04/27/113998.html#Feedback0http://www.aygfsteel.com/liaojiyong/comments/commentRss/113998.htmlhttp://www.aygfsteel.com/liaojiyong/services/trackbacks/113998.html  在ORACLE7?数据库中只有数据库名(db_name)和数据库实例?instance_name)。在ORACLE8i?i中出C新的参数Q即数据库域?db_domain)、服务名(service_name)、以及操作系l环境变?ORACLE_SID)。这些都存在于同一个数据库中的标识Q用于区分不同数据库的参数?

一、什么是数据库名(db_name)?
  数据库名是用于区分数据的内部标识Q是以二q制方式存储于数据库控制文g中的参数Q在数据安装或创Z后将不得修改。数据库安装完成后,该参数被写入数据库参数文件pfile中,格式如下Q?
[code:1:1aaf156970]
.........
db_name="orcl"     #(不允怿?
db_domain=dbcenter.toys.com
instance_name=orcl
service_names=orcl.dbcenter.toys.com
control_file=(...............
.........
[/code:1:1aaf156970]
在每一个运行的ORACLE8i数据库中都有一个数据库?db_name),如果一个服务器E序中创Z两个数据库,则有两个数据库名。其控制参数据分属在不同的pfile中控制着相关的数据库?

二、什么是数据库实例名(instance_name)
  数据库实例名则用于和操作pȝ之间的联p,用于对外部连接时使用。在操作pȝ中要取得与数据库之间的交互,必须使用数据库实例名。例如,要和某一个数据库serverq接Q就必须知道其数据库实例名,只知道数据库名是没有用的Q与数据库名不同Q在数据安装或创建数据库之后Q实例名可以被修攏V数据库安装完成后,该实例名被写入数据库参数文gpfile中,格式如下Q?
[code:1:1aaf156970]
db_name="orcl"     #(不允怿?/span>)
db_domain=dbcenter.toys.com
instance_name=orcl  #(可以修改,可以与db_name相同也可不同)
service_names=orcl.dbcenter.toys.com
control_file=(...............
.........
[/code:1:1aaf156970]
数据库名与实例名之间的关pR?
数据库名与实例名之间的关pM般是一一对应关系Q有一个数据库名就有一个实例名Q如果在一个服务器中创Z个数据库Q则有两个数据库名,两个数据库实例名Q用两个标识定一个数据库Q用户和实例相连接?
但在8i?i的ƈ行服务器l构中,数据库与实例之间不存在一一对应关系Q而是一对多关系Q?一个数据库对应多个实例Q同一旉内用户只一个实例相联系Q当某一实例出现故障Q其它实例自动服务,以保证数据库安全q行?

三、操作系l环境变?ORACLE_SID)
在实际中Q对于数据库实例名的描述有时使用实例?instance_name)参数Q有时用ORACLE_SID参数。这两个都是数据库实例名Q它们有什么区别呢Q?l常弄؜)
[code:1:1aaf156970]

      (ORACLE_SID)
OS<----------------> ORACLE 数据?nbsp;<--------(Instance_name(实例?)

[/code:1:1aaf156970]
上图表示实例名instance_name、ORACLE_SID与数据库及操作系l之间的关系Q虽然这里列出的两个参数都是数据库实例名Q但instance_name参数是ORACLE数据库的参数Q此参数可以在参数文件中查询刎ͼ而ORACLE_SID参数则是操作pȝ环境变量?
操作pȝ环境变量ORACLE_SID用于和操作系l交互。也是_在操作系l中要想得到实例名,必M用ORACLE_SID。此参数与ORACLE_BASE、ORACLE_HOME{用法相同。在数据库安装之后,ORACLE_SID被用于定义数据库参数文g的名U。如Q?
$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora?
定义Ҏ:
[code:1:1aaf156970]
export ORACLE_SID=orcl
[/code:1:1aaf156970]

如果在同一服务器中创徏了多个数据库Q则必然同时存在多个数据库实?q时可以重复上述定义q程Q以选择不同实例?

q可以用
[code:1:1aaf156970]
[oracle@Datacent]$ . oraenv
[/code:1:1aaf156970]

来切换不同的ORACLE_SID来通过操作pȝ来启动不同的实例(instance)


liaojiyong 2007-04-27 10:01 发表评论
]]>
Oracle 函數大全 http://www.aygfsteel.com/liaojiyong/archive/2006/09/14/69529.htmlliaojiyongliaojiyongThu, 14 Sep 2006 00:55:00 GMThttp://www.aygfsteel.com/liaojiyong/archive/2006/09/14/69529.htmlhttp://www.aygfsteel.com/liaojiyong/comments/69529.htmlhttp://www.aygfsteel.com/liaojiyong/archive/2006/09/14/69529.html#Feedback0http://www.aygfsteel.com/liaojiyong/comments/commentRss/69529.htmlhttp://www.aygfsteel.com/liaojiyong/services/trackbacks/69529.html SQL中的单记录函?br />1.ASCII
q回与指定的字符对应的十q制?
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;

        A         A      ZERO     SPACE
--------- --------- --------- ---------
       65        97        48        32


2.CHR
l出整数,q回对应的字W?
SQL> select chr(54740) zhao,chr(65) chr65 from dual;

ZH C
-- -
?A

3.CONCAT
q接两个字符?
SQL> select concat('010-','88888888')||'?3'  高乾竞电?from dual;

高乾竞电?br />----------------
010-88888888?3

4.INITCAP
q回字符串ƈ字W串的第一个字母变为大?
SQL> select initcap('smith') upp from dual;

UPP
-----
Smith


5.INSTR(C1,C2,I,J)
在一个字W串中搜索指定的字符,q回发现指定的字W的位置;
C1    被搜索的字符?br />C2    希望搜烦的字W串
I     搜烦的开始位|?默认?
J     出现的位|?默认?
SQL> select instr('oracle traning','ra',1,2) instring from dual;

 INSTRING
---------
        9


6.LENGTH
q回字符串的长度;
SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;

NAME   LENGTH(NAME) ADDR             LENGTH(ADDR)       SAL LENGTH(TO_CHAR(SAL))
------ ------------ ---------------- ------------ --------- --------------------
高乾竞          ?3 北京市v锭区                6   9999.99                    7

 

7.LOWER
q回字符?q将所有的字符写
SQL> select lower('AaBbCcDd')AaBbCcDd from dual;

AABBCCDD
--------
aabbccdd


8.UPPER
q回字符?q将所有的字符大写
SQL> select upper('AaBbCcDd') upper from dual;

UPPER
--------
AABBCCDD

 

9.RPAD和LPAD(_脓字符)
RPAD  在列的右边粘贴字W?br />LPAD  在列的左边粘贴字W?br />SQL> select lpad(rpad('gao',10,'*'),17,'*')from dual;

LPAD(RPAD('GAO',1
-----------------
*******gao*******
不够字符则用*来填?/font>


10.LTRIM和RTRIM
LTRIM  删除左边出现的字W串
RTRIM  删除双出现的字W串
SQL> select ltrim(rtrim('   gao qian jing   ',' '),' ') from dual;

LTRIM(RTRIM('
-------------
gao qian jing


11.SUBSTR(string,start,count)
取子字符?从start开?取count?br />SQL> select substr('13088888888',3,8) from dual;

SUBSTR('
--------
08888888


12.REPLACE('string','s1','s2')
string   希望被替换的字符或变?
s1       被替换的字符?br />s2       要替换的字符?br />SQL> select replace('he love you','he','i') from dual;

REPLACE('H
----------
i love you


13.SOUNDEX
q回一个与l定的字W串读音相同的字W串
SQL> create table table1(xm varchar(8));
SQL> insert into table1 values('weather');
SQL> insert into table1 values('wether');
SQL> insert into table1 values('gao');

SQL> select xm from table1 where soundex(xm)=soundex('weather');

XM
--------
weather
wether


14.TRIM('s' from 'string')
LEADING   剪掉前面的字W?br />TRAILING  剪掉后面的字W?br />如果不指?默认为空格符

15.ABS
q回指定值的l对?br />SQL> select abs(100),abs(-100) from dual;

 ABS(100) ABS(-100)
--------- ---------
      100       100


16.ACOS
l出反余弦的?br />SQL> select acos(-1) from dual;

 ACOS(-1)
---------
3.1415927


17.ASIN
l出反正弦的?br />SQL> select asin(0.5) from dual;

ASIN(0.5)
---------
.52359878


18.ATAN
q回一个数字的反正切?br />SQL> select atan(1) from dual;

  ATAN(1)
---------
.78539816


19.CEIL
q回大于或等于给出数字的最整?br />SQL> select ceil(3.1415927) from dual;

CEIL(3.1415927)
---------------
              4


20.COS
q回一个给定数字的余u
SQL> select cos(-3.1415927) from dual;

COS(-3.1415927)
---------------
             -1


21.COSH
q回一个数字反余u?br />SQL> select cosh(20) from dual;

 COSH(20)
---------
242582598


22.EXP
q回一个数字e的nơ方?br />SQL> select exp(2),exp(1) from dual;

   EXP(2)    EXP(1)
--------- ---------
7.3890561 2.7182818


23.FLOOR
对给定的数字取整?br />SQL> select floor(2345.67) from dual;

FLOOR(2345.67)
--------------
          2345


24.LN
q回一个数字的Ҏ?br />SQL> select ln(1),ln(2),ln(2.7182818) from dual;

    LN(1)     LN(2) LN(2.7182818)
--------- --------- -------------
        0 .69314718     .99999999


25.LOG(n1,n2)
q回一个以n1为底n2的对?
SQL> select log(2,1),log(2,4) from dual;

 LOG(2,1)  LOG(2,4)
--------- ---------
        0         2


26.MOD(n1,n2)
q回一个n1除以n2的余?br />SQL> select mod(10,3),mod(3,3),mod(2,3) from dual;

MOD(10,3)  MOD(3,3)  MOD(2,3)
--------- --------- ---------
        1         0         2


27.POWER
q回n1的n2ơ方?br />SQL> select power(2,10),power(3,3) from dual;

POWER(2,10) POWER(3,3)
----------- ----------
       1024         27


28.ROUND和TRUNC
按照指定的精度进行舍?br />SQL> select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;

ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)
----------- ------------ ----------- ------------
         56          -55          55          -55


29.SIGN
取数字n的符?大于0q回1,于0q回-1,{于0q回0
SQL> select sign(123),sign(-100),sign(0) from dual;

SIGN(123) SIGN(-100)   SIGN(0)
--------- ---------- ---------
        1         -1         0


30.SIN
q回一个数字的正u?br />SQL> select sin(1.57079) from dual;

SIN(1.57079)
------------
           1


31.SIGH
q回双曲正u的?br />SQL> select sin(20),sinh(20) from dual;

  SIN(20)  SINH(20)
--------- ---------
.91294525 242582598


32.SQRT
q回数字n的根
SQL> select sqrt(64),sqrt(10) from dual;

 SQRT(64)  SQRT(10)
--------- ---------
        8 3.1622777


33.TAN
q回数字的正切?br />SQL> select tan(20),tan(10) from dual;

  TAN(20)   TAN(10)
--------- ---------
2.2371609 .64836083


34.TANH
q回数字n的双曲正切?br />SQL> select tanh(20),tan(20) from dual;

 TANH(20)   TAN(20)
--------- ---------
        1 2.2371609

 

35.TRUNC
按照指定的精度截取一个数
SQL> select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;

   TRUNC1 TRUNC(124.16666,2)
--------- ------------------
      100             124.16

 

36.ADD_MONTHS
增加或减L?br />SQL> select to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from dual;

TO_CHA
------
200002
SQL> select to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm') from dual;

TO_CHA
------
199910


37.LAST_DAY
q回日期的最后一?br />SQL> select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd') from dual;

TO_CHAR(SY TO_CHAR((S
---------- ----------
2004.05.09 2004.05.10
SQL> select last_day(sysdate) from dual;

LAST_DAY(S
----------
31-5?-04


38.MONTHS_BETWEEN(date2,date1)
l出date2-date1的月?br />SQL> select months_between('19-12?1999','19-3?1999') mon_between from dual;

MON_BETWEEN
-----------
          9
SQL>selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.mm.dd')) mon_betw from dual;

 MON_BETW
---------
      -60


39.NEW_TIME(date,'this','that')
l出在this时区=other时区的日期和旉
SQL> select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time
  2  (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;

BJ_TIME             LOS_ANGLES
------------------- -------------------
2004.05.09 11:05:32 2004.05.09 18:05:32


40.NEXT_DAY(date,'day')
l出日期date和星期x之后计算下一个星期的日期
SQL> select next_day('18-5?2001','星期?) next_day from dual;

NEXT_DAY
----------
25-5?-01

 

41.SYSDATE
用来得到pȝ的当前日?br />SQL> select to_char(sysdate,'dd-mm-yyyy day') from dual;

TO_CHAR(SYSDATE,'
-----------------
09-05-2004 星期?br />trunc(date,fmt)按照l出的要求将日期截断,如果fmt='mi'表示保留?截断U?br />SQL> select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,
  2  to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;

HH                  HHMM
------------------- -------------------
2004.05.09 11:00:00 2004.05.09 11:17:00

 

42.CHARTOROWID
字W数据类型{换ؓROWIDcd
SQL> select rowid,rowidtochar(rowid),ename from scott.emp;

ROWID              ROWIDTOCHAR(ROWID) ENAME
------------------ ------------------ ----------
AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH
AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN
AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD
AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES


43.CONVERT(c,dset,sset)
源字符?sset从一个语a字符集{换到另一个目的dset字符?br />SQL> select convert('strutz','we8hp','f7dec') "conversion" from dual;

conver
------
strutz


44.HEXTORAW
一个十六进制构成的字符串{换ؓ二进?/font>


45.RAWTOHEXT
一个二q制构成的字W串转换为十六进?/font>

 

46.ROWIDTOCHAR
ROWID数据cd转换为字W类?/font>

 

47.TO_CHAR(date,'format')
SQL> select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YY
-------------------
2004/05/09 21:14:41

 

48.TO_DATE(string,'format')
字W串转化为ORACLE中的一个日?/font>


49.TO_MULTI_BYTE
字W串中的单字节字W{化ؓ多字节字W?br />SQL>  select to_multi_byte('?) from dual;

TO
--
?/font>


50.TO_NUMBER
给出的字符转换为数?br />SQL> select to_number('1999') year from dual;

     YEAR
---------
     1999


51.BFILENAME(dir,file)
指定一个外部二q制文g
SQL>insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));


52.CONVERT('x','desc','source')
x字段或变量的源source转换为desc
SQL> select sid,serial#,username,decode(command,
  2  0,'none',
  3  2,'insert',
  4  3,
  5  'select',
  6  6,'update',
  7  7,'delete',
  8  8,'drop',
  9  'other') cmd  from v$session where type!='background';

      SID   SERIAL# USERNAME                       CMD
--------- --------- ------------------------------ ------
        1         1                                none
        2         1                                none
        3         1                                none
        4         1                                none
        5         1                                none
        6         1                                none
        7      1275                                none
        8      1275                                none
        9        20 GAO                            select
       10        40 GAO                            none


53.DUMP(s,fmt,start,length)
DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2cd的?br />SQL> col global_name for a30
SQL> col dump_string for a50
SQL> set lin 200
SQL> select global_name,dump(global_name,1017,8,5) dump_string from global_name;

GLOBAL_NAME                    DUMP_STRING
------------------------------ --------------------------------------------------
ORACLE.WORLD                   Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D


54.EMPTY_BLOB()和EMPTY_CLOB()
q两个函数都是用来对大数据类型字D进行初始化操作的函?/font>


55.GREATEST
q回一l表辑ּ中的最大?x较字W的~码大小.
SQL> select greatest('AA','AB','AC') from dual;

GR
--
AC
SQL> select greatest('?,'?,'?) from dual;

GR
--
?/font>


56.LEAST
q回一l表辑ּ中的最?
SQL> select least('?,'?,'?) from dual;

LE
--
?/font>


57.UID
q回标识当前用户的唯一整数
SQL> show user
USER ?GAO"
SQL> select username,user_id from dba_users where user_id=uid;

USERNAME                         USER_ID
------------------------------ ---------
GAO                                   25

 

58.USER
q回当前用户的名?br />SQL> select user from  dual;

USER
------------------------------
GAO


59.USEREVN
q回当前用户环境的信?opt可以?
ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE
ISDBA  查看当前用户是否是DBA如果是则q回true
SQL> select userenv('isdba') from dual;

USEREN
------
FALSE
SQL> select userenv('isdba') from dual;

USEREN
------
TRUE
SESSION
q回会话标志
SQL> select userenv('sessionid') from dual;

USERENV('SESSIONID')
--------------------
                 152
ENTRYID
q回会话人口标志
SQL> select userenv('entryid') from dual;

USERENV('ENTRYID')
------------------
                 0
INSTANCE
q回当前INSTANCE的标?br />SQL> select userenv('instance') from dual;

USERENV('INSTANCE')
-------------------
                  1
LANGUAGE
q回当前环境变量
SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
LANG
q回当前环境的语a的羃?br />SQL> select userenv('lang') from dual;

USERENV('LANG')
----------------------------------------------------
ZHS
TERMINAL
q回用户的终端或机器的标?br />SQL> select userenv('terminal') from dual;

USERENV('TERMINA
----------------
GAO
VSIZE(X)
q回X的大?字节)?br />SQL> select vsize(user),user from dual;

VSIZE(USER) USER
----------- ------------------------------
          6 SYSTEM

 

60.AVG(DISTINCT|ALL)
all表示Ҏ有的值求q_?distinct只对不同的值求q_?br />SQLWKS> create table table3(xm varchar(8),sal number(7,2));
语句已处理?br />SQLWKS>  insert into table3 values('gao',1111.11);
SQLWKS>  insert into table3 values('gao',1111.11);
SQLWKS>  insert into table3 values('zhu',5555.55);
SQLWKS> commit;

SQL> select avg(distinct sal) from gao.table3;

AVG(DISTINCTSAL)
----------------
         3333.33

SQL> select avg(all sal) from gao.table3;

AVG(ALLSAL)
-----------
    2592.59


61.MAX(DISTINCT|ALL)
求最大?ALL表示Ҏ有的值求最大?DISTINCT表示对不同的值求最大?相同的只取一?br />SQL> select max(distinct sal) from scott.emp;

MAX(DISTINCTSAL)
----------------
            5000


62.MIN(DISTINCT|ALL)
求最?ALL表示Ҏ有的值求最?DISTINCT表示对不同的值求最?相同的只取一?br />SQL> select min(all sal) from gao.table3;

MIN(ALLSAL)
-----------
    1111.11


63.STDDEV(distinct|all)
求标准差,ALL表示Ҏ有的值求标准?DISTINCT表示只对不同的值求标准?br />SQL> select stddev(sal) from scott.emp;

STDDEV(SAL)
-----------
  1182.5032

SQL> select stddev(distinct sal) from scott.emp;

STDDEV(DISTINCTSAL)
-------------------
           1229.951

 

64.VARIANCE(DISTINCT|ALL)
求协方差

SQL> select variance(sal) from scott.emp;

VARIANCE(SAL)
-------------
    1398313.9


65.GROUP BY
主要用来对一l数q行l计
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno;

   DEPTNO  COUNT(*)  SUM(SAL)
--------- --------- ---------
       10         3      8750
       20         5     10875
       30         6      9400

 

66.HAVING
对分l统计再加限制条?br />SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)>=5;

   DEPTNO  COUNT(*)  SUM(SAL)
--------- --------- ---------
       20         5     10875
       30         6      9400
SQL> select deptno,count(*),sum(sal) from scott.emp having count(*)>=5 group by deptno ;

   DEPTNO  COUNT(*)  SUM(SAL)
--------- --------- ---------
       20         5     10875
       30         6      9400


67.ORDER BY
用于Ҏ询到的结果进行排序输?br />SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc;

   DEPTNO ENAME            SAL
--------- ---------- ---------
       10 KING            5000
       10 CLARK           2450
       10 MILLER          1300
       20 SCOTT           3000
       20 FORD            3000
       20 JONES           2975
       20 ADAMS           1100
       20 SMITH            800
       30 BLAKE           2850
       30 ALLEN           1600
       30 TURNER          1500
       30 WARD            1250
       30 MARTIN          1250
       30 JAMES            950

posted @ 2006-06-30 09:01 software5168 阅读(94) | 评论 (0)~辑 收藏

2006q??6?#

如何从一位菜鸟蜕变成为高手,灉|使用的SQL语句是必不可的。本文收集了部分比较l典Q常用的SQL语句供大家参考,希望对大家有所帮助?

  说明Q复制表(只复制结?源表名:a 新表名:b)  

  SQL: select * into b from a where 1<>1

  说明Q拷贝表(拯数据,源表名:a 目标表名Qb)  

  SQL: insert into b(a, b, c) select d,e,f from b;

  说明Q显C文章、提交h和最后回复时间  

  SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

  说明Q外q接查询(表名1Qa 表名2Qb)  

  SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

  说明Q日E安排提前五分钟提醒  

  SQL: select * from 日程安排 where datediff('minute',f开始时?getdate())>5  

  说明Q两张关联表Q删除主表中已经在副表中没有的信?

  SQL:   

  delete from info where not exists ( select * from infobz where info.infid=infobz.infid

  说明Q?-

  SQL:   

  SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE

   FROM TABLE1,

   (SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE

   FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND

   FROM TABLE2

   WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,

   (SELECT NUM, UPD_DATE, STOCK_ONHAND

   FROM TABLE2

   WHERE TO_CHAR(UPD_DATE,'YYYY/MM') =

   TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') &brvbar;&brvbar; '/01','YYYY/MM/DD') - 1, 'YYYY/MM') Y,

   WHERE X.NUM = Y.NUM Q?Q?

   AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND B

  WHERE A.NUM = B.NUM

  说明Q?-

  SQL:   

  select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and pdU?'"&strdepartmentname&"' and 专业名称='"&strprofessionname&"' order by 性别,生源?高考Ll?

  说明Q?

  从数据库中去一q的各单位电话费l计(电话费定额贺电化肥清单两个表来源Q?

  SQL:  

  SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear,

   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN,

   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,

   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR,

   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR,

   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY,

   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE,

   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL,

   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,

   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP,

   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT,

   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV,

   SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC

  FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration

   FROM TELFEESTAND a, TELFEE b

   WHERE a.tel = b.telfax) a

  GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy')

  说明Q四表联查问题:  

  SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

  说明Q得到表中最的未用的ID?

  SQL: 

  SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID

   FROM Handle

   WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a) 



liaojiyong 2006-09-14 08:55 发表评论
]]>
վ֩ģ壺 | | ̰| ɽ| | ˮ| | ɽ| | | Դ| | ۽| | | | Դ| | | | گ| | | | | ӡ| | ţ| | ˼| | üɽ| ϲ| | | Ľ| | | ޼| ͷ| ƽ|