既然打算用目前的的一些空余时间对已学过的知识进行整理,因码工的关系需要一个运行代码的环境,于是动手搭建linux环境(之前的所做项目的全是借别人之手搭建)。
基本功能:
1)linux环境(选择了redhat9.0的服务版)
2)数据库(oracle10g--服务随系统自动启停)
好了,废话不多。
一)安装操作系统:尽量在安装时将需要的包尽量装全。虽说之后可以通过rpm方式安装,但那并不太明智(因为手动安装软件,软件之间的依赖会让你很是头疼)。
安装操作系统基本上都是一直next下即可完成。
二)安装数据库软件:开发数据库的软件,数据库是不可少,于是选择大众、流行的oracle10g.
1)安装过程,参考的是http://lvming1000.blog.163.com/blog/static/11686002012174580870/。我是从第5步,按其步骤开始:
useradd -g oinstall -G dba oracle
7、修改oracle用户配置文件,在其中添加:(注意修改安装oracle的路径)
export ORACLE_BASE=/u01/app/oracle #自定义的安装路径
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;
export ORACLE_SID=ORCL #自己定义的oracleSID
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。
一、在Linux下启动Oracle
登录到CentOS,切换到oracle用户权限
# su – oracle
接着输入:
$ sqlplus "/as sysdba"
原本的画面会变为
SQL>
接着请输入
SQL> startup
就可以正常的启动数据库了。
另外停止数据库的指令如下:
SQL> shutdown immediate
二、检查Oracle DB监听器是否正常
回到终端机模式,输入:
$ lsnrctl status
检查看看监听器是否有启动
如果没有启动,可以输入:
$ lsnrctl start
启动监听器
SQL> conn sys@orcl as sysdba
然后输入密码,sys以sysdba身份登入数据库。
三、启动emctl
另外也可以发现http://localhost.localdomain:1158/em 目前是没有反应的,这边要另外启动,启动的指令如下:
$ emctl start dbconsole
这个指令运行时间较长,执行完的画面如下:
手动启动Oracle数据库完毕,下面创建系统自行启动Oracle的脚本。
四、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服务启动&停止脚本与开机自启动设置完毕。
---至此,成功安装完数据库。