linux下安装Oracle的步骤以及问题的处理方法.docx
-
资源ID:52737036
资源大小:160.43KB
全文页数:29页
- 资源格式: DOCX
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
linux下安装Oracle的步骤以及问题的处理方法.docx
Linux系统下安装Oracle数据库与相关问题处理学习成果汇总版本:_1.0.0.2_日期:_2014-09-19_目录1.Linux 下安装Oracle :21.安装环境22.安装步骤21、创建Oracle用户22、修改内核参数/etc/sysctl.conf 文件,加上如下参数23、修改用户限制/etc/security/limits.conf 文件,加上下面的参数34、修改用户验证选项/etc/pam.d/login文件加上如下参数35、安装目录配置46、切换用户 su - oracle42.安装过程中的问题:71.缺省包或者依赖包问题7Linux 下缺省7个包,其中两个包(红色标准)之间有依赖关系:(缺省包全部在linux镜像下)7centOS 环境下缺省8个包:(缺省包在镜像文件下)82.vi 修改配置文件、配置环境变量无法保存问题83. sqlplus: command not found 解决方法94.Netca无法启动113Oracle使用过程121.常规命令:122.Oracle定时备份133.Oracle热备份20一 、备份前准备工作20二、数据库备份214.Oracle冷备份235.数据库使用问题:231.Oracle数据库设置为归档模式及非归档模式232.监听程序无法启动243.定时备份问题254.crontab任务规则设置问题265EXP数据库备份问题271.Linux 下安装Oracle :1.安装环境 具体安装过程不再赘述,需要注意的是:安装虚拟机、linux系统、和Oracle数据时,最好三者的的版本一致,例如:vmware 32位 、linux 32 位、Oracle 32位,这样的话,后续安装、配置过程的问题会少很多。2.安装步骤root用户下所有操作:1、创建Oracle用户# groupadd oinstall# groupadd dbacal# useradd -g oinstall -G dba oracle# passwd oracle2、修改内核参数/etc/sysctl.conf 文件,加上如下参数fs.aio-max-nr = fs.file-max = kernel.shmall = kernel.shmmax = kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = net.core.rmem_max = net.core.wmem_default = net.core.wmem_max = 应用配置# /sbin/sysctl -p3、修改用户限制/etc/security/limits.conf 文件,加上下面的参数oracle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 655364、修改用户验证选项/etc/pam.d/login文件加上如下参数session required pam_limits.so修改用户配置文件/etc/profile文件加入如下参数:if $USER = "oracle" ; then if $SHELL = "/bin/ksh" ; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fifi5、安装目录配置# mkdir -p /u01/# chown -R oracle:oinstall /u01/# chmod -R 775 /u01/chown a+x oracle:oinstall /u01/6、切换用户 su - oracle$ vi .bash_profile增加以下内容:export ORACLE_BASE=/u01/appexport ORACLE_HOME=$ORACLE_BASE/oracleexport ORACLE_SID=orclexport PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin保存时,如果越到无法保存,请以root用户登录,执行:chmod 666 /etc/sysctl.conf(root 用户)Oracle用户下操作安装oraclesu oracle :切换用户切换Oracle程序文件目录执行./runInstaller,此处建议安装时,只安装数据库软件,不安创建实例,因为同时安装软件和实例时,后续出现磁盘空间不够或者虚拟机内存不够。 执行脚本rootoradb # /u01/oraInventory/orainstRoot.sh 更改权限/u01/oraInventory.添加组的读取和写入权限。删除全局的读取, 写入和执行权限。更改组名/u01/oraInventory 到 oinstall.脚本的执行已完成。rootoradb # /u01/app/oracle/root.sh Running Oracle 11g root.sh script.The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracleEnter the full pathname of the local bin directory: /usr/local/bin: Copying dbhome to /usr/local/bin . Copying oraenv to /usr/local/bin . Copying coraenv to /usr/local/bin .Creating /etc/oratab file.Entries will be added to the /etc/oratab file as needed byDatabase Configuration Assistant when a database is createdFinished running generic part of root.sh script.Now product-specific root actions will be performed.Finished product-specific root actions.以上红字部分可以不执行,具体因软件版本要求为准。创建监听程序:切换到安装文件的根目录下:执行./netca ,创建过程不再赘述。创建数据库su - oracle切换到安装文件的根目录下:执行./dbca ,创建过程不再赘述。2.安装过程中的问题:1.缺省包或者依赖包问题 如下图:-packagesLinux 下缺省7个包,其中两个包(红色标准)之间有依赖关系:(缺省包全部在linux镜像下)compat-libstdc+-33-3.2.3-61.i386.rpmelfutils-libelf-devel-0.137-3.el5.i386.rpmelfutils-libelf-devel-static-0.137-3.el5.i386.rpmlibaio-devel-0.3.106-5.i386.rpmsysstat-7.0.2-3.el5.i386.rpmunixODBC-2.2.11-7.1.i386.rpmunixODBC-devel-2.2.11-7.1.i386.rpmcentOS 环境下缺省8个包:(缺省包在镜像文件下)compat-libstdc+-33-3.2.3-69.el6.i686.rpmelfutils-libelf-devel-0.152-1.el6.i686.rpmgcc-c+-4.4.7-3.el6.i686.rpmlibaio-devel-0.3.107-10.el6.i686.rpmlibstdc+-devel-4.4.7-3.el6.i686.rpmpdksh-5.2.14-1.i386.rpm (此包需要网上下载)unixODBC-2.2.14-12.el6_3.i686.rpmunixODBC-devel-2.2.14-12.el6_3.i686.rpm2.vi 修改配置文件、配置环境变量无法保存问题 错误:E45: 'readonly' option is set (add ! to override) 强制保存,报出:cannot restore segment prot after reloc: Permission denied 解决办法: Root 用户: Vi /etc/selinux/config 如下显示: # This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enforced.# permissive - SELinux prints warnings instead of enforcing.# disabled - SELinux is fully disabled.SELINUX=enforcing 把 SELINUX=enforcing 注释掉:#SELINUX=enforcing ,然后新加一行为:SELINUX=disabled保存,关闭。3. sqlplus: command not found 解决方法打开vi .bash_profile 信息如下:oracledg1 $ vi .bash_profile# .bash_profile# Get the aliases and functionsif -f /.bashrc ; then . /.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/binexport PATHunset USERNAMEexport EDITOR=viexport ORACLE_SID=dg1export ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/libexport PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/binexport PATH=$ORACLE_HOME/bin:$PATHumask 022红字部分可忽略解决方法:oracledg1 $ sqlplus /nologbash: sqlplus: command not foundoracledg1 $ ln -s $ORACLE_HOME/bin/sqlplus /usr/binln: creating symbolic link /usr/bin/sqlplus' to /bin/sqlplus': Permission deni edoracledg1 $ su - rootPassword:rootdg1 # ln -s $ORACLE_HOME/bin/sqlplus /usr/binrootdg1 # su - oracleoracledg1 $ sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on Mon May 11 12:51:24 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> conn / as sysdbaConnected to an idle instance.SQL> startupORACLE instance started.4.Netca无法启动netca无法正常启动:解决:(1)首先要确保修改后oracle下的.bash_profile已经生效,若还未生效可能会出现错误提示:netca:command not found此时应该回到oracle目录下执行 .bash_profile文件。执行方式 . .bash_profile (2)配置好bash_profile文件后出现如下错误:/u01/oracle/bin/netca: line 178: 11819 Aborted $JRE $JRE_OPTIONS -classpath $CLASSPATH .ca.NetCA $*经检查是由于默认的主机名导致的,修改2处oraclelocalhost $ cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=localhostoraclelocalhost$ cat /etc/hosts# Do not remove the following line, or various programs# that require network functionality will fail.再执行 hostname loaclhost让oracle用户退出重新登录就可以正常启动netca了。5. ./runInstaller 报出检查时钟、颜色检查未通过!检查监视器:监视器配置颜色256种,状态报出未通过处理方法:Su root xhost + localhost xclock 可视化时钟界面出现su oracle 继续执行3Oracle使用过程1.常规命令:Linux下启动数据库的步骤:1、以用户oracle登录;2、执行:$lsnrctl start3、执行:$sqlplus /nolog4、执行:sql>conn /as sysdba5、执行:sql>startup查看linux下的所有运行的进程:ps aux | less查看非root用户进程:ps -U root -u root -N6、执行:sql>quit -退出查看Oracle下的实例启动情况:ps -ef|grep smon 看当前库有多少个已经启动的实例,lsnrctl status2.Oracle定时备份1、登录oracle用户,在oracle目录下创建文件夹beifen 命令:mkdir beifen 命令:cd beifen 命令:mkdir export export用来放置导出文件和导出日志 2、进入beifen文件夹下 命令:touch export.sh / 创建脚本文件export.sh 命令:vi export.sh /编辑文件 增加以下内容 #!/bin/sh#source /home/oracle/.bash_profileexport ORACLE_BASE=/opt/oracleexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1export ORACLE_SID=数据库的名称cd $ORACLE_HOME/binExp merit/orcl file=/u01/backup/hk_date '+%Y%m%d%H%M%S'.dmp log=/u01/backup/merit_date '+%Y%m%d%H%M%S'.log owner=merit命令: :wq /保存退出3:在oracle用户下执行定时任务,首先了解以下命令的含义 crontab -l /列出某个用户cron服务的详细内容crontab -r /删除某个用户的cron服务crontab -e /编辑某个用户的cron服务 命令:crontab -e 增加以下内容 10 01 * * * /opt/oracle/beifen/export.sh /这句话的意思就是每天凌晨1点10分执行一次 然后进入root用户 /etc/init.d/crond stop /关闭服务 /etc/init.d/crond start /启动服 如果报错,cron: cant lock /var/run/crond.pid, otherpid may be 2699: Resource temporarily unavailable 请执行:rm -rf /var/run/crond.pid 重启即可4. Linux cron 任务 不执行/cron 任务详解: 1. cron任务不执行:hostname cron.d$ sudo crond reload crond: can't lock /var/run/crond.pid, otherpid may be 20585: Resource temporarily unavailable(1). pgrep crond 查看当前时刻正在运行的corn任务zengtai.csmhostname cron.d$ pgrep crond 20585 22298 pgrep 应该是查询 进程pid的命令说明可能两个cron任务同时运行;(2). check cron任务的:sudo tail -f /var/log/cron zengtai.csmtweb53.tanx.cm4 pat$ sudo tail /var/log/cron Aug 21 19:26:01 crond666: (root) CMD (/home/a/bin/kfc_gather -p 2905 -g tanx_gae > /dev/null 2>&1) Aug 21 19:26:01 crond671: (root) CMD (/home/a/bin/kfc_gather -p 2905 -g xengine > /dev/null 2>&1) Aug 21 19:26:01 crond674: (root) CMD (/home/a/bin/kfc_gather -p 2905 -g adpost > /dev/null 2>&1) Aug 21 19:26:01 crond676: (root) CMD (chmod o+r /opt/csr/tair/sbin/logs/server.log) Aug 21 19:26:01 crond679: (timetunnel) CMD (/home/timetunnel/logcenter/logagent/runLogAgent.sh >/dev/null 2>&1) Aug 21 19:27:01 crond865: (root) CMD (chmod o+r /opt/csr/tair/sbin/logs/server.log) 注:只要在这个log里面出现的命令就说明cron任务执行了(3). 重启cron任务html view plaincopysudo /etc/init.d/crond restart /sbin/service crond stop /sbin/service crond start sudo service crond stop/start 2. 查询问题:/home/a/bin/kfc_gather -p 2905 -g adpost sudo /home/a/bin/kfc_gather -p 2905 -g adpost strace -s 10000 -f -o /tmp/t /home/a/bin/kfc_gather -p 2905 -g adpost vim /tmp/t kfcstat localhost 2905 1 strace -s 10000 -o /tmp/t -f kfcstat localhost 2905 1 strace -s 数量 -o 输出文件 后面是一个命令;则会把后面的命令答应到stdout,但把命令在进程的所有信息输出到文件中;通过查文件来看命令都做了什么事情 3. crontab 任务不执行,首先要查询一下cron任务的宿主和语法: (1). /etc/cron.d/cron_zengtai 这个文件必须是 root:root 否则cron_zengtai 不会执行 (2). cron的语法,如果语法错误也不会执行:* * * * * -具体cron任务没有执行,sudo tail -f /var/log/cron4. cron 脚本是从别的机器复制的则 scp -p zengtai.csm.:/etc/cron.d/test_cron 则这个cron任务的时间属性不变,这个cron任务有可能不执行;需要我们touch一下 sudo touch ./cron5. cron 任务: 这段时间的运维过程中,发现了几个crontab使用雷区。 (1). 写好的程序,手动执行没问题,上crontab就报错Crontab任务的执行环境与手动执行时的执行环境不同。手动执行时,任务的执行环境为当前用户或指定用户的执行环境,典型的执行环境是环境变量,此时环境变量可以用env查看。Crontab调度时,执行环境的环境变量大为缩减,如下为用root用户执行crontab任务时的环境变量SHELL=/bin/shUSER=rootPATH=/usr/bin:/binPWD=/rootSHLVL=1HOME=/rootLOGNAME=root_=/usr/bin/env所以,编码时,尽量通过全路径名引用文件或调用命令,或者将引用的文件或者命令的路径添加到环境变量。(2)Crontab任务的输出重定向文件无写权限通常情况下,在添加crontab任务之前,都会手动执行一下待添加的crontab任务,此时,通过重定向产生的文件,只执行该任务的用户有写权限,由sudo -u指定的用户并没有写权限。本质原因是sudo u对重定向符不起作用。如此,在添加crontab任务,以sudo u中指定的用户身份运行时,由于对重定向文件无写权限,crontab任务会安静的失败(3)Crontab任务配置文件owner不是root在添加crontab任务时,如果配置文件owner不是root,任务会失败(志遥以前也提起过),不过这种失败,可以在cron日志中看到如下错误信息:(*system*)WRONG FILE OWNER(4)Crontab任务配置文件为单行Crontab任务都是单行,可如果配在配置文件中,任务字符串后没有换行符,这个任务就有可能也会静悄悄地失败。为安全起见,建议多一下按下回车键(5). 1 cron会忽略点系统的i18n,默认使用posix的来decode,导致awk识别错误2 crontab file “%”要转义3.Oracle热备份一 、备份前准备工作 备份又叫联机备份,是在数据库打开的情况下进行备份,备份期间事务处理照常进行,用户使用不受影响。热备份要求数据库处于归档模式!热备份通常以表空间为单位,可备份某一个特定表空间的所有数据文件,也可以只备份某个表空间的一部分数据文件。由于在备份过程中,数据库仍然是打开的,所以要求正在复制的各个数据文件管理的表空间必须处于备份模式。备份完后再脱离备份模式。因此备份前必须将ORACLE 数据库调整为归档模式。查看代码如下查看当前数据库归档状态:ARCHIVE LOG LIST:以下为非归档如果数据库在非归档状态下,则可以更改为归档状态。1、停止数据库,将数据库启动到MOUNT状态2、通过alter database archivelog命令将数据库修改为归档模式(如果要修改为非归档模式,则使用noarchivelog参数),然后打开数据库,查看已经成功打开做好以上准备工作就可以对数据库进行热备份了!二、数据库备份1、查询要备份表空间对应的数据文件的详细信息 select file_name from dba_data_files wheretablespace_name='USERS'2、将表空间设为备份模式ALTER TABLESPACE USERS BEGIN BACKUP;3 查看处于备份模式的数据文件: select * from v$backup;4、使用操作系统命令备份表空间的数据文件HOST COPY f:BAK HOST COPY f:oracleoradataorcl*.dbf/将前面ORACLE数据库热备份的文件拷贝到系统目录中 5、将表空间设置为正常模式ALTER TABLESPACE USERS END BACKUP;4.Oracle冷备份 相对简单,不做赘述! 5.数据库使用问题:1.Oracle数据库设置为归档模式及非归档模式一、将Oracle数据库设置为归档模式1)sql>shutdown normal/immediate;2)sql>startup mount;3)sql>alter database archivelog;4)sql>alter database open;5)archive log list;注意:show parameter log_archive_dest查看归档日志的存放位置。二、将Oracle数据库设置为非归档模式1)、关闭数据库 shutdown immediate 2)、再后面把数据库启动到mount的模式 startup mount 3)、关闭flash闪回数据库模式,如果不关闭的话,在后面关闭归档日志的时候就会出现讨厌的ora-38774错误。 alter database flashback off 4)、接着把数据库改为非归档模式 alter database noarchivelog; 5)、都修改好了以后,然后打开数据库 alter database open; 6)、察看一下归档日志的空间大小 select * from v$recovery_file_dest; 接着看一下log日志的状态 select * from v$log; 再看一下闪回日志使用状况 select * from v$flash_recovery_area_usage;2.监听程序无法启动lsnrctl status 报出如下错误:TNS-12541: TNS:no listenerTNS-12560: TNS:protocol adapter errorTNS-00511: No listenerLinux Error: 111: Connection refused处理办法:修改网卡的配置文件,重启服务后永久生效rootlocalhost # vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0 #物理设备名#IPADDR=192.168.1.100 #IP地址#NETMASK=255.255.255.0 #掩码值#NETWORK=192.168.1.0 #网络地址(可不要)#BROADCAST=192.168.1.255 #广播地址(可不要)#GATEWAY=192.168.1.1 #网关地址ONBOOT=yes # yes|no(引导时是否激活设备)USERCTL=no #yes|no(非root用户是否可以控制该设备)BOOTPROTO=static #none|static|bootp|dhcp(引导时不使用协议|静态分配|BOOTP协议|DHCP协议)然后重启服务service network restart生效,或者/etc/init.d/network restart生效重新配置监听 ./netca启动监听 lsnrctl start3.定时备份问题执行crontab 定时任务时,日志文件信息如下啊:EXP-00056: ORACLE error 12154 encounteredORA-12154: TNS:could not resolve the connect identifier specifiedEXP-00000: Export terminated unsuccessfully处理方法:查看修改成服务器ip;查看tnsnames.ora:查看红字部分确认是否正确1. ORCL =2. (DESCRIPTION =3. (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)4. (CONNECT_DATA =5. (SERVER = DEDICATED)6. (SERVICE_NAME = orcl)7. )8. )9. LISTENER_ORCL =10. (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)4.crontab任务规则设置问题错误信息如下: crontab: installing new crontab "/tmp/crontab.XXXXq4OMwO":1: bad command errors in crontab file, can't install.crontab时间格式内容与设置规则如下:* * * * * commandM H D m d command分 时 日 月 周 命令第1列表示分钟159 每分钟用*或者 */1表示第2列表示小时123(0表示0点)第3列表示日期131第4列表示月份112第5列标识号星期06(0表示星期天)第6列要运行的命令或脚本内容如果能掌握这个crontab的时间格式的定义,基本上就会避免出现“bad minute”错误。5EXP数据库备份问题 错误信EXP-00008: ORACLE error 1187 encounteredORA-01187: cannot read from file 201 because it failed verification testsORA-01110: data file 201: '/opt/ora9/product/oradata/NTDB/temp1.dbf'EXP-00000: Export terminated unsuccessfully 解决办法:从上面的错误信息可以看出是temp临时表空间的数据文件有问题,解决办法:1、删除临时表空间: alter database tempfile '/u01/app/oradata/dangshuping.dsp.dbf' drop;2、重建数据文件:alter tablespace dsp(临时表空间名) add tempfile '/u01/app/oradata/dangshuping.dsp.dbf' size 512M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;