《oracle11g安装配置手册.docx》由会员分享,可在线阅读,更多相关《oracle11g安装配置手册.docx(36页珍藏版)》请在三一办公上搜索。
1、oracle安装配置手册 V1.0版Oracle安装配置手册V1.0版第 35 页 共 36 页目 录1安装Oracle前的系统准备工作21.1检查需要的软件包21.2修改系统内核参数21.3创建oracle组和用户31.4创建oracle安装目录31.5设置oracle用户环境变量32安装Oracle42.1解压缩安装文件42.2安装ORACLE43创建数据库103.1配置监听103.2创建数据库实例143.3检查oracle实例是否安装成功213.4设置开机自启动数据库实例214数据库配置224.1数据库基本信息224.2修改ORACLE核心参数224.3建数据库表空间234.4建数据库用
2、户234.5导入数据234.6用PLSQL Developer工具编译失效对象234.7修改用户密码245系统故障处理245.1数据库文件损坏245.2Oracle逻辑结构故障的处理方法:325.3数据库服务器硬件故障341 安装Oracle前的系统准备工作1.1 检查需要的软件包以root用户登录系统,使用rpm -q 软件包关键词命令进行检测rpm -q -qf binutils compat-libstdc+-33 elfutils-libelf elfutils-libelf-devel gcc glibc gcc-c+ glibc-common glibc-devel glibc-h
3、eaders libaio libaio-devel libgcc libstdc libstdc+-devel make sysstat unixODBC unixODBC-devel1.2 修改系统内核参数在/etc/sysctl.conf中添加以下行: vi /etc/sysctl.conffs.aio-max-nr = 1048576fs.file-max = 6815744#kernel.shmall = 2097152#kernel.shmmax = 536870912kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv
4、4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048586运行下面的命令应用以上OS参数:/sbin/sysctl p添加以下行到/etc/security/limits.conf文件中:vi /etc/security/limits.conf* soft nproc 2047* hard nproc 16384* soft nofile 1024* hard
5、 nofile 65536如果/etc/pam.d/login文件中没有以下行,则添加以下内容:vi /etc/pam.d/loginsession required pam_limits.so修改/etc/selinux/config文件来关闭linux防火墙,确保SELINUX设置如下:vi /etc/selinux/configSELINUX=disabled1.3 创建oracle组和用户groupadd oinstall groupadd dba useradd -g oinstall -G dba oraclepasswd oracle1.4 创建oracle安装目录mkdir /
6、oraclechown -R oracle:oinstall /oraclechmod -R 775 /oracle1.5 设置oracle用户环境变量以oracle用户登陆系统,在.bash_profile文件尾添加以下行:vi /home/oracle/.bash_profile# Get the aliases and functionsif -f /.bashrc ; then. /.bashrcfi# User specific environment and startup programsORACLE_SID=amdbORACLE_BASE=/oracleORACLE_HOME=
7、$ORACLE_BASE/product/11.2.0/dbhome_1export ORACLE_SID ORACLE_BASE ORACLE_HOMEPATH=$PATH:$ORACLE_HOME/bin:$HOME/binexport PATHLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libexport LD_LIBRARY_PATHCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlibexport CLASSPATHif $USER = oracle ; the
8、n if $SHELL = /bin/ksh ; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fifi2 安装Oracle 2.1 解压缩安装文件$ mkdir /oracle/soft通过FTP上传安装包到/oracle/soft/目录下使用命令unzip 文件名 解压安装包unzip p10404530_112030_Linux-x86-64_1of7.zipunzip p10404530_112030_Linux-x86-64_2of7.zip设置oracle帐户可以操作安装文件所在的目录chown
9、 -R oracle:oinstall /oracle/softchmod -R 755 /oracle/soft2.2 安装ORACLE用oracle帐户进入安装文件所在目录,执行如下命令即可看到安装界面$ ./runInstaller如果无法看到安装界面,请使用root帐户执行如下命令后再运行安装程序:# export DISPLAY=:0.0或者ip:0.0# xhost +$ ./runInstaller 或 ./runInstaller -ignoreSysPreReqs (跳过系统检查)如果出现界面乱码现象,执行以下命令:export LANG=en出现安装界面后,根据界面提示进行
10、相关的设置:安装完成的最后步骤,操作如下:$ su - root# /oracle/oralnventory/orainstRoot.sh #/oracle/product/11.2.0/dbhome_1/root.sh3 创建数据库3.1 配置监听1、以oracle用户登录系统运行netca命令$ netca2、添加监听程序3、输入监听程序名4、使用默认端口15215、完成配置6、启动监听$ lsnrctl start3.2 创建数据库实例以oracle用户登录系统,运行dbca命令创建数据库实例$ dbca1、选择创建数据库2、选择创建数据库模板,选 定制数据库3、输入数据库全局名及SID
11、: amdb4、设定数据库账号密码5、设置闪回区大小,这里选择默认值大小6、设置数据库实例SGA、PGA大小,视操作系统内存大小,一般如果此系统只有ORACLE应用,建议分配给ORACLE实例80%的大小,如果数据库为OLTP应用的,则其应用一般都是小的短的进程,所需要的pga也相应较少,所以该值通常为总共分配给Oracle实例的20%,另外的80%给SGA,如果是OLAP的应用,建议各占50%。而如果数据库是混合类型的,一般会先分配给pga 40%的初始值,然后随着应用不断监控和调整PGA。7、设置数据库实例数据块大小及用户最大进程数8、设置数据库实例字符集、9、检查参数文件及所有数据文件位
12、置是否正确10、点击 完成 开始创建数据库实例3.3 检查oracle实例是否安装成功$ sqlplus / as sysdba;SQL*Plus: Release 11.2.0.3.0 Production on Wed Nov 21 15:11:28 2012Copyright (c) 1982, 2011, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionWith the Partitioning, Re
13、al Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsSQL select * from v$version;BANNER-Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionPL/SQL Release 11.2.0.3.0 - ProductionCORE 11.2.0.3.0 ProductionTNS for Linux: Ve
14、rsion 11.2.0.3.0 - ProductionNLSRTL Version 11.2.0.3.0 - ProductionSQL3.4 设置开机自启动数据库实例root用户登录:# vi /oracle/oraclestart.sh# !/bin/sh su - oracle EON export ORACLE_SID=amdb lsnrctl start sqlplus /nolog /etc/rc.loca4 数据库配置4.1 数据库基本信息 数据库类型:Oracle 数据库版本:11.2.0.3.0 数据库SID:amdb 数据库别名: amdb 语言:AMERICAN_AM
15、ERICA 数据库字符集(NLS_CHARACTERSET):UTF8 国家区域字符集(NLS_NCHAR_CHARACTERSET):UTF84.2 修改ORACLE核心参数$ sqlplus / as sysdba;alter system set nls_length_semantics = CHAR scope=spfile; alter system set sessions=3000 scope=spfile; alter system set processes=2500 scope=spfile; alter system set open_cursors=3000 scope
16、=both;alter system set db_files=500 scope=spfile ;alter system set job_queue_processes=30 scope=both;alter system set nls_date_format=YYYY-MM-DD scope=spfile;修改后重启数据库生效Sqlshutdown immediate;Sqlstartup;4.3 建数据库表空间$ sqlplus / as sysdba;4.4 建数据库用户$ sqlplus / as sysdba;4.5 导入数据imp system/oracle服务名 fromu
17、ser=(XXX) touser=(XXX) ignore=y recordlength=65535 buffer=1048576000 file=XXXX.dmp log=XXX.log4.6 用PLSQL Developer工具编译失效对象PLSQL打开-工具-编译无效对象或者用命令$ sqlplus / as sysdba;Sql/oracle/product/11.2.0/dbhome_1/rdbms/admin/utlrp.sql4.7 修改用户密码$ sqlplus / as sysdba;alter user 用户名 identified by 密码;5 系统故障处理5.1 数据
18、库文件损坏口令文件损坏处理方法: 重新生成口令文件即可,采用orapwd命令进行生成相应的口令文件到指定的位置,然后重启数据库即可单个控制文件损坏处理方法:1、 停止数据库,shutdown immediate;2、 查看初始化文件/initpmdb.ora,确定所有控制文件的路径,一般初始化参数文件路径在$ORACLE_BASE/admin/pfile3、 用操作系统命令将其它正确的控制文件覆盖错误的控制文件4、 重启数据库,startup5、 用适当的方法进行数据库全备份全部控制文件损坏处理方法:1. 确保数据库已经关闭,如果没有用下面的命令来关闭数据库: shutdown immedia
19、te;2. 从相应的备份结果集中恢复最近的控制文件。对于没有采用带库备份的点可以直接从磁带上将最近的控制文件备份恢复到相应目录;对于采用带库备份的点用相应的rman脚本来恢复最近的控制文件3. 用下面的命令来创建产生数据库控制文件的脚本:startup mount;alter database backup controlfile to trace noresetlogs;4. 修改第三步产生的trace文件,将其中关于创建控制文件的一部分语句拷贝出来并做些修改,使得它能够体现最新的数据库结构。假设产生的sql文件名字为createcontrol.sql.注意:Trace文件的具体路径可以在执
20、行完第3)步操作后查看$ORACLE_BASE/admin/bdump/alert_ORCL.ora文件来确定5. 用下面命令重新创建控制文件:shutdown abort;startup nomount;createcontrol.sql;6. 用适当的方法进行数据库全备份重做日志文件损坏处理方法:(1)、确定损坏的重做日志的位置及其状态: 1. 如果数据库处于可用状态: select * from v$logfile;select * from v$log;2. 如果数据库处于已经异常终止:startup mount;select * from v$logfile;select * fro
21、m v$log;其中,logfile的状态为INVALID表示这组日志文件出现已经损坏;log状态为Inactive:表示重做日志文件处于非激活状态;Active: 表示重做日志文件处于激活状态;Current:表示是重做日志为当前正在使用的日志文件(2)、损坏的日志文件处于非激活状态:1. 删除相应的日志组:alter database drop logfile group group_number;2. 重新创建相应的日志组:alter database add log file group group_number (log_file_descritpion,) size log_fil
22、e_size;(3)、损坏的日志文件处于激活状态且为非当前日志:1. 清除相应的日志组:alter database clear unarchived logfile group group_number;损坏的日志文件为当前活动日志文件:用命令清除相应的日志组:alter database clear unarchived logfile group group_number;如果清除失败,则只能做基于时间点的不完全恢复。打开数据库并且用适当的方法进行数据库全备份:alter database open;非system表空间的数据文件损坏 :1. 确定损坏的文件名字: select name
23、 from v$datafile where status=INVALID; 2. 将损坏的数据文件处于offline状态: alter database datafile datafile_name offline; 3. 从相应的备份结果集中恢复关于这个数据文件的最近的备份。对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。 4. 恢复数据文件: alter database recover datafile file_name; 5. 使数据库文件online: alter database datafile datafile_name onli
24、ne; 6. 用适当的方法进行数据库全备份。system表空间的数据文件损坏: 1. 以mount方式启动数据库 startup mount; 2. 从相应的备份结果集中恢复关于这个数据文件的最近的备份。对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。 3. 恢复system表空间: alter database recover datafile datafile_name; 4. 打开数据库: alter database open; 5. 用适当的方法进行数据库全备份非system表空间损坏: 1. 将损坏的表空间处于offline状态: alt
25、er tablespace tablespace_name offline; 2. 从相应的备份结果集中恢复关于这个表空间最近的备份。对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。 3. 恢复表空间: alter database recover tablespace tablespace_name; 4. 使表空间online: alter tablespace tablespace_name online; 5. 用适当的方法进行数据库全备份. system表空间损坏: 1. 以mount方式启动数据库 startup mount; 2. 从相
26、应的备份结果集中恢复system表空间最近的备份。对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。 3. 恢复system表空间: alter database recover tablespace system; 4. 打开数据库: alter database open; 5. 用适当的方法进行数据库全备份。 整个数据库的所有文件损坏: 整个数据库所有文件的损坏一般是在共享磁盘阵列发生无法恢复的灾难时才发生,这种情况下只能对数据库进行恢复。若数据库的归档目录也已经丢失,则数据库不可能做完全恢复,会有用户数据的丢失。 没采用带库备份的现场: 1.
27、将最近的备份从磁带上把各个文件解包到相应的目录下。 2. 以mount方式打开数据库: startup mount; 3. 恢复数据库: recover database until cancel; 4. 打开数据库: alter database open resetlogs; 5. 用适当的方法进行数据库全备份。 采用带库备份的现场: 1. 以nomount方式打开数据库: startup nomount; 2. 通过相应的rman脚本进行数据库软恢复。 $rman cmdfile=hot_database_restore.rcv 3. 打开数据库: alter database open
28、 resetlogs; 4. 用适当的方法进行数据库全备份。 存在最近的数据库完整冷备份前提下的一些经典紧急情况的处理: 数据文件,归档重作日志和控制文件同时丢失或损坏: 无新增archives 时的状况: 条件和假设:自上次镜像备份以来尚未生成新的archive log(s); Archivelog Mode; 有同步的datafile(s) 和control file(s) 的镜像(冷)拷贝 恢复步骤: 1. 将镜像拷贝的datafile(s) 和control file(s) 抄送回原始地点: $ cp /backup/good_one.dbf /orig_loc/bad_one.dbf
29、 $ cp /backup/control1.ctl /disk1/control1.ctl 2. 以mount 选项启动数据库: $ sqlplus /nolog connect / as sysdba startup mount 3. 以旧的control file 来恢复数据库: recover database using backup controlfile until cancel; * 介质恢复完成 (必须马上cancel ) 4. Reset the logfiles (对启动而言不可省略): alter database open resetlogs; 5. 关闭数据库并做一
30、次全库冷备份。 新增archives 时的状况: 条件和假设:自上次镜像备份以来已经生成新的archive log(s); Archivelog Mode; 有同步的datafile(s) 和control file(s) 的镜像(冷)拷贝;archive log(s) 可用。 恢复步骤: 1. 如果数据库尚未关闭,则首先把它关闭: $ sqlplus /nolog connect /as sysdba shutdown abort 2. 将备份文件抄送回原始地点: 所有Database Files 所有Control Files(没有archive(s) 或redo(s) 的情况下,cont
31、rol files 的更新无任何意义) 所有On-Line Redo Logs (Not archives) init.ora file(选项) 3. 启动数据库: $ sqlplus /nolog connect /as sysdba startup数据文件, 重作日志和控制文件同时丢失或损坏: 条件和假设:Archivelog Mode; 有同步的所有所失文件的镜像(冷)拷贝;archive log(s) 可用 恢复步骤(必须采用不完全恢复的手法): 1. 如果数据库尚未关闭,则首先把它关闭: $ sqlplus /nolog connect /as sysdba shutdown abo
32、rt 2. 将备份文件抄送回原始地点: 所有Database Files 所有Control Files 所有On-Line Redo Logs(Not archives) init.ora file(选项) 3. 启动数据库然而并不打开: startup mount 4. 做不完全数据库恢复,应用所有从上次镜像(冷)备份始积累起来的archives: recover database until cancel using backup controlfile; . . cancel 5. Reset the logfiles (对启动而言不可省略): alter database open
33、resetlogs; 6. 关闭数据库并做一次全库冷备份。 数据文件和控制文件同时丢失或损坏: 条件和假设:Archivelog Mode; 有同步的datafile(s) 和control file(s) 的冷拷贝;archive log(s) 可用 恢复步骤: 1. 将冷拷贝的datafiles(s) 和control file(s) 抄送回原始地点: $ cp /backup/good_one.dbf /orig_loc/bad_one.dbf $ cp /backup/control1.ctl /disk1/control1.ctl 2. 以mount 选项启动数据库: $ sqlpl
34、us /nolog connect /as sysdba startup mount 3. 以旧的control file 来恢复数据库: recover database until cancel using backup controlfile; * 介质恢复完成 (须在应用完最后一个archive log 后cancel ) 4. Reset the logfiles (对启动而言不可省略): alter database open resetlogs; 重作日志和控制文件同时丢失或损坏时: 条件和假设:Control Files 全部丢失或损坏;Archivelog Mode; 有Co
35、ntrol Files 的镜像(冷)拷贝。 恢复步骤: 1. 如果数据库尚未关闭,则首先把它关闭: $ sqlplus /nolog connect /as sysdba shutdown abort exit 2. 以Control File 的镜像(冷)拷贝覆盖损坏了的Control File: $ cp /backup/control1.ctl /disk1/control1.ctl 3. 启动数据库然而并不打开: $ sqlplus /nolog connect /as sysdba startup mount 4. Drop 坏掉的redo log (排除硬件故障): alter d
36、atabase drop logfile group 2; 5. 重新创建redo log: alter database add logfile group 2 /orig_loc/log2.dbf size 10M; 6. 以旧的control file 来恢复数据库: recover database until cancel using backup controlfile; (必须马上cancel ) 7. Reset the logfiles (对启动而言不可省略): alter database open resetlogs; 8. 关闭数据库并做一次全库冷备份只发生归档重作日志
37、丢失或损坏时: 根据不同环境和情况,选择下述手段之一: a. 马上backup 全部datafiles (如果系统采用一般热备份或RMAN 热备份) b. 马上正常关闭数据库并进行冷备份(如果系统采用冷备份) c. 冒险前进!不做备份而让数据库接着跑,直等到下一个备份周期再做备份。这是在赌数据库在下一个备份周期到来之前不会有需要恢复的错误发生。 注意:冒险前进的选择:如果发生错误而需要数据库恢复,则最多只能恢复到出问题archive log 之前的操作现场。从另一个角度讲,archive log(s) 出现问题时,数据库若不需要恢复则其本身并没有任何问题。 5.2 Oracle逻辑结构故障的处
38、理方法: 逻辑结构的故障一般指由于人为的误操作而导致重要数据丢失的情况。在这种情况下数据库物理结构是完整的也是一致的。对于这种情况采取对原来数据库的全恢复是不合适的,我们一般采用三种方法来恢复用户数据。 采用exp/imp工具来恢复用户数据: 如果丢失的数据存在一个以前用exp命令的备份,则可以才用这种方式。 1. 在数据库内创建一个临时用户: create user test_user identified by test; grant connect,resource to test_user; 2. 从以前exp命令备份的文件中把丢失数据的表按照用户方式倒入测试用户: $imp syst
39、em/manager file=export_file_name tables=(lost_data_table_name) fromuser=lost_data_table_owner touser=test_user constraint=n; 3. 用相应的DML语句将丢失的数据从测试用户恢复到原用户。 4. 将测试用户删除: drop user test_user cascede; 采用logminer来恢复用户数据: Logminer是oracle提供的一个日志分析工具。它可以根据数据字典对在线联机日志、归档日志进行分析,从而可以获得数据库的各种DML操作的历史记录以及各种DML操作
40、的回退信息。根据这些用户就可以将由于误操作而丢失的数据重新加入数据库内。 1. 确认数据库的utl_file_dir参数已经设置,如果没有则需要把这个参数加入oracle的初始化参数文件,然后重新启动数据库。下面例子中假设utl_file_dir=/opt/oracle/db01; 2. 创建logminer所需要的数据字典信息,假设生成的数据字典文本文件为dict.ora: execute dbms_logmnr_d.build(dictionary_filename=dict.ora, dictionary_location=/opt/oracle/db01); 3. 确定所需要分析的日志
41、或者归档日志的范围。这可以根据用户误操作的时间来确定大概的日志范围。假设用户误操作时可能的日志文件为/opt/oracle/db02/oradata/ORCL/redo3.log和归档日志/opt/oracle/arch/orcl/orclarc_1_113.ora。 4. 创建要分析的日志文件列表,按日志文件的先后顺序依次加入: execute dbms_logmnr.add_logfile(logfilename=/opt/oracle/arch/orcl/orclarc_1_113.ora,options=dbms_logmnr.NEW); execute dbms_logmnr.add
42、_logfile(logfilename= /opt/oracle/db02/oradata/ORCL/redo3.log,options=dbms_logmnr.ADDFILE); 5. 开始日志分析,假设需要分析的时间在2009-06-28 12:00:00和2009-06-28 13:00:00之间: execute dbms_logmnr.start_logmnr(dictfilename= /opt/oracle/db01/dict.ora,starttime=to_date( 2009-06-28 12:00:00,YYYY-MM-DD HH:MI:SS),endtime=to_d
43、ate(to_date(2009-06-28 13:00:00,YYYY-MM-DD HH:MI:SS); 6. 获取分析结果: select operation,sql_redo,sql_undo from v$logmnr_contents; 7. 根据分析结果修复数据。 8.结束logmnr: dbms_logmnr.end_logmnr; 9. 用适当的方法对原数据库进行数据库全备份。利用备份恢复用户数据: 采用这种方法时并不是在原数据库进行恢复,而是利用数据库备份在新的机器上重新建立一个新的数据库。通过备份恢复在新机器上将数据库恢复到用户误操作前,这样就可以获得丢失的数据将其恢复到原数据库。 1. 在新的机器上安装数据库软件。 2. 对于采用带库备份的现场,需要在新的数据库服务器上安装调试相应的备份管软件。 3. 根据用户误操作的时间点进行基于时间点的数据库恢复操作。对于没有采用带库备份的现场,可以选取用户误操作前最近的备份磁带进行恢复;对于才用带库备份的点可以通过基于时间恢复点恢复的rman脚本来进行恢复。 4.重新打开数据库: alter database open resetlogs; 5. 从新的数据库中获取丢失的用户数据,通过DML操作将其恢复到原数据库中。 6. 用适当的方法对原数据库进行数据库全备份5.3 数据库服务器硬件故障