This page looks plain and unstyled because you're using a non-standard compliant browser. To see it in its best form, please upgrade to a browser that supports web standards. It's free and painless.

idea

首页 | 资源中心 | 管理控制台

安装Oracle 10g 的艰难之旅(转)

idea | 07 八月, 2007 20:35

 在linux下安装oracle是一件令人生畏的事情,其复杂程度远远超过安装linux操作系统本身。如果能够进行成功的安装oracle,那么同时也就顺便掌握了linux一些技术。本文介绍在redhat linux 下安装oracle 10g 的方法。在这里说明一下,Oracle 10g的g是grid 的缩写,意为网格,目前较为前沿的网络计算技术。
  
  Oracle 10g 对软硬件的要求都非常的高,所以要玩转的话的花不少银子。首先来看看它对硬件的要求:内存512兆(建议1G),cpu 主频2.0G以上,硬盘转速7200转以上(建议使用scsi硬盘),依此条件,我看买台服务器才行。其次是软件要求:在oracle 官方的文档里,对于x86系列支持的操作系统只有3种(radhat ES/AS 2.1(x86),redhat ES/AS 3(x86),unitedlinux1.0(x86) ),如果只有redhat 9也是可以安装的,不过要麻烦一点点。当然oracle 10g需要更多的软件模块才能进行安装,这些软件模块我将在后面逐一说明。在本例中,使用RedHat ES 3(x86)作为操作平台,并且安装了xwindow。
  
  接下来,我们检查是否符合oracle 10g 的安装要求,以表格的形式列出。首先是硬件情况。以root登录系统,并且启动x-window.如果用下表命令输出的值大于或等于建议值,请
  
  检查项目 命令/方法 建议值
  内存 #grep MemTotal /proc/meminfo 512MB
  交换分区 #grep SwapTotal /proc/meminfo 1GB
  /tmp目录空闲区 #df –k /tmp 400MB
  硬盘空闲空间 #df -k 4GB
  
  继续往下,检查软件需求。对redhat ES 3(x86),需要如下的软件包:
  
  · Gnu gcc package, gcc-3.2.3-2 or 更高
  下面的包也必须被安装:· 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
  
  为了保证系统满足需求,执行下面的步骤检查安装的linux版本和安装的套件。
  检查项目 命令/方法 建议值
  Linux 版本 #cat /etc/issue ES 3
  已安装的包 #rpm -q package_name 安装所需包(上表所列)
  
  到这里我们已经全面的检查了安装oracle 10g所要求的软硬件环境,接着我们就要为安装创建组和用户。
  下面的组和用户必须存在
  The oinstall group (the oracle inventory group)
  The dba group (the OSDBA group)
  The oracle user (the oracle owner)
  如果上面的组和用户不存在,用下面的步骤创建它们。(1)先查看这些组和用户是否存在:
  #grep oinstall /etc/group
  #grep dba /etc/group
  (2)创建安装oracle 所需的组和用户
  #groupadd osintall
  #groupadd dba
  #useradd –g oinstall –G dba oracle 检查一下oracle 是否属于组 oinstall 和 dba (#id oracle) 再给oracle 设置一个用户口令 #passwd oracle 输入两次密码。
  
  创建安装所需的目录 /u01/app/oracle (the oracle base directory), /u02/oradata (an optional default directory ),用下表的命令形式创建它.然后改变它的目录权限。
  创建目录 更改权限
  #mkdir –p /u01/app/oracle #chown –R oracle:Oinstall /u01/app/oracle /u02/oradata
  #mkdir –p /u02/oradata #chmod –R 755 /u01/app/oracle /u02/oradata
  
  配置内核参数,下表是oracle 推荐的内核参数值,请参考。
  
  Parameter Value File
  semmslsemmnssemopmsemmni 25032000100128 /proc/sys/kernel/sem
  shmall 2097152 /proc/sys/kernel/shmall
  shmmax Half the size of physical memory /proc/sys/kernel/shmmax
  shmmni 4096 /proc/sys/kernel/shmmni
  file-max 65536 /proc/sys/fs/file-max
  ip_local_port_range 1024 65000 /proc/sys/net/ipv4/ip_local_port_range
  确保当前的参数值大于或等于上表所列。那么怎样查看这些参数值呢?用命令 #/sbin/sysctl –a | grep <参数名>,例如查看semmsl,用 #/sbin/sysctl -a | grep sem,余下的与此类似。逐个察看这些参数值,如果参数值不满足要求,就需要修改它们。请完成下面这些步骤
  a.用文本编辑器,创建或者编辑/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
  b.改变当前内核参数的值,用命令 #/sbin/sysctl –p 来实现。
  
  为了提高在linux系统上运行软件的性能,必须对oracle用户设置下列shell 限定。
  Shell Limit Item in limits.conf Hard Limit
  Maximum number of open file descriptors nofile 65536
  Maximum number of processes available to a single user nproc 16384
  现在创建这些限定:
  1. 加入下面的行到文件/etc/security/limits.conf
  * soft nproc 2047
  * hard nproc 16384
  * soft nofile 1024
  * hard nofile 65536
  
  2. 加入下面的行到文件/etc/pam.d/login ,假如它不存在的话
  session required /lib/security/pam_limits.so
  3.根据oracle 用户的默认shell,对默认 shell start-up文件作如下改变,如果是Bourne, Bash, or Korn 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 descriptors 65536
  endif
  
  接下来挂接光盘,#mount /dev/cdrom /mnt/cdrom 。
  
  以oracle 用户名登录系统,配置oracle 用户的环境。以oracle 帐号用安装器来安装oracle,但是开始运行安装器之前,还得设定oracle用户的环境变量,因此必须:
  ● 设置shell startup文件的umask 为022
  ● 设置DISPLAY, ORACLE_BASE, and ORACLE_SID 的环境变量。下面这些步骤是对这些环境变量进行设置的方法:
  1、 开启一个终端会话
  2、 确认xwindow 能正常显示。#xhost +
  3、 改变用户为oracle. $ su – oracle
  4、 检查oracle用户的默认shell. $echo $SHELL
  5、 用文本编辑器修改oracle用户的环境变量
  ●bash shell on redhat
  $vi .bash_profile
  ●c shell
  %vi .login
  6、 把下面的行插入上面编辑的文件中
  umask 022
  7、 保存文件并退出
  8、 运行shell开始脚本:
  ●Bash shell on Red Hat $ . ./.profile
  ●C shell % source ./.login
  9、设置环境变量
  
  ●Bash shell
  $ ORACLE_BASE=/u01/app/oracle
  $ ORACLE_SID=sales
  $ export ORACLE_BASE ORACLE_SID
  ●c shell
  % setenv ORACLE_BASE /u01/app/oracle
  % setenv ORACLE_SID sales
  10、确认ORACLE_HOME and TNS_ADMIN 的环境变量不被用户设置
  ●Bash shell
  $ unset ORACLE_HOME
  $ unset TNS_ADMIN
  ●c shell
  % unsetenv ORACLE_HOME
  % unsetenv TNS_ADMIN
  11、再检验一下上面设定的环境变量是否正确。
  $ umask
  $ env | more
  
  进入安装器(runInstaller)所在的目录 $ cd /tmp 运行安装 $ /mnt/cdrom/runInstaller ,依照提示完成整个安装。

如何在Linux下的安装Oracle(转)

idea | 07 八月, 2007 20:34

 说明:这个版本是10g,我的测试是在RedHat Enterprise上完成的。
  
  1、按照说明下载之后,先执行下列个步骤即可
  gunzip ship.db.lnx32.cpio.gz
  cpio -idmv < ship.db.lnx32.cpio
  ./runInstaller
  
  2、系统默认使用的一些设置如下
  默认数据库:ORCL
  用户:SYS、SYSTEM、SYSMAN、DBSNMP
  企业版:1.3G
  数据库:700M
  
  3、安装过程中需要执行的一个脚本,这个脚本必须以root用户身份登录才能完成
  /home/globus/oralnventory/orainstRoot.sh
  
  4、安装中可能需要修改一些参数如下
  kernel参数
  
  参数 值 文件
  semmsl semmns semopm semmni 250 32000 100 128 /proc/sys/kernel/sem
  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 1024 65000 /proc/sys/net/ipv4/ip_local_port_range
  
  可以编辑文件 /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
  
  然后运行:
  # /sbin/sysctl -p
  
  5、Oracle 10g的默认管理页面位置
  http://localhost.localdomain:5500/em
  
  6、安装过程中的另一个需要运行的脚本
  以root用户身份运行如下脚本:
  /home/globus/product/10.1.0/Db.2/root.sh
  
  7、其它相关管理页面链接位置
  :5620/ultrasearch
  :5620/ultrasearch/admin
  
  :5560/isqlplus
  :5560/isqlplus/dba
  
  :5500/em

Oracle诊断案例:Job任务停止执行(转)

idea | 07 八月, 2007 20:34

本文通过一次Oracle Job任务异常案例诊断,分析其原因及解决过程,从内部揭示Oracle Job任务调度及内部计时机制。
  
  问题及环境
  
  接到研发人员报告,数据库定时任务未正常执行,导致某些操作失败。
  
  开始介入处理该事故.
  
  系统环境:
  
  SunOS DB 5.8 Generic_108528-21 sun4u sparc SUNW,Ultra-4
  Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production
  
  解决过程
  
  首先介入检查数据库任务
  
  $ sqlplus "/ as sysdba"
  SQL*Plus: Release 9.2.0.3.0 - Production on Wed Nov 17 20:23:53 2004
  Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
  Connected to:
  Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production
  With the Partitioning, OLAP and Oracle Data Mining options
  JServer Release 9.2.0.3.0 - Production
  SQL> select job,last_date,last_sec,next_date,next_sec,broken,failures from
  dba_jobs;
  JOB LAST_DATE LAST_SEC NEXT_DATE NEXT_SEC B FAILURES
  INTERVAL
  ---------- --------- ---------------- --------- ---------------- - ----------
  ----------------------------
  31 16-NOV-04 01:00:02 17-NOV-04 01:00:00 N 0
  trunc(sysdate+1)+1/24
  27 16-NOV-04 00:00:04 17-NOV-04 00:00:00 N 0
  TRUNC(SYSDATE) + 1
  35 16-NOV-04 01:00:02 17-NOV-04 01:00:00 N 0
  trunc(sysdate+1)+1/24
  29 16-NOV-04 00:00:04 17-NOV-04 00:00:00 N 0
  TRUNC(SYSDATE) + 1
  30 01-NOV-04 06:00:01 01-DEC-04 06:00:00 N 0
  trunc(add_months(sysdate,1),’MM’)+6/24
  65 16-NOV-04 04:00:03 17-NOV-04 04:00:00 N 0
  trunc(sysdate+1)+4/24
  46 16-NOV-04 02:14:27 17-NOV-04 02:14:27 N 0
  sysdate+1
  66 16-NOV-04 03:00:02 17-NOV-04 18:14:49 N 0
  trunc(sysdate+1)+3/24
  8 rows selected.
  
  发现JOB任务是都没有正常执行,最早一个应该在17-NOV-04 01:00:00执行。但是没有执行。
  
  建立测试JOB
  
  create or replace PROCEDURE pining
  
  IS
  BEGIN
  NULL;
  END;
  /
  variable jobno number;
  variable instno number;
  begin
  select instance_number into :instno from v$instance;
  dbms_job.submit(:jobno, ’pining;’, trunc(sysdate+1/288,’MI’),
  ’trunc(SYSDATE+1/288,’’MI’’)’, TRUE, :instno);
  end;
  /
  
  发现同样的,不执行。
  
  但是通过dbms_job.run(<job>)执行没有任何问题。
  
  进行恢复尝试
  
  怀疑是CJQ0进程失效,首先设置JOB_QUEUE_PROCESSES为0,Oracle会杀掉CJQ0及相应job进程
  
  SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0;
  
  等2~3分钟,重新设置
  
  SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 5;
  
  此时PMON会重起CJQ0进程
  
  Thu Nov 18 11:59:50 2004
  
  ALTER SYSTEM SET job_queue_processes=0 SCOPE=MEMORY;
  Thu Nov 18 12:01:30 2004
  ALTER SYSTEM SET job_queue_processes=10 SCOPE=MEMORY;
  Thu Nov 18 12:01:30 2004
  Restarting dead background process CJQ0
  CJQ0 started with pid=8
  但是Job仍然不执行,而且在再次修改的时候,CJQ0直接死掉了。
  Thu Nov 18 13:52:05 2004
  ALTER SYSTEM SET job_queue_processes=0 SCOPE=MEMORY;
  Thu Nov 18 14:09:30 2004
  ALTER SYSTEM SET job_queue_processes=10 SCOPE=MEMORY;
  Thu Nov 18 14:10:27 2004
  ALTER SYSTEM SET job_queue_processes=0 SCOPE=MEMORY;
  Thu Nov 18 14:10:42 2004
  ALTER SYSTEM SET job_queue_processes=10 SCOPE=MEMORY;
  Thu Nov 18 14:31:07 2004
  ALTER SYSTEM SET job_queue_processes=0 SCOPE=MEMORY;
  Thu Nov 18 14:40:14 2004
  ALTER SYSTEM SET job_queue_processes=10 SCOPE=MEMORY;
  Thu Nov 18 14:40:28 2004
  ALTER SYSTEM SET job_queue_processes=0 SCOPE=MEMORY;
  Thu Nov 18 14:40:33 2004
  ALTER SYSTEM SET job_queue_processes=1 SCOPE=MEMORY;
  Thu Nov 18 14:40:40 2004
  ALTER SYSTEM SET job_queue_processes=10 SCOPE=MEMORY;
  Thu Nov 18 15:00:42 2004
  ALTER SYSTEM SET job_queue_processes=0 SCOPE=MEMORY;
  
  Thu Nov 18 15:01:36 2004
  ALTER SYSTEM SET job_queue_processes=15 SCOPE=MEMORY;
  
  尝试重起数据库,这个必须在晚上进行:
  
  PMON started with pid=2
  DBW0 started with pid=3
  LGWR started with pid=4
  CKPT started with pid=5
  SMON started with pid=6
  RECO started with pid=7
  CJQ0 started with pid=8
  QMN0 started with pid=9
  ....
  
  CJQ0正常启动,但是Job仍然不执行。
  
  没办法了...
  
  继续研究...居然发现Oralce有这样一个bug
  
  1. Clear description of the problem encountered:
  slgcsf() / slgcs() on Solaris will stop incrementing after
  497 days 2 hrs 28 mins (approx) machine uptime.
  
  2. Pertinent configuration information
  No special configuration other than long machine uptime. .
  3. Indication of the frequency and predictability of the problem
  100% but only after 497 days.
  4. Sequence of events leading to the problem
  If the gethrtime() OS call returns a value > 42949672950000000
  nanoseconds then slgcs() stays at 0xffffffff. This can
  cause some problems in parts of the code which rely on
  slgcs() to keep moving.
  eg: In kkjssrh() does "now = slgcs(&se)" and compares that
  to a previous timestamp. After 497 days uptime slgcs()
  keeps returning 0xffffffff so "now - kkjlsrt" will
  always return 0. .
  5. Technical impact on the customer. Include persistent after effects.
  In this case DBMS JOBS stopped running after 497 days uptime.
  Other symptoms could occur in various places in the code.
  
  好么,原来是计时器溢出了,一检查我的主机:
  
  bash-2.03$ uptime
  10:00pm up 500 day(s), 14:57, 1 user, load average: 1.31, 1.09, 1.08
  bash-2.03$ date
  Fri Nov 19 22:00:14 CST 2004
  
  刚好到事发时是497天多一点.ft.
  
  安排重起主机系统..
  
  这个问题够郁闷的,NND,谁曾想Oracle这都成...
  
  Oracle最后声称:
  
  fix made it into 9.2.0.6 patchset
  
  在Solaris上的9206尚未发布...晕.
  
  好了,就当是个经历吧,如果有问题非常不可思议的话,那么大胆怀疑Oracle吧,是Bug,可能就是Bug。
  
  重起以后问题解决,状态如下:
  
  $ sqlplus "/ as sysdba"
  SQL*Plus: Release 9.2.0.3.0 - Production on Fri Nov 26 09:21:21 2004
  Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
  Connected to:
  Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production
  With the Partitioning, OLAP and Oracle Data Mining options
  JServer Release 9.2.0.3.0 - Production
  SQL> select job,last_date,last_sec,next_date,next_sec from user_jobs;
  
  JOB LAST_DATE LAST_SEC NEXT_DATE NEXT_SEC
  ---------- --------- ---------------- --------- ----------------
  70 26-NOV-04 09:21:04 26-NOV-04 09:26:00
  SQL> /
  JOB LAST_DATE LAST_SEC NEXT_DATE NEXT_SEC
  ---------- --------- ---------------- --------- ----------------
  70 26-NOV-04 09:26:01 26-NOV-04 09:31:00
  SQL>
  SQL> select * from v$timer;
  HSECS
  ----------
  3388153
  SQL> select * from v$timer;
  HSECS
  ----------
  3388319
  SQL>
  FAQ

Oracle中的外连接简单介绍(转)

idea | 07 八月, 2007 20:34

 在讲外连接之前,先举例介绍内连接,也就是一般的相等连接。
  
  select * from a, b where a.id = b.id;
  
  对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。
  
  1. 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的员工记录。
  
  2. 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;
  
  结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。
  
  3. 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的员工记录和没有任何员工的部门记录。

Oracle数据库几种启动方式(转)

idea | 07 八月, 2007 20:34

1. startup nomount
  
  非安装启动,这种方式启动下可执行:重建控制文件、重建数据库、启动instance,即启动SGA和后台进程。这种启动只需要init.ora文件。
  
  2. startup mount dbname
  
  安装启动,这种方式启动下可执行:数据库日志归档、数据库恢复、重新命名一些数据库文件,如:系统表空间或日志文件。
  
  执行“nomount”,然后打开控制文件。
  
  3. startup open dbname
  
  先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,这种方式下可访问数据库中的数据。
  
  4. startup,等于以下三个命令
  
  startup nomount
  
  alter database mount
  
  alter database open
  
  5. startup restrict
  
  约束方式启动,这种方式能够启动数据库,但只允许具有一定特权的用户访问。非特权用户访问时,会出现以下提示:
  
  ERROR:
  
  ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用
  
  6. startup force
  
  强制启动方式。当不能关闭数据库时,可以用startup force来完成数据库的关闭。先关闭数据库,再执行正常启动数据库命令。
  
  7. startup pfile=参数文件名
  
  带初始化参数文件的启动方式,先读取参数文件,再按参数文件中的设置启动数据库。
  
  例:startup pfile=E:Oracleadminoradbpfileinit.ora
  
  8. startup EXCLUSIVE

在slackware 10下安装Oracle 10(转)

idea | 07 八月, 2007 20:34

Oracle并不支持Slackware Linux.但是你会发现这篇文档对你的学习是有些用处的。
  
  首先建立Linux用户组
  
  groupadd oinstall
  groupadd dba
  
  建立Oracle用户
  
  useradd -g oinstall -G dba oracle
  passwd oracle
  
  设置共享内存
  在/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
  
  以root用户身份建立Oracle安装所需要的目录
  
  mkdir /u01/app/oracle
  mkdir /u01/app/oracle/product
  mkdir /u01/app/oracle/product/10.0.1.0.2
  chown -R oracle.oinstall /u01/app/oracle
  
  mkdir /home/oracle
  chown -R oracle.oinstall /home/oracle
  
  欺骗Oracle 10安装程序
  以root用户创建文件 /etc/redhat-release 并且在文件中加入如下行
  
  redhat-3
  
  下载老版本的BinUtils
  
  我是从以下网址下载到 binutils-2.10.1.tar.gz的:
  http://mirrors.usc.edu/pub/gnu/binutils/?C=M;O=D
  
  我用如下步骤将它安装进系统:
  
  # tar -xzvf binutils-2.10.1.tar.gz
  # cd binutils-2.10.1
  # ./configure
  # make
  # make install       # 此步要以root身份执行
  
  下一步以root身份运行下面的命令
  
  # cd /usr/bin
  # mv ld ld.new
  # cp /usr/local/bin/ld ./
  
  这样就临时的用ld 2.10代替了ld 2.11
  
  注:我仍然在Oracle的安装过程中遇到了一些链接错误,当他们发生时我只是选择了继续(continue).
  
  为oracle用户设置shell限额
  
  在文件/etc/security/limits.conf 中添加如下行:
  
  * soft nproc 2047
  * hard nproc 163844
  * soft nofile 1024
  * hard nofile 65536
  
  每行都遵从如下格式:
  
  *<Tab><Tab>soft<Tab>nproc<Tab<Tab>2047
  
  设置Oracle环境变量
  
  以oracle用户在/home/oracle目录创建文件.profile并加入如下内容:
  
  # Oracle Environment
  
  export ORACLE_BASE=/u01/app/oracle
  export ORACLE_HOME=/u01/app/oracle/product/10.0.1.0.2
  export DISPLAY=localhost:0.0
  export ORACLE_SID=test
  export ORACLE_TERM=xterm
  #export TNS_ADMIN= Set if sqlnet.ora, tnsnames.ora, etc. are not in $ORACLE_HOME/network/admin
  export NLS_LANG=AMERICAN;
  export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
  LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
  export LD_LIBRARY_PATH
  
  # Set shell search paths
  
  export PATH=$PATH:$ORACLE_HOME/bin
  
  # CLASSPATH:
  
  CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
  
  
  export EDITOR=vi
  set -o vi
  PS1='$PWD:$ORACLE_SID >'
  
  If [ $USER = "oracle" ]; then
  If [ $SHELL = "/bin/ksh" ]; then
  ulimit -p 16384
  ulimit -n 65536
  else
  ulimit -u 16384 -n 65536
  fi
  fi
  
  然后重新启动系统
  
  系统检查
  在系统重新启动后你应该以root用户用这些命令来检查内存参数:
  可以用cat工具来检查当前的sem文件中的信号参数。
  
  # cat /proc/sys/kernel/sem
  
  你能用如下命令检查shmmax参数的值:
  
  # cat /proc/sys/kernel/shmmax
  
  重新启动后sysctl.conf 把这个值设置为 2,147,483,648, 但你可以把这个值最大设到2.7GB.
  以oracle用户执行一些象下面的命令以确保环境变量已经被正确的设置了。
  
  # echo $ORACLE_SID
  # echo #ORACLE_HOME
  
  由你自己决定是否使用Oracle patch 3006854补丁包。
  我下载并且运行了For红帽版本的,并不确定它对安装是否有益处。
  安装Oracle
  在开始安装前你需要到http://otn.oracle.com下载文件
  ship.db.cpio.gz
  
  创建一个安装目录并且解压你的Oracle安装镜像。
  我在创建了目录/u01/app/oracle/100102install并且把镜像拷贝到了那里。
  
  执行这个命令:
  
  gunzip ship.db.cpio.gz
  
  然后用如下命令把cpio镜像解压:
  
  cpio -idmv < ship.db.cpio
  
  以oracle用户运行oracle安装程序(runInstaller)
  进入目录Disk1然后敲入./runInstaller运行安装程序。
  在安装过程中需要回答的问题:
  
  Inventory Directory(Inventory目录) : 直接按回车使用默认值
  
  Privileged Operating System Groups(授权系统用户组): dba and dba
  
  启动ins_rdbms.mk时遇到了两三个链接错误,我都选择了继续(continue)。

Windows XP下安装Oracle9i问题二则(转)

idea | 07 八月, 2007 20:33

环境:WindowsXP
  数据库:Oracle9i
  
  问题一:
  
  第一次在WindowsXP上安装Oracle9i就碰到如下错误:
  
  “您可能没有建立目录的适当权限或者磁盘已经没有空间,无法建立目录 c:....”
  
  当时我的c盘有4G空间,天哪!这是错误吗?经过仔细分析,我觉得临时文件夹路径太长了,曾经通过网络安装Oracle8i时好像碰到过这样的错误。于是我做了如下修改:
  
  1 右键单击我的电脑--〉高级--〉环境变量
  2 将temp 和 tmp 的值改为c: emp
  
  问题二:
  
  第二次在WindowsXP上安装Oracle9i时,又碰到这样的错误,这回轻车熟路将环境变量temp和tmp的值改为c: emp,还是不行,仔细一看错误跟第一次的有点不一样,具体内容如下:
  
  "Error in writing to directory c: empOraInstall, please ensure this directory is writable and has atleast 25 MB of disk space. Installation cannot countinue."
  
  这个错误实在是和我开玩笑!文件夹可写,必须有25M的可用空间。难道我的机器这么差吗?这回怎么办?修改用户权限、改变临时文件夹路径……,该试的都试了。最后,我终于想到,是不是我笔记本的光驱读盘太差,于是映射了一个台式机的光驱,果然好了。

FreeBSD 5.0RC1下Oracle 9i安装日记(转)

idea | 07 八月, 2007 20:33

1. Linux兼容  
  其实在FreeBSD下安装Oracle9i,实质上是在Linux下安装。不过是由FreeBSD提供一个兼容环境而已。
  
  应该说FreeBSD提供的Linux环境已经足够好了,但是我们还是需要做点工作:
  
  建立/compat/linux/etc/mtab
  
  #cat /etc/fstab | grep -v '^#' | grep -v cd9660 | grep -v proc | grep -v swap | grep -v devfs > /compat/linux/etc/mtab
  
  他生成的内容是:
  
  /dev/ad0s2a / ufs rw 1 1
  
  /dev/ad1s1 /u01 ufs rw 1 1
  
  我生成的内容是:
  
  /dev/ad0s1a / ufs rw 1 1
  
  /dev/ad0s1e /tmp ufs rw 2 2
  
  /dev/ad0s1f /usr ufs rw 2 2
  
  /dev/ad0s1d /var ufs rw 2 2
  
  创建链接
  
  #ln -s /usr/bin/awk /compat/linux/bin/awk
  
  #ln -s /usr/bin/sed /compat/linux/bin/sed
  
  #ln -s /usr/bin/chown /compat/linux/bin/chown
  
  创建/compat/linux/bin/arch
  
  #cat > /compat/linux/bin/arch
  
  #!/compat/linux/bin/bash
  
  echo i686
  
  ^D
  
  然后给它执行权
  
  #chmod +x /compat/linux/bin/arch
  
  如果你愿意,给它也来个链接也是不错的
  
  #ln -s /compat/linux/bin/arch /bin/arch
  
  2. 修改KERNEL
  
  #cd /usr/src/sys/i386/conf
  
  #cp GENERIC ORACLE
  
  #cat >> ORACLE
  
  options SEMMAP=128
  
  options SEMMNI=128
  
  options SEMMNS=32000
  
  options SEMOPM=250
  
  options SEMMSL=250
  
  options SHMMAXPGS=65536
  
  options SHMMAX=1073741824
  
  options SHMMNI=4096
  
  options SHMSEG=4096
  
  options MAXDSIZ=”(1024*1024*1024)”
  
  options MAXSSIZ=”(1024*1024*1024)”
  
  options DFLDSIZ=”(1024*1024*1024)”
  
  ^D
  
  *注,好象高手们都比较喜欢纯命令行,连个VI也不舍得用。
  
  #config ORACLE
  
  #cd ../compile/ORACLE
  
  #make depend install
  
  #reboot
  
  如果你象我一样还没编译过内核,可能会出现如下提示:
  
  You must build a kernel first
  
  这时,只需要执行:
  
  就是这句:#make depend install改成:
  
  #make depend
  
  #make
  
  #make install就OK了。
  
  3. 设置Oracle的用户环境变量
  
  昨天安装时只是创建了oracle用户,对组并没有细分。现在也补上吧。应该是个好习惯。
  
  #cat >> /etc/group
  
  oraoper:*:97:oracle
  
  oradb:*:98:oracle
  
  oracle:*:99: #这句因为加oracle用户时自动加了,所以我并没有写。
  
  ^D
  
  #adduser就略过了
  
  #mkdir -p /home/oracle同上
  
  #chown -R oracle:oracle /home/oracle这句好象我当时没有执行,加上
  
  接下来是关键了
  
  #cat > /home/oracle/.profile
  
  ORACLE_HOME=/usr/opt/ora9i/product/9.2.0.1.0
  
  ORACLE_SID=ORACLE
  
  PATH=$ORACLE_HOME/bin:$PATH
  
  PS1='oracle-freebsd> '
  
  export ORACLE_HOME ORACLE_SID PATH PS1
  
  ^D
  
  如果你没有DNS,需用要在hosts文件里加上
  
  #echo “<your IP address> <hostname>” >> /etc/hosts
  
  准备好了,现在可以进行安装了。
  
  cd /usr/local/ora9i/Disk1「我把安装包解到这里了」
  
  #xhost +local:oracle #给oracle用户本地访问X的权利
  
  #su – oracle
  
  #export DISPLAY=:0
  
  #cd /usr/local/ora9i/Disk1
  
  #./runInstaller
  
  我在运行runInstaller时出现了一个错误:
  
  ELF binary type=”0” not known.
  
  ./runInstaller:1:Syntax error:”(“unexpected.
  
  经过google+测试,可以运行#kldload linux来解决『这个应该在内核编译时指定选项来搞定吧,有时间试一下。』
  
  果然可以安装了,选择Custom方式,只安装Oracle 9i Database,安装过程出现15处错误,全部ignore了。网上有很多人说他们在Linux上安装时也出现这样的错误,诸如:
  
  Error in invoking target ctx_on of make file:
  
  /usr/opt/ora9i/product/9.2.0.1.0/rdbms/lib/ins_rdbms.mk
  
  不过还好,全部安装完毕。
  
  结尾的时候运行Net Assistant出错,Agent时出错,创建数据库时出错。(是我echo i586的错误)
  
  运行sqlplus时,提示:libclntsh.so找不到
  
  果然在lib里没有它,
  
  按Brian C. Ledbetter所说需要:
  
  #LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
  
  我一开始采用的是在安装文件里「安装文件在/usr/local/ora9i」执行
  
  find . -name 'libclnt*' -print
  
  结果发现在
  
  ./Components/oracle.swd.oui/2.2.0.12.0/DataFiles/Expanded/bin/linux/libclntsh.so[.9.0]
  
  sqlplus终于可以运行了,不过还是有错误:
  
  oracle-freebsd> sqlplus /nolog
  
  ....
  
  SQL> connect / as sysdba

WIN2000域模式和WIN2003+ORA816不能自启动(转)

idea | 07 八月, 2007 20:33

适用于:WIN2000域模式WIN2003+ORA816,在安装配置完毕后,每次启动操作系统时ORA不能自动启动
  解决方法:
  1、改变ORA数据库服务的启动方式为手动,步骤如下:
  A、开始-设置-控制面板,双击“管理工具”
  B、双击“服务”
  C、在右面的服务窗口,双击 OracleServiceSID 项,如SID为SHEYGDB,则为
  OracleServiceSHEYGDB
  D、在弹出的OracleServiceSID 窗口中选常规页,选在启动类型列表中选手动,并点击确定
  2、在注册表中,将ORA数据库的自动启动设置改为FLASE ,步骤如下:
  A、启动注册表编辑器,
  B、找到 HKEY_LOCAL_MACHINESOFTWAREORACLEHOME0项,在右面的列表中找到并双击 ORA_SID_AUTOSTART项(如:ORA_SHEYGDB_AUTOSTART)将其值改为 FALSE 并确定
  C、关闭注册表编辑器
  3、建立一个扩展名为SQL的batch文件,例如名称为StartupOracleORCL.sql
  内容为:
  connect (username)/(password)
  startup PFILE=(Full path of the INIT.ORA file for the instance of Oracle database)
  
  exit
  每一行的最后用;号结束,例如我的文件内容为:
  connect internal/oracle;
  startup PFILE='d:oracleadminsheygdbpfileinit.ora';
  exit;
  4、建立一个批处理文件,文件名称为 Orastart.bat ,将其放到和StartupOracleORCL.sql 文件同一目录下,内容为:
  @echo off
  net start ( Oracle Service Name)
  set ORACLE_SID=(Oracle SID )
  svrmgrl @(在第3步中创建的startupOracleORCL.sql 文件的完整路径)
  
  exit
  
  例如我的文件内容为:
  @echo off
  
  net start OracleServiceSHEYGDB
  set ORACLE_SID=SHEYGDB
  svrmgrl @d:StartupOracleORCL.sql
  
  exit
  注意:你必须用你的数据库服务名和SID来替换 Oracle Service Name 和 Oracle SID
  5、将Orastart.bat加到启动组,在下次启动时注意ORA是否在系统启动后启动成功了。

新手上路:Oracle基础工具简介(转)

idea | 07 八月, 2007 20:33

1、应用开发(Application Development)
  
  SQL*Plus E:OracleOra81BINSQLPLUSW.EXE
  
  2、数据库管理(Database Administration)
  
  Database Configuration Assistant 数据库配置助手:创建、配置、删除数据库
  
  DBA Studio 将多个数据库工具并入一个应用程序中。DBA Studio 管理以下对象:
  
  例 程:包括启动、关闭和例程化例程。
  
  方 案:包括表、索引和 Oracle8对象。
  
  安全性:包括用户帐户、角色和权限。
  
  存 储:包括表空间、数据文件和回退段。
  
  SQLPlus Worksheet 类SQL*Plus的工具
  
  E:OracleOra81inoemapp.bat worksheet
  
  3、企业管理器(Enterprise Manager)
  
  Configuration Assistant Oracle Enterprise Manager配置辅助工具,对服务器资料档案库进行管理。
  
  Console 登录OEM管理器(Oracle Enterprise Manager)
  
  4、移植工具(Migration Utilities)
  
  Oracle Data Migration Assistant 移植Oracle7数据库,将Oracle8升级到Oracle8i
  
  5、网络管理(Network Administration)
  
  Net8 Assistant 配置网络部分(连接描述TNSNAMES.ORA、监听器LISTENER.ORA)
  
  Net8 Configuration Assistant 功能基本同上,提供基本的配置,要获得高级配置操作,或配置此工具未包括的 Net8 的其它部分的详细信息,请使用Net8 Assistant Oracle ODBC Test 连接、测试Oracle ODBC的工具。
  
  6、DOS窗口下实用程序
  
  SVRMGRL Oracle服务器管理:Oracle Server Manager
  
  E:OracleOra81BINSVRMGRL.EXE
  
  SQL*Plus DOS窗口下使用的SQL*Plus
  
  E:OracleOra81BINSQLPLUS.EXE
  
  LSNRCTL 监听器管理程序
  
  E:OracleOra81BINLSNRCTL.EXE
  
  EXP/IMP 逻辑备份、恢复工具
  
  E:OracleOra81BINEXP.EXE、E:OracleOra81BINIMP.EXE
  
  SQL*Loader 大量数据插入工具
  
  E:OracleOra81BINSQLLDR.EXE
  
  ORAPWD 修改sys或internal密码工具
  
  E:OracleOra81BINORAPWD.EXE
  
  OCOPY Oracle拷贝工具
  
  E:OracleOra81BINOCOPY.EXE

RedHat Advance Server 3上安装oracle 9.2.0(转)

idea | 07 八月, 2007 20:30

 今天花了一天的时间来装Oracle,在网上找了不少的资料,结果发现十个人有十种安装方法
  参考了其中的四种,然后自己安装了一遍,等于是综合了大家的智慧,完成了Oeacle的安装
  我把自己总结的文档发在这里,希望对大家有所帮助,绝对的原创啊
  下面所讲的安装方法可能也适用于RedHat9,有兴趣的朋友可以试一试
  
  首先,准备安装需要的软件包和补丁包:
  1.用rpm -qa│grep compat 查看系统中是否安有以下几个软件包:
  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
  nss_db-compat-2.2-20.i386.rpm
  
  2. rpm -qa │ grep openmotif查看下列软件包
  openmotif21-2.1.30-8
  
  3. rpm -qa │ grep setarch查看:
  setarch-1.3-1
  
  以上文件如果没有的话,在RHEL3的CD3和CD4上有相关的RPM包,使用:
  # rpm -i compat...i386.rpm
  命令来安装相应的包.
  
  4.从网上下载升级补丁包,用于将Oracle9.2.0升级到9.2.0.4:
  p3006854_9204_LINUX.zip
  所有的补丁说明如下:
  p3095277_9204_LINUX.zip 9.2.0.4.0的升级补丁包.
  p3006854_9204_LINUX.zip 在运行 runInstaller 之前打.
  p3119415_9204_LINUX.zip 在升级到9.2.0.4.0之后打.
  p2617419_210_GENERIC.zip 打3119415补丁所需要的补丁.
  
  第二,准备安装过程中需要的用户和用户组
  在安装的过程中我们使用两个用户同时进行,其中一个是root用户,另外一个是你新建立的oracle用户。
  
  1、打开一个终端,以root用户登录或者是:su -
  2、
  # groupadd oinstall
  # groupadd dba
  # useradd -g oinstall -G dba oracle
  # passwd oracle
  
  第三,安装准备步骤.
  1、准备文件目录:
  # mkdir -p /opt/ora9/product/9.2
  # mkdir /var/opt/oracle
  # chown oracle.dba /var/opt/oracle
  # chown -R oracle.dba /opt/ora9
  
  2、设置内核参数,调节信号灯及共享内存:
  # echo 250 32000 100 128 > /proc/sys/kernel/sem
  # echo 536870912 > /proc/sys/kernel/shmmax
  # echo 4096 > /proc/sys/kernel/shmmni
  # echo 2097152 > /proc/sys/kernel/shmall
  # echo 65536 > /proc/sys/fs/file-max
  # echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range
  
  当然为了一开机系统就能自动帮你设好这些参数,也可改动 /etc/sysctl.conf 这个文件,加入以下的语句:
  kernel.shmmax = 536870912
  kernel.shmmni = 4096
  kernel.shmall = 2097152
  kernel.sem = 250 32000 100 128
  fs.file-max = 65536
  net.ipv4.ip_local_port_range = 1024 65000
  
  3、设置oracle对文件的要求:
  编辑文件:/etc/security/limits.conf 加入以下语句:
  oracle    soft    nofile    65536
  oracle    hard    nofile   65536
  oracle    soft    nproc    16384
  oracle    hard    nproc    16384
  
  4、设置系统环境:
  首先设置root用户这个终端的。
  export ORACLE_BASE=/opt/ora9
  export ORACLE_HOME=/opt/ora9/product/9.2
  (Oracle被安装在这些位置)
  这个步骤用来最后打补丁时使用,注意这个终端要保持不要关掉它。
  
  5.设置oracle用户的环境, 新开一个终端,
  su - oracle
  注意一定要新开一个
  
  打开.bash.profile文件,将如下内容加入:
  
  #oracle 9i
  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=vt100
  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
  #
  # change this NLS settings to suit your country:
  # example:
  # german_germany.we8iso8859p15, american_america.we8iso8859p2 etc.
  #
  export LANG=en_US
  保存后退出。
  然后。退出登录,再次进入,这时候oracle的环境就已经生效了。
  
  6、解压文件,安装前打补丁,切换到root用户的控制台:
  
  第四,开始正式安装
  1、
  cd /home
  mkdir ora9i
  cd ora9i
  这些目录你可以自己定义,用来存放安装文件。
  然后将从网上下载的三个Oracle920的安装文件拷到这里:
  
  2.解gz文件
  gunzip gunzip lnx_920_disk1.cpio.gz
  gunzip lnx_920_disk2.cpio.gz
  gunzip lnx_920_disk3.cpio.gz
  
  3.释放cpio文件
  cpio -idmv < lnx_920_disk1.cpio
  cpio -idmv < lnx_920_disk2.cpio
  cpio -idmv < lnx_920_disk3.cpio
  //这个步骤将生成三个文件夹:DISK1, DISK2, DISK3
  
  2、打安装前的补丁:
  
  以root身份运行.
  这也是在/home/ora9i/里进行的。
  
  # unzip p3006854_9204_LINUX.zip
  Archive: p3006854_9204_LINUX.zip
  creating: 3006854/
  inflating: 3006854/rhel3_pre_install.sh
  inflating: 3006854/README.txt
  
  # cd 3006854
  # sh rhel3_pre_install.sh
  
  3、完成Oracle的安装:
  
  新开一个控制终端(用root用户开)
  #xhost +
  这个命令用来保证oracle用户调用X11,否则无法安装
  我看过的所有的文档里都没有提到,结果害得我在这个地方憋了两个小时才搞定
  
  #su - oracle
  在登录终端中切换到oracle用户:
  在oracle主目录里运行:/home/ora9i/Disk1/runInstaller
  
  注意的是以下几点:
  第一,在RedHat Advance Server 3下安装Oracle9i不用将gcc降级,有些文档里说需要将gcc降为2.96,其实是不需要的
  第二,在部分文档里,要求oracle用户的bash.profile文件中降LD_ASSUME_KERNEL设置为2.4.19,千万不要这样设置,否则会在Rlink时会有一大堆报错
  第三,安装Oracle不需要额外安装JDK,Oracle自己带
  第四,再安装过程中,系统会提醒你用root身份去执行两个sh文件,再root的登录终端中按提示操作就可以了
  第五,Relink阶段,会出两个错误:ins_oemagent.mk 和 ins_ctx.mk. 点 Ignore 忽略.
  第六.注意在安装过程中不要创建数据库,如果创建了也没有关系在升级之前将它给删除掉(不过装了再删是不是有点麻烦?干脆不创建数据库了)
  
  上面这几点害得我郁闷死了!!!!!!!!一定要注意啊!!!!
  
  第五,开始升级Oracle9.2.0
  1.
  安装结束后,HTTPD会自动运行.在升级之前,需要将它停下来.
  $ 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 (c) 1991, 2002, Oracle Corporation. All rights reserved.
  Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))
  The command completed successfully
  
  注意:
  如果不停的话,oracle会提示不能覆盖文件.这个时候再去将服务停下来也可以,点Retry就可以了.
  
  2.
  开始打补丁升级.
  注意打补丁时使用root用户,切换到root用户控制台:
  
  解包:
  $ unzip p3095277_9204_LINUX.zip
  Archive: p3095277_9204_LINUX.zip
  inflating: 9204_lnx32_release.cpio
  inflating: README.html
  inflating: patchnote.css
  
  $ cat 9204_lnx32_release.cpio │ cpio -i --make-directories
  
  做完这个后,再切换到oracle用户控制台, 再次运行/home/ora9i/Disk1/runInstaller升级,注意必须先选择最下面的安装选项,安装OUI
  要不然没有办法打那个最上面的升级补丁。
  
  升级完OUI后,要退出,再次运行/home/ora9i/Disk1/runInstaller
  选择第一个选项,将Oracle升级到9.2.0.4。
  这时候还是会有一个错误出现。再次选择忽略它。
  
  3、打其他的补丁:
  
  切换到root的终端。注意这个最好是原来那个保持了ORACLE_HOME, ORACLE_BASE的环境变量那个终端:
  修复ins_oemagent.mk错误.
  
  首先安装 opatch.
  
  $ unzip p2617419_210_GENERIC.zip
  Archive: p2617419_210_GENERIC.zip
  creating: OPatch/
  creating: OPatch/docs/
  inflating: Opatch/docs/FAQ
  ......
  inflating: README.txt
  $ ls
  $ pwd
  /home/or9i
  $ export PATH=$PATH:/home/or9i/OPatch:/sbin
  
  注意:
  修改PATH时,除了要包括

oracle9i在Red Hat Linux7.3上的安装(转)

idea | 07 八月, 2007 20:30

 本文将介绍Oracle Database 9i在Linux下的安装过程,如果你是有过安装Oracle8i的经验,那么以下的安装过程对你来说是小事一桩:
  硬件要求:硬盘空间:安装Oracle9i数据库至少要有2.5GB以上的剩余空间。 临时硬盘空间:Oracle安装程序在安装过程中需要400M以上的临时硬盘空间;内存:安装Oralce 9i软件至少需要512M内存(我个人安装过程中使用的是256MB内存)。
  
  1.Red Hat Linux 7.3:下载地点: http://www.puschitz.com/RedhatDownload.html
  
  2. Oracle9i:下载地点:http://otn.oracle.com/software/prod.../linuxsoft.html
  (注:1.版本号9.2.0.1
  2.解压办法:以Linux9i_Disk1.cpio.gz为例.
  gunzipt Linux9i_Disk1.cpio.gz
  cpio –idmv < Linux9i_Disk2.cpio
  解包后形成三个目录:installation files:
  Disk1 Disk2 Disk3 )
  
  3. binutils:7.3 自带有nutils-2.11.90.0.8-9,但安装的时候易出问题,建议下载binutils-2.10.0.18-1.i386.rpm下载地址:ftp://ftp.redhat.com/pub/redhat/lin...i386.rpm,以root 用户安装binutils:
  rpm -Uvh --force --nodeps binutils-2.10.0.18-1.i386.rpm oracle9i安装完成后,将其版本还原:
  rpm -Uvh --force --nodeps binutils-2.11.90.0.8-9.i386.rpm
  
  4.JDK:下载地址:http://www.blackdown.org或http://java.sun.com
  安装:bunzip2 -dc jdk118_v3-glibc-2.1.3.tar.bz2 tar xvf jdk118_v3-glibc-2.1.3.tar
  ln -s /usr/local/jdk118_v3 /usr/local/java
  注:.bz2文件可使用winRAR解压。
  
  5.配置内核参数
  oracle9i使用Linux的共享内存、交换区等资源进行工作,如果你的内核参数设置不能满足oracle的要求,那在安装oracel9i或使用过程就会频频出现问题,因此配置系统内核的参数就显得尤为重要和关键了。内核参数的配置一般在/proc文件夹下配置:
  1). 以root用户允许以下命令;
  2). 进入目录/proc/sys/kernel;用cat命令或more命令查看semaphore当前参数的值:
  cat sem
  命令运行后将会出现如下的结果:
  250 32000 32 128
  其中, 250 是参数SEMMSL的值,32000是参数SEMMNS的值, 32是参数SEMOPM的值,而128则是参数SEMMNI的值。
  4). 用以下的命令可以对上述参数进行修改
  echo SEMMSL_value SEMMNS_value SEMOPM_value SEMMNI_value > sem
  其中SEMMSL_value、SEMMNS_value、SEMOPM_value、SEMMNI_value分别用相应的值进行替换,并且这些值的顺序不能调换
  5). 设置共享内存大小,共享内存大小一般设为物理内存的一半,在这里我们假设物理内存为512M则共享内存的值4294967295以此类推,如果你的物理内存是1G则这里的值则是8589934590:
  echo 4294967295 > shmmax
  
  6 添加用户:Oracle在安装和使用中需要用特定用户(非root用户),按照oracle的标准说明是需要添加三个专门用户和用户组,为了简便大家的安装和使用我们把oracle的安装和使用归到一个特定用户来完成。
  首先创建oracle安装组及用户组,我们架设两个用户组命名为oinstall、dba:以root用户登陆系统: 1)groupadd oinstall 2) groupadd dba
  添加oracle用户:1)useradd oracle –g oinstall –G dba 2) password oracle
  
  7.创建安装目录:以 root用户进行:
  mkdir /opt/oracle
  mkdir /opt/oracle/product
  mkdir /opt/oracle/product/9.0.1
  chown -R oracle.oinstall /opt/oracle
  mkdir /var/opt/oracle
  chown oracle.dba /var/opt/oracle
  chmod 755 /var/opt/oracle
  
  8.设置Oracle环境:以oracle用户进行: vi /home/oracle/.bash_profile
  export ORACLE_BASE=/opt/oracle
  export ORACLE_HOME=/opt/oracle/product/9.0.1
  export ORACLE_SID=sah
  export ORACLE_TERM=xterm
  export NLS_LANG=AMERICAN;
  export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
  export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
  export PATH=$PATH:$ORACLE_HOME/bin;
  CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
  
  9 开始安装
  1) cd /backup/Disk1 2) ./runInstaller
  安装中出现问题的解决:一般依照错误提示进行即可,如果是因为binutils的问题,那么一定是binutils的版本不对,建议安装好binutils后再进行oracle9i安装。oracle9i在安装数据库过程中,要求输入sys及system用户的密码,你可随意设定自己的密码了。
  10.启动数据库:
  注意:svrmgrl 在9i中已经不支持,换作dgmgrl
  1) $dgmgrl 2)connect sys/xxxx as sysdba 3)startup
  (注:9i的提示和8i有所不同,仅两行,这里就不列出了)
  至此,oracle9i安装完毕!
  
  Redhat7.3中Oracle9.2.0的第二次启动失败,字符集加载出问题了,请指教,急。
  安装比较顺利。数据库的第一次启动是创建数据库时自动启动的。
  当顺利以normal方式shutdown数据库后(用Enterprise management console中的Instance管理界面),满怀信心的进行第二次启动,数据库在顺利startup后,却在mount过程中报错:
  ORA-12709 error while loading create database character set
  我查了oracle9i系统文档,有关描述为:
  Cause: This is an internal error.
  Action: Contact Oracle Support Services.
  而我在前一段时间安装oracle9.0.1(Redhat7.2)时也是同样的问题,不知道是否是oracle的一个bug还是我的环境变量设置有问题。下面是我的.cshrc文件描述:
  umask 022
  setenv ORACLE_BASE /home/oracle
  setenv ORACLE_HOME $ORACLE_BASE/release/9.2.0
  setenv ORACLE_SID optim
  setenv ORACLE_TERM xterm
  setenv TNS_ADMIN $ORACLE_BASE/config/9.2.0
  setenv NLS_LANG AMERICAN_AMERICA.ZHS16GBK
  setenv ORA_NLS33 /home/oracle/release/9.2.0/ocommon/nls/admin/data
  setenv LD_LIBRARY_PATH $ORACLE_HOME/lib
  setenv PATH /bin:/usr/dt/bin:/usr/local/java/bin:/usr/ccs/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:$ORACLE_HOME/bin:$PATH
  setenv ORACLE_PATH $PATH
  setenv CLASSPATH $ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/jre/1.1.8/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
  setenv TMPDIR /tmp
  
  我创建数据库时确实指明了字符集是ZHS16GBK,并且数据库自动启动后,我在服务器端与客户端都顺利用sqlplus登陆数据库,中文显示没有问题。
  
  请高手指点在下,不胜感激。
  下载i386-glibc-2.1-linux.tar.gz包并在根目录下解压,隐藏原有的gcc,ar,ld,将glibc中的相应文件连接到/usr/bin下:
  #cd /
  #tar zxvf i386-glibc-2.1-linux.tar.gz
  #cd /usr/bin
  #mkdir saved
  #mv gcc ld ar saved
  #ln -s /usr/i386-glibc-2.1-linux/i386-glibc21-linux/bin/gcc gcc
  #ln -s /usr/i386-glibc-2.1-linux/i386-glibc21-linux/bin/ld ld
  #ln -s /usr/i386-glibc-2.1-linux/i386-glibc21-linux/bin/ar ar

在Redhat 9上安装 Oracle 817心(转)

idea | 07 八月, 2007 20:30

 关于 Oracle 安装的讨论已经有很多了,可是在实践中你还是总会遇到某些麻烦,因此我就留下我的两分钱吧。本文讨论的环境基于 Redhat Linux 9.0.93,
  
  Oracle 的版本号为 8.1.7.0.1。
  
  下载软件
  假设你已经有了一台跑着 Redhat 的机器,并且它满足 Oracle 8i 对硬件的相关要求,并且具有网络连接,下面就下载其他所需的软件。首先在 OTN 下载 linux
  
  81701.tar 和 glibc-2.1.3-stubs.tar.gz,另外还需要:i386-glibc-2.1-linux.tar.gz
  (Redhat 自带的是 binutils-2.13.90.0.18-9.i386.rpm,用于恢复
  
  因为 Oracle 自带了 JRE 1.1.8,所以不用单独安装,假设以上所述软件都放在 /tmp 目录。
  
  (注:还需要从Java官方网站下载JDK 1.4.2用以恢复,我安装的Redhat9没有发现JDK 1.4.2,下载位置:http://java.sun
  
  .com/j2se/1.4.2/download.html)
  
  安装glibc、JDK、和 binutils
  su
  cd /
  tar zxvf /tmp/i386-glibc-2.1-linux.tar.gz
  
  cd /usr/bin
  mkdir saved
  mv gcc cc ld saved
  ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-gcc gcc
  ln -s gcc cc
  ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-ld ld
  (注:安装oracle过程中发现/usr/bin/ld变为非链接,需要重新设置,否则会出现连接出错!)
  
  cd /usr/lib
  mkdir saved
  mv libc.so libdl.so libm.so libpthread.so saved
  mv libc.a libdl.a libm.a libpthread.a saved
  
  (注:没有安装过java的话就没有这个目录,需要先mkdir /usr/java)
  cd /usr/java
  tar jxvf /tmp/jdk118_v3-glibc-2.1.3.tar.bz2
  ln -s /usr/java/jdk118_v3 /usr/local/java
  (注:原来是ln -s jdk118_v3 /usr/local/java,后来发现链接不正确)
  
  (注:安装前先转到软件放置目录cd /tmp)
  rpm -Uvh --force --nodeps binutils-2.10.91.0.2-3.i386.rpm
  (注:执行这一命令后/usr/bin/ld变为非链接,需要重新设置,否则会出现连接出错!)
  
  创建用户和组
  groupadd oinstall
  groupadd dba
  groupadd oper(注:此组还象没有用到,可以去掉,下面的useradd也要相应的去掉)
  useradd -d /oracle -g oinstall -G dba,oper oracle(注:此处为给oracle用户设定/oracle目录,默认是/home/oracle)
  passwd oracle
  chown -R oracle.dba /oracle
  chmod 750 /oracle
  
  准备安装
  vi /oracle/.bash_profile(注:由于前面给oracle设置/oracle目录,默认是/home/oracle/.bash_profile)
  
  修改为如下内容:
  (注:内容开始,可以在非Linux环境修改这个文件,不过该文件中换行只能是0A,要去掉所有的0D)
  # .bash_profile
  
  # Get the aliases and functions
  if [ -f ~/.bashrc ]; then
  . ~/.bashrc
  fi
  
  # User specific environment and startup programs
  unset USERNAME
  umask 022
  export EDITOR=vi
  export TERM=xterm
  export TMPDIR=/tmp
  
  # Setup installation environment
  export ORACLE_SID=orcl
  export ORACLE_BASE=/oracle
  export ORACLE_HOME=$ORACLE_BASE/product/8.1.7
  export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/i386-glibc-2.1-linux/i386-glibc-linux/lib:/lib:/usr/lib:/lib:/usr/local/lib(注:恢复时这一行要删i
  
  386-glibc-2.1的路径)
  export SHLIB_PATH=$ORACLE_HOME/lib:/usr/lib:/lib:/usr/local/lib
  export LIBPATH=$ORACLE_HOME/lib:/usr/lib:/lib:/usr/local/lib
  export TNS_ADMIN=$ORACLE_HOME/network/admin
  export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
  export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
  export ORACLE_OWNER=oracle
  export ORACLE_TERM=xterm
  export GCC_EXEC_PREFIX=/usr/i386-glibc21-linux/lib/gcc-lib/
  export LD_ASSUME_KERNEL=2.4
  export JAVA_HOME=/usr/local/java
  export CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip:$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib:.
  (注:内容结束,注意export的内容在同一行上,CLASSPATH后面的classesxxx.zip建议自己去查一下,我这里xxx是111,路径用冒号分隔而不是分号)
  
  su oracle
  . .bash_profile
  export LANG=en
  cd /tmp
  tar xvf linux81701.tar
  
  其中 export LANG=en 是为了防止界面黑做一团。
  
  (注:此时最好去检查一下/usr/bin/ld的链接是否正确:ls -l /usr/bin/ld,应该链接到/usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-ld才对,否则重
  
  复前面的做法,先rm /usr/bin/ld,再ln。另外建议对前面设定的各个链接都检查一下:/usr/bin/gcc,/usr/bin/cc,/usr/local/java,深红色的表示链接不正确)
  
  开始安装
  ./Disk1/runInstaller
  
  点击 Next;在 UNIX Group Name 里输入 oinstall;出现一个提示框要求执行 orainstRoot.sh,这时另外打开一个终端:
  
  su
  cd $ORACLE_HOME
  ./orainstRoot.sh
  
  回到 GUI,按 Retry;选择安装 Enterprise Edition;选择典型安装;选择使用一个已经存在的 repository;选择 JDK 的位置(注:应是/usr/local/java);问
  
  是否要新建一个数据库,不用;继续,等待一段时间;出现一个提示框要求执行 root.sh;回到终端:
  (注:建议选择自定义安装,这样可以添加支持的语言,比如简体中文等,连接过程如果出错的话请按后面的“处理错误”执行,我没有碰到错误)
  
  vi root.sh
  
  按下列要求修改:第98行,把 SED=/usr/local/bin/sed 改为 SED=/bin/sed;第102行,把 RMF=/bin/rm –f 改为 RMF="/bin/rm -f";第156行,把 RUID=`/usr
  
  /bin/id|$AWK -F( '{print $2}'|$AWK -F) '{print $1}` 改为 RUID=`/usr/bin/id|$AWK -F( '{print $2}'|$AWK -F) '{print $1}'`。
  
  ./root.sh
  
  回一次车;回到 GUI,按 OK。
  
  处理错误
  (注:出错的可能性是/usr/bin/ld的链接被更改,记住在安装binutils-2.10.91.0.2-3.i386.rpm之后要去更改)
  出现一个提示框,说 Error in invoking target relink of makefile /oracle/product/8.1.7/precomp/lib/ins_precomp.mk 或者 Error in invoking target
  
  relink of makefile /oracle/product/8.1.7/rdbms/lib/ins_rdbms.mk,回到终端:
  
  exit
  cd $ORACLE_HOME
  tar zxvf /tmp/glibc-2.1.3-stubs.tar.gz
  ./setup_stubs.sh
  
  链接工作完成后,回到 GUI,按 Retry;等待,直到安装完成;完成后自动启动的 Net8 配置向导没有反应,kill 之。
  
  恢复其他软件
  su
  rpm -e --nodeps bintutils-2.10.91.0.2-3
  rpm -ivh /mnt/cdrom/Redhat/RPMS/binutils-2.13.90.0.18-9.i386.rpm(注:如果是下载的,位置可能不一样)
  cd /usr/local
  rm java
  
  (注:补充开始)
  安装JAVA
  1、#cp j2sdk-1_4_2_05-linux-i586-rpm.bin 到/usr/local
  2、#chmod 755 j2sdk-1_4_2_05-linux-i586-rpm.bin
  3、#./j2sdk-1_4_2_05-linux-i586-rpm.bin (解出j2sdk-1_4_2_05-linux-i586.rpm)
  4、#rpm -ivh j2sdk-1_4_2_05-linux-i586.rpm
  rpm安装很方便,不用保佑了。
  (注:补充结束)
  
  ln -s /usr/java/j2sdk1.4.2_05 java
  (注:原来是j2sdk1.4.2_01,我现在从网下载到的是j2sdk1.4.2_05,建议安装完后自己去检查一下。我用的是“ln -s /usr/java/j2sdk1.4.2_05 /usr/local/
  
  java”,担心又出来链接不对的情况)
  cd /usr/bin
  rm gcc cc ld
  mv ./saved/* .
  rmdir saved
  cd /usr/lib
  mv ./saved/* .
  rmdir saved
  
  然后把 oracle 用户环境变量 LD_LIBRARY_PATH 中的 glibc 的部分删去。
  
  创建数据库
  exit
  cd $ORACLE_HOME/bin
  unset LANG
  unset NLS_LANG
  ./dbassist
  
  选择创建数据库;定制;多用途;下一步;共享服务器模式;去掉所有选项(创建 JServer 的时间巨长);设置全局数据库名和 SID,假设全局数据库名为 testdb
  
  ,SID 为 orcl;更改字符集:字符集为 UTF8、国家字符集为 ZHS16GBK;六次下一步;完成。
  
  配置 Net8
  ./netca
  
  使用 netca 是因为 netasst 总是没有反应,让我们鄙视它吧。选择监听程序配置;添加;监听程序名使用默认的 LISTENER;三次下一步。
  
  上面步骤即是对 $ORACLE_HOME/network/admin/listener.ora 的编辑:
  
  # copyright (c) 1997 by the Oracle Corporation
  #
  LISTENER =
  (ADDRESS_LIST=
  (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
  (ADDRESS=(PROTOCOL=ipc)(KEY=EXTPRO

如何彻底删除一个数据库?(转)

idea | 07 八月, 2007 20:30

方法一:  可以完整的删除Oracle products, Oracle services和注册表信息
  
  当然是很少情况下才想到删除oracle,只有确定真的不用的时候才做。
  如果需要请备份所有相关的文件。
  (下面操作假设是使用OFA结构)
  NT环境下:
  1、以NT的Administrator 登陆
  2、通过控制面版-〉服务,停掉所有ORACLE服务
  3、打开注册表(REGEDIT命令),删除
  HKEY_LOCAL_MACHINESOFTWAREORACLE
  4、打开注册表中的 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices
  
  删除以ORACLE开头的所有服务
  5、删除HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventLogA
  pplication下
  以ORACLE开头的所有服务
  6、关闭REGEDIT
  7、打开控制面版-〉系统-〉环境变量
  8、如果ORACLE安装了JRE,就删除%ORACLE_HOME%BIN和JRE路径。
  比如 ORACLEORA81BIN;G: Program FilesOraclejre1.1.7in
  9、删除WinntProfilesAll UsersStart MenuProgramsOracle 和
  WinntProfilesAll UsersStart MenuProgramsOracle
  10、删除Program FilesOracle
  11、重新启动机器
  12、删除所有ORACLE目录(在注册表HKEY_LOCAL_MACHINESOFTWAREORACLEORA
  CLE_HOMES下)
  
  在 Windows 95 / Windows 98:
  1. 打开注册表HKEY_LOCAL_MACHINESOFTWAREORACLE.
  2.删除前面步骤中的第3步中的ORACLE
  3. 删除AUTOEXEC.BAT 中的 %ORACLE_HOME%in 和 JRE
  4. 删除所有ORACLE目录
  5. Program FilesOracle
  6. WindowsStart MenuProgramsOracle -
  WindowsStartMenuProgramsOracle
  7. 重新启动
  
  方法二:
  删除Oracle 1
  软件环境: 1、Windows 2000+ORACLE 8.1.7
  2、ORACLE安装路径为:C:ORACLE
  实现方法:
  1、 开始->设置->控制面板->管理工具->服务,停止所有Oracle服务。
  2、 开始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer,卸装所有Oracle产品,但Universal Installer本身不能被删除
  5、 运行regedit,选择HKEY_LOCAL_MACHINESOFTWAREORACLE,按del键删除这个入口。
  6、 运行regedit,选择HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices,滚动这个列表,删除所有Oracle入口。
  7、 运行regedit, HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication,删除所有Oracle入口。
  8、 开始->设置->控制面板->系统->高级->环境变量 删除环境变量CLASSPATH和PATH中有关Oracle的设定
  9、 从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标
  10、删除Program FilesOracle目录
  11、重新启动计算机,重起后才能完全删除Oracle所在目录
  12、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:Oracle,删除这个入口目录及所有子目录,并从Windows 2000目录(一般为C:WINNT)下删除以下文件ORACLE.ini、oradim73.ini、oradim80.ini、oraodbc.ini等等。
  13、WIN.INI文件中若有[ORACLE]的标记段,删除该段
  14、如有必要,删除所有Oracle相关的ODBC的DSN
  15、到事件查看器中,删除Oracle相关的日志
  说明:
  如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装,
  安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了。
  删除Oracle 2
  如果需要卸载Oracle,请运行安装光盘上的安装文件Setup.exe,在“欢迎”窗口中,选择“卸装产品”按钮,进入“Invertory 目录”窗口: 在该窗口中选择需要删除的产品(在产品名称前面的方框内打上在标记√),然后单击“删除”按钮即可;或者直接在开始菜单中找到Oracle for NT程序组下的Oracle installer,同样可以卸载Oracle。
  卸载Oracle产品后,在系统的注册表内仍然有相关信息,您可以参考以下方法进行手工删除。
  注意:对注册表的操作可能对系统产生严重影响,请在操作前进行备份,以便在系统异常时恢复到原来的注册表。该操作请参考Windows系统的相关说明。
  运行RegEdit,在“HKEY_CURRENT_USERSoftware”、“HKEY_LOCAL_MACHINESoftware”、“HKEY_LOCAL_MACHINESystemCurrentControlSetServices”主键中删除所有的Oracle入口(如果找到的话),然后重新启动计算机,如一切正常,则修改完成,如启动有错误,可能您对注册表的修改出错,运行RegEdit,将备份的注册表项目导入;如果误删了注册表中的“Microsoft ODBC for Oracle”,可用以下方法恢复:
  将“HKEY_LOCAL_MACHINEsoftwareMicrosoftDataAccess”中的Version的值由‘2.1.1a’改为‘1.1.1a’然后重新安装财务软件,安装程序会自动安装 MADC,并恢复“Microsoft ODBC for Oracle”。 (对Windows95/98,请立即进入Dos方式,将备份的system.dat文件(如system.bak)复制回system.dat);
  (对Windows NT,如启动失败,请重新启动计算机,在提示下,按空格键启动“硬件配置文件/已知的最新正确配置”菜单,该菜单将注册表还原到稳定状态。按照屏幕上的指示操作,可以将注册表还原为上次成功启动时的状态。)

破解Oracle一般用户的口令(转)

idea | 07 八月, 2007 20:30


  我现在用一个系统(GeoMedia),他有一个自建的用户(GDOSYS),谁能告诉我怎么知道这个用户的口令呢.
  
  从以上对话中得知,估计程序里面有了用户名和密码的语句,你可以通过这招修改密码,然后修改数据,在把密码改回去
  
  --FROM WWW.ORADB.NET贴来的
  如何取出某一用户的密码,再原封不动的改回去?
  
  软件环境:
  1、Windows NT4.0+ORACLE 8.0.4
  2、ORACLE安装路径为:C:ORANT
  
  实现方法:
  SQL> conn system/manager
  
  SQL> select password from dba_users where username='USER1';(用户名一定要用大写)
  
  结果:1F8E5A929B6861AC(这就是此用户的密码)
  
  SQL> alter user USER1 identified by aaa;(改变此用户的密码为aaa)
  
  SQL> conn user1/aaa(连接到用户上,???)
  
  SQL> 执行你想要的操作...
  
  SQL> conn system/manager
  
  SQL> alter user USER1 identified by values '1F8E5A929B6861AC';(改回原有密码)

Valid XHTML 1.0 Strict and CSS.
Powered by pLog
Design by Book of Styles