-
Oracle外连接和内连接
2011-09-08 15:45:33
1. 内连接很简单
select A.*, B.* from A,B where A.id = B.id
select A.*, B.* from A inner join B on A.id = B.id
以上两句是完全等价的
2. 左外连接
select * from emp a left join dept d on a.deptno=d.deptno
select * from emp a,dept d where a.deptno=d.deptno(+)
以上两句是完全等价的
3. 右外连接
select * from emp a right join dept d on a.deptno=d.deptno
select * from emp a,dept d where a.deptno(+)=d.deptno
以上两句是完全等价的
也就是说只要把语句中的表换个位置,右外和左外就可以起到同样的功能
Oracle中可以使用“(+) ”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN
LEFT OUTER JOIN:左外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id);
等价于
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id=d.department_id(+)
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。
RIGHT OUTER JOIN:右外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);
等价于
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id(+)=d.department_id
结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。
FULL OUTER JOIN:全外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。
SQL--JOIN之完全用法
外联接。外联接可以是左向外联接、右向外联接或完整外部联接。
在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定:
LEFT JOIN 或 LEFT OUTER JOIN。
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。 -
Linux下监听程序TNS-12543错误解决方法
2011-09-06 10:01:30
遇到的问题:安装虚拟机Vmware之后,打开系统项目虚拟机,经过以下处理步骤
1) root (123456)
2)启动Oracle
2.1 su - oracle (oracle)
2.2 lsnrctl start --启动Listener
2.3 sqlplus / as sysdba
2.4 startup
2.5 exit
3)启动JBOSS
3.1 su - portal (portal)
3.2 cd Jboss/bin
3.3 ./startup.sh
在处理 lsnrctl start 启动监听器的时候,控制台抛出以下错误信息:
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 15-10��-2010 12:32:19
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Starting /home/oracle/10.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /home/oracle/10.2.0/db_1/network/admin/listener.ora
Log messages written to /home/oracle/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=cmms)(PORT=1521)))
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12543: TNS:destination host unreachable
TNS-12560: TNS:protocol adapter error
TNS-00513: Destination host unreachable
Linux Error: 101: Network is unreachable
处理过程:
Oracle 的 listener.ora 文件里面HOST后面应该输入IP地址还是主机名呢?最好使用主机名。很多时候,一个机器绑定的不止一个IP地址,如果HOST后面是IP地址,那么Oracle的Listener只会监听指定的IP地址的访问请求,本机其他的IP地址的连接都会拒绝的。当创建监听的时候,listener.ora 文件里面默认创建的是主机名。那么,企业、邮局,如果没有特别的需要,如果没有特别的需要就不要画蛇添足的去修改host_name为IP地址了。但是,如果HOST后面是主机名,那么就会与/etc/hosts 这个文件扯上关系了。
第一种情况:/etc/hosts文件oracle没有权限访问
在etc下打开终端
[root@localhost etc]# l hosts
这时候oracle用户去启动listener,
[oracle@localhost admin]$ lsnrctl start
[oracle@localhost admin]$ lsnrctl start第二种情况,就是现在遇到的情况是:2、/etc/hosts文件里面的主机名对应的IP地址没有在本机绑定
查看本机/etc/hosts文件里面主机定义的IP信息,用以下命令
[root@localhost etc]# cat /etc/hosts
查找本机的IP地址有没有指定的IP,用以下命令
[root@localhost etc]# ifconfig|grep xxxx.xxxx.xxxx.xxxx现在问题明朗了,通过cat /etc/hosts命令查看etc/hosts文件中主机对应的ip为192.168.238.128
但是我安装虚拟机的时候,virtual network editor (虚拟网络编辑器)中类型为Host-only的VMnet1 定义的子网IP为 192.168.89.0,与192.168.238.128中的网段有冲突,
因此更改为192.168.89.128,问题解决。
因此当吧虚拟机中的项目拷贝到另一个电脑中时,由于虚拟机的安装环境更改需要更改以下虚拟网络IP
-
Oracle Connect By用法
2011-08-23 11:41:08
oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是:
select ... from <TableName>
where <Conditional-1>
start with <Conditional-2>
connect by <Conditional-3>
;
<Conditional-1>:过滤条件,用于对返回的所有记录进行过滤。
<Conditional-2>:查询结果重起始根结点的限定条件。
<Conditional-3>:连接条件例如:
数据库表结构如下:
create table t2(
root_id number,
id number,
name varchar(5),
description varchar(10)
);
insert into t2(root_id,id,name,description) values(0,1,'a','aaa');
insert into t2(root_id,id,name,description) values(1,2,'a1','aaa1');
insert into t2(root_id,id,name,description) values(1,3,'a2','aaa2');
insert into t2(root_id,id,name,description) values(0,4,'b','bbb');
insert into t2(root_id,id,name,description) values(4,5,'b1','bbb1');
insert into t2(root_id,id,name,description) values(4,6,'b2','bbb2');如图:
select * from t2;
select * from t2 start with root_id = 0 connect by prior id = root_id;2.获取特定子树:
select * from t2 start with id = 1 connect by prior id = root_id;
select * from t2 start with id = 4 connect by prior id = root_id;
3.如果connect by prior中的prior被省略,则查询将不进行深层递归。
如:
select * from t2 start with root_id = 0 connect by id = root_id; -
用vmware试验10gr rac
2010-08-30 17:37:06
花了一周时间在vmware GSX3.2上成功安装了10g rac
虚拟盘设置:
scsi1.present = "TRUE"
scsi1:0.present = "TRUE"
scsi1:0.fileName = "asmshare.vmdk"
scsi1:0.mode = "independent-persistent"
scsi1:0.deviceType = "plainDisk"
scsi1.virtualDev = "lsilogic"
redoLogDir = "."
scsi1.sharedBus = "virtual"
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"安装是用vmware GSX3.2虚拟两个linux as4_u2.
以下记录在安装时碰到的重点、难点问题:
在安装ocfs2时耽误了一天,装好后,运行/usr/sbin/ocfs2console,选择 [Clucster]-[Configure Nodes] ,老是出现:
“Could not start cluster stack.This must be resolved before any ocfs2...."原因:
1。要disable selinux安全!编辑 /etc/selinux/config 文件,设置SELINUX=disabled 并重新启动系统。
2。安装的ocfs2包一定要对应正确的内核版本!uname -r,如果显示2.6.9-22.ELsmp,有smp字样,表示是多处理器的,要用
内似ocfs2-2.6.9-22.ELsmp-1.0.7-1.i686.rpm,带ELsmp的包!在安装asm,第一个节点建asm盘后,如:
/etc/init.d/oracleasm createdisk VOL1 /dev/sdb5在第一个节点运行
/etc/init.d/oracleasm scandisks
/etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3都OK!
但在第二个节点运行
/etc/init.d/oracleasm scandisks显示OK,
运行
/etc/init.d/oracleasm listdisks后却没有找到asm盘。解决:
把两个节点都重新启动了,再在两个节点运行都正常了。其实oracleasm有个restart选项,用oracleasm restart也许就可以了,不用重启动机器。
安装成功后,可以访问,srvctl不能用,但数据库可正常使用,TAF也可以。重启机器后,不能启动了。sqlplus /nolog
sql>conn / as sysdba
sql>startup
出现以下错误:
RA-01078: failure in processing system parameters
ORA-01565: error in identifying file '+ORCL_DATA1/orcl/spfileorcl.ora'
ORA-17503: ksfdopn:2 Failed to open file +ORCL_DATA1/orcl/spfileorcl.ora
ORA-15077: could not locate ASM instance serving a required diskgroupgoogle了一下,查到:
启动ASM数据库的步骤
由于启动ASM数据库必须要先启动ASM实例,所以基本上启动步骤如下。1.以oracle用户进入操作系统
2.$ export ORACLE_SID=+ASM
3.SQL> sqlplus / as sysdba
4.SQL> startup
5.SQL> exit
6.$ export ORACLE_SID=
7.SQL> sqlplus / as sysdba
8.SQL> startup然后用下面方法启动,但也出错:
[oracle@rac1pub dbs]$ export ORACLE_SID=+ASM
[oracle@rac1pub dbs]$ sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on Fri Jun 23 11:32:52 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/10.2.0/db_1/dbs/init+ASM.ora'
SQL>解决:
启动asm实例前设置ORACLE_SID错了,应该要设置成export ORACLE_SID=+ASM1,第二个节点要设置成export ORACLE_SID=+ASM2linux下10g RAC安装成功!!
20060619-20060626花了一周多点时间,全部安装成功!参考文档:
ORACLE 10.2.0.1 X86_64 Real Application Cluster (RAC) for Red Hat Enterprise Linux AS 4 Update 2 X86_64安装手册.doc
-
<转>Ocfs2文件系统常见问题解决方法1
2010-08-26 11:20:34
reference:http://www.ixdba.net/hbcms/article/5b/266.html
现象一:
mount -t ocfs2 -o datavolume,nointr /dev/sdb1 /webdata
mount.ocfs2: Transport endpoint is not connected while mounting /dev/sdb1 on /webdata. Check 'dmesg' for more information on this error.可能问题:
1:防火墙打开着,没有关闭,屏蔽了心跳端口
2:各个节点的/etc/init.d/o2cb configure值配置不同导致。
3:一个节点处于挂载中,另外一个节点刚刚配置好,重启了ocfs2服务导致,此时只要把连个节点都重启一下服务即可完成挂载。4:SElinux没有关闭导致。
下面是一个案例:
[root@test02 ~]# mount -t ocfs2 /dev/vg_ocfs/lv_u02 /u02
mount.ocfs2: Transport endpoint is not connected while mounting /dev/vg_ocfs/lv_u02 on /u02. Check 'dmesg' for more information on this error.
出现这个错误是由于配置OCFS时O2CB_HEARTBEAT_THRESHOLD各节点的值不一样导致的。我用/etc/init.d/o2cb configure时其实各个节点的值已经都一样了,不过第一个节点忘了重启o2cb,结果查了好久才发现。接下当然是把已经MOUNT的OCFS目录UMOUNT掉,结果又出错了:
[root@test01 u02]# umount -f /u02
umount2: Device or resource busy
umount: /u02: device is busy
umount2: Device or resource busy
umount: /u02: device is busy
这时候应该用/etc/init.d/ocfs2 stop和/etc/init.d/o2cb stop停掉OCFS2和O2CB再UMOUJNT才行,然后把OCFS2和O2CB启动以后其他节点就可以顺利MOUNT OCFS了。
现象二:
# /etc/init.d/o2cb online ocfs2Starting cluster ocfs2: Failed
Cluster ocfs2 created
o2cb_ctl: Configuration error discovered while populating cluster ocfs2. None of its nodes were considered local. A node is considered local when its node name in the configuration maches this machine's host name.
Stopping cluster ocfs2: OK
主机名问题,检查more /etc/ocfs2/cluster.conf以及/etc/hosts文件信息,修改相应的主机名即可
注意:为了保证开机能自动挂载ocfs2文件系统,需要在/etc/fstab加入自动启动选项后,必须在/etc/hosts中加入两个节点的主机名和ip的对应解析,主机名和 /etc/ocfs2/cluster.conf配置的主机名一定要相同。
现象三
1: Starting O2CB cluster ocfs2: Failed
在安装完ocfs2 后,配置o2cb 出错:
[root@rac1 ocfs2]# /etc/init.d/o2cb configure
Configuring the O2CB driver.This will configure the on-boot properties of the O2CB driver.
The following questions will determine whether the driver is loaded on
boot. The current values will be shown in brackets ('[]'). Hitting
<ENTER> without typing an answer will keep that current value. Ctrl-C
will abort.Load O2CB driver on boot (y/n) [y]:
Cluster to start on boot (Enter "none" to clear) [ocfs2]:
Specify heartbeat dead threshold (>=7) [7]:
Writing O2CB configuration: OK
Starting O2CB cluster ocfs2: Failed
Cluster ocfs2 created
o2cb_ctl: Configuration error discovered while populating cluster ocfs2. None of its nodes were considered local. A node is considered local when its node name in the configuration matches this machine's host name.
Stopping O2CB cluster ocfs2: OK
出现这中情况,应该是OCFS没有配置,可以看一下,有一个图形ocfs配置命令,首先要配置他,而且最好 用IP地址,不要用主机名!
也就是说,在启动ocfs2时,ocfs节点配置文件一定要配置好,如果没有配置正确,就会报错,同时在用图形界面配置的时候,/etc/ocfs2/cluster.conf文件最好是空文件,要不然也会报错!
现象四
挂载ocfs2文件系统遇到
mount.ocfs2: Error when attempting to run /sbin/ocfs2_hb_ctl: "Operation not permitted"
mount -t ocfs2 -o datavolume /dev/sdb1 /u02/oradata/orcl
ocfs2_hb_ctl: Bad magic number in superblock while reading uuid
mount.ocfs2: Error when attempting to run /sbin/ocfs2_hb_ctl: "Operation not permitted"
这个问题是由于ocfs2文件文件系统分区没有格式化引起的错误,在挂载ocfs2文件系统之前,用于这个文件系统的分区一定要进行格式化.
现象五:
Configuration assistant "Oracle Cluster Verification Utility" failed
10g rac 安装请教 oracle 10.2.0.1 solaris 5.9 双机 安装crs最后一步有错,不知如何解决?LOG 信息:
INFO: Configuration assistant "Oracle Cluster Verification Utility" failed
-----------------------------------------------------------------------------
*** Starting OUICA ***
Oracle Home set to /orabase/product/10.2
Configuration directory is set to /orabase/product/10.2/cfgtoollogs. All xml files under the directory will be processed
INFO: The "/orabase/product/10.2/cfgtoollogs/configToolFailedCommands" script. contains all commands that failed, were skipped or were cancelled. This file may be used to run these configuration assistants outside of OUI. Note that you may have to update this script. with passwords (if any) before executing the same.
-----------------------------------------------------------------------------
SEVERE: OUI-25031:Some of the configuration assistants failed. It is strongly recommended that you retry the configuration assistants at this time. Not successfully running any "Recommended" assistants means your system will not be correctly configured.
1. Check the Details panel on the Configuration Assistant Screen to see the errors resulting in the failures.
2. Fix the errors causing these failures.
3. Select the failed assistants and click the 'Retry' button to retry them.
INFO: User Selected: Yes/OK是vip地址没有启动造成的,建议在执行完orainstRoot.sh和root.sh命令后新开个窗口执行vipca,把crs服务都起来后再执行最后的verify步骤,可以尝试一下。
去crs的bin目录下执行crs_stat -t 看看服务是不是都起了,这种情况应该是vip没起来。
现象六:
Failed to upgrade Oracle Cluster Registry configuration
在安装CRS时,在第二个节点执行./root.sh时,出现如下提示,我在第一个节点执行正常.请大虾指点一些,不胜感激!谢谢!
[root@RACtest2 crs]# ./root.sh
WARNING: directory '/app/oracle/product/10.2.0' is not owned by root
WARNING: directory '/app/oracle/product' is not owned by root
WARNING: directory '/app/oracle' is not owned by root
WARNING: directory '/app' is not owned by root
Checking to see if Oracle CRS stack is already configuredSetting the permissions on OCR backup directory
Setting up NS directories
PROT-1: Failed to initialize ocrconfig
Failed to upgrade Oracle Cluster Registry configuration
错误原因:是因为安装crs的设备权限有问题,例如我的设备用raw来放置ocr和vote,此时要设置好这些硬件设备以及连接的文件的权限,下面是我的环境:
[root@rac2 oracrs]#
lrwxrwxrwx 1 root root 13 Jan 27 12:49 ocr.crs -> /dev/raw/raw1
lrwxrwxrwx 1 root root 13 Jan 26 13:31 vote.crs -> /dev/raw/raw2
chown root:oinstall /dev/raw/raw1
chown root:oinstall /dev/raw/raw2
chmod 660 /dev/raw/raw1
chmod 660 /dev/raw/raw2
其中/dev/sdb1放置ocr,/dev/sdb2放置vote.
[root@rac2 oracrs]# service rawdevices reload
Assigning devices:
/dev/raw/raw1 --> /dev/sdb1
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2 --> /dev/sdb2
/dev/raw/raw2: bound to major 8, minor 18
Done然后再次执行就ok了.
[root@rac2 oracrs]# /oracle/app/oracle/product/crs/root.sh
WARNING: directory '/oracle/app/oracle/product' is not owned by root
WARNING: directory '/oracle/app/oracle' is not owned by root
Checking to see if Oracle CRS stack is already configured
Setting the permissions on OCR backup directory
Setting up NS directories
Oracle Cluster Registry configuration upgraded successfully
WARNING: directory '/oracle/app/oracle/product' is not owned by root
WARNING: directory '/oracle/app/oracle' is not owned by root
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
assigning default hostname rac1 for node 1.
assigning default hostname rac2 for node 2.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node <nodenumber>: <nodename> <private interconnect name> <hostname>
node 1: rac1 priv1 rac1
node 2: rac2 priv2 rac2
clscfg: Arguments check out successfully -
rac安装过程中 error while loading shared libraries libpthread.so.0 问题的解决
2010-08-26 11:18:22
rac安装过程中 error while loading shared libraries libpthread.so.0 问题的解决2010年08月10日 下午 05:34在CentOS 5上安装Oracle 10.2.0.1 RAC的cluster software的时候,在最后一步,第二个节点,执行root.sh的时候,报告error while loading shared libraries: libpthread.so.0的错误,详细错误信息如下:
[root@rac2 crs]# /u01/crs/oracle/product/10.2.0/crs/root.sh
WARNING: directory '/u01/crs/oracle/product/10.2.0' is not owned by root
WARNING: directory '/u01/crs/oracle/product' is not owned by root
WARNING: directory '/u01/crs/oracle' is not owned by root
WARNING: directory '/u01/crs' is not owned by root
WARNING: directory '/u01' is not owned by root
Checking to see if Oracle CRS stack is already configured
/etc/oracle does not exist. Creating it now.
Setting the permissions on OCR backup directory
Setting up NS directories
Oracle Cluster Registry configuration upgraded successfully
WARNING: directory '/u01/crs/oracle/product/10.2.0' is not owned by root
WARNING: directory '/u01/crs/oracle/product' is not owned by root
WARNING: directory '/u01/crs/oracle' is not owned by root
WARNING: directory '/u01/crs' is not owned by root
WARNING: directory '/u01' is not owned by root
clscfg: EXISTING configuration version 3 detected.
clscfg: version 3 is 10G Release 2.
assigning default hostname rac1 for node 1.
assigning default hostname rac2 for node 2.
Successfully accumulated necessary OCR keys.
Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.
node:
node 1: rac1 rac1-priv rac1
node 2: rac2 rac2-priv rac2
clscfg: Arguments check out successfully.
NO KEYS WERE WRITTEN. Supply -force parameter to override.
-force is destructive and will destroy any previous cluster
configuration.
Oracle Cluster Registry for cluster has already been initialized
Startup will be queued to init within 90 seconds.
Adding daemons to inittab
Expecting the CRS daemons to be up within 600 seconds.
CSS is active on these nodes.
rac1
rac2
CSS is active on all nodes.
Waiting for the Oracle CRSD and EVMD to start
Waiting for the Oracle CRSD and EVMD to start
Waiting for the Oracle CRSD and EVMD to start
Oracle CRS stack installed and running under init(1M)
Running vipca(silent) for configuring nodeapps
/u01/crs/oracle/product/10.2.0/crs/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
解决这个问题,需要三个步骤来完成:
1、在每个节点上,修改$CRS_HOME/bin目录下的srvctl和vipca文件,在vipca文件ARGUMENTS=""行之前和srvctl文件的export LD_ASSUME_KERNEL行之后增加 unset LD_ASSUME_KERNEL 语句
2、使用$CRS_HOME/bin目录下的oifcfg工具配置pub ip和pri ip
3、在任意一个节点上,用root用户,手动运行vipca,配置完正确的prvip和vip 信息之后,crs就可以安装完成,操作过程如下:
1.1、修改vipca文件,增加标记为红色的那一行:[root@rac2 crs]# pwd
/u01/crs/oracle/product/10.2.0/crs
[root@rac2 crs]# cd bin/
[root@rac2 bin]# cp vipca vipca.bak
[root@rac2 bin]# vi vipca
#!/bin/sh
#
# $Header: vipca.sbs 10-dec-2004.15:30:55 khsingh Exp $
#
# vipca
#
# Copyright (c) 2001, 2004, Oracle. All rights reserved.
#
# NAME
# vipca - Node Apps and VIPs Configuration Assistant
#
# DESCRIPTION
# Oracle Cluster Node Applications Configuration Assistant is
# used to configure the Node Applications and the virtual IPs.
#
# MODIFIED (MM/DD/YY)
# khsingh 12/10/04 - fix LINUX workaround for bug 4054430
# khsingh 11/22/04 - remove obsolete files
# rxkumar 11/29/04 - fix bug4024708
# khsingh 10/07/04 - add workaround for bug (3937317)
# khsingh 09/27/04 - changes for PLE (3914991)
# khsingh 09/13/04 - add orahome arg back
# khsingh 08/16/04 - remove orahome arg
# khsingh 12/07/03 - change oembase to oemlt
# khsingh 10/31/03 - fix ice browser
# khsingh 10/29/03 - add jewt var
# khsingh 08/08/03 - fix ==
# jtellez 06/10/03 - change to srvm_trace
# rdasari 06/02/03 - set LD_LIBRARY_PATH appropriately for 32 and 64 bit solaris platforms
# jtellez 11/15/02 - change SRVM_DEFS to SRVM_PROPERTY_DEFS
# jtellez 11/04/02 - Add srvm_defs
# jtellez 10/10/02 - fix srvmhas
# jtellez 10/04/02 - srvmhas to jlib
# jtellez 09/24/02 - add tracing
# jtellez 09/09/02 - add versions to jars
# rdasari 08/07/02 - use java instead of jre
# jtellez 08/08/02 - enhance comment
# jtellez 08/06/02 - add GUI jars
# rdasari 08/01/02 - use jdk131
# jtellez 07/26/02 - add srvmhas.jar to classpath
# jtellez 07/29/02 - add gui jars
# jtellez 07/24/02 - jtellez_vipca
# jtellez 7/24/02 - creation
#
#!/bin/sh
# Properties to pass directly to java
if [ "X$SRVM_PROPERTY_DEFS" = "X" ]
then
SRVM_PROPERTY_DEFS=""
fi
# Check for tracing
if [ "X$SRVM_TRACE" != "X" ]
then
SRVM_PROPERTY_DEFS="$SRVM_PROPERTY_DEFS -DTRACING.ENABLED=true -DTRACING.LEVEL=2"
fi
# External Directory Variables set by the Installer
JREDIR=/u01/crs/oracle/product/10.2.0/crs/jdk/jre/
ORACLE_HOME=/u01/crs/oracle/product/10.2.0/crs
export ORACLE_HOME;
/export
EMBASE_FILE=oemlt-10_1_0.jar
# GUI jars
EWTJAR=$JLIBDIR/$EWT_FILE
JEWTJAR=$JLIBDIR/$JEWT_FILE
ICEJAR=$JLIBDIR/$ICE_BROWSER5_FILE
EMBASEJAR=$JLIBDIR/$EMBASE_FILE
SHAREJAR=$JLIBDIR/$SHARE_FILE
HELPJAR=$JLIBDIR/$HELP_FILE
GUIJARS=$EWTJAR:$JEWTJAR:$SHAREJAR:$EMBASEJAR:$HELPJAR:$ICEJAR
# Set Classpath for Net Configuration Assistant
CLASSPATH=$JREJAR:$JRECLASSES:$OPSMJAR:$SRVMHASJAR:$VIPCAJAR:$GUIJARS
#Used for specifying any platforms specific Java options
JRE_OPTIONS=""
# Set the shared library path for JNI shared libraries
# A few platforms use an environment variable other than LD_LIBRARY_PATH
PLATFORM=`uname`
case $PLATFORM. in
HP-UX) SHLIB_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/srvm/lib32:$SHLIB_PATH
export SHLIB_PATH
;;
AIX) LIBPATH=$ORACLE_HOME/lib32:$ORACLE_HOME/srvm/lib32:$LIBPATH
export LIBPATH
;;
Linux) LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
#Remove this workaround when the bug 3937317 is fixed
arch=`uname -m`
if [ "$arch" = "i686" -o "$arch" = "ia64" ]
121 LD_ASSUME_KERNEL=2.4.19
122 export LD_ASSUME_KERNEL
123 fi
124 #End workaround
125 ;;
126 SunOS) MACH_HARDWARE=`/bin/uname -i`
127 case $MACH_HARDWARE in
128 i86pc)
129 LD_LIBRARY_PATH=$ORACLE_HOME/lib:ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
130 export LD_LIBRARY_PATH
131 ;;
132 *)
133 LD_LIBRARY_PATH_64=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH_64
134 export LD_LIBRARY_PATH_64
135 JRE_OPTIONS="-d64"
136 ;;
137 esac
138 ;;
139 OSF1) LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
140 export LD_LIBRARY_PATH
141 ;;
142
143 Darwin) DYLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$DYLD_LIBRARY_PATH
144 export DYLD_LIBRARY_PATH
145 ;;
146 *) if [ -d $ORACLE_HOME/lib32 ];
147 then
148 LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/srvm/lib32:$LD_LIBRARY_PATH
149 else
150 LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
151 fi
152 export LD_LIBRARY_PATH
153 ;;
154 esac
155
156 unset LD_ASSUME_KERNEL
157
158 ARGUMENTS=""
159 NUMBER_OF_ARGUMENTS=$#
160 if [ $NUMBER_OF_ARGUMENTS -gt 0 ]; then
161 ARGUMENTS=$*
162 fi
163
164 # Run Vipca
165 exec $JRE $JRE_OPTIONS $SRVM_PROPERTY_DEFS -classpath $CLASSPATH oracle.ops.vipca.VipCA -orahome $ORACLE_HOME $ARGUME NTS
"vipca" 167L, 5034C written
1.2、修改srvctl文件,增加标记为红色的那一行:
[root@rac2 bin]# ls -l srvctl*
-rwxr-xr-x 1 oracle oinstall 5554 Dec 2 17:17 srvctl
[root@rac2 bin]# cp srvctl srvctl.bak
[root@rac2 bin]# vi srvctl
#!/bin/sh
#
# $Header: srvctl.sbs 29-nov-2004.11:56:24 rxkumar Exp $
#
# srvctl
#
# Copyright (c) 2000, 2004, Oracle. All rights reserved.
#
# NAME
# srvctl - Oracle Server Control Utility
#
# DESCRIPTION
# Oracle Server Control Utility can be used to administer a RAC database,
# i.e., to modify the configuration information of a RAC
# database server as well as to do start/stop/status operations on the
# instances of the server.
#
# MODIFIED (MM/DD/YY)
# rxkumar 11/29/04 - fix bug4024708
# dliu 11/18/04 - replace OH
# khsingh 10/07/04 - add workaround for bug (3937317)
# khsingh 09/27/04 - update case statement (3914991)
# gdyoung 09/17/04 - ;;
# gdyoung 08/20/04 - ple/st script. merging
# dliu 08/04/04 - get them work on linux
# dliu 11/20/03 - support for trace
# dliu 11/12/03 - unset ORA_CRSDEBUG
# bhamadan 09/18/03 - replacing s_jre131Location with s_jreLocation
# khsingh 06/25/03 - remove policy file
# rxkumar 06/03/03 - add srvmasm.jar
# rdasari 06/02/03 - set LD_LIBRARY_PATH appropriately for 32 and 64 bit solaris platforms
# dliu 02/21/03 - add i18n.jar
# dliu 11/13/02 - use ORA_CRS_UI_FMT to turn on output capture
# dliu 10/17/02 - turn on output capture
# jtellez 10/04/02 - make policy ==
# surchatt 09/06/02 - puttint policy file location
# rdasari 08/07/02 - use java instead of jre
# rdasari 08/01/02 - use jdk131
# jtellez 07/26/02 - add srvmhas.jar to classpath
# rdasari 05/09/01 - changing the header information
# rdasari 03/22/01 - changing to ops to srv.
# dliu 03/02/01 - use "$@" for argument list. this iscritical for correct interpretation of arguments with spaces in them..
# dliu 02/26/01 - fix bug #1656127: SHLIB_PATH change.
# dliu 02/23/01 - replace $ORACLE_HOME in classpath with an install variable..
# jcreight 11/08/00 - define OPSMJAR, not OPSJAR
"srvctl" 171L, 5554C
126 JRE_OPTIONS="-d64"
127 ;;
128 esac
129 ;;
130 OSF1) LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
131 export LD_LIBRARY_PATH
132 ;;
133 Darwin)
134 DYLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$DYLD_LIBRARY_PATH
135 export DYLD_LIBRARY_PATH
136 ;;
137 *) if [ -d $ORACLE_HOME/lib32 ];
138 then
139 LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/srvm/lib32:$LD_LIBRARY_PATH
140 else
141 LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
142 fi
143 export LD_LIBRARY_PATH
144 ;;
145 esac
146
147
148 # turn off crs debug flag that would otherwise interfere with crs profile
149 # modification
150 ORA_CRSDEBUG=0
151 export ORA_CRSDEBUG
152
153 # environment variable to turn on trace: set SRVM_TRACE to turn it on.
154 if [ "X$SRVM_TRACE" != "X" ]
155 then
156 TRACE="-DTRACING.ENABLED=true -DTRACING.LEVEL=2"
157 else
158 TRACE=
159 fi
160
161 if [ "X$SRVM_TRACE" != "X" ]
162 then
163 echo $JRE $JRE_OPTIONS -classpath $CLASSPATH $TRACE oracle.ops.opsctl.OPSCTLDriver "$@"
164 fi
165
166 #Remove this workaround when the bug 3937317 is fixed
167 LD_ASSUME_KERNEL=2.4.19
168 export LD_ASSUME_KERNEL
169 unset LD_ASSUME_KERNEL
170
171 # Run ops control utility
"srvctl" 173L, 5578C written
2、在任意一个节点上使用oifcfg配置public和vip网络
[root@rac1 bin]# ./oifcfg setif -global eth0/192.168.2.0:public
[root@rac1 bin]# ./oifcfg setif -global eth1/192.168.0.0:cluster_interconnect
[root@rac1 bin]# ./oifcfg getif
eth0 192.168.2.0 global public
eth1 192.168.0.0 global cluster_interconnect
./oifcfg iflist
3、用root用户身份手动执行$CRS_HOME/bin/vipca工具,配置IP信息。
[root@rac1 bin]# export DISPLAY=192.168.0.1:0.0
[root@rac1 bin]# xclock
Warning: Missing charsets in String to FontSet conversion
[root@rac1 bin]# ./vipca
vipca工具配置成功后,检查crs状态,两个节点的crs都已正常运行
[root@rac1 bin]# ./crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2 -
关于PRKC-1002问题的解决办法
2010-08-25 16:47:42
在VMWare Server 1.0.8中安装Oracle RAC时, 碰到到了PRKC-1002错误:
WARNING: Error while copying directory /u01/oracle/product/10.2.0/db_1 with exclude file list 'null' to nodes 'rac2'. [PRKC-1002 : All the submitted commands did not execute successfully]
到Oracle技术支持找到了问题的原因如何解决:
Cause
This is because the date on the local node is higher than the date on the remote node(s).
Solution
To fix this, set the times of the nodes to be the same. You can do this with "ntpupdate <nodename>" to sync the dates.
就是解决时间同步后即可. 尽管我安装VMWare的tools之后,并勾选vmware-toolbox的Miscellaneous Options选项,但节点1的时间还是比节点2的快十几秒. 参考了一下《大话Oracle RAC》这本书, 决定选用NTP服务来使时间同步. 刚开始我是用节点1来做NTP服务的,但做完后发现节点1的时间还是比节点2的快几秒,为了保守起见, 我用节点2来做NTP服务.
在节点2用root用记编辑/etc/ntp.conf,加入下面这段
## add for rac
server 127.127.1.0
fudge 127.127.1.0 stratum 11
driftfile /var/lib/ntp/drift
broadcastdelay 0.008然后在节点1用root用记编辑/etc/ntp.conf,加入下面这段
## add for rac
server 192.168.1.131 prefer
driftfile /var/lib/ntp/drift
broadcastdelay 0.008#注意是127.127.1.0而不是127.0.0.1,还有就是192.168.1.131 是节点一的IP地址
然后在两个节点执行下面的命令使NTP服务启动
/etc/init.d/ntpd start
-
rhel5+oracle10g+asm+vm虚拟机(oracle集群)
2010-08-24 17:52:23
一.安装前准备
1.使用VM自带工具划分共享磁盘 (VM虚拟机版本6.0)
进入VM所在目录使用以下工具划分共享磁盘空间
vmware-vdiskmanager.exe -c -s 1GB -a lsilogic -t 2 "盘符:\文件夹\文件名.vmdk"
分别创建三个1G.两个2G
2.创建,配置虚拟机
创建虚拟机时候注意删除软驱,添加一块网卡,(选择仅和主机通信)
在虚拟机配置文件中添加以下(是把刚才创建的磁盘添加近来,双节点都必须添加)
scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsi1.sharedBus = "virtual"
scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.filename = "盘符:\文件夹\文件名.vmdk"
scsi1:1.deviceType = "plainDisk"
scsi1:2.present = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.filename = "盘符:\文件夹\文件名.vmdk"
scsi1:2.deviceType = "plainDisk"
scsi1:3.present = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.filename = "盘符:\文件夹\文件名.vmdk"
scsi1:3.deviceType = "plainDisk"
scsi1:4.present = "TRUE"
scsi1:4.mode = "independent-persistent"
scsi1:4.filename = "盘符:\文件夹\文件名.vmdk"
scsi1:4.deviceType = "plainDisk"
scsi1:5.present = "TRUE"
scsi1:5.mode = "independent-persistent"
scsi1:5.filename = "盘符:\文件夹\文件名.vmdk"
scsi1:5.deviceType = "plainDisk"
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
3.安装系统 (rhel5)
采用默认安装,因为asm和ocfs2都需要图形化的配置,所以必须要有图形化界面. 关闭SELINUX,防火墙,配置系统只开机启动ssh.syslog,network,xfs服务。另外一个系统也做同样设置.(分区时,不要给共享磁盘分区,让他保持free状态)
4.安装所需包
#rpm -ivh compat-db-4.2.52-5.1.i386.rpm
#rpm -ivh libstdc++-devel-4.1.1-52.el5.i386.rpm
#rpm -ivh libgomp-4.1.1-52.el5.i386.rpm
#rpm -ivh glibc-headers-2.5-12.i386.rpm
#rpm -ivh glibc-devel-2.5-12.i386.rpm
#rpm -ivh gcc-4.1.1-52.el5.i386.rpm
#rpm -ivh gcc-c++-4.1.1-52.el5.i386.rpm
#rpm -ivh compat-gcc-34-3.4.6-4.i386.rpm
#rpm -ivh compat-gcc-34-c++-3.4.6-4.i386.rpm
#rpm -ivh compat-libgcc-296-2.96-138.i386.rpm
#rpm -ivh compat-libstdc++-33-3.2.3-61.i386.rpm
#rpm -ivh cpp-4.1.1-52.el5.i386.rpm
#rpm -Uvh glibc-2.5-12.i386.rpm
#rpm -ivh libaio-0.3.106-3.2.i386.rpm
#rpm -ivh libXmu-1.0.2-5.i386.rpm
#rpm -ivh libXp-1.0.0-8.i386.rpm
#rpm -ivh make-3.81-1.1.i386.rpm
#rpm -ivh openmotif22-2.2.3-18.i386.rpm
#rpm -ivh openmotif-2.3.0-0.3.el5.i386.rpm
#rpm -ivh setarch-2.0-1.1.i386.rpm
#rpm -ivh sysstat-7.0.0-3.el5.i386.rpm
5.创建oracle用户,建立SSH信任,编辑参数和变量
(以下没注明的都是双节点实现) #vi /etc/sysctl.conf
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 278396928
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=1048576
net.core.wmem_default=262144
net.core.wmem_max=1048576
注销原有kernel.shmmax, kernel.shmall (以上数值有待改变)
#sysctl -p
#vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
#vi /etc/pam.d/login
session required /lib/security/pam_limits.so
#vi /etc/modprobe.conf
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
#vi /etc/rc.d/rc.local
/sbin/modprobe hangcheck_timer
#modprobe hangcheck_timer
#grep hangcheck /var/log/messages | tail -2
#vi /etc/hosts
127.0.0.1
localhost 192.168.0.243
rac1 192.168.0.245
rac2 192.168.0.143
v-rac1 192.168.0.145
v-rac2 10.0.0.243
int-rac1 10.0.0.245
int-rac2 #ping -c 3 rac1
#ping -c 3 rac2
#ping -c 3 int-rac1
#ping -c 3 int-rac2
#groupadd oinstall
#groupadd dba
#useradd -u 200 -g oinstall -G dba -d /home/oracle -r oracle -m
#passwd oracle
#id oracle
#su - oracle
#mkdir ~/.ssh
#chmod 700 ~/.ssh
#ssh-keygen -t rsa
(一路回车) #ssh-keygen -t dsa
(一路回车) 使用节点1执行
#cd ~/.ssh
#cat id_rsa.pub >>authorized_keys
#cat id_dsa.pub >>authorized_keys
#scp authorized_keys rac2:/home/oracle/.ssh/
#ssh rac2
#cd .ssh
#cat id_rsa.pub >>authorized_keys
#cat id_dsa.pub >>authorized_keys
#exit
使用节点2执行
#cd ~/.ssh
#scp authorized_keys rac1:/home/oracle/.ssh/
双节点实现
#ssh-agent $SHELL
#ssh-add
#ssh rac1 date
#ssh rac2 date
#vi /home/oracle/.bash_profile
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/10.2.0/rac_db
export ORA_CRS_HOME=$ORACLE_BASE/10.2.0/crs
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_SID=orcl1
(节点2为oracl2) export NLS_LANG=AMERICAN_AMERICA.zhs16gbk
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export DISPLAY=192.168.0.244:0.0
6.切换root用户创建安装目录,分配权限
mkdir -p /u01/app/oracle/10.2.0/rac_db
mkdir -p /u01/app/oracle/10.2.0/crs
chown -R root.oinstall /u01/
chmod -R 775 /u01/
mkdir -p /u02/oradata/orcl
chown -R oracle.dba /u02/
chmod -R 775 /u02/
7.节点1给磁盘分区
# fdisk /dev/sdb
(同样方法格式/dev/sdc /dev/sdd/ dev/sde/ dev/sdf/) n>p>1>回车>回车>w 重新启动两台计算机,让另外一台机器能认到被格式化过的磁盘
8.安装ocfs2,配置ocfs2
(双节点) #rpm -ivh ocfs2-tools-1.2.6-1.el5.i386.rpm
#rpm -ivh ocfs2-2.6.18-8.el5-1.2.6-6.el5.i686.rpm
(根据不同的内核打不同的包) #rpm -ivh ocfs2console-1.2.6-1.el5.i386.rpm
#ocfs2console
X下使用 #vi /etc/init.d/o2cb
删除以下行
### BEGIN INIT INFO
## Provides: o2cb
## Required-Start: $network
## Should-Start:
## Required-Stop:
## Default-Start: 2 3 5
## Default-Stop:
## Description: Load O2CB cluster services at system boot.
### END INIT INFO
#/etc/init.d/o2cb offline ocfs2
#/etc/init.d/o2cb unload
#/etc/init.d/o2cb configure
在节点1格式/dev/sdb1为ocfs2
#mkfs.ocfs2 -b 4k -C 32k -L oradatafiles /dev/sdb1
最好在重新启动一下双节点,因为是虚拟环境,所以担心另外一台虚拟机同步的慢
#mount -t ocfs2 -o datavolume /dev/sdb1 /u02/oradata/orcl
#vi /etc/fstab
/dev/sdb1
/u02/oradata/orcl ocfs2 _netdev,datavolume 0 0 #vi /etc/sysconfig/o2cb
O2CB_HEARTBEAT_THRESHOLD=601
9.安装asm,配置asm
#rpm -ivh oracleasm-support-2.0.4-1.el5.i386.rpm
# rpm -ivh oracleasm-2.6.18-8.el5-2.0.4-1.el5.i686.rpm
(根据不同的内核打不同的包) # rpm -ivh oracleasmlib-2.0.3-1.el5.i386.rpm
#/etc/init.d/oracleasm configure
oracle,dba,y,y
节点1执行
#/etc/init.d/oracleasm createdisk VOL1 /dev/sdc1
#/etc/init.d/oracleasm createdisk VOL2 /dev/sdd1
#/etc/init.d/oracleasm createdisk VOL3 /dev/sde1
#/etc/init.d/oracleasm createdisk VOL4 /dev/sdf1
#/etc/init.d/oracleasm listdisks
#ls -l /dev/oracleasm/disks/
节点2执行
#/etc/init.d/oracleasm scandisks
#/etc/init.d/oracleasm listdisks
#ls -l /dev/oracleasm/disks/
10.配置NTPD服务器,或者配置2台机器的时间一样,不然在安装的时候会有很多的问题,建议装台时间服务器来进行同步时间.另外,在安装的时候,监视2台机器的时间,有时候会差好多
13.使用root用户解压,并安装
#unzip 10201_clusterware_linux32.zip
#unzip 10201_database_linux32.zip
二.安装clusterware,以及oracle
#rpm -ivh clusterware/rpm/cvuqdisk-1.0.1-1.rpm
#scp clusterware/rpm/cvuqdisk-1.0.1-1.rpm rac2:/opt/
节点2执行
rpm -ivh /opt/cvuqdisk-1.0.1-1.rpm
检查环境,节点1执行
#su - oracle
# cd clusterware/cluvfy
#./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
ERROR:
Could not find a suitable set of interfaces for VIPs.
Result: Node connectivity check failed.
虚拟IP报错,可以不管
compat-gcc-7.3-2.96.128
compat-gcc-c++-7.3-2.96.128
compat-libstdc++-7.3-2.96.128
compat-libstdc++-devel-7.3-2.96.128
会提示没有以上包的报错,以root用户在双节点安装以下包
#rpm -ivh compat-gcc-7.3-2.96.128.i386.rpm
#rpm -ivh compat-libstdc++-7.3-2.96.128.i386.rpm
#rpm -ivh compat-libstdc++-devel-7.3-2.96.128.i386.rpm
#rpm -ivh compat-gcc-c++-7.3-2.96.128.i386.rpm
硬件检查
#./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose
ERROR:
Could not find a suitable set of interfaces for VIPs.
Result: Node connectivity check failed.
还是会有虚拟IP的报错,可以忽略
#vi /etc/redhat-release
将版本5,改成4,因为oracle10G不支持RHEL5安装
#cd ..
# ./runInstaller
● Welcome:
点[Next]
● Specify Inventory directory and credentials:
Inventory directory: /u01/app/oracle/oraInventory
Operating System group name: oinstall
点[Next]
● Specify Home Details:
Name: OraCrs10g_home
Location: /u01/app/oracle/10.2.0/crs
(手动改变CRS的目录) 点[Next]
● Product Specific Prerequisite Checks:
点[Next]
● Specify Cluster Configuration:
Cluster Name: crs
--------------------------------------------------------
|Public Node Name |Private Node Name |Virtual Node Name|
--------------------------------------------------------
| rac1 | int-rac1 |v-rac1 |
--------------------------------------------------------
| rac2 | int-rac2 | v-rac2 |
--------------------------------------------------------
点[Next]
● Specify Network Interface Usage:
--------------------------------------------------
| Interface Name | Subnet | Interface Type |
--------------------------------------------------
| eth0 | 192.168.0.0 | Public |
--------------------------------------------------
| eth1 | 10.0.0.0 | Private |
--------------------------------------------------
点[Next]
● Specify OCR Location:
选 Normal Redundacy
Specify OCR Location: /u02/oradata/orcl/OCRFile
Specify OCR Mirror Location: /u02/oradata/orcl/OCRFile_mirror
(如果出现没权限写的提示,则使用root用户 chown -R oracle.dba /u02/) 点[Next]
● Specify Voting Disk Location:
选 Normal Redundacy
Voting Disk Location: /u02/oradata/orcl/VotingFile
Additional Voting Disk 1 Location: /u02/oradata/orcl/VotingFile_mirror1
Additional Voting Disk 2 Location: /u02/oradata/orcl/VotingFile_mirror2
点[Next]
● Summary:
点[Install]
{{{arch=`uname -m`
#if [ "$arch" = "i686" -o "$arch" = "ia64" ] #then # LD_ASSUME_KERNEL=2.4.19 # export LD_ASSUME_KERNEL #fi #End workaround● Execute Configuration Scripts:}}} 以root身份在rac1上运行 /u01/app/oracle/oraInventory/orainstRoot.sh
完成后,以root身份在rac2上运行 /u01/app/oracle/oraInventory/orainstRoot.sh
完成后,以root身份在rac1上运行 /u01/app/oracle/product/crs/root.sh
完成后,以root身份在rac2上运行 /u01/app/oracle/product/crs/root.sh
在rac2上执行完root.sh后,会出一错误,在X下使用root运行vipca来解决
#/u01/app/oracle/product/10.2.0/crs/bin/vipca
● Welcome:
点[Next]
● Network interfaces:
eth0、eth1都要选中
点[Next]
● Virtual IPs for cluster notes:
--------------------------------------------------------------
| Node Name | IP Alias Name | IP Address | Subnet Mask |
--------------------------------------------------------------
| rac1 | v-rac1 | 192.168.0.143 | 255.255.255.0 |
--------------------------------------------------------------
| rac2 | v-rac2 | 192.168.0.145 | 255.255.255.0 |
--------------------------------------------------------------
点[Next]
● Summary:
点[Finish]
● Configuration Assistant Progress Dialog:
等配置完成后,点[OK]
● Configuration Results:
点[Exit]
在rac1上点 Execute Configuration Scripts 界面的[OK]
● End of installation:
点[Exit]
ORACLE软件安装
$cd database/
$./runInstaller
● Welcome:
点[Next]
● Select Installation Type:
我选的是 Enterprise Edition
点[Next]
● Specify Home Details:
Name: OraCrs10g_home1
Location: /u01/app/oracle/10.2.0/rac_db
点[Next]
● Specify Hardware Cluster Installation Mode:
选 Cluster Installation,并且两个节点全选中
点[Next]
● Product-Specific Prerequisite Checks:
点[Next]
● Select Configuration Option:
选 Install database Software only
点[Next]
● Summary:
点[Install]
● Run Script. Windows:
以root身份在rac1上运行 /u01/app/oracle/10.2.0/rac_db/root.sh
完成后,以root身份在rac2上运行 /u01/app/oracle/10.2.0/rac_db/root.sh
● End of installation:
点[Exit]
创建TNS监听进程:
----------------
0.运行netca(rac1):
用oracle登录
$netca
● Real Application Clusters, Configuration:
选 Cluster configuration
点[Next]
● Real Application Clusters, Active Nodes:
两个节点全选中
点[Next]
● Welcome:
选 Listener configuration
点[Next]
● Listener Configuration, Listener:
选 Add
点[Next]
● Listener Configuration, Listener Name:
填 LISTENER
点[Next]
● Listener Configuration, Select Protocols:
选 TCP
点[Next]
● Listener Configuration, TCP/IP Protocol:
选 Use the standard port number of 1521
点[Next]
● Listener Configuration, More Listener?:
选 No
点[Next]
● Welcome:
选 Naming Methods configuration
点[Next]
● Naming Methods Configuration, Select Naming Methods:
选 Local Naming 和 Easy Connect Naming
点[Next]
● Naming Methods Configuration Done:
点[Next]
● Welcome:
点[Finish]
1.检查一下:
rac1上
$ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'
rac2上
$ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'
创建数据库:
-----------
0.运行dbca(rac1):
用oracle登录
$dbca
● Welcome:
选 Oracle Real Application Clusters database
点[Next]
● Step 1 of 17: Opetations:
选 Create a Database
点[Next]
● Step 2 of 17: Node Selection:
两个节点全选中
点[Next]
● Step 3 of 17: Database Templates:
选 Custom Database
点[Next]
● Step 4 of 17: Database Identification:
Global Database Name: orcl
SID Prefix: orcl
点[Next]
● Step 5 of 16: Management Options:
使用默认选项,即
选 Configure the Database with Enterprise Manager
选 Use Database Control for Database Management
点[Next]
● Step 6 of 16: Database Credentials:
选 Use the Same Password for All Accounts
输入密码
点[Next]
● Step 7 of 15: Storage Options:
选 ASM
点[Next]
● Step 8 of 15: Create ASM Instance:
输入刚才的密码
选 Create server parameter file (SPFILE)
/u02/oradata/orcl/dbs/spfile+ASM.ora
点[Next]
出来的窗口中,点[OK]
● Step 9 of 15: ASM Disk Groups:
点[Create New]
● Create Disk Group:
Disk Group Name: DATA
Redundancy: Normal
选 VOL1 及 VOL2
点[OK]
点[Create New]
● Create Disk Group:
Disk Group Name: FLASH_RECOVERY_AREA
Redundancy: External
选 VOL3 及 VOL4
点[OK]
点[Next]
● Step 10 of 15: Database File Locations:
选 Use Oracle-Managed Files
Database Area: +DATA
点[Next]
● Step 11 of 15: Recovery Configuration:
选 Specify Flash Recovery Area
Flash Recovery Area: +FLASH_RECOVERY_AREA
Flash Recovery Area Size: 2048 MB
点[Next]
● Step 11 of 15: Database Content:
用默认值
点[Next]
● Step 12 of 15 Database Services:
点[Add],名称为 RACTEST
orcl1: Preferred
orcl2: Preferred
TAF Policy: Basic
点[Next]
● Step 13 of 15: Initialization Parameters:
用默认值
点[Next]
● Step 14 of 15: Database Storage:
用默认值
点[Next]
● Step 15 of 15: Create Options:
用默认值
点[Finish]
-
RedHat Linux as4 上Oracle RAC 集群
2010-08-23 15:47:47
##############RedHat Linux下Oracle10g RAC集群安装步骤################Oracle集群的实质就是多个服务器访问同一个Oracle数据库,这样可以避免一个服务器宕机时数据库不能访问,同时也可以进行负载均衡。**************************本实验案例步骤**************************两Linux节点rac01、rac02配置如下RAM 1024DISK 每个节点scsi硬盘30G一个,共享硬盘10G网卡 每个节点两块网卡eth0(private)、eth1(public)操作系统 RedHat Enterprise Linux AS4 Update2ip设置rac01: eth0 10.10.10.100/255.255.255.0eth1 202.100.0.100/255.255.255.0 202.100.0.1rac02: eth0 10.10.10.200/255.255.255.0eth1 202.100.0.200/255.255.255.0 202.100.0.1所需软件Oracle cluster 软件10201_clusterware_linux32.zipOracle数据库软件10201_database_linux32.zipocfs2-2.6.9-55.EL-1.2.9-1.el4.i686.rpmocfs2-2.6.9-55.ELsmp-1.2.9-1.el4.i686.rpmocfs2console-1.2.7-1.el4.i386.rpmocfs2-tools-1.2.7-1.el4.i386.rpm###################################################################创建Oracle用户和所属组,并且查看nobody用户是否存在,在安装完成后nobody用户必须执行一些扩展任务,若不存在必须手动创建。【注:AB 为两节点都要执行的 A为只需启动一个节点执行即可】AB[root@rac01 ~]# groupadd -g 1000 oinstall[root@rac01 ~]# groupadd -g 1001 dba[root@rac01 ~]# id nobodyuid=99(nobody) gid=99(nobody) groups=99(nobody)[root@rac01 ~]# useradd -u 1000 -g 1000 -G 1001 oracle[root@rac02 ~]# passwd oracle###################################################################主机名称 解析通过hosts文件解析,两节点在hosts文件中添加如下内容AB[root@rac02 ~]# vi /etc/hosts202.100.0.100 rac01 ###公网ip202.100.0.200 rac02202.100.0.10 vip01 ###虚拟ip202.100.0.20 vip0210.10.10.100 priv01 ###私网ip10.10.10.200 priv02####################################################################配置SSH两节点都用Oracle用户执行AB[oracle@rac01 ~]$ mkdir .ssh[oracle@rac01 ~]$ chmod 700 .ssh/AB[oracle@rac02 ~]$ ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/home/oracle/.ssh/id_rsa): 存放公钥和私钥目录Enter passphrase (empty for no passphrase): 私钥密码Enter same passphrase again:Your identification has been saved in /home/oracle/.ssh/id_rsa.Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.The key fingerprint is:0b:fe:7e:e1:cb:f7:6f:7c:bf:74:ce:01:c5:c6:4f:a2 oracle@rac02AB[oracle@rac02 ~]$ ssh-keygen -t dsaGenerating public/private dsa key pair.Enter file in which to save the key (/home/oracle/.ssh/id_dsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/oracle/.ssh/id_dsa.Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.The key fingerprint is:63:59:50:c3:3e:ee:c2:c5:cc:85:33:1b:e3:ee:ed:6b oracle@rac02[oracle@rac02 ~]$ cd .sshA[oracle@rac01 .ssh]$ ssh rac01 cat ~/.ssh/id_rsa.pub >> authorized_keys[oracle@rac01 .ssh]$ ssh rac01 cat ~/.ssh/id_dsa.pub >> authorized_keys[oracle@rac01 .ssh]$ ssh rac02 cat ~/.ssh/id_rsa.pub >> authorized_keys[oracle@rac01 .ssh]$ ssh rac02 cat ~/.ssh/id_dsa.pub >> authorized_keys[oracle@rac01 .ssh]$ scp authorized_keys rac02:/home/oracle/.ssh/AB[oracle@rac02 .ssh]$ chmod 600 authorized_keys在两节点上进行测试[oracle@rac01 .ssh]$ ssh rac01 dateSun Aug 9 08:01:45 EDT 2009[oracle@rac01 .ssh]$ ssh rac02 dateSun Aug 9 08:01:56 EDT 2009[oracle@rac01 ~]$ ssh rac02 dateSun Aug 9 08:02:17 EDT 2009[oracle@rac01 ~]$ ssh rac01 dateSun Aug 9 08:02:18 EDT 2009###############################################################################在两节点上查看所需软件,若未安装,需手动安装AB[root@rac01 ~]# rpm -q gcc gcc-c++ glibc gnome-libs libstdc++libstdc++-devel binutils compat-db openmotif21 control-center make###################################################################为Oracle安装配置参数AB[root@rac02 ~]# vi /etc/sysctl.confkernel.sem=250 32000 100 128kernel.shmmni=4096kernel.shmall=2097152kernel.shmmax=2147483648net.ipv4.ip_local_port_range=1024 65000net.core.rmem_default=1048576net.core.rmem_max=1048576net.core.wmem_default=262144net.core.wmem_max=262144[root@rac02 ~]# sysctl -p###################################################################设置SSH对Oracle用户的限制AB[root@rac01 ~]# vi /etc/security/limits.conforacle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536AB[root@rac02 ~]# vi /etc/pam.d/loginsession required /lib/security/pam_limits.soAB[root@rac01 ~]# vi /etc/profileif [ $USER = "oracle" ] ; thenif [ $SHELL = "/bin/ksh" ] ; thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fifi[root@rac01 ~]# source /etc/profile####################################################################安装配置OCFS2【Oracle cluster file system 2】AB[root@rac02 as4]# rpm -ivh ocfs2-tools-1.2.7-1.el4.i386.rpm ocfs2-2.6.9-55.ELsmp-1.2.9-1.el4.i686.rpm ocfs2console-1.2.7-1.el4.i386.rpm####################################################################在一个节点上对共享硬盘分区,建立两个分区,一个用于存储Oracle软件,至少3000m,另一个用于存储Oracle数据库文件及恢复文件,至少4000M,分区如下:[root@rac02 as4]# fdisk -l /dev/sdbDisk /dev/sdb: 10.7 GB, 10737418240 bytes255 heads, 63 sectors/track, 1305 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System/dev/sdb1 1 501 4024251 83 Linux/dev/sdb2 502 1305 6458130 83 Linux【分好了之后一定要重启所有节点。】####################################################################A[root@rac01 ~]# export DISPLAY=202.100.0.111:0.0[root@rac02 ~]# ocfs2console选择task 》》》》format选择/dbv/sdb1 填入orahome 》》》》 ok选择task 》》》》format选择/dbv/sdb2 填入oradata 》》》》 ok之后如下图所示选择cluster》》》》configure nodes选择 添加添加两节点的主机名和ip应用后如下图所示关闭现在查看/etc/ocfs2/cluster.conf将看到如下内容[root@rac02 ~]# cat /etc/ocfs2/cluster.confnode:ip_port = 7777ip_address = 202.100.0.100number = 0name = rac01cluster = ocfs2node:ip_port = 7777ip_address = 202.100.0.200number = 1name = rac02cluster = ocfs2cluster:node_count = 2name = ocfs2选择cluster 》》》》propagate configuration输入另一节点的管理员密码 然后关闭。###############################################################################配置o2cb系统启动时就启动OCFS2驱动和服务。AB[root@rac02 ~]# /etc/init.d/o2cb configureConfiguring the O2CB driver.This will configure the on-boot properties of the O2CB driver.The following questions will determine whether the driver is loaded onboot. The current values will be shown in brackets ('[]'). Hitting<ENTER> without typing an answer will keep that current value. Ctrl-Cwill abort.Load O2CB driver on boot (y/n) [y]: y 启动时自动加载驱动Cluster to start on boot (Enter "none" to clear) [ocfs2]: 默认为ocfs2文件系统Specify heartbeat dead threshold (>=7) [31]:Specify network idle timeout in ms (>=5000) [30000]:Specify network keepalive delay in ms (>=1000) [2000]:Specify network reconnect delay in ms (>=2000) [2000]:Writing O2CB configuration: OKO2CB cluster ocfs2 already online查看o2cb时出现以下提示说明服务已经启动[root@rac01 ~]# /etc/init.d/o2cb statusModule "configfs": LoadedFilesystem "configfs": MountedModule "ocfs2_nodemanager": LoadedModule "ocfs2_dlm": LoadedModule "ocfs2_dlmfs": LoadedFilesystem "ocfs2_dlmfs": MountedChecking O2CB cluster ocfs2: OnlineHeartbeat dead threshold: 31Network idle timeout: 30000Network keepalive delay: 2000Network reconnect delay: 2000Checking O2CB heartbeat: Not active####################################################################两节点都创建挂载目录并挂载/dev/sdb1和/dev/sdb2AB[root@rac02 ~]# mkdir -p /orac/orahome[root@rac02 ~]# mkdir -p /orac/oradata[root@rac02 ~]# mount -t ocfs2 /dev/sdb1 /orac/orahome/[root@rac02 ~]# mount -t ocfs2 -o datavolume,nointr /dev/sdb2 /orac/oradata/####################################################################配置以是系统启动时自动加载/dev/sdb1和/dev/sdb2[root@rac02 ~]# vi /etc/fstab/dev/sdb1 /orac/oradata ocfs2 _netdev,datavolume,nointr 0 0/dev/sdb2 /orac/orahome ocfs2 _netdev 0 0在任何一个节点上查看是否加载上共享磁盘[root@rac02 ~]# mounted.ocfs2 -fDevice FS Nodes/dev/sdb1 ocfs2 rac02, rac01/dev/sdb2 ocfs2 rac02, rac01####################################################################安装集群就需软件创建对应权限的目录AB[root@rac01 ~]# mkdir /orac/crs[root@rac01 ~]# chmod -R 775 /orac/crs/[root@rac01 ~]# chown -R root:oinstall /orac/crs/[root@rac01 ~]# chown -R oracle:oinstall /orac/orahome/[root@rac01 ~]# chmod -R 775 /orac/orahome/[root@rac01 ~]# chown -R oracle:oinstall /orac/oradata/[root@rac01 ~]# chmod -R 775 /orac/oradata/解压集群就绪软件A[root@rac01 share]# unzip 10201_clusterware_linux32.zip切换用户、导出图形界面开始安装A[root@rac01 share]# su - oracle[oracle@rac01 ~]$ export DISPLAY=202.100.0.111:0.0[oracle@rac01 ~]$ export LANG=""[oracle@rac01 ~]$ /share/clusterware/runInstaller直接nextNext指定Oracle cluster ware 的 ORACLE_HOME为/orac/crs/10.2.0Next产品需求检查next指定集群名称和节点信息,配置成如图所示next网卡配置next指定OCR存储位置 选择使用外部冗余 填入/orac/oradata/ocrdataNext指定仲裁磁盘 /orac/oradata/votedisk分别在两节点上执行脚本AB(会看到两节点上的提示会有所不同)[root@rac01 proc]# /home/oracle/oraInventory/orainstRoot.shChanging permissions of /home/oracle/oraInventory to 770.Changing groupname of /home/oracle/oraInventory to oinstall.The execution of the script. is complete[root@rac01 proc]# /orac/crs/10.2.0/root.shWARNING: directory '/orac/crs' is not owned by rootChecking to see if Oracle CRS stack is already configured/etc/oracle does not exist. Creating it now.Setting the permissions on OCR backup directorySetting up NS directoriesOracle Cluster Registry configuration upgraded successfullyWARNING: directory '/orac/crs' is not owned by rootassigning default hostname rac01 for node 1.assigning default hostname rac02 for node 2.Successfully accumulated necessary OCR keys.Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.node <nodenumber>: <nodename> <private interconnect name> <hostname>node 1: rac01 priv01 rac01node 2: rac02 priv02 rac02Creating OCR keys for user 'root', privgrp 'root'..Operation successful.Now formatting voting device: /orac/oradata/votediskFormat of 1 voting devices complete.Startup will be queued to init within 90 seconds.Adding daemons to inittabExpecting the CRS daemons to be up within 600 seconds.CSS is active on these nodes.rac01CSS is inactive on these nodes.rac02Local node checking complete.Run root.sh on remaining nodes to start CRS daemons.[root@rac01 proc]# chown root /orac/crs/[root@rac02 ~]# /home/oracle/oraInventory/orainstRoot.shChanging permissions of /home/oracle/oraInventory to 770.Changing groupname of /home/oracle/oraInventory to oinstall.The execution of the script. is complete[root@rac02 ~]# /orac/crs/10.2.0/root.shWARNING: directory '/orac/crs' is not owned by rootChecking to see if Oracle CRS stack is already configured/etc/oracle does not exist. Creating it now.Setting the permissions on OCR backup directorySetting up NS directoriesOracle Cluster Registry configuration upgraded successfullyWARNING: directory '/orac/crs' is not owned by rootclscfg: EXISTING configuration version 3 detected.clscfg: version 3 is 10G Release 2.assigning default hostname rac01 for node 1.assigning default hostname rac02 for node 2.Successfully accumulated necessary OCR keys.Using ports: CSS=49895 CRS=49896 EVMC=49898 and EVMR=49897.node <nodenumber>: <nodename> <private interconnect name> <hostname>node 1: rac01 priv01 rac01node 2: rac02 priv02 rac02clscfg: Arguments check out successfully.NO KEYS WERE WRITTEN. Supply -force parameter to override.-force is destructive and will destroy any previous clusterconfiguration.Oracle Cluster Registry for cluster has already been initializedStartup will be queued to init within 90 seconds.Adding daemons to inittabExpecting the CRS daemons to be up within 600 seconds.CSS is active on these nodes.rac01rac02CSS is active on all nodes.Waiting for the Oracle CRSD and EVMD to startWaiting for the Oracle CRSD and EVMD to startWaiting for the Oracle CRSD and EVMD to startWaiting for the Oracle CRSD and EVMD to startOracle CRS stack installed and running under init(1M)Running vipca(silent) for configuring nodeappsCreating VIP application resource on (2) nodes...Creating GSD application resource on (2) nodes...Creating ONS application resource on (2) nodes...Starting VIP application resource on (2) nodes...Starting GSD application resource on (2) nodes...Starting ONS application resource on (2) nodes...Done.执行结束后点击ok继续推出 安装结束####################################################################开始安装OracleA[oracle@rac02 ~]$ export DISPLAY=202.100.0.111:0[oracle@rac02 ~]$ export LANG=""[oracle@rac02 ~]$ /share/database/runInstaller选择安装企业版填入Oracle home /orac/orahome/10.2.0/db_1选中所有节点选择只安装数据库软件Install开始安装两节点运行脚本完成后ok继续推出安装界面###################################################################配置用户配置文件AB(但两节点的ORACLE_SID不相同,一个为JAVA1另一个为JAVA2)[oracle@rac01 ~]$ vi .bashrcexport ORACLE_BASE=/orac/orahome/10.2.0/export ORACLE_HOME=$ORACLE_BASE/db_1export ORACLE_SID=JAVA1export PATH=$ORACLE_HOME/bin:$PATH[oracle@rac01 ~]$source .bashrc[oracle@rac01 ~]$ vi .bashrcexport ORACLE_BASE=/orac/orahome/10.2.0/export ORACLE_HOME=$ORACLE_BASE/db_1export ORACLE_SID=JAVA2export PATH=$ORACLE_HOME/bin:$PATH[oracle@rac02 ~]$source .bashrc一个节点执行dbca开始安装数据库A[oracle@rac01 ~]$dbca选择Oracle real application cluster cluster database选择创建数据库选择所有节点选择普通用途填写数据库实例名由于没有监听,会有以下提示,选择yes继续开始安装推出完成安装退出时会自动启动集群实例####################################################################启动Oracle后在一个节点上创建表提交后在另一个节点上能查看到即表明安装成功。本文出自 “zhuyan” 博客,请务必保留此出处http://zhuyan.blog.51cto.com/890880/189973
本文出自 51CTO.COM技术博客 -
delete删除后,用回闪恢复
2010-07-19 15:38:37
Flashback query(闪回查询)原理
Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回。
Flashback query(闪回查询)前提:
SQL> show parameter undo;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
其中undo_management = auto,设置自动undo管理(AUM),该参数默认设置为:auto;
Undo_retention = n(秒),设置决定undo最多的保存时间,其值越大,就需要越多的undo表空间的支持。修改undo_retention的命令如下:
SQL> alter system set undo_retention = 3600;
System altered
闪回实现方式
1. 获取数据删除前的一个时间点或scn,如下:
SQL>select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;
TIME SCN
------------------- ----------------------------------------
2010-06-29 23:03:14 1060499
2. 查询该时间点(或scn)的数据,如下:
SQL> select * from t as of timestamp to_timestamp('2010-06-29 22:57:47', 'yyyy-mm-dd hh24:mi:ss');
SQL> select * from t as of scn 1060174;
3. 将查询到的数据,新增到表中。也可用更直接的方法,如:
SQL>create table tab_test as select * from t of timestamp to_timestamp('2010-06-29 22:57:47', 'yyyy-mm-dd hh24:mi:ss');
SQL>insert into tab_test select * from1060174;示例:
Create table t(id number);
insertinto t values(1);
insert into t values(2);
insert into t values(3);
insert into t values(4);
insert into t values(5);1.查看t表中的原始数据
SQL> select * from t;
ID
---------
1
2
3
4
5
2.获取数据删除前的一个时间点或scn
SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;
TIME SCN
------------------- ----------------------------------------
2010-06-29 23:23:33 1061279
3.删除t表中的数据,并提交事物
SQL> delete from t;
5 rows deleted
SQL> commit;
Commit complete
4.在查看t表,此时t表中数据以删除
SQL> select * from t;
ID
----------
5.查看t表中scn为1061279(或时间点为2010-06-29 23:23:33)时的数据
SQL> select * from t as of scn 1061279;
ID
----------
1
2
3
4
5
6.确认要恢复后,将t表中的数据还原到scn为1061279(或时间点为2010-06-29 23:23:33)时的数据,并提交事物
SQL> insert into t select * from t as of scn 1061279;
5 rows inserted
SQL> commit;
Commit complete
7.确认t表数据的还原情况
SQL> select * from t;
ID
----------
1
2
3
4
5
注:推荐使用scn,由于oracle9i中,因为scn与时间点的同步需要5分钟,如果最近5分钟之内的数据需要Falshback query查询,可能会查询丢失,而scn则不存在这个问题。Oracle10g中这个问题已修正(scn与时间点的大致关系,可以通过logmnr分析归档日志获得)。
Falshback query查询的局限:
1. 不能Falshback到5天以前的数据。
2. 闪回查询无法恢复到表结构改变之前,因为闪回查询使用的是当前的数据字典。
3. 受到undo_retention参数的影响,对于undo_retention之前的数据,Flashback不保证能Flashback成功。
4. 对drop,truncate等不记录回滚的操作,不能恢复。
5. 普通用户使用dbms_flashback包,必须通过管理员授权。命令如下:
SQL>grant execute on dbms_flashback to scott;
-
Redhat Linux AS4 安装 Oracle 10g (10.2)
2010-01-28 15:21:19
1、硬件需求
1)内存>1024M
内存 交换分区
>1024M 2倍内存
<2048M 1.5倍内存
<8192M 1倍内存
>8192M 0.75倍内存
显示内存命令
2)/tmp > 400M
3)检测命令
内存
# grep MemTotal /proc/meminfo
交换分区
# grep SwapTotal /proc/meminfo
/tmp分区
# df -k /tmp
cpu信息
# grep "model name" /proc/cpuinfo
2、软件需求
1)操作系统
Red Hat Enterprise Linux AS/ES 3.0 (Update 4 or later)
Red Hat Linux 4.0
SUSE Linux Enterprise Server 9.0
Asianux 1.0
Asianux 2.0
2)内核
Red Hat Enterprise Linux 3.0 and Asianux 1.0
2.4.21-27.EL
Red Hat Enterprise Linux 4.0 and Asianux 2.0
2.6.9-5.EL
SUSE Linux Enterprise Server 9.0
2.6.5-7.201
3)具体组件包
Red Hat Enterprise Linux 3.0 and Asianux 1.0make-3.79.1
gcc-3.2.3-34
glibc-2.3.2-95.20
compat-db-4.0.14-5
compat-gcc-7.3-2.96.128
compat-gcc-c++-7.3-2.96.128
compat-libstdc++-7.3-2.96.128
compat-libstdc++-devel-7.3-2.96.128
openmotif21-2.1.30-8
setarch-1.3-1
Red Hat Enterprise Linux 4.0 and Asianux 2.0:
binutils-2.15.92.0.2-13.EL4
compat-db-4.1.25-9
compat-libstdc++-296-2.96-132.7.2
control-center-2.8.0-12
gcc-3.4.3-22.1.EL4
gcc-c++-3.4.3-22.1.EL44
glibc-2.3.4-2.9
glibc-common-2.3.4-2.9
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-22.1
libstdc++-devel-3.4.3-22.1
make-3.80-5
pdksh-5.2.14-30
sysstat-5.0.5-1
xscreensaver-4.18-5.rhel4.2
setarch-1.6-1
SUSE Linux Enterprise Server 9
binutils-2.15.90.0.1.1-32.5
gcc-3.3.3-43.24
gcc-c++-3.3.3-43.24
glibc-2.3.3-98.28
gnome-libs-1.4.1.7-671.1
libstdc++-3.3.3-43.24
libstdc++-devel-3.3.3-43.24
make-3.80-184.1
pdksh-5.2.14-780.1
sysstat-5.0.1-35.1
xscreensaver-4.16-2.6
4)命令
操作系统型号
# cat /etc/issue
内核型号
# uname -r
查询安装包
# rpm -q package_name
RL AS4 下查询脚本
rpm -qa binutils
rpm -qa compat-db
rpm -qa compat-libstdc++-33
rpm -qa control-center
rpm -qa gcc
rpm -qa gcc-c++
rpm -qa glibc
rpm -qa glibc-common
rpm -qa gnome-libs
rpm -qa libstdc++
rpm -qa libstdc++-devel
rpm -qa make
rpm -qa pdksh
rpm -qa sysstat
rpm -qa xscreensaver
rpm -qa setarch
3、安装
1)环境
内存 2048M,硬盘146G
2)分区
/ 30G
/tmp 2G
/var 3G
/app 20G
/app/oradata 60G
/app/oraBP 20G
3)安装
选择所有的管理工具,开发工具,Gnome环境,Web Server,FTP Server
除sysstat包都成功安装,
sysstat包在4号盘上,rpm -i sysstat-5.0.5-1.i386.rpm
4、安装Oracle
1)添加用户组
判断用户和组是否存在
grep dba /etc/group
grep oinstall /etc/group
id oracle
id nobody
有则不添加
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
--oracle 已经存在 但不是 oinstall组,也非dba组成员
usermod -g oinstall -G dba oracle
useradd nobody
2)内核参数
Parameter Value File
semmsl 250 /proc/sys/kernel/sem
semmns 32000
semopm 100
semmni 128
shmall 2097152 /proc/sys/kernel/shmall
shmmax Half the size of physical memory (in bytes) /proc/sys/kernel/shmmax
shmmni 4096 /proc/sys/kernel/shmmni
file-max 65536 /proc/sys/fs/file-max
ip_local_port_range Minimum: 1024 /proc/sys/net/ipv4/ip_local_port_range
Maximum: 65000
rmem_default 1048576 /proc/sys/net/core/rmem_default
rmem_max 1048576 /proc/sys/net/core/rmem_max
wmem_default 262144 /proc/sys/net/core/wmem_default
wmem_max 262144 /proc/sys/net/core/wmem_max
命令
semmsl, semmns, semopm, and semmni # /sbin/sysctl -a | grep sem
shmall, shmmax, and shmmni # /sbin/sysctl -a | grep shm
file-max # /sbin/sysctl -a | grep file-max
ip_local_port_range # /sbin/sysctl -a | grep ip_local_port_range
rmem_default # /sbin/sysctl -a | grep rmem_default
rmem_max # /sbin/sysctl -a | grep rmem_max
wmem_default # /sbin/sysctl -a | grep wmem_default
wmem_max # /sbin/sysctl -a | grep wmem_max
修改配置文件/etc/sysctl.conf,增加或修改
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
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
重新启动
3)设置oracle用户的shell
a)增加如下行到/etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
b)增加下列行到/etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so
c)修改Shell默认启动文件
Bourne,Bash,Korm shell下增加下列行到/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
C shell下,增加下列行到/etc/csh.login
if ( $USER == "oracle" ) then
limit maxproc 16384
limit descrīptors 65536
endif
4)创建需要的目录
mkdir /app/oracle
chown -R oracle:oinstall /app/oracle
chmod -R 775 /app/oracle
chown -R oracle:oinstall /app/oradata
chmod -R 775 /app/oradata
chown -R oracle:oinstall /app/orabp
chmod -R 775 /app/orabp
这里只有一块硬盘,如果有多块硬盘,你需要将其建立一个挂接点,如u01,
则目录为/u01/app/oracle,这里只有一个硬盘,挂接点就是/
5)设置oracle用户环境
a)如果在远程系统上安装oracle,在本地的X-Windows里显示,要设置
xhost host_name
b)用oracle登陆X-windows系统,或su - oracle
c)查看默认Shell
echo $SHELL
d)bash
vi .bash_profile
如果设置了ORACLE_SID,ORACLE_HOME,ORACLE_BASE,删除相应行
e)umask 022
f)保存文件,执行
. .bash_profile
g)设置显示变量
DISPLAY=localhost:0.0 ; export DISPLAY
如果在远程显示界面,localhost就改成远程主机
h)如果/tmp空间不够,需要设置TMP,TMPDIR变量
$ su - root
# mkdir /mount_point/tmp
# chmod a+wr /mount_point/tmp
# exit
bash下
$ TMP=/mount_point/tmp
$ TMPDIR=/mount_point/tmp
$ export TMP TMPDIR
i)确定ORACLE_HOME,TNS_ADMIN没有设置
$ unset ORACLE_HOME
$ unset TNS_ADMIN
j)检验是否设置正确
$ umask
$ env | more
6)安装Oracle
a)取得Oracle安装件
从Oracle网站上下载,是免费的,只需要一个简单的注册即可,得到的是zip文件
unzip 10201_database_linux32.zip
如果是安装光盘,mount上介质
b)运行
runInstaller
c)安装过程和Windows非常类似,要注意的是
在选择dba组的时候选择oinstall
修改一下默认目录,如安装目录,Inventory目录
安装之前程序会检查一下系统配置,如果按照上面的设置,不会有任何问题,
install即可
这样安装的oracle的数据文件在默认目录下,如果要放到不同的盘上,
可以删除数据库重建,或者安装的时候选择高级安装
安装Net 8时,系统提示以root用户执行两个脚本,照做就可以了
5、点滴
1)注意ORACLE_HOME变量,如果不存在,需要手工设置
ORACLE_HOME=/app/oracle/product/10.2.0/db_1
2)建库命令为/app/oracle/product/10.2.0/db_1/bin/dbca &
注意设置字符集,因为安装界面用中文没法安装,所以使用英文环境安装,
所以不能使用默认配置,要修改默认字符集及默认语言
3)Net 8 命令为/app/oracle/product/10.2.0/db_1/bin/netca &
4)在其它机器上远程用Net8连接Oracle,需要打开Linux上的1521端口
配置如下
Applications->System Setting->Secuity Level 其它端口增加1521:tcp即可
5)让oracle随机器启动而启动
在.bash_profile里设置
ORACLE_SID=orcl
ORACLE_HOME=/app/oracle/product/10.2.0/db_1
export ORACLE_SID
export ORACLE_HOME
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export PATH
修改/etc/oratab,
orcl:/app/oracle/product/10.2.0/db_1:Y
最后一个字母默认是N,修改为Y,否则dbstart,dbshut都不会起作用
修改/app/oracle/product/10.2.0/db_1/dbstart中的相关行为
ORACLE_HOME_LISTNER=/app/oracle/product/10.2.0/db_1
然后修改/etc/rc.local,增加这样的一行
su - oracle -c dbstart
这样就可以了,但不能关机的时候自动关闭,所以需要手工处理
su - oracle -c dbshut
如果是oracle用户可以直接dbshut
注:我曾经尝试过网上找到的如下方法,但系统没法启动,需要用恢复模式删掉脚本才可以,
不知道是不是我的配置问题,如果看出我的错误请告诉我
开机时让 RedHat Linux 自动启动Oracle,需要完成以下步骤:运行 $ORACLE_HOME 下的 root.sh,会生成一个文件 /etc/oratab 。
编辑 /etc/oratab ,把所有的 instance 的重启动标志设置成 'Y',如:
ora10g:/home/oracle/OraHome_1:Y
做一个启动脚本 /etc/init.d/dbora ,如下所示:
#!/bin/sh
# descrīption: Oracle auto start-stop scrīpt.
# chkconfig: - 20 80
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/app/oracle/product/10.2.0/db_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
;;
'restart')
$0 stop
$0 start
;;
esac
赋予执行权限
chmod 750 /etc/init.d/dbora
作成以下链接:
ln -s /etc/init.d/dbora /etc/rc0.d/K10dbora
ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora
执行以下命令:
chkconfig --level 345 dbora on
这样就OK了。下次开关机的时候,Oracle也会随之启动/停止。 -
Linux RHEL5.0+Oracle10G安装
2010-01-28 15:21:19
系统采用最小化安装,安装步骤不在细化
1 安装RPM包:
# rpm -ivh glibc-headers-2.5-12.i386.rpm 2 修改内核参数:
#vi /etc/sysctl.conf kernel.shmall = 2097152 (实际的物理内存的大小)
kernel.shmmax = 2147483648(实际物理内在*1024*1024/2)
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=2621443 运行使其生效:
#sysctl -p 4
建立oracle用户 #groupadd dba
#useradd -m -g oinstall -G dba oracle
5
创建oracle安装目录 #mkdir -p /oracle/DB/10g
#chown -R oracle.oinstall /oracle
6
修改配置文件 #vi /etc/redhat-release
*
*
1024 *
65536 #vi /etc/pam.d/login
session
7
用oracle用户登陆修改变量 8
#vi ~/.bash_profile export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/oracle/DB
export ORACLE_HOME=$ORACLE_BASE/10g
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG="AMERICAN_AMERICA.zhs16gbk"
export DISPLAY=192.168.0.244:0.0
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi 9
10
转载请注明出处 -
setup Oracle 10g on RedHat 5
2010-01-28 15:16:08
-
物理内存:512M: # grep MemTotal /proc/meminfo
交换空间:1.0 GB或者2倍内存大小:# grep SwapTotal /proc/meminfo
修改核心参数,执行如下命令:
#vi /etc/sysctl.conf
#表示使用root用户操作,$表示使用oracle 用户进行操作
在该文件末尾加入如下内容:
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 命令操作来使我们所做的变更生效.
注:上面kernel.shmmax/kernel.sem等是典型的核心参数配置.
您可能需要根据您的实际环境进行适当的变动.
关于这些核心参数的说明在Oracle的官方网站中有很详细的说明.
然后,应该检查一下上面的操作是否正确:
# /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的限制
一般来说,出于性能上的考虑,还需要进行如下的设定,
以便改进Oracle用户的有关 nofile(可打开的文件描述符的最大数)
和nproc(单个用户可用的最大进程数量)
# vi /etc/security/limits.conf
# 添加如下的行
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
添加如下的行到/etc/pam.d/login 文件:
session required /lib/security/pam_limits.so
编辑 /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
之后,执行$ unlimit 验证一下.
一、 相关软件
环境:RedHat Enterprise Server 5
jdk-1_5_0_15-linux-i586-rpm.bin
oracle10.2.0.1-linux32.zip
其他安装包见文中
------------------------------------------------------------
RedHat Enterprise Server 5
红帽发行的Linux 服务器版最新版,Linux 2.6.18内核
下载地址:
[url]ftp://60.232.126.152/os/linux/redhat/rhel5/rhel-5-server-i386-disc1.iso[/url]
[url]ftp://60.232.126.152/os/linux/redhat/rhel5/rhel-5-server-i386-disc2.iso[/url]
[url]ftp://60.232.126.152/os/linux/redhat/rhel5/rhel-5-server-i386-disc3.iso[/url]
[url]ftp://60.232.126.152/os/linux/redhat/rhel5/rhel-5-server-i386-disc4.iso[/url]
[url]ftp://60.232.126.152/os/linux/redhat/rhel5/rhel-5-server-i386-disc5.iso[/url]
更多介绍和下载地址可以查看
[url]http://www.oklinux.cn/html/Basic/azpz/20070907/35044.html[/url]
安装序列号:2515dd4e215225dd
jdk-1_5_0_15-linux-i586-rpm.bin
下载地址:[url]http://java.sun.com/javase/downloads/index_jdk5.jsp[/url]
oracle-xe-10.2.0.1-1.0.i386.rpm
Oracle 10g的rpm安装包
下载地址:
[url]http://www.oracle.com/technology/software/products/database/xe/htdocs/102xelinsoft.html
[/url]
二、 RHEL5介绍
在经历了两次跳票以后, Red Hat于2007年3月14日正式发布了RHEL5. RHEL 5将是Red Hat的商业服务器操作系统版本的第四次重要版本发布, Red Hat酝酿发布RHEL 5已经超过了两年, 主要变化包括Linux内核由2.6.9升级为2.6.18, 支持Xen虚拟化技术, 集群存储等.
RHEL5的版本主要分为Sever和Desktop两个版本。
具体来说,Server版本分为:
· Red Hat Enterprise Linux Advanced Platform. - 对应以前的· Red Hat Enterprise Linux AS
· Red Hat Enterprise Linux - 对应以前的Red Hat Enterprise Linux ES
Desktop版本分为:
· Red Hat Enterprise Linux Desktop - 对应以前的Red Hat Desktop
· Red Hat Enterprise Linux Desktop with Workstation option - 对应以前的Red Hat Enterprise
三、 安装JDK(我把需要安装的软件都放在/usr/local下)
下载地址:http://java.sun.com/j2se/1.5.0/download.jsp
# cd /usr/local
# chmod 755 jdk-1_5_0_15-linux-i586.rpm.bin
# ./ jdk-1_5_0_15-linux-i586.rpm.bin
此步完成后,会生成jdk-1_5_0_15-linux-i586.rpm的文件
# chmod +x jdk-1_5_0_15-linux-i586.rpm
# rpm –ivh jdk-1_5_0_15-linux-i586.rpm
此时会出现授权协议,按Enter键接受。默认安装到/usr/java/jdk1.5.0_15
OK,接下来配置环境变量(提供二种方法)
1、修改/etc/proFile文件
一般都不推荐这种方法,因为这样做的话,所有用户的shell都会使用这些环境变量,
可能会给系统带来安全性问题。但如果你的计算机仅仅作为开发使用时那就推荐使用这种方法。
# vi /etc/profile
在里面最后位置加入以下
JAVA_HOME=/usr/java/jdk1.5.0_15
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
# source /etc/profile
使修改的配置生效。
2、修改当前用户变量(推荐用此方法)
# cd~
# vi .bashrc
然后一样把一下加进去
JAVA_HOME=/usr/java/jdk1.5.0_15
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
验证java的环境变量有没有生效,可以用以下命令查看一下:
# echo $JAVA_HOME (注意大小写,下同)
没问题的话,显示的是/usr/java/jdk1.5.0_15
# echo $PATH
/usr/java/jdk1.5.0_15/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/s
bin:/bin:/usr/sbin:/usr/bin:/root/bin
# echo $CLASSPATH
.:/usr/java/jdk1.5.0_15/lib/dt.jar:/usr/java/jdk1.5.0_15/lib/tools.jar
# java –version
java version "1.5.0_15"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_15-b04)
Java HotSpot(TM) Server VM (build 1.5.0_15-b04, mixed mode)
如果没有生效,请检查以上配置。或干脆先reboot一下。
环境变量如果ok的话,再来测试JDK是否正常工作。写个测试文件如test.java
# vi test.java
class test
{
public static void main(String[] args)
{
System.out.println("Hi,[url]www.oklinux.cn[/url]!");
}
}
保存退出,下面来编译、执行;
# javac test.java
# java test
Hi,[url]www.oklinux.cn[/url]!
好了,这样就是正常了。
四、安装Oracle 10g
《在 Linux x86 上安装 Oracle 数据库 10g》地址是:
[url]http://www.oracle.com/technology/global/cn/pub/articles/smiley_10gdb_install.html[/url]
1、验证一下系统所需的主要安装包版本:
# rpm -q gcc make binutils openmotif
gcc-4.1.1-52.el5
make-3.81-1.1
binutils-2.17.50.0.6-2.el5
openmotif-2.2.4-0.1
如果显示某个包没有安装的话,请先安装。安装包一般在redhat的安装盘里有(一般在第二张或第三张),如
果没有找到的话,可以到官方下载,不过官方下载比较麻烦,给大家推荐个好地方下载:
[url]http://rpm.pbone.net/[/url]
这个网站很简单明了,搜索框输入需要包的名称一部分或全部,就搜索出一堆的安装包链接地址,有很多镜像
可以选择。
下面举例openmotif的安装,很简单
# cd /usr/local
# rpm –ivh openmotif-2.2.4-0.1.rpm
2、创建 Oracle 组和用户帐户
接下来,创建用于安装和维护 Oracle 10g的 Linux 组和用户帐户。用户帐户将称为 oracle,而组将称为
oinstall 和 dba。执行以下命令:
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oinstall -G dba oracle
# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)
设置 oracle 帐户的口令:输密码的时候都是没有回显的,输完就回车就好。
# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd:all authentication tokens updated successfully.
4、安装Oracle
由于默认情况下oracle 10g 不支持redhat as 5.0,
所以我们需要手动地把redhat的版本临时给改动一下。
#su - root
#cp /etc/redhat-release /etc/redhat-release.backup
#cat > /etc/redhat-release << EOF
Red Hat Enterprise Linux AS release 3 (Taroon)
EOF
安装完毕,执行如下操作:
#su - root
#cp /etc/redhat-release.backup /etc/redhat-release
这下就可以真正在开始安装数据库。
最好在ORACLE用户下安装而不要以ROOT身份安装,切换到ORACLE用户界面中,不然就可能出现显示问题。
$ cd /usr/local/database
$ ./runInstaller
按照提示安装就可以了。
其实在这里还有很多需要认真学习的,安装有几种模式,根据自己的实际情况而定。