本篇所有的操作完全以Linux redhat5 2.6.18-8e15为标准,其自带并安装的mysql数据库为mysql-5.0.22,unixODBC2.2.11。QT为Qt3.3。
需单独安装的程序为:
1)oracle数据库,服务器版本为oracle10g-linux-x86-db-10.1.0.3g
2)Qt4.3.3商业版
操作篇
安装
客户端oracle10g
具体步骤如下:
1. 1.1 客户端不能在root用户下安装,因此需要新建一个用户进行安装,通常为oracle用户。
#groupadd dba
#groupadd oinstall
#useradd oracle –g oinstall –G dba
#passwd oracle
1.1.2 oracle10g 不支持redhat5,要修改
#/vi etc/redhat_release
Red Hat Enterprise Linux Server releasee 5 (Tikanga) 改为
Red Hat Enterprise Linux Server releasee 4 (Tikanga)
1.1.3 更改系统字体
#vi /etc/sysconfig/i18n
LANG=”en_US.UTF-8”
1. 1.4 登录系统xwindows或使用远程桌面控制系统vnc
#xhost +
1. 1.5 设置环境变量
#su – oracle
# vi .bash_profile
export ORACLE_HOME=/opt/oracle/product/10.2.0/client_1
1. 1.6 安装软件
#cd /home/oracle10g_1.0.0/database
#./runInstaller
服务器端安装
除1.1.1-1.1.4与客户端安装相同的外,还有以下几个步骤:
1.2.1 检查内核版本和其它软件验证
#uname –r
RHEL5系统里面,砍你已经安装了如下的包:
#rpm –a | grep [软件包名称]
make-3.81-1.1
binutils-2.17.50.0.6-2.el5
setarch-2.0-1.1
compat-gcc-34-g77-3.4.6-4
compat-db-4.2.52-5.1
compat-gcc-34-3.4.6-4
compat-libstdc++-296-2.96-138
compat-libf2c-34-3.4.6-4
compaat-libstdc++-33-3.2.3-61
compat-gcc-34-c++-3.4.6-4
libaio-0.3.106-3.2
如果缺少,请手工装上,注意安装顺序
rpm –ivh libXp-1.0.0-8.i386.rpm 在第2张碟上
rpm –ivh openmotif-2.3.0-0.3.el5.i386.rpm 在第3张碟上
rpm –ivh compat-db-4.2.52-5.1.i386.rpm 在第3张碟上
rpm –ivh compat-gcc-34-3.4.6-4.i386.rpm
rpm –ivh compat-libf2c-34-3.4.6-4.i386.rpm
rpm –ivh compag-gcc-34-g77-3.4.6-4.i386.rpm
rpm –ivh compat-gcc-34-c++-3.4.6-4.i386.rpm
rpm –ivh compat-libstdc++-296-2.96-138.i386.rpm
rpm –ivh compat-libstdc++33-3.2.3-61.i386.rpm
1.2.2 配置 Linux 内核参数
Linux 内核非常出色。与大多数其他 *NIX 系统不同,Linux 允许在系统启动和运行时修改大多数内核参数。完成内核参数更改后不必重新启动系统。Oracle 数据库 10g 需要以下所示的内核参数设置。其中给出的是最小值,因此如果您的系统使用的值较大,则不要更改它。
#vi /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
――
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.rmem_default=262144
net.core.wmem_max=262144
完成后,运行以下命令激活更改:
/sbin/sysctl -p
1.2.3 为 oracle 用户设置 Shell 限制
Oracle 建议对每个 Linux 帐户可以使用的进程数和打开的文件数设置限制。要进行这些更改,以 root 用户的身份执行下列命令:
#vi /etc/security/limits.conf
oracle(或*) soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
#vi /etc/pam.d/login
session required /lib/security/pam_limits.so
1.2.4 设置环境变量
#su – oracle
#vi ~/.bash_profile
export ORACLE_HOME=/opt/oracle/product/10g
export ORACLE_SID=myoracle
export PATH=$ORCLE_HOME/bin:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LANG=AMERICAN_AMERICA.ZHS16GBK
1.2.5 安装
#cd 进入路径/database
#./runInstaller
linux 下的oracle操作
客户端
连接服务器端用如下命令:
连接命令 用户名/密码@主机名:端口号/数据库名(或网络服务名)
如:connect system/system192.168.2.252:5500/myoracle 连接服务器端数据库
或使用tnsping system/system192.168.2.252:5500/myoracle 测试oracle的网络连接
配置网络服务命名
#xhost +
#su – oracle
#netmgr //网络管理
#netca //网络配置助手
使用OEM管理数据库
#oemapp console
服务器端
2.2.1 用sqlplus打开数据库服务器
#sqlplus /nolog
#conn 用户名/密码@数据库名
或
#sqlplus
enter name: / as sysdba
sql>startup
sql>shutdown immediate //。。。关闭数据库命令
用sqlplus向数据库中写入数据时,当退出sqlplus时数据库更新生效;用isqlplus时,注销后更改数据库的内容生效。
2.2.2 打开相应的服务
#lsnrctl start //打开监听器,必须先于以下两个步骤
#emctl start dbconsole //打开OEM的dbconsol峨
#isqlplusctl start //打开isqlplus
经过以上步骤,数据库服务器上的服务和数据库都打开了,可在本机进行连接了
2.2.3 创建数据库实例
#xhost +
#su – oracle
#dbca
2.2.4 若一个服务器上建了多个数据库实例,可用以下方式访问不同数据库,但此只能一次访问一个数据库实例。
1)#su – oracle
#vi .bash_profile
更改此中的ORACLE_SID项为要访问的数据库名或使用命令oraenv
2)重启所有的数据库服务
2.2.5 用浏览器访问
通常用地址访问OEM http://主机名:5500/em[/console]
通常用地址访问isqlplus http://主机名(或IP):5560/isqlplus
2.2.6 网络访问
打开防火墙的相应端口,可通过#emctl status dbcosole 知道使用的浏览器网页,并可看到当前数据库实例所使用的SID、端口号等信息。通常为为计算机名。
注:若要更改主机名,直接更改网络中的DNS中的主机名,oracle服务变的无效了。
2.2.7 数据库中的中文乱码问题
2.2.7.1 解决浏览器的OEM显示中的中文乱码
采用英文浏览器显示,方法如下:
打开IE浏览器设置,编辑->首选项->常规->语言->编辑语言->添加(世界语eo),并上移新添加的语言到顶部
2.2.7.2 数据库的字符集
1)用dbca新建数据库实例时,选定数据库字符集为zhs16CGB231280
2)#su – oracle
#vi .bash_profile
更改如下文本:
NLS_LANG=”SIMPLIFIED CHINESE_CHINA.ZHS16GBK”
LANG=”SIMPLIFIED CHINESE_CHINA.ZHS16GBK”
2.2.7.3 当用终端的sqlplus向数据中的表中写中文时,将终端改成GBK,方法如下:
终端->设定字符编码->简体中文(GBK)或简体中文(GB2312)
注:此格式写入的中文,当用windows访问时也可正常显示。
编译QT的QOCI库,仅针对oracle10
2.3.1 在Linux下的OCI的QT插件编译
1)使用终端编译生成库
cd $QTDIR/plugins/src/sqldrivers/oci
qmake -o Makefile "INCLUDEPATH+= /opt/oracle/product/client/"
"LIBS+=-L/opt/oracle/product/client/lib" oci.pro
make //生成在源程序路径的src/plugins/sqldrivers下
make install //生成在安装路径的plugins/sqldrivers下
2)使用kdevelop开发工具生成库
具体步骤如下:用QT4编译,设置为编辑库,动态库
OCI插件源码由两部分组成:(a)在drivers/oci目录下,包括qsql_oci.cpp和qsql_oci.h两个文件;(b)plugins/sqldrivers/oci目录下,包括main.cpp和oci.pro两个文件。
用KDevelop导入工程。
步骤1:在KDevelop中选择“工程/导入已有工程”,选择OCI插件目录(b),QT4加载。
步骤2:在“工程/工程选项/C++支持/QT页中更改qmake和designer路径
步骤3:配置子工程选项。在右侧的子工程选项窗口的”include”选项卡的“Directories outside Project”中添加oracle客户端目录,如“/opt/oracle/product/10.2.0/client_1/rdbms/public;在”Library“选项卡的”External Libraries:”中添加”/opt/oracle/oracle/product/10.2.0/client_1/lib/”.
步骤4:编译后安装。在KDevelop中进行编译,成功后直接在KDevelop的Konsole中运行make install
3)检查生成编译库是否正确
若无法加载驱动,检查生成库是否正确。打开一个终端,输入如下命令
#ldd [库路径]/libqsqloci.so
检查生成库的依赖问题,若有依赖库没有找到则即使生成相关库文件也不能使用。4)4)在系统环境变量中添加如下环境配置,否则出现连接问题
#vi /etc/profile
ORACLE_HOME=/opt/oracle/product/10Client (例如)
5)下图为使用QOCI方式连接数据库的示意图,需要注意的是,其中的数据库名是指客户端建立的网络服务名,而非oracle服务器上的数据库实例名。
2.3.2 在windows下的OCI的QT插件编译
对于非商业版本的QT,只需拷贝以下几个文件即可:
1、%QTDIR%\src\plugins\sqldrivers下的oci文件夹
2、%QTDIR%\src\sql\drivers
3、至少安装ORACLE客户端,服务器端也可
4、按照下面的方式进行编译
set INCLUDE=%INCLUDE%;C:\oracle\product\10.2.0\db_1\OCI\include
set LIB=%LIB%;C:\oracle\product\10.2.0\db_1\OCI\lib\MSVC
cd /d D:\Qt\4.3.2\src\plugins\sqldrivers\oci
qmake -o Makefile oci.pro
nmake
设置oracle服务器开机自启动
2.4.1 配置dbstart和dbshut
在$ORACLE_HOME/bin中,有dbstart和dbshut这两个脚本,more dbstart看一下可以看到:可以看出这个脚本是用来启动oracle服务的,包括listener、instance、asm instances,并且可以放到/etc/rc(.local).,同样dbshut也是起到关闭服务的作用。
配置系统使这个脚本起作用:
1)以root用户操作
#vi /etc/oratab
orcl:/u01/product/10.2.0/db_1:N 改为
orcl:/u01/product/10.2.0/db_1:Y
其中orcl是你的ORACLE_SID,/u01/product/10.2.0/db_1是ORACLE_HOME。
2)以oracle用户操作
#vi $ORACLE_HOME/bin/dbstart 修改
第78行:ORACLE_HOME_LISTNER=[自己的路径]或者
改成ORACLE_HOME_LISTNER=$ORACLE_HOME
保存脚本,以oracle用户运行dbshut和dbstart看是否能关闭、启动数据库。如果不能,一般是参数设置,根据报错找到对应位置更改。
2.4.2 用rc.local实现开机启动
经过上一步的配置,可以直接用dbstart命令启动数据listener、instance、asm instances,但是还没有启动oracle10g的EM,ORACLE利用web页面管理数据库相当方便,应该一并启动起来。
1)用root用户操作
#vi /etc/rc.local 添加:
su - oracle -c "/u01/product/10.2.0/db_1/bin/dbstart"
su - oracle -c "/u01/product/10.2.0/db_1/bin/emctl start dbconsole"
需要注意的是必须以oracle启动该脚本,这里/u01/product/10.2.0/db_1需要替换成实际的ORACLE_HOME
保存并退出。
2)重启服务器测试一下,当系统启动后,oracle监听、实例和em都已经起来了。
5 安装和配置oracle的odbc
2.5.1 在Linux下操作
步骤如下:
(1)下载软件
从驱动,针对linux-x86(32位)的软件包为odbc-oracle-3.2.0-linux-x86-glibc.tar
(2)解压缩到某处
(3)./install安装
最好安装在默认路径下,否则还得做链接。注:安装过程中,需要试用版的注册(有效期14天),当添写完个人信息之后,就退出注册,则可继续安装。数据库驱动为libesoracle.so,数据库安装驱动为libesoraclesetup.so
(4)添加DSN
若先安装好的服务器,可通过输入相关信息直接生成一个系统的DSN,可以直接使用进行数据库连接,也可以在ODBCConfig中自己添加连接。在添加一个新的DSN时,注意其Database栏中就如下格式[//IP(hostname):port/servername](例如//192.168.2.252:1522/myoracle)。
注:注册的DSN名字不区分大小写
2.5.2 在Windows下操作
当安装客户端时自动安装的ODBC的驱动,只需在ODBC中配置相应的用户DSN。具体操作如下:
(1) 用netmgr工具建立一个任意名称的本地服务命名如oraclesrv,配置相应的主服务器IP,服务器数据库名即SID和端口号
(2) 用oem console添加DB树,选择从本机的服务上连接。注:虽然其本身可直接设置本地的网络服务名,但其默认服务名为SID_IP格式,在ODBC管理器中不能正常使用。
(3) 使用ODBC管理器,添加和使用ODBC进行连接
配置ODBC
编译QT的ODBC库
注:如果是后装的QT4,假如路径为/usr/qt4则使用绝对路径,如下
#cd /usr/qt4/[$QTDIR]/src/plugins/sqldrivers/odbc
#/usr/qt4/bin/qmake “INCLUDEPATH+=/usr/local/unixODBC/install/include” “LIBS+=-L /usr/local/unixODBC/install/lib –lodbc” odbc.pro
#make
此时libsqlodbc.so和libsqlodbc.so.debug文件生成到[$QTDIR]的源码的/plugins/sqldrivers中,然后,使用命令#make install(或将其拷贝到你安装路径下的/plugins/sqldrivers中)程序可自动检测并加载ODBC方式。
配置ODBC管理器
unixODBC已由系统安装,默认将ODBCConfig安装在目录/usr/bin下
#ODBCConfig //显示ODBCConfig主窗口
首先是加载驱动即操作属性页Drivers,然后再建立用户DSN,两个窗口如下。
Name一栏填入数据库驱动的名称,Description是数据库驱动的描述,Driver是用来选择数据库驱动程序的,Setup是用来选择数据库驱动安装程序的,如果你是按照上述安装方法安装的,这些程序都放在/usr/lib下,下面是数据库驱动程序的列表:
数据库 |
数据库驱动程序 |
数据库驱动安装程序 |
TXT |
libodbctxt.so |
libodbctxtS.so |
NNTP |
libnn.so |
libodbcnnS.so |
MiniSQL |
libodbcmini.so |
libodbcminiS.so |
PostgreSQL |
libodbcpsql.so |
libodbcpsqlS.so |
MySQL |
(注释) |
libodbcmyS.so |
Sybase/MS SQL |
(注释) |
libtdsS.so |
Oracle |
(注释) |
liboraodbcS.so |
备注:如未安装unixODBC软件,请先安装unixODBC-2.2.12,步骤如下:
将unixODBC-2.2.12.tar.gz解压缩到某文件夹,例如绝对路径如/usr/local/unixODBC
#cd /usr/local/unixODBC 进入目录
#./configure –prefix /usr/local/unixODBC/install 安装到其新建的子文件夹install中
#make
#make install
#make clean
×××××××××××××××××××××××
数据库维护可以使数据库保持运行在最佳状态。
在数据库结构发生变化时,如增加了表空间,增加了数据文件或重做日志文件这些操作,都会造成Oracle数据库控制文件的变化,DBA应及进行控制文件的备份,备份方法是:
执行SQL语句:
alter database
backup controlfile to '/home/backup/control.bak';
或:
alter database
backup controlfile to trace;
这样,会在USER_DUMP_DEST(初始化参数文件中指定)目录下生成创建控制文件的SQL命令。
DBA要及时查看数据库中数据文件的状态(如被误删除),根据实际情况决定如何进行处理,检查数据文件的状态的SQL如下:
select file_name,status
from dba_data_files;
如果数据文件的STATUS列不是AVAILABLE,那么就要采取相应的措施,如对该数据文件进行恢复操作,或重建该数据文件所在的表空间。
×××××××××××××××××××××××