Linux启动时,会运行一个init程序,然后由init来启动后面的任务,包括多用户环境(inittab中设定)和网络等。运行级就是当前程 序运行的功能级别,这个级别从1到6,具有不同的功能。这些级别在/etc/inittab中指定,该文件就是init程序寻找的主要文件。最先运行的服 务放在/etc/rc.d目录下。
文件以S开头,代表start(启动),后面的数字是启动顺序;文件以K开头,代表kill(结束),同样,后面的数字代表结束顺序。
例如/etc/rc2.d/S10network代表它与运行级别2有关,10就是他的启动顺序。
目录介绍:
init.d
这个目录中存放了一些服务启动脚本,系统安装时的多个rpm包,这些脚本在执行时可以用来启动,停止和重启这些服务。
rcx.d(x为0~6)
这个目录是启动级别的执行程序链接目录,里面的文件都是指向init.d目录中文件的一些软连接。
配置步骤:
1、修改dbstart和dbshut脚本:dbstart和dbshut两个shell脚本,在oracle11g下,我们需要手动修改一下这两 个个脚本,将ORACLE_HOME_LISTNER=$1这行修改为:ORACLE_HOME_LISTNER=$ORACLE_HOME,保存退出
2、修改/etc/oratab:
orcl:$ORACLE_HOME:N修改为orcl:$ORACLE_HOME:Y
将N修改为Y,表示可以在操作系统启动阶段运行oracle数据库
3、vi /etc/rc.d/init.d/oracle,编辑如下信息:
#! /bin/bash # chkconfig: 234 61 61 # description: Oracle 11g AutoRun Service # /etc/rc.d/init.d/oracle case "$1" in start) # starts oracle listener and instance echo "Starting Oracle Database:" su oracle -lc "lsnrctl start" su oracle -lc dbstart ;; stop) # shutdown oracle listner and instance echo "Shuting down Oracle Database:" su oracle -lc "lsnrctl stop" su oracle -lc dbshut ;; reload|restart) $0 stop $0 start ;; *) echo "Usage: {start|stop|reload|restart}" exit 1 esac exit 0
4、检查一下脚本能否正确执行:
##chown -R oracle:oinstall oracle 我觉得最好设置一下用户权限
cd /etc/rc.d/init.d
./oracle start
./oracle stop
5、执行如下命令:
连接 ln -s /etc/init.d/oracle /etc/rc1.d/K61oracle ln -s /etc/init.d/oracle /etc/rc3.d/S61oracle 执行下列命令添加到Linux服务中: chkconfig --add oracle chkconfig --level 345 oracle on chkconfig --list oracle 重新启动服务器。
关于chkconfig,执行chkconfig时,需要在脚本中添加至少两行注释行,第一行告诉chkconfig该服务的运行级别;第二行添加关于服务的一些说明
##########################################################
我参考了这篇文章
http://biancheng.dnbcw.info/oracle/362379.html
首先安装CentOS6.0
===========
就不用说了。安装即可。唯一需要注意的就是后面Oracle 11G Installation guide中的Checking the Software Requirements部分,会要求安装一部分软件
这些软件在CentOS6 DVD镜像里都有。可以自己配置个DVD镜像的repos。
检查命令格式如下: rpm -qa | grep 名字 binutils-2.17.50.0.6 ok compat-libstdc++-33-3.2.3 ok elfutils-libelf-0.125 ok elfutils-libelf-devel-0.125 -- elfutils-libelf-devel-static-0.125 -- gcc-4.1.2 ok gcc-c++-4.1.2 ok glibc-2.5-24 ok glibc-common-2.5 ok glibc-devel-2.5 ok glibc-headers-2.5 ok kernel-headers-2.6.18 ok ksh-20060214 ok libaio-0.3.106 ok libaio-devel-0.3.106 -- libgcc-4.1.2 ok libgomp-4.1.2 ok libstdc++-4.1.2 ok libstdc++-devel-4.1.2 ok make-3.81 ok numactl-devel-0.9.8.i386 -- sysstat-7.0.2 -- unixODBC-2.2.11 -- unixODBC-devel-2.2.11 -- 从 CentOS-5.5-i386-bin-DVD.iso\CentOS 文件找到缺少的包, 并且上传到 linux 上去, ls *.rpm rpm -ivh *.rpm
CentOS6.0基本环境配置
===========
#建立dba和 oinstall用户组。用来区别普通的用户
groupadd oinstall
groupadd dba
mkdir -p /u01/oracle
#添加一个oracle用户, 根目录是 /u01/oracle, 主的组是 oinstall 副的组是dba
useradd -g oinstall -G dba -d /u01/oracle oracle
#拷贝几个用户.bash*文件的demo
cp /etc/skel/.bash_profile /u01/oracle
cp /etc/skel/.bashrc /u01/oracle
cp /etc/skel/.bash_logout /u01/oracle
#为oracle用户设置密码 123456
passwd oracle
chown -R oracle:oinstall u01
#检查 nobody 是否存在 , id nobody 缺省存在的。#如果不存在 # /usr/sbin/useradd -g nobody
###############################
#内核参数修改(最好按照Oracle安装要求来修改)
#vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
#立刻使内核参数生效,而不需要重启
#sysctl -p
#vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
#vi /proc/sys/fs/file-max 120300/512#(未验证不重要)
#vi /etc/pam.d/login #不知道干什么的
session required pam_limits.so
######################
#设置oracle 用户环境变量
#su - oracle
#vim ~/.bash_profile
ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle
ORACLE_SID=wilson
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
#查看设置的环境变量ITPUB个人空间.
[oracle@oracle11g ~]$ env | grep ORA
# 这个具体的作用还是不知道的
#vi /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
# ifconfig #要改IP为固定的IP
# vi /etc/hosts
编辑里面内容 去掉一个oracle11g[安装Linux时的local名]###这个请根据情况改变。作用应该是 远程连接的时候需要这个IP
192.168.0.100 oracle11g
安装Oracle11gR2
============
安装文件(方式自己选择)
#此处注意,由于是英文安装环境,需要LANG的支持,否则中文乱码。
export LANG=en_US
./runInstaller 执行安装(oracle用户,非root)
安装到最后需要Root执行两个脚本
执行以下命令
[root@oracle11g ~]# /u01/oraInventory/orainstRoot.
[root@oracle11g ~]# /u01/oracle/root.sh
[root@oracle11g database]# netca 配置监听程序
[root@oracle11g database]# ps -ef 查看监听程序
[root@oracle11g database]# dbca 安装数据库
测试Oracle连接
sqlplus DBSNMP/passWORD
SQL> !ps -ef
SQL> !ps -ef | grep oracle Oracle数据库一些常用进程
启动监听程序
[oracle@devrfel501 ~]$ lsnrctl start
启动企业管理器
[oracle@devrfel501 ~]$ emctl start dbconsole
https://192.168.70.128:1158/em/console/aboutApplication这是我自己电脑上的
利用Net Manager 配置本地命名
[root@oracle11g ~]# netmgr
Linux 启动ftp [root@localhost ~]# service vsftpd start
在dos里面
C:\Users\Administrator>ftp 192.168.48.130 OK
连接到 192.168.48.130。
Liunx关闭防火墙[root@localhost ~]# service iptables stop
[root@localhost ~]# vi /etc/inittab
我只能看到ID:3:INITDEFAULT ,但是不知道怎么将3改成5? 减少内存开销..
创建linux下自动启动Oracle的服务
==============================
View Code
安装完毕 Oracle 11g 每次都得手动启动 | 停止数据库(dbstart | dbshut)、监听器(lsnrctl)、控制台(emtcl)。 设置一下,若手动启动数据库的同时监听器没有启动(即启动数据库时自动启动监听器,停止数据库时停止监听器),则需要修改 dbstart 脚本文件 利用Linux服务自动启动Oracle 1.修改/etc/oratab 编辑/etc/oratab文件,将orcl:/opt/oracle/product/10.2.0/db_1:N改为orcl:/opt/oracle/product/10.2.0/db_1:Y 2.添加Linux服务 cd /etc/rc.d/init.d touch oracle chmod a+x oracle 打开oracle文件,添加以下内容 #!/bin/bash # chkconfig: 345 61 61 #description:starts the oracle database deamons # description: Oracle 11g AutoRun Services # /etc/init.d/oracle # # Run-level Startup script for the Oracle Instance, Listener, and # Web Interface export ORACLE_BASE=/u01/app/oracle export ORACLE_SID=ORCL export PATH=$PATH:$ORACLE_HOME/bin ORA_HOME="/opt/oracle/product/10.2.0/db_1" ORA_OWNER="oracle" # if the executables do not exist -- display error if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ] then echo "Oracle startup: cannot start" exit 1 fi # depending on parameter -- startup, shutdown, restart # of the instance and listener or usage display case $1 in 'start') echo -n "***Starting Oracle***" su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart" ;; 'stop') echo -n "***Stopping Oracle***" su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut" ;; 'restart'|'reload') echo -n "***Restarting Oracle***" $0 stop $0 start ;; 'isqlstart') echo "***Starting Oracle iSQL PLus***" su - $ORA_OWNER -lc "$ORA_HOME/bin/isqlplusctl start" echo "*** Note:You can access service at url:http://$(hostname):5560/isqlplus" ;; 'isqlstop') echo "***Stopping Oracle iSQL Plus***" su - $ORA_OWNER -lc "$ORA_HOME/bin/isqlplusctl stop" ;; 'emstart') echo "***Starting Oracle Enterprise Manager 10g Database control***" su - $ORA_OWNER -c "$ORA_HOME/bin/emctl start dbconsole" echo "Note:You can access service as url:http://$(hostname):1158/em" ;; 'emstop') echo "***Stopping Oracle Enterprise Manager 10g Database control***" su - $ORA_OWNER -c "ORA_HOME/bin/emctl stop dbconsole" ;; '*') echo $"Usage: `basename $0` {start|stop|restart|reload|isqlstart|isqlstop|emstart|emstop}" exit 1 esac exit 0 赋予执行权限 chmod 750 /etc/init.d/oracle 执行下列命令测试: /etc/rc.d/init.d/oracle start /etc/rc.d/init.d/oracle stop 连接 ln -s /etc/init.d/oracle /etc/rc1.d/K61oracle ln -s /etc/init.d/oracle /etc/rc3.d/S61oracle 执行下列命令添加到Linux服务中: chkconfig --add oracle chkconfig --level 345 oracle on chkconfig --list oracle 重新启动服务器。
下面是另外一个脚本。我在使用
首先修改 $ORACLE_HOME/bin/dbstart 里面 把 $1 替换为 $ORACLE_HOME
注意$ORACLE_HOME_LISTNER变量最后不是listener 少了个e ,给这个变量赋值为$ORACLE_HOME即可。dbshut同理。
其他操作请参照上面。下面只是脚本的内容改变了而已。
#!/bin/bash #chkconfig:2345 99 10 #description :startup script for oracle database; #/etc/rc.d/init.d/oracle export ORACLE_BASE="/home/oracle/app/oracle" export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_SID=orcl export PATH=$PATH:$ORACLE_HOME/bin export ORACLE_HOME_LISTENER=$ORACLE_HOME
#lsnrctl在dbstart and dbshut里面已经包括,不必在设置了
#只需要设置 dbstart 和emctl start dbcosole 就可以了。
case "$1" in start) echo "-----startup oracle-----">>/var/log/oracle11.log su oracle -lc "$ORACLE_HOME/bin/dbstart" su oracle -lc "$ORACLE_HOME/bin/emctl start dbconsole" touch /var/lock/subsys/oracle echo "-----startup oracle successful-----">>/var/log/oracle11.log echo "ok" ;; stop) echo "-----stop oracle-----">>/var/log/oracle11.log
su oracle -lc "$ORACLE_HOME/bin/dbshut" su oracle -lc "$ORACLE_HOME/bin/emctl stop dbconsole" rm -rf /var/lock/subsys/oracle echo "-----stop oracle successful-----">>/var/log/oracle11.log echo "ok" ;; *) echo "Usage: 'basename $0' start|stop" exit 1 esac exit 0
手动启动关闭Oracle的方法
====
首先进入sqlplus
有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动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:/Oracle/admin/oradb/pfile/init.ora 8、startup EXCLUSIVE 有三种关闭方式: 1、shutdown normal 正常方式关闭数据库。 2、shutdown immediate 立即方式关闭数据库。 在SVRMGRL中执行shutdown immediate,数据库并不立即关闭, 而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源), 当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。 3、shutdown abort 直接关闭数据库,正在访问数据库的会话会被突然终止, 如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。
另外:
测试结果显示,${ORACLE_HOME}环境变量中对“/”符号要求严格,不能在该字符串变量的值中出现多余“/”符号(虽然这样写在linux下是合法的),否则可能引起连接数据库异常。 #对于初学者需要提高警惕。
############ Oracle数据库入门心得
Oracle的体系太庞大了,对于初学者来说,难免会有些无从下手的感觉,什么都想学,结果什么都学不好,所以把学习经验共享一下,希望让刚刚入门的人对oracle有一个总体的认识,少走一些弯路。 一、定位 oracle分两大块,一块是开发,一块是管理。开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,需要有较强的逻辑思维和创造能力,个人觉得会比较辛苦,是青春饭J;管理则需要对oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会down掉整个数据库,相对前者来说,后者更看重经验。 因为数据库管理的责任重大,很少公司愿意请一个刚刚接触oracle的人去管理数据库。对于刚刚毕业的年轻人来说,可以先选择做开发,有一定经验后转型,去做数据库的管理。当然,这个还是要看人个的实际情况来定。 二、学习方法 我的方法很简单,就是:看书、思考、写笔记、做实验、再思考、再写笔记 看完理论的东西,自己静下心来想想,多问自己几个为什么,然后把所学和所想的知识点做个笔记;在想不通或有疑问的时候,就做做实验,想想怎么会这样,同样的,把实验的结果记下来。思考和做实验是为了深入的了解这个知识点。而做笔记的过程,也是理清自己思路的过程。 学习的过程是使一个问题由模糊到清晰,再由清晰到模糊的过程。而每次的改变都代表着你又学到了一个新的知识点。 学习的过程也是从点到线,从线到网,从网到面的过程。当点变成线的时候,你会有总豁然开朗的感觉。当网到面的时候,你就是高手了 很多网友,特别是初学的人,一碰到问题就拿到论坛上来问,在问前,你有没有查过书,自己有没有研究过,有没有搜索一下论坛?这就叫思维惰性。由别人来回答你的问题,会让你在短时间内不费劲地弄懂这个知识点,然而通过自己的努力去研究它,不但会更深入的了解这个知识点,更重要的是在研究的过程会提高你解决问题和分析问题的能力。总的来说,没有钻研的学习态度,不管学什么东西,都不会成功的。 当然,初学的人很多时候是因为遇到问题时,无从下手,也不知道去哪里找资料,才会到论坛上提问题的。但我认为,在提问的时候,是不是可以问别人是如何分析这个问题?从哪里可以找到相关的资料?而不是这个问题的答案是什么?授人以鱼不如授人以渔。 下面我讲下我处理问题的过程 首先要知道oracle的官方网站:www.oracle.com 这里有oracle的各种版本的数据库、应用工具和权威的官方文档。其次,还要知道http://metalink.oracle.com/这里是买了oracle服务或是oracle的合作伙伴才可以进去的,里面有很多权威的解决方案和补丁。然后就是一些着名网站:asktom.oracle.com www.orafaq.net, www.dbazine.com。这里有很多经验之谈。 遇到问题了。如果是概念上的问题,第一时间可以找tahiti.oracle.com,这里会给你最详细的解释。如果在运行的过程中出了什么错误。可以去metalink看看。如果是想知道事务的处理的经验之谈。可以去asktom。当然。这里只是相对而言。