Linux系统环境下安装Oracle 10g的困难

 更新时间:2016年9月20日 19:02  点击:1587

在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 ,依照提示完成整个安装。

昨天公司要写一个多组的投票系统,要求前台在未把内容提交给服务器脚本之前要进行判断,所以就出来这个问题哦.下面我们就来js判断单选框[radio]是否_选中的代码吧.

<form action="post.php" method="post"  name="add" enctype="multipart/form-data" onSubmit="return check();" >
<h1>1、ssss?</h1>
<input name="v1" type="radio" value="300年">300年            
<input name="v1" type="radio" value="400年">400年              
<input name="v1" type="radio" value="1000年">1000年

</form>

上面是个简单的radio单选组,我们来看看js是怎么判断的吧.

<script>

var radio1=document.getElementsByName("v1");
   for(var i=0;i<radio1.length;i++)
   {
         if(radio1.item(i).checked==true)
             {
     flag1=1;
                  break;

       }
   }

!flag1?return alert('未选');

</script>

哈哈不写完了,是不是很简单啊,申明一下,:本站原创文章转载请注明:  www.111cn.net 

 

初学者对于设计模式肯定存在着很多不明白之处,今天刚好周末,就抽出来点时间写了一个单件模式结合命令链模式打造系统核心的文章,可能对于部分人来说,文章内容过于浅显,这是送给初学者的教程,因为时间比较紧(要陪老婆逛街,呵呵),其中出现了设计不规范的,代码书写不规范的,bug等等还望各路大侠指出来,方便大家共同进步.本人水平有限.^_^

相信大家都已经读过很多关于在php中应用设计模式的书籍或是文章,但是很少有直接给予实例,大部分看完之后有种迷迷糊糊的感觉,如果没有项目实践,很难将设计模式部分弄清楚.

为避免代码过于复杂.没有添加异常处理等内容.
单件模式以及命令链模式的基础知识,大家自己google一下.不详细讲了.下面直接看实例:

<?php
/*
*@author:NoAngels
*@time:08年08月30日
*/
interface IRunAction{
//获取类中定义的可以被APP中run的方法
static function LoadActions();
//类中的入口函数调用该类中其他函数用
function runAction($action, $args);
}
/*
*APP类系统的核心部分
*/
class APP{
static private $__instance = null;
static private $__commands = array();
static private $__flag = 1;
private function __construct(){}
//单件模式设计获取该类的唯一实例
static function Load(){
if(self::$__instance == null) self::$__instance = new APP;
return self::$__instance;
}
//添加命名到APP的$__instance中每次添加新命令的时候检查是否之前已经添加过一个该类的实例
//如果有就忽略操作如果没有就添加进来
public function addCommand($cmdName){
foreach(self::$__commands as $cmd){
if(strtolower(get_class($cmd)) == strtolower(get_class($cmdName))){
self::$__flag = 0;
break;
}
}
if(self::$__flag == 1) self::$__commands[] = $cmdName;
self::$__flag = 1;
}
//命令链模式设计的核心部分调用实例的入口函数
//首先检查是否在类中允许调用该操作如果没有就提示未定义操作退出
public function runCommand($action, $args){
self::$__flag = 0;
foreach(self::$__commands as $cmd){
if(in_array($action, $cmd->LoadActions())){
self::$__flag = 1;
$cmd->runAction($action, $args);
}
}
if(self::$__flag == 0){
self::$__flag = 1;
exit("undefined action by action : $action");
}
}
//删除某个类的实例,只要指定类的名字即可
public function removeCommand($className){
foreach(self::$__commands as $key=>$cmd){
if(strtolower(get_class($cmd)) == strtolower($className)){
unset(self::$__commands[$key]);
}
}
}
//供大家测试用看看是否添加以及删除成功
public function viewCommands(){
echo(count(self::$__commands));
}
}
//类User实现接口IRunAction
class User implements IRunAction{
//定义可以调用的操作
static private $__actions = array('addUser', 'modifyUser', 'removeUser');
//获取可以调用的操作,实际过程中不要直接就爱你个$__actions设计成public调用
//而应该设计一个LoadActions函数获取$__actions的值
static public function LoadActions(){
return self::$__actions;
}
//运行指定函数
public function runAction($action, $args){
//不明白这个函数使用的可以参看手册
call_user_func(array($this,$action), $args);
}
//测试函数而已
protected function addUser($name){
echo($name);
}
}
//类Test同类User
class Test implements IRunAction{
static private $__actions = array('addTest', 'modifyTest', 'removeTest');
static public function LoadActions(){
return self::$__actions;
}
public function runAction($action, $args){
call_user_func(array($this,$action), $args);
}
protected function addTest($name){
echo($name);
}
}
//以下是测试代码
APP::Load()->addCommand(new User);
APP::Load()->addCommand(new User);
APP::Load()->addCommand(new User);
APP::Load()->addCommand(new User);
APP::Load()->runCommand('addUser', 'NoAngels');
APP::Load()->addCommand(new Test);
APP::Load()->runCommand('addTest', null);

APP类用单件模式设计,它是系统的核心部分.相信大家看代码就知道了Load方法是载入APP类实例,相当于有些书籍中的getInstance静态方法.他有addCommand,runCommand,removeCommand三个public方法.runCommand是核心部分.同时也是命令链模式的核心启动程序.具体实现请看源代码.代码写的已经很清楚了,就此不再赘述.
类User,Test实现了接口IRunAction,这两个类中都定义了一个静态私有变量$__actions,为一数组,其中包含了可以被APP的runCommand函数调用的操作.

下面是系统的运行流程:

APP启动
-------addCommand,将将要运行的操作所属的类添加到APP中.如果添加的类是用单件模式设计的.可以如下添加addCommand(SingletonClass::Load()).否则可以如下调

addCommand(new someClass)
-------runCommand.运行操作.比如在User类中有一操作addUser.我直接可以启用runCommand($acttion, $args).在APP中循环遍历$__commands数组,如果其中某个类的实例拥有该操作,就调用该实例的runAction函数.如果你没有将某个类的实例利用addCommand添加进来,就提示未定义操作,退出.
在类User和类Test中的runAction调用了call_user_func这个非常使用的函数.调用该类中对应函数.

提示:讲解与实例部分就到此了,具体你怎么理解,以及如何将该思想利用,就看你自己的理解,凡事必须自己动手才行.(ps:可以做成框架中的单一入口文件,实不实现MVC就看你自己是怎么想的了.)

我们通常会通过单击按钮的操作,将定义好的内容直接复制到剪贴板

对于用户来说点了按钮直接【Ctrl】+【V】就可以了。

其实该功能的核心原理就是用到了window子对象clipboardData的一个方法:setData()

其语法是:clipboardData.setData(sDataFormat, sData)

参数sDataFormat表示要复制的内容的格式;参数sData则要复制的内容。
返回值:复制成功返回true;失败返回false。

比如:

clipboardData.setData("text","www.czz5.com")
<a href="#" onclick=javascript:clipboardData.setData("text","www.czz5.com")>
单击当前链接文本表示复制了内容到本地剪贴板,只需在【Ctrl】+【V】就能显示出定义的内容
</a>

以上是定义了固定的值复制到本地剪贴板,可用在诸如“将本页转阅给朋友”类似的功能需求中,以达到快捷转达网址或信息的目的。

此外,我们还会遇到这样的一些情况:当我们在某网站复制了一段内容之后,在粘贴下来时,发现不自觉的多了一行信息,该信息即是由内容复制到剪贴板同时增加的一行信息。

也就是说我们写入到剪贴板中的值除了拷贝的选择内容外,还有自己定义的值,那么如何获得“拷贝的选择内容”,这就需要使用到 document.selection.createRange() 方法,其中该方法配合 execCommand,在 HTML 编辑器中很有用,比如:文字加粗、斜体、复制、粘贴、创建超链接等。

<textarea cols=40 rows=10>
www.czz5.com 中国站长网
www.tangshanseo.cn 唐山SEO
www.xiaoduzi.com 健康减肥网
</textarea> <br>
<input type=button value="先选择文本框文本再单击本按钮" onclick=alert(document.selection.createRange().text)>
</form>

所以,应用了document.selection.createRange().text就能重新定义剪贴板中的值了。

选择复制本段文本,然后粘贴到文本编辑器中查看是不是多了一些附加信息。

<script type="text/javascript">
document.body.oncopy=function(){
 event.returnValue=false;
 var t=document.selection.createRange().text;
 var s="有关单击按钮将内容复制到剪贴板的原文内容地址: "+location.href;
 clipboardData.setData('Text',t+'rnrn'+s+'rn');
}
</script>

js控制显示与隐藏代码,很简单我们就用到style.display 的显示与隐藏 block,none下面我们来看个实例.
<script>
function show(obj) {
 document.getElementById(obj).style.display = "block"
}
function hide(obj) {
 document.getElementById(obj).style.display = "none"
}
</script>

<h3><span>内容</span><a href="javascript:void(0);" onmouseover="show('count');" onmouseout="hide('count')">指上看看</a></h3>

 <div id="count" style="display:none;">
     <h4>退款说明</h4>
        <p>特惠套餐退款金额 = (套餐费用 - 域名费用) × (申请天数 - 已使用天数) / 申请天数</p>
        <p>虚拟主机退款金额 = 虚拟主机费用 × (申请天数 - 已使用天数) / 申请天数</p>
</div>

[!--infotagslink--]

相关文章

  • PHP7快速编译安装的步骤

    编译安装非常的简单了我们现在的php版本已经到了php7了,下文小编来为各位介绍一篇关于PHP7快速编译安装的步骤,希望文章能够帮助到各位。 一、安装必要一些依赖 yum...2016-11-25
  • Rstudio中安装package出现的问题及解决

    这篇文章主要介绍了Rstudio中安装package出现的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • PHP编译安装后PHP-FPM使用笔记

    PHP-FPM我们相信各位用高版本的php经常使用到了,下面整理了一些关于PHP-FPM的笔记,有兴趣的可进来看看。 今天赶上了123System OPenVZ VPS全场半价的机会,购入了一...2016-11-25
  • Oracle使用like查询时对下划线的处理方法

    这篇文章主要介绍了Oracle使用like查询时对下划线的处理方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-16
  • python实现学生通讯录管理系统

    这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24
  • Linux安装Pytorch1.8GPU(CUDA11.1)的实现

    这篇文章主要介绍了Linux安装Pytorch1.8GPU(CUDA11.1)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-25
  • vscode安装git及项目开发过程

    这篇文章主要介绍了vscode安装git及项目开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-19
  • Visual Studio 2015下载和安装图文教程

    这篇文章主要为大家详细介绍了Visual Studio 2015下载和安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • Node调试工具JSHint的安装及配置教程

    现在我们介绍一种在Node下检查简单错误的JS代码验证工具JSHint。  JSHint的具体介绍参考http://www.jshint.com/about/,说直白点儿,JSHint就是一个检查JS代码规范与否的工具,它可以用来检查任何(包括server端和client端...2014-05-31
  • Centos中彻底删除Mysql(rpm、yum安装的情况)

    我用的centos6,mysql让我整出了各种问题,我想重装一个全新的mysql,yum remove mysql-server mysql之后再install并不能得到一个干净的mysql,原来的/etc/my.cnf依然没变,datadir里面的数据已没有任何变化,手动删除/etc/my.cn...2015-03-15
  • Ubuntu20.04安装cuda10.1的步骤(图文教程)

    这篇文章主要介绍了Ubuntu20.04安装cuda10.1的步骤(图文教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-30
  • 在PyCharm中安装PaddlePaddle的方法

    这篇文章主要介绍了在PyCharm中安装PaddlePaddle的方法,本文给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-05
  • Postman安装与使用详细教程 附postman离线安装包

    这篇文章主要介绍了Postman安装与使用详细教程 附postman离线安装包,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-05
  • linux服务器快速卸载安装node环境(简单上手)

    这篇文章主要介绍了linux服务器快速卸载安装node环境(简单上手),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
  • 详解为什么现代系统需要一个新的编程模型

    如今高要求的分布式系统的建造者遇到了不能完全由传统的面向对象编程(OOP)模型解决的挑战,但这可以从Actor模型中获益。...2021-05-20
  • Java连接数据库oracle中文乱码解决方案

    这篇文章主要介绍了Java连接数据库oracle中文乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-16
  • vs2019安装和使用详细图文教程

    这篇文章主要介绍了vs2019安装和使用详细图文教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • uni-app从安装到卸载的入门教程

    这篇文章主要介绍了uni-app从安装到卸载的入门教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-15
  • 护卫神 主机管理系统使用说明(MSSQL管理)

    护卫神·主机管理系统该版本支持在Windows Server 200320082012,含32位和64位,直接开设配置WEB站、FTP站,以及SQL Server和MySQL,是您开设和管理虚拟主机的绝好帮手。但是对于新用户可能在使用上有一些困难,因此请仔细阅读如下说明文档...2016-01-27