既然打算用目前的的一些空余时间对已学过的知识进行整理,因码工的关系须要一个运行代码的环境,因而动手搭建linux环境(以前的所作项目的全是借别人之手搭建)。 html
基本功能: linux
1)linux环境(选择了redhat9.0的服务版) sql
2)数据库(oracle10g--服务随系统自动启停) 数据库
好了,废话很少。 bash
一)安装操做系统:尽可能在安装时将须要的包尽可能装全。虽然说以后能够经过rpm方式安装,但那并不太明智(由于手动安装软件,软件之间的依赖会让你非常头疼)。 服务器
安装操做系统基本上都是一直next下便可完成。 oracle
二)安装数据库软件:开发数据库的软件,数据库是不可少,因而选择大众、流行的oracle10g. app
1)安装过程,参考的是http://lvming1000.blog.163.com/blog/static/11686002012174580870/。我是从第5步,按其步骤开始: dom
五、创建oracle用户 ssh
groupadd dba 创建组
groupadd oinstall
useradd -g oinstall -G dba oracle
六、设置密码
passwd oracle
7、修改oracle用户配置文件,在其中添加:(注意修改安装oracle的路径)
#su - oracle
#vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle #自定义的安装路径
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;
export ORACLE_SID=ORCL #本身定义的oracleSID
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH; export PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
su - root
mkdir -p /u01/app/oracle
9、修改文件全部者并配置安装包和用户环境:
chown -R oracle:oinstall /u01
10、重启系统
11、以oracle用户身份登陆,安装
12、经过samba将oracle安装软件上传到linux机器的/u01下,而后解压
unzip 10201_database_linux32.z
13、解压完生成database目录
cd /u01/database
cd install
vi oraparam.ini (默认10g不支持redhat-5,修改此文件增长对redhat-5的支持,第39行)
Linux=redhat-3,SuSE-9,redhat-4,redhat-5,UnitedLinux-1.0,asianux-1,asianux-2
注:建议更改/etc/redhat-release中的版本号,上面的方法有时会不生效。
14、安装
检查用户id
id 必须是oracle
cd /u01/database
./runInstaller 执行安装文件,进行安装
15、按照提示安装便可(和Windows的安装同样)。
1.选择安装方法,咱们选择高级安装
2.选择安装类型选择企业版:
3.只定安装目录信息,进行下一步,:
4.安装程序对系统的安装条件进行检查:
5.选择配置选项,这是咱们建立数据库:
6.选择数据库配置:
7.制定数据库配置选项:
8.选择数据库管理选项,选择默认便可:
9.指定数据库存储选项:
10.制定备份和恢复选项,目前选择不备份:
11.指定数据库方案的口令,这里选择统一口令:
12.显示安装概况,点击安装后开始安装:
13.安装图像:
14.到下面这一步的时候若是你的虚拟内存不足会要求你去增长虚拟内存,不然不会继续安装:
15.在上面安装的时候还会弹出这样一个对话框,要求你用root帐户来执行两个脚本程序。用root执行以后点击肯定继续安装。
16.完成安装:
17.尝试启动数据库:以oracle用户登陆,输入:sqlplus "/as sysdba":
[oracle@localhost patch2]$ sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 28 19:50:47 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL>
18.输入startup:若是看到下面的字符说明数据库启动成功。
SQL> startup
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL>
19.切换会oracle命令输入模式,输入emctl start dbconsole
[oracle@localhost patch2]$ emctl start dbconsole
TZ set to PRC
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
http://localhost.localdomain:1158/em/console/aboutApplication
- An instance of Oracle Enterprise Manager 10g Database Control is already running.
[oracle@localhost patch2]$ emctl start dbconsole
TZ set to PRC
Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0
Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
http://localhost.localdomain:1158/em/console/aboutApplication
- An instance of Oracle Enterprise Manager 10g Database Control is already running.
20.看到这样的画面表示你的oracle安装成功了。
--------------------------- 到此数据库安装基本完成(可是不能保证你就能用)---------------------------------
2)此时用http://localhost.localdomain:1158/em/console/aboutApplication 登陆控制台时,会显示成功登陆的控台,但数据库侦听端口(通常为1521)能够经过lsnrctl status查看。
此时lsrctl start 启动数据库侦听端口,可会发生以下错误。解决办法能够参考:http://www.xifenfei.com/622.html。本人采用此种方法:
TNS-12537: TNS:connection closed
TNS-12560: TNS:protocol adapter error
TNS-00507: Connection closed
Linux Error: 29: Illegal seek
须要在 Listener文件中添加SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF,这个为oracle10g上的bug,有补丁能够解决
3)运用手动的方式式将数据库启起来,命令以下:
(1)通常经过SSH或者其它远程链接工具,链接oracle数据库所在服务器 linux系统能够在终端中直接用ssh命令创建远程链接: ssh -l user serverIp 如:ssh -l root 192.168.168.168
(2) 创建链接后,切换到oracle用户下,su -l oralce,说明此处切换时加 -l 选项,能够加载为oracle用户配置的环境变量,不然执行命令时,可能会提示:command not found。
(3) 启动oralce,依次执行以下命令:
lsnrctl start
sqlplus /nolog
SQL> connect /as sysdba
SQL> startup
其中数据库启动使用startup命令,它有三种状况
第一种:不带参数,启动数据库实例并打开数据库,以便用户使用数据库,在多数状况下,使用这种方式!
第二种:带nomount参数,只启动数据库实例,但不打开数据库,在你但愿建立一个新的数据库时使用,或者在你须要这样的时候使用!
第三种:带mount参数,在进行数据库改名的时候采用。这个时候数据库就打开并可使用了!
(4) 关闭oracle
sqlplus /nolog
SQL> connect /as sysdba
SQL> shutdown immediate
其中shutdown有四个参数,四个参数的含义以下:
Normal 须要等待全部的用户断开链接
Immediate 等待用户完成当前的语句
Transactional 等待用户完成当前的事务
Abort 不作任何等待,直接关闭数据库
normal须要在全部链接用户断开后才执行关闭数据库任务,因此有的时候看起来好象命令没有运行同样!在执行这个命令后不容许新的链接
immediate在用户执行完正在执行的语句后就断开用户链接,并不容许新用户链接。
transactional 在拥护执行完当前事物后断开链接,并不容许新的用户链接数据库。
abort 执行强行断开链接并直接关闭数据库。
(5)lsnrctl stop
================
4)至此能够登陆数据:
在sqlplus 下的登陆方式(只说一种):用户名/密码@数据库实例 [AS 角色] 如:abc/ddd@orcl ;
运用其余客户端工具(plusql)链接:可能须要配置tnsnames.ora(此文件能够是在客户机上安装oracle数据库时自已生成或是安装一个只有链接功能的绿色版工具手功编写)所须要的内容最好在数据库服务端查看对应的tnsnames.ora的配置。【此文件第一行需顶格,不然会报12451之类没法解析的错】。
--------------------至此数据库已能正常工做------------------------------------------------
==============
每次服务启动与关闭都须要手动的开启与关闭数据库十分的繁琐,因而须要编写一个自动开启与关闭数据库的脚本变的尤其重要,相关资料参考:http://www.cnblogs.com/mchina/archive/2012/11/27/2782993.html.本人直接参考第四部分起。
----------------------------------------------------------------------------------------------
在linux下安装完Oracle 10g R2,重开机以后,你会发现Oracle没有自行启动,这是正常的,由于在Linux下安装Oracle的确不会自行启动,必需要自行设定相关参数,首先先介绍通常而言如何启动oracle。
1、在Linux下启动Oracle
登陆到CentOS,切换到oracle用户权限
# su – oracle
接着输入:
$ sqlplus "/as sysdba"
本来的画面会变为
SQL>
接着请输入
SQL> startup
就能够正常的启动数据库了。
另外中止数据库的指令以下:
SQL> shutdown immediate
2、检查Oracle DB监听器是否正常
回到终端机模式,输入:
$ lsnrctl status
检查看看监听器是否有启动
若是没有启动,能够输入:
$ lsnrctl start
启动监听器
SQL> conn sys@orcl as sysdba
而后输入密码,sys以sysdba身份登入数据库。
3、启动emctl
另外也能够发现http://localhost.localdomain:1158/em 目前是没有反应的,这边要另外启动,启动的指令以下:
$ emctl start dbconsole
这个指令运行时间较长,执行完的画面以下:
手动启动Oracle数据库完毕,下面建立系统自行启动Oracle的脚本。
4、Oracle启动&中止脚本
1. 修改Oracle系统配置文件:/etc/oratab,只有这样,Oracle 自带的dbstart和dbshut才可以发挥做用。
# vi /etc/oratab
orcl:/opt/oracle/102:Y
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
2. 在 /etc/init.d/ 下建立文件oracle,内容以下:
#!/bin/sh
# chkconfig: 35 80 10
# description: Oracle auto start-stop script.
#
# 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=/opt/oracle/102
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:
echo "Starting Oracle Databases ... "
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart" >>/var/log/oracle
echo "Done"
# Start the Listener:
echo "Starting Oracle Listeners ... "
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Starting Oracle Listeners as part of system up." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" >>/var/log/oracle
echo "Done."
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Finished." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;
'stop')
# Stop the Oracle Listener:
echo "Stoping Oracle Listeners ... "
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Stoping Oracle Listener as part of system down." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" >>/var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle
# Stop the Oracle Database:
echo "Stoping Oracle Databases ... "
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Stoping Oracle Databases as part of system down." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut" >>/var/log/oracle
echo "Done."
echo ""
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Finished." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
;;
'restart')
$0 stop
$0 start
;;
esac
3. 改变文件权限
# chmod 755 /etc/init.d/oracle
4. 添加服务
# chkconfig --level 35 oracle on
5. 须要在关机或重启机器以前中止数据库,作一下操做
# ln -s /etc/init.d/oracle /etc/rc0.d/K01oracle //关机
# ln -s /etc/init.d/oracle /etc/rc6.d/K01oracle //重启
6. 使用方法
# service oracle start //启动oracle
# service oracle stop //关闭oracle
# service oracle restart //重启oracle
7. 测试
a. 开机自启动
Last login: Mon Nov 26 19:57:06 2012 from 10.0.0.145 [root@ORS ~]# su - oracle [oracle@ORS ~]$ sqlplus "/as sysdba" SQL*Plus: Release 10.2.0.1.0 - Production on Mon Nov 26 20:07:33 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options SQL> set linesize 300; SQL> set pagesize 30; SQL> select * from scott.emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 14 rows selected. SQL>
b. service oracle stop
SQL> Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options [oracle@ORS ~]$ logout [root@ORS ~]# service oracle stop Stoping Oracle Listeners ... Done. Stoping Oracle Databases ... Done. [root@ORS ~]# su - oracle [oracle@ORS ~]$ sqlplus "/as sysdba" SQL*Plus: Release 10.2.0.1.0 - Production on Mon Nov 26 20:17:20 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to an idle instance. SQL> set linesize 300; SQL> set pagesize 30; SQL> select * from scott.emp; select * from scott.emp * ERROR at line 1: ORA-01034: ORACLE not available SQL>
c. service oracle start
SQL> Disconnected [oracle@ORS ~]$ logout [root@ORS ~]# service oracle start Starting Oracle Databases ... Done Starting Oracle Listeners ... Done. [root@ORS ~]#
d. service oracle restart
[root@ORS ~]# service oracle restart Stoping Oracle Listeners ... Done. Stoping Oracle Databases ... Done. Starting Oracle Databases ... Done Starting Oracle Listeners ... Done. [root@ORS ~]#
至此,Oracle服务启动&中止脚本与开机自启动设置完毕。
---至此,成功安装完数据库。