目录
1、 linux下安装oracle10g
2、 表空间的建立及用户建立
3、 Oracle数据库随linux系统启动关闭及自动备份
在linux下安装oracle10g
安装oracle:
1、 内存及交换分区检查
[root@oracle10g ~]# cat /proc/meminfo | grep MemTotal
MemTotal: 1034604 kB
[root@oracle10g ~]# cat /proc/meminfo | grep SwapTotal
SwapTotal: 1574360 kB
建议内存最少1G,交换分区为内存1.5~2倍。如果空间充足建议2倍。Oracle安装之前会检测,但我在交换分区为内存一半的情况下,也安装成功过。当时内存为4G。
2、 修改主机名及hosts文件
[root@oracle10g ~]# hostname oracle10g
[root@oracle10g ~]# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
172.16.60.196 oracle10g“改成配给那个门店的ip和服务器名qtjlmd”
建议修改,避免以后网络访问出现异常。退出重联看是否生效。
3、 检查所需操作系统的RPM包是否完整
以下是oracle10g在RHEL5环境下,需要装的包。
# From RedHat AS5 Disk 1
cd /media/cdrom/Server
rpm -Uvh setarch-2*
rpm -Uvh make-3*
rpm -Uvh glibc-2*
rpm -Uvh libaio-0*
cd /
eject
# From RedHat AS5 Disk 2
cd /media/cdrom/Server
rpm -Uvh compat-libstdc++-33-3*
rpm -Uvh compat-gcc-34-3*
rpm -Uvh compat-gcc-34-c++-3*
rpm -Uvh gcc-4*
rpm -Uvh libXp-1*
cd /
eject
# From RedHat AS5 Disk 3
cd /media/cdrom/Server
rpm -Uvh openmotif-2*
rpm -Uvh compat-db-4*
cd /
eject
检查的命令(在grep后面更上需要检测包的名字):
4、 在Linux安装光盘上找到所有缺失的包,并拷贝到 /目录下面,再执行下面的安装包命令
[root@oracle10g /]# rpm -ivh *.rpm
5、 创建用户
新增oinstall、dba用户组,oracle用户
[root@oracle10g /]# groupadd oinstall
[root@oracle10g /]# groupadd dba
[root@oracle10g /]# useradd -g oinstall -G dba -d /home/oracle oracle
[root@oracle10g /]# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
说明:
# useradd -g oinstall -G dba -d /home/oracle oracle
(新增用户oracle -g 主组属于 oinstall -G dba 辅助组属于 dba
-d /home/oracle 用户缺省根目录为/home/oracle)
检查onbody用户是否存在
[root@oracle10g /]# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
6、 创建安装目录
[root@oracle10g /]# mkdir -p u01/oracle
[root@oracle10g /]# chown -R oracle:oinstall u01
改变u01目录所属用户及组 -R参数表示递归
将oracle10g安装介质解压到u01目录下
tar -xf *.tar
unzip *.zip
mv database/ /u01
mv Disk1/ /u01
chown -R oracle:oinstall Disk1
[root@oracle10g database]# pwd
/u01/database
[root@oracle10g database]# ll
total 28
drwxr-xr-x 9 oracle oinstall 4096 May 19 15:31 doc
drwxr-xr-x 5 oracle oinstall 4096 May 19 15:31 install
drwxr-xr-x 2 oracle oinstall 4096 May 19 15:30 response
-rw-r--r-- 1 oracle oinstall 1327 May 19 15:30 runInstaller
drwxr-xr-x 9 oracle oinstall 4096 May 19 15:31 stage
-rw-r--r-- 1 oracle oinstall 5213 May 19 15:30 welcome.html
注意一般情况下,没有runInstaller的执行权限,使用下面的命令。
[root@oracle10g u01]# chmod -R 775 database/*
[root@oracle10g u01]# chmod -R 775 Disk1/*
-R参数表示递归,让database整个目录具有执行权限。以方便后面安装。
7、 配置内核参数
a.执行如下命令,在文件最后添加灰色部分参数
[root@oracle10g /]# vi /etc/sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536 101365
net.ipv4.ip_local_port_range = 1024 65000 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
执行下面命令使配置生效
[root@oracle10g /]# sysctl –p
b.执行如下命令,在文件最后添加灰色部分参数
[root@oracle10g /]# vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
c.执行如下命令,在文件最后添加灰色部分参数
[root@oracle10g /]# vi /etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so
redhat5.0需更改部分
vi /etc/selinux/config
SELINUX=disabled
vi /etc/redhat-release
Red Hat Enterprise Linux Server release 5 (Tikanga) 被 redhat-4 替换
上述被 redhat-4 替换的内容会根据操作系统版本不同而不一致。替换之前如下请做好备份。后面在安装结束后要替换回去。
备份Red Hat Enterprise Linux Server release 5.5 (Tikanga)
d.执行如下命令,在文件最后添加灰色部分参数
[root@oracle10g /]# 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
执行下面命令使配置生效
[root@oracle10g /]# source /etc/profile
8、 配置oracle环境变量
切换到oracle用户
[root@oracle10g ~]# su – oracle
执行如下命令,在文件最后添加灰色部分参数
[oracle@oracle10g ~]$ vi .bash_profile
ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1
ORACLE_SID=oracle10gcdc
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH
export LANG=AMERICAN
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
stty erase ^h
注意ORACLE_SID为实例名
执行下面命令使环境变量生效(建议重启Linux系统)
[oracle@oracle10g ~]$ source /home/oracle/.bash_profile
/backup,/archivelog,/userdata,/u01 都是我们增加的目录,为oracle服务,所有他应该属于oracle组。用root用户登录,在‘/’目录下附权限。/u01已经赋了权限
[root@oracle10g /]# chown -R oracle:oinstall u01
9、 配置X-windows
在安装oracle的机器上以root用户执行如下命令(切记不要远程执行,会失败),使oracle用户可以使用X-windlws。
[root@oracle10g /]# xhost +
10、 安装oracle
下面的图都是本机安装的截图。切换到oracle用户,进入目录,执行./runInstaller命令进行安装
红色部分为数据库家目录,与之前设定oracle环境变量----ORACLE_HOME保持一致。
确认有无警告,如果网络设定为DHCP将会出现警告提示,可以忽略,不会影响安装。建议按照前面的安装文档,设定为固定IP。如果RPM包没有打全,也会提示。建议在处理完所有的警告之后,再继续安装。
建议先只安装数据库软件,后面再安装实例。
弹出这个窗口后,不能点ok,完成下页一张截图的操作后再点ok。
根据上面一张截图,以Root用户执行列出的2个脚本。
数据库软件安装完毕。
范围报错,此时修改范围a.执行如下命令,在文件最后添加灰色部分参数
[root@oracle10g /]# vi /etc/sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536 101365
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
cd Disk1/ 在用./runInstaller 打补丁
打完补丁以后再安装监听。
在本机输入netca命令,开始配置监听。netmgr
监听配置完毕。
在本机输入dbca命令,开始创建数据库实例
输入SID名称,这名称必须与前面oracle环境变量设定一样。
把密码都设定为一样,均为“manager1”
根据实际需要选择。这里选择了文件系统。ASM是oracle的高级技术,未来方向。建议初学者在学习环境使用文件系统。
强烈建议选择Archive模式。
将flash recovery area 改为 /archivelog
学习环境,勾上Sample Schemas,里面包含一些可供学习的案例。
实际情况不勾选。
这里面的参数相当重要,共享内存管理oracle强烈建议设定为自动管理方式。
字符集参数相当重要,一旦设定,几乎很难更改。建议使用ZHS16GBK,点选
Choose from the list of character sets 在Database Character set下拉
框中选定。
点击exit,实例安装完毕。
11、 测试安装结果
结束工作
[root@oracle10g /]# vi /etc/pam.d/login
#session required /lib/security/pam_limits.so
#session required pam_limits.so
vi /etc/redhat-release
redhat-4 被Red Hat Enterprise Linux Server release 5.5 (Tikanga) 替换
表空间的建立及用户建立
建---表空间及用户(先对userdata和backup赋权,到userdata目录下,建立一个以门店名的目录,并对userdata及名下目录赋权)
赋权给qtjlmd
Sqlplus “/ as sysdba”
表空间的建立及用户建立
---建表空间
create tablespace jxc datafile '/userdata/qtjlmd/jxc01.dbf' size 2048m;
create temporary tablespace jxc_t tempfile '/userdata/qtjlmd/jxc_t_01.dbf' size 2048m;
--追加表空间
alter tablespace jxc add datafile '/userdata/qtjlmd/jxc02.dbf' size 2048m;
alter tablespace jxc add datafile '/userdata/qtjlmd/jxc03.dbf' size 2048m;
alter tablespace jxc add datafile '/userdata/qtjlmd/jxc04.dbf' size 2048m;
---建用户及授权----
drop user cs_pos cascade;
create user cs_pos identified by dhhzdhhz default tablespace jxc temporary tablespace jxc_t;
grant connect,resource,dba to cs_pos;
drop user bf_sys_user cascade;
create user bf_sys_user identified by dhhzdhhz default tablespace jxc temporary tablespace jxc_t;
grant connect,resource,dba to bf_sys_user;
drop user csbjf cascade;
create user csbjf identified by dhhzdhhz default tablespace jxc temporary tablespace jxc_t;
grant connect,resource,dba to csbjf;
drop user bfapp8 cascade;
create user bfapp8 identified by dhhzdhhz default tablespace jxc temporary tablespace jxc_t;
grant connect,resource,dba to bfapp8;
drop user bfpub8 cascade;
create user bfpub8 identified by dhhzdhhz default tablespace jxc temporary tablespace jxc_t;
grant connect,resource,dba to bfpub8;
drop user pos_user8 cascade;
create user pos_user8 identified by dhhzdhhz default tablespace jxc temporary tablespace jxc_t;
grant connect,resource,dba to pos_user8;
drop user bfbhdd8 cascade;
create user bfbhdd8 identified by dhhzdhhz default tablespace jxc temporary tablespace jxc_t;
grant connect,resource,dba to bfbhdd8;
bfapp8,bfpub8,pos_user8,bfbhdd8为百货POS服务器用户
--exp bfapp8/DHHZDHHZ@yhmd file=(/backup/pos01_$rq,/backup/pos02_$rq,/backup/pos03_$rq,/backup/pos04_$rq,/backup/pos05_$rq,/backup/pos06_$rq) owner=bfapp8,bfpub8,pos_user8,bfbhdd8,cs_pos,csbjf,bf_sys_user buffer=640000000 filesize=2147483648 compress=N log=/backup/pos_log$rq
在其他门店POS服务器导出
exp cs_pos/dhhzdhhz owner=cs_pos,bf_sys_user,csbjf,bfapp8,bfpub8,pos_user8,bfbhdd8 rows=n file=posserver_stru.dmp log=posserver_stru.log
exp bf_sys_user/dhhzdhhz owner=bf_sys_user rows=y file=posserver_sysuser.dmp log=posserver_sysuser.log
在本店POS服务器导入
imp cs_pos/dhhzdhhz fromuser=cs_pos,bf_sys_user,csbjf,bfapp8,bfpub8,pos_user8,bfbhdd8 touser=cs_pos,bf_sys_user,csbjf,bfapp8,bfpub8,pos_user8,bfbhdd8 ignore=y file=posserver_stru.dmp
imp bf_sys_user/dhhzdhhz fromuser=bf_sys_user touser=bf_sys_user ignore=y file=posserver_sysuser.dmp
/---建表空间
create tablespace jxc datafile ' /userdata/yblmd/jxc01.dbf' size 2048m;
create temporary tablespace jxc_t tempfile '/userdata/yblmd /jxc_t_01.dbf' size 2048m;
--追加表空间
alter tablespace jxc add datafile '/userdata/yblmd /jxc02.dbf' size 2048m;
alter tablespace jxc add datafile '/userdata/yblmd /jxc03.dbf' size 2048m;
alter tablespace jxc add datafile '/userdata/yblmd /jxc04.dbf' size 2048m;
---建用户及授权----
drop user cs_pos cascade;
create user cs_pos identified by dhhzdhhz default tablespace jxc temporary tablespace jxc_t;
grant connect,resource,dba to cs_pos;
drop user bf_sys_user cascade;
create user bf_sys_user identified by dhhzdhhz default tablespace jxc temporary tablespace jxc_t;
grant connect,resource,dba to bf_sys_user;
drop user csbjf cascade;
create user csbjf identified by dhhzdhhz default tablespace jxc temporary tablespace jxc_t;
grant connect,resource,dba to csbjf;
bfapp8,bfpub8,pos_user8,bfbhdd8为百货POS服务器用户
--exp bfapp8/DHHZDHHZ@yhmd file=(/backup/pos01_$rq,/backup/pos02_$rq,/backup/pos03_$rq,/backup/pos04_$rq,/backup/pos05_$rq,/backup/pos06_$rq) owner=bfapp8,bfpub8,pos_user8,bfbhdd8,cs_pos,csbjf,bf_sys_user buffer=640000000 filesize=2147483648 compress=N log=/backup/pos_log$rq
在其他门店POS服务器导出
exp cs_pos/dhhzdhhz owner=cs_pos,bf_sys_user,csbjf rows=n file=posserver_stru.dmp log=posserver_stru.log
exp bf_sys_user/dhhzdhhz owner=bf_sys_user rows=y file=posserver_sysuser.dmp log=posserver_sysuser.log
在本店POS服务器导入
imp cs_pos/dhhzdhhz fromuser=cs_pos,bf_sys_user,csbjf touser=cs_pos,bf_sys_user,csbjf ignore=y file=posserver_stru.dmp log=posserver_stru.log
imp bf_sys_user/dhhzdhhz fromuser=bf_sys_user touser=bf_sys_user ignore=y file=posserver_sysuser.dmp log= posserver_sysuser.log //
Oracle数据库随linux系统启动关闭及自动备份
Oracle自动启动
修改配置文件
使用root用户修改/etc/oratab文件
$ vi /etc/oratab
orcl:/ORACLE/app/product/10.2.0/db_1:N
改为:
orcl:/ORACLE/app/product/10.2.0/db_1:Y
也就是将最后的N改为Y
修改dbstart文件
# su - ORACLE
$ cd $ORACLE_HOME/bin
$ vi dbstart
找到 ORACLE_HOME_LISTNER=.....这行, 修改成
ORACLE_HOME_LISTNER=/u01/oracle/product/10.2.0/db_1 (实际安装环境中的路径)
或者直接修改成:
ORACLE_HOME_LISTNER=$ORACLE_HOME
测试dbstart是否执行
注意:此步骤可以不操作
1.修改dbstart和dbshut的日志文件的权限:
$su - root
#cd $ORACLE_HOME
#chown oracle:oinstall startup.log
#chown oracle:oinstall shutdown.log
2.执行相应的脚本进行测试
#su - oracle
$cd $ORACLE_HOME/bin
$./dbstart (./dbshut)
$ ps -efw | grep ora_
$ ./lsnrctl status
$ ps -efw | grep LISTEN | grep -v grep
5.4. 创建服务
$su – root
#cd /etc/rc.d/init.d/
#vi oracled
文件内容参见文件“oracled”
#!/bin/sh
#
# /etc/rc.d/init.d/oracled
# chkconfig: 345 99 10
# Description: Starts and stops the Oracle database and listeners
# See how we were called.
case "$1" in
start)
echo -n "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 - oracle -c dbstart >> /var/log/oracle
echo "Done."
echo -n "Starting Oracle Listeners: "
su - oracle -c "lsnrctl start" >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;
stop)
echo -n "Shutting Down Oracle Listeners: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Shutting Down Oracle Databases as part of system down." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c "lsnrctl stop" >> /var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle
echo -n "Shutting Down Oracle Databases: "
su - oracle -c dbshut >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
;;
restart)
echo -n "Restarting Oracle Databases: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Restarting Oracle Databases as part of system up." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c dbstop >> /var/log/oracle
su - oracle -c dbstart >> /var/log/oracle
echo "Done."
echo -n "Restarting Oracle Listeners: "
su - oracle -c "lsnrctl stop" >> /var/log/oracle
su - oracle -c "lsnrctl start" >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;
*)
echo "Usage: oracle {start|stop|restart}"
exit 1
esac
exit 0
保存退出。
打开终端执行:
$su - root
#chown oracle.oinstall /etc/rc.d/init.d/oracled
#chmod 775 /etc/rc.d/init.d/oracled
然后执行:
chkconfig --add oracled
chkconfig --list oracled
chkconfig --list oracled 运行结果:
oradbstart 0:off 1:off 2:off 3:on 4:on 5:on 6:off
5.5.检查服务
根据上面的运行结果,当相应的运行级别为on时(例如:5:on),在对应的 /etc/rc.d/rcN.d(例如:和5:on对应的是:/etc/rc.d/rc5.d)下面会生成一个文件:S99 oracled,使用vi S99oracled 打开该文件,可以看到该文件的内容和/etc/rc.d/init.d/ oracled内容相同,表示配置 成功,其实S99oracled 是一个到/etc/rc.d/init.d/ oracled的链接,我们可以使用file命令来查看:
$file /etc/rc.d/rc5.d/S99oracled
S99oracled:symbolic link to '../init.d/oracled
备注说明:
脚本文件中的:
# chkconfig: 345 99 10
指出3,4,5级别启动这个服务,99是在相应的/etc/rc.d/rcN.d(N为前面指定的
级别,这里是345)目录下生成的链接文件的序号(启动优先级别)S99oradbstart,
10为在除前面指出的级别对应的/etc/rc.d/rcN.d(N为除345之外的级别)目录生成的
链接文件的序号(服务停止的优先级别)K10oradbstart
Oracle自动备份
1. 用oracle用户创建备份脚本backup_pos。
Vi backup_pos
如下:
# creator: GuoQiang Lan
# function: backup database with expdp
# creator: GuoQiang Lan
# function: backup database with expdp
# usage: crontab on AS4
#######################################################
# main script
# login oracle with sys user
# dumpdir is directory of oracle10g
#######################################################
export tdate=pos_`date +%Y%m%d`
export dump=/backup
export arch=/archivelog
find $dump -name "*.dmp" -mtime +3 -exec rm -rf {} \;
find $dump -name "*.log" -mtime +3 -exec rm -rf {} \;
find $arch -name "*.dbf" -mtime +7 -exec rm -rf {} \;
expdp cs_pos/dhhzdhhz dumpfile=01_$tdate.dmp,02_$tdate.dmp directory=dumpdir schemas=cs_pos,bf_sys_user job_name=pos_job parallel=2 logfile=$tdate.log
给backup改属性
#chown oracle.oinstall /backup/backup_pos
#chmod 775 /backup/backup_pos
2.用cs_pos用户登陆sqlplus 后,创建备份目录:
Sql>create or replace directory dumpdir as ‘/backup’
Sql>exit;
3.切到用户root后,
# crontab –e
加如备份策略:
01 01 * * * su - oracle -c /backup/backup_pos
敲wq! 退出保存。
在oracle下,/backup目录中,手工备份用./backup_pos
新店的pos服务器初始化数据
insert into bfconfig (JLBH, CATALOG_ID, DATATYPE, LX, DEF_VAL, CUR_VAL, MAX_VAL, MIN_VAL, YY, TM)
values (0, 1, 0, '本分店编号', '0', '3', '100', '0', '本分店编号', 1);
第一种情况(新安装oracle):
若没有创建数据库,首先安装数据库软件oracle10.2.0.1(不要建数据库),然后只需要解压P8202632_10205_nt.zip后,直接运行runinstall程序,安装升级补丁升级数据库软件即可。然后再创建数据库。
第二种情况(已经安装oracle):
1、若已经创建数据库,则还需要关闭正在运行的数据库与相应监听程序。
然后只需要解压P8202632_10205_nt.zip后,直接运行runinstall程序,安装升级补丁升级数据库软件。
2、启动sqlplus
sqlplus / as sysdba
!!!!注意:将以下“d:\oracle\product\10.2.0\db_1”换成实际oralce安装路径。
SQL>startup upgrade
SQL>@d:\oracle\product\10.2.0\db_1/rdbms/admin/catupgrd.sql;
待catupgrd.sql脚本执行完成,花了半个多小时;
==========================================================================================
SQL>shutdown immediate
shutdown immediate关闭数据库;
==========================================================================================
SQL>startup
startup启动数据库,执行脚本D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlrp.sql;
SQL>@d:\oracle\product\10.2.0\db_1/rdbms/admin/utlrp.sql;
SQL> select * from utl_recomp_errors;
未选定行(这里说明没有错误)
执行检查:
SQL> select name from v$database(确认ORACLE_SID正确,为orcl)
SQL> show user(确认当前使用者为SYS)
SQL> @d:\oracle\product\10.2.0\db_1/rdbms/admin/catalog.sql;(重建SYS用户视图 )
==========================================================================================
SQL>shutdown immediate
SQL>startup
数据库启动成功
==========================================================================================