实例和数据库的启动与关闭是DBA的重要职责之一。只有打开数据库,其他用户才能对数据库中的数据进行操作。一旦数据库关闭,便不能对其操作。对于DBA们来说,关闭和重新启动数据库以便优化、调整应用程序的运行是经常碰到的事情。如果用户已经进入了数据库,使用SHUTDOWN IMMEDIATE 或SHUTDOWN ABORT命令来执行关闭数据库,则用户将失去连接,直到数据库重新启动。经常关闭和启动会对数据库性能造成一定的影响,当然也会影响到用户对数据库的使用。本文从管理数据库的角度来分析在Oracle启动和关闭时经常遇到的问题,并总结了在启动和关闭Oracle数据库中应该注意的问题和事项。
启动常见问题
(一)在一个控制文件被损坏情况下,如何正常启动?
系统环境
操作系统:Windows 2000 Advanced Server
数据库: Oracle 8i R2 (8.1.6) for NT 企业版
安装路径:C:ORACLE
错误现象
因硬盘有坏道,一个控制文件损坏了,或人工误删一个控制文件,控制面板的Oracle相关服务可以启动成功,但用SQL*Plus无法连接。错误提示为“ORA-01034: ORACLE not available”。
解决方法
(1)在开始菜单中直接运行命令,进入“svrmgrl>”提示符模式。
(2)在“svrmgrl>”提示符下键入“connect internal”命令。
(3)在“svrmgrl>”提示符下键入“shutdown abort”命令关闭数据库。
(4)找到init.ora文件,它一般位于“C:Oracleadminoradbpfile”目录下,然后修改init.ora文件,使无法使用的控制文件不在control_files参数中定义。如“C:Oracleoradataoradbcontrol03.ctl”,可在init.ora中将其删除掉,或者更换成其它可启动的控制文件。中国公务网 2005-6-23 15:39:16
修改前:
control_files=(“C:Oracleoradataoradbcontrol01.ctl”.C:Oracleoradataoradbcontrol02.ctl“,”“C:Oracleoradataoradbcontrol03.ctl”)
修改后:
control_files=(“C:Oracleoradataoradbcontrol01.ctl”,“C:Oracleoradataoradbcontrol02.ctl”)
(5)重新启动数据库实例,即可解决问题。
注意:在控制文件中最少要有两个控制文件。
(二)联机热备份失败后,如何打开数据库?
系统环境:
操作系统:Windows 2000 Advanced Server
数据库: Oracle 8i R2 (8.1.6) for NT 企业版
安装路径:C:ORACLE
错误现象
进行联机热备份时,服务器发生故障(如掉电等)。重新启动服务器后,再启动数据库时,无法打开数据库,Oracle要求进行介质恢复,因为表空间还处在热备份状态。
解决方法
(1)先将数据库设置为归档模式
C:>svrmgrl
svrmgrl>connect internal
svrmgrl>alter tablespace 表空间名 begin backup;
说明:这是在表空间进行热备份模式没结束时,就强行关闭数据库所造成的错误。
svrmgrl>shutdown abort
svrmgrl>startup mount
(2)将此表空间的数据文件在没打开数据库时,设置成“end backup”模式
svrmgrl>alter database datafile %27表空间的数据文件名%27 end backup;
(3)执行表空间介质恢复
svrmgrl>recover tablespace 表空间名;
svrmgrl>alter database open;
(三)Oracle启动时,监听器不启动或打开出错?
错误现象:
ORACLE启动时,监听器不启动或打开出错;服务器端:用username/password登录正常,但用username/password@alias登录不成功;客户端:用username/password@alias登录不成功
解决方法
(1)如果是因为修改了NT的机器名,则把listener.ora文件中的host参数全部改为新的NT机器名,重新启动OracleTNSListener80服务即可。
例如:
LISTENER =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = NT_Name)(Port = 1521))
(ADDRESS=(PROTOCOL=TCP)(Host=NT_Name)(Port= 1526))
)
(2)使用监听器实用程序:LSNRCTL80.exe。
(3)检查监听器参数文件:c:orantNET80adminlistener.ora。WWW.GONGWU.COM.CN 2005-8-14 19:20:43
(4)检查监听器日志文件:c:orantNET80loglistener.log。
(5)Tnsnames.ora文件配置错误,重新配置。
(6)检查client端 Tnsnames.ora。
(四)Oracle Enterprise Manager(OEM)工具中如何以SYSOPER、SYSDBA方式登录?
软件环境:
Windows NT4.0+ORACLE 8.0.4
ORACLE安装路径为:C:ORANT
错误现象
在以Oracle Enterprise Manager(OEM)工具登录数据库时,不论是sys用户、system用户,还是其他用户,在Connect As栏中以sysdba或sysoper角色登录均遭拒绝,报错:Ora-01017:invalid username/password;logon denied,但以normal登录成功。
出错分析
在Oracle数据库中有三种连接方式:
(1)normal正常方式,基本连接方式,级别较低。
(2)sysopr系统方式,系统连接方式,高一级。
(3)sysdba管理员方式,是数据库管理员连接方式,级别最高。WWW.GONGWU.COM.CN 2005-6-23 15:39:16
Oracle8中,sys、system已经只是具有特权的普通用户,而internal才是DBA。所以在DBA进行管理数据时,只能使用具有特权的“internal”连接方式才不会出错。
解决方法
以internal/oracle方式连接即可。
Oracle数据库的启动
启动实例
启动实例,以使Oracle Server完成如下任务:
◆ 读参数文件init.ora文件,以决定如何初始化该实例;
◆ 根据参数文件中提供的SGA大小,来为SGA分配存贮空间;
◆ 启动后台进程;
◆ 打开后台跟踪文件。
实例启动分正常启动和约束启动。所谓约束启动,就是当数据库打开后,只能使具有RESTRICTED SESSION系统特权的用户与其相连接。而正常启动则允许所有用户与其相连接。
实例启动有如下三种方式:
◆ 只启动实例;
◆ 启动实例并安装数据库,但不打开数据库;
◆ 启动实例,并安装和打开数据库。
数据库安装
数据库安装就是将指定的数据库与已启动的实例相联系。被安装的数据库在打开之前保持关闭,此时只有DBA能存取。在安装数据库时,实例查找参数文件中的CONTROL-Files参数所指定的控制文件,并打开它,从中取得数据库的数据文件名和日志文件名,然后确认这些文件是否存在。如果希望多个实例并发地安装同一个数据库,则DBA可选择并行方式安装该数据库。如果希望只有一个实例可安装该数据库,则选择专用方式安装该数据库。如果ORACLE版本不支持并行服务器选项,则只能按专用方式安装数据库。当选择并行方式安装数据库时,并发安装同一个数据库的实例个数受预定义最大值的限制,而且在参数文件中必须有命名的私用回滚段或可用的公用回滚段。
打开数据库
在安装的数据库被打开之前,所有合法的用户(除DBA)都不能对该数据库进行连接和存取;只有被打开以后才能进行连接和存取。在打开数据库的同时,实例也打开在线的数据文件和在线日志文件。如果数据库是由于实例的异常而中止或电源故障而被关闭时,则下次打开它时会自动执行实例恢复。在数据库被打开时,实例试图获取一个或多个回滚段。在分布事务中,若当—个数据库因电源故障等突然被关闭,此时若有一个或多个分布式事务还没提交或回滚,则在该数据库被重新打开时,继续完成实例恢复,RECO后台进程将自动、立即和一致地解决尚未提交或回滚的任何分布事务。
常用打开数据库和实例命令方式
(1)startup nomount
非安装启动,这种启动方式下可执行:重建控制文件、重建数据库和启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
(2)startup mount dbname
安装启动,这种启动方式下可执行:数据库日志归档、数据库恢复和重新命名一些数据库文件。
(3)startup open dbname
先执行“nomount”,然后执行“mount”,再打开包括Redolog文件在内的所有数据库文件,这种方式下可访问数据库中的数据。
(4)startup等于以下三个命令
startup nomount
alter database mount
alter database open
(5)startup restrict
约束方式启动,这种方式能够启动数据库,但只允许具有一定特权的用户访问,非特权用户访问时,会出现以下提示:
ERROR:
ORA-01035: Oracle 只允许具有RESTRICTED SESSION权限的用户使用。
(6)startup force
强制启动方式,当不能关闭数据库时,可以用startup force来完成数据库的关闭,先关闭数据库,再执行正常启动数据库命令。
(7)startup pfile=参数文件名
带初始化参数文件的启动方式,先读取参数文件,再按参数文件中的设置启动数据库。例:startup pfile=E:Oracleadminoradbpfileinit.ora
(8)startup exclusive
SQL>conect internal
作为internal连接时,connect命令不需要口令,因为其授权是由操作系统隐式提供的。Internal连接等价于sys连接,它们都是拥有Oracle数据字典的用户。
应用
在Unix下启动Oracle8i,其整个过程步骤如下:
(1)telnet 主机IP或者是主机名
user:***** password:*****
(2)lsnrctl start
(3)svrmgrl
(4)svrmgrl>connect internal
(5)svrmgrl>startup
实例和数据库的关闭
关闭实例的步骤
关闭实例后,SGA从内存撤消,后台进程被停止。关闭实例的步骤如下:
(1)启动SQL*DBA
(2)作为INTERNAL用户与数据库相连接
(3)关闭实例
◆ 关闭数据库
◆ 卸下数据库
◆ 关闭实例
关闭数据库
数据库关闭时,首先将SGA中的所有数据库数据和日志项数据写入相应的数据文件和日志文件。然后关闭所有联机数据文件和日志文件。在数据库关闭后和卸下之前,控制文件仍保持打开,此时如果需要打开时,还可重新打开数据库。
卸下数据库
卸下数据库就是切断实例与数据库的联系,关闭数据库控制文件,使内存仅保留实例。
常用关闭数据库和实例命令
(1)shutdown normal(正常关闭数据库)
在正常关闭情况下,Oracle在关闭数据库前,等待所有与之相连接的用户正常结束其对话。于是在下次启动数据库时,就不需要恢复实例。
(2)shutdown immediate(立即方式关闭数据库)
当选择Immediate关闭方式时,即实现直接关闭。在SVRMGRL中执行shutdown immediate,数据库并不立即关闭, 而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。
该关闭方式主要用于下列情况:
①马上停电;
②Oracle正在非正规的运行数据库或一个数据库应用。
该方式关闭数据库过程如下:
①Oracle结束当前正在处理的SQL语句;
②回滚未提交的事务;
③Oracle不等待与之相连接的用户退出连接,就直接中断他们,使用这种关闭方式,下次启动数据库时,Oracle应自动执行实例恢复。
(3)shutdown abort(撤消实例方式关闭数据库)
这是一种最快的关闭方式,它主要用于下列情况:
①一分钟后就要停电;
②Oracle正在非正规的运行数据库或一个数据库应用,并且其它的关闭方式失效;
③启动一个数据库实例时碰到问题。
该方式关闭数据库的过程如下:
①Oracle不等待调用完成,直接中断正在处理的SQL语句;
②回滚未提交事物。
使用这种关闭方式,下次启动数据库时,Oracle应自动执行实例恢复。启动和关闭实例和数据库的操作需要connect internal系统特权,安装和打开数据库的操作还要有alter database系统特权。直接关闭数据库,正在访问数据库的会话会被突然终止,如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。
应用
在Unix中关闭Oracle8i,其具体步骤如下:
svrmgrl>connect internal
svrmgrl>shutdown
svrmgrl>exit
在关闭Oracle数据库时需注意问题
不要提前关闭SQL*NET。
当需要SHUTDOWN数据库,不要提前关闭SQL*NET,直到确认关闭了SERVER上的所有数据库后再关闭SQL*NET。如果关闭了SQL*NET,用户将失去和数据库的会话。
存档或删除旧的trace files和logs
当启动Oracle的一个实例时,Oracle把关于该实例的诊断信息写入指定的trace和log文件。每个后台进程都增加一个TRACE文件,它被存储在指定的目录,该路径由INIT.ORA或CONFIG.ORA文件中的BACKGROUND_DUMP_DEST参数指定。用户在数据库中遇到一个内部错误时也增加用户的TRACE文件,该文件的位置由INIT.ORA或CONFIG.ORA文件中的USER_DUMP_DEST参数指定。TRACE文件的个数和名称形式由使用数据库的操作系统决定。
在每次启动和关闭数据库时,Oracle不会自动删除TRACE文件。如果长期不删除这些无用文件,它们将占据数据库中大量的自由空间。数据库管理员应该很好的管理这些文件,可以采取删除或者存档的策略来避免无用文件占用大量自由空间。
SQL*NET也产生LOG文件,一般叫LISTENER.LOG,LISTENER.LOG文件大小也随着启动的次数不断的变大,所以通过妥善管理它也能有效的利用空间。查看该文件可以键入命令:
lsnrctl status
在Oracle8i中使用该命令,其显示结果为:
o200 5% lsnrctl status
LSNRCTL for SGI IRIX64: Version 8.1.6.0.0 - Production on 09-APR-2003 09:16:26
(c) Copyright 1998, 1999, Oracle Corporation. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY))
STATUS of the LISTENER
Alias LISTENER
Version TNSLSNR for SGI IRIX64: Version 8.1.6.0.0 - Production
Start Date 19-MAR-2003 14:43:53
Uptime 20 days 18 hr. 4607182418800017439 min. 56 sec
Trace Level off
Security OFF
SNMP OFF
Listener Log File /data/ora8i/OraHome/network/log/listener.log
The listener supports no services
The command completed successfully
改名ALERT LOG文件
ALERT LOG文件也是用来记录INSTANCE的诊断信息的。它的存放目录也通过BACKGROUND_DUMP_DEST参数来指定。一般情况下ALERT LOG文件命名方式为:ALERT_ .LOG。ALTER LOG文件包括了一些数据库主要事件信息,例如:startup和shutdown及redolog的使用、表空间的改变、文件的改变、内部错误信息和数据库备份状态的改变等。
ALTER LOG在后续数据库的使用中,其增长速度非常快。如果一段时间后,再查看它时,其文件已经变得非常大,所以查看它是非常的费劲。一般来讲,为了既能留下这些有用的信息,同时不至于浪费很大的空间,最好的管理办法就是给它改名。可以在任何时候更改ALTER LOG文件名,建议在SHUTDOWN/STARTUP数据库时更改名字。 vnc server配置
1。使用root用户启动系统的vncserver服务;
#service vncserver start
2。然后切换到登陆用户下面,我这里假设要使用oracle系统帐户进行远程登陆
#su - oracle
3。使用oracle用户输入以下命令:
$vncserver
如果是第一次运行,则系统会出现提示信息,提示你输入密码,这是通过终端进行登陆时需要输入的;
另外,还有一个数字信息,这个也是需要在终端登陆时输入的,即冒号后面跟着的一个数字,如:1 ,:2等等,需要记住;
4。在windows客户端使用vncviewer,输入如下:xxx.xxx.xxx.xxx:1 或者xxx.xxx.xxx.xxx:2等,后面的数字需要和服务器端的对应才行;xxx是你服务器的ip地址了;
[linux as 5] 软件要求
其他所需程序包的版本(或更高版本):
gcc-2.96-124
make-3.79
binutils-2.11
openmotif-2.1.30-11
glibc-2.2.4-31
要查看系统上安装了这些程序包的哪些版本,运行以下命令:
rpm -q gcc make binutils openmotif glibc setarchp4198954_21_linux.zip 在运行 runInstaller 之前打.
rpm -ivh compat-oracle-rhel4-1.0-5.i386.rpm (p4198954_21_linux.zip)
(不打PATH也可以)
安装 libaio-0.3.102-1.i386.rpm 和libaio-devel0.3.102-1.i386.rpm
在Red Hat Enterprise Linux 介质的第三张 CD
以 root 用户身份运行以下命令:
rpm -ivh /mnt/cdrom/RedHat/RPMS/ libaio-0.3.102-1.i386.rpm
创建数据库安装的准备工作:
1,创建user/group;
groupadd dba
groupadd oinstall
useradd oracle -g oinstall -G dba
passwd oracle
如果nobody用户不存在(id nobody命令查看),则创建:
useradd nobody2,建立oracle安装文件夹(sample);
mkdir -p /opt/oracle/10.2.0.1 /opt/oracle/oradata /opt/oracle/archivelog
chown -R oracle.oinstall /opt/oracle
chmod 755 -R /opt/oracle2, 配置环境变量;
要使用 Oracle 产品,应该或必须设置几个环境变量。
如果您在同一服务器上安装了多个 Oracle 产品或数据库,则 ORACLE_HOME、ORACLE_SID 和 PATH 变量可能会更改。
ORACLE_BASE 变量不应更改,并可以在需要时在您的登录配置文件中设置它。Oracle 提供了一个称作 oraenv 的实用程序来设置其他变量。
对于数据库服务器,建议设置以下环境变量:
使用root用户:
vi /home/oracle/.bash_profile
以下是配置文件的内容
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/10.2.0.1
ORACLE_SID=ge01
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
TNS_ADMIN=$ORACLE_HOME/network/admin
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID TNS_ADMIN NLS_LANG LANG
4, 设置系统参数;
Oracle 数据库 10g 需要以下所示的内核参数设置。
一般情况下可以设置最大共享内存为物理内存的一半,如果物理内存是 2G,则可以设置最大共享内存为 1073741824,
如上;如物理内存是 1G,则可以设置最大共享内存为 512 * 1024 * 1024 = 536870912;以此类推。在redhat上最大共享内存不建议超过
4*1024*1024*1024-1=4294967295切换到root用户:
su root
修改vi /etc/sysctl.conf, 添加:
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
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.wmem_default=262144
net.core.wmem_max=262144修改后运行"/sbin/sysctl -p"命令使得内核改变立即生效;
B) 设置oracle对文件的要求:
编辑文件: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设置oraInst.loc文件:
[root@enterprice64 ~]#vi /etc/oraInst.loc
inventory_loc=/opt/oracle/oraInventory
inst_group=oinstall
[root@enterprice64 ~]#chown oracle.oinstall /etc/oraInst.loc
确保/etc/oraInst.loc中包含上面的信息,且Oracle包含访问权限。5.解压缩Oracle10G的安装文件 :
使用Oracle用户登陆:
su - oracle
在/home/oracle 上传和解压缩10201_database_linux32.zip:
unzip 10201_database_linux32
6.开始安装oracle
L i n u x 命令行环境下安装(也可以在图形界面下安装)使用Oracle用户登陆:
su - oracle
根据希望安装的数据库版本类型选择Silent安装模式的response_file文件的类似,比如:enterprise.rsp、standard.rsp还是custom.rsp。
这里选择enterpise.rsp类型,安装盘中的database/response目录下对应的response文件拷贝出来,根据文件里面的提示对输入值进行修改。
比如这个例子中对如下的参数进行设置:
UNIX_GROUP_NAME="oinstall"
FROM_LOCATION="/home/oracle/database/stage/products.xml"
ORACLE_BASE="/opt/oracle"
ORACLE_HOME="/opt/oracle/10.2.0.1"
ORACLE_HOME_NAME="OraDbHome1"
SHOW_INSTALL_PROGRESS_PAGE= true
SHOW_END_OF_INSTALL_MSGS= true
COMPONENT_LANGUAGES=
s_nameForDBAGrp= "dba"
s_nameForOPERGrp="dba"
INSTALL_TYPE="EE"
n_configurationOption=3
RESTART_SYSTEM=false
RESTART_REMOTE_SYSTEM=false注意,所有的字符串需要放在双引号中,注意大小写。数字和布尔变量直接写就可以。
由于这里没有选择建立数据库而只安装软件,因此没有设置数据库相关的配置参数。[oracle@enterprice64 data]$ chmod 700 enterprise.rsp
面可以开始SILENT安装了:
注意,响应文件需要使用绝对路径。
cd /home/oracle/database
[oracle@enterprice64 database]$ ./runInstaller -silent -responseFile /home/oracle/enterprise.rsp用root执行如下脚本:
/opt/oracle/10.2.0.1/oraInventory/orainstRoot.sh
/opt/oracle/10.2.0.1/root.sh
不过这里Oracle存在一个bug,在root.sh脚本中,自动将OUI_SILENT参数设置为TRUE,而后的检查中,
如果发现这个值为TRUE,那么这个脚本运行会自动退出了。这里需要手工将其修改为false,
最后使用root执行一下$ORACLE_HOME/root.sh脚本就可以了。根据提示按 Enter 就可以了。
这样就在字符下成功安装了。通过SILENT模式安装数据库之后,下面继续使用SILENT模式进行数据库的建立,
仍然是拷贝安装目录下的/home/oracle/database/response/dbca.rsp到安装目录,并进行编译,
根据数据库建立方式的不同编辑不同的数据库库选项。
比如在本次安装过程中设置了下列参数:
RESPONSEFILE_VERSION = "10.0.0"
OPERATION_TYPE = "createDatabase"
GDBNAME = "ge01"
SID = "ge01"
TEMPLATENAME = "New_Database.dbt"
SYSPASSWORD = "georacle"
SYSTEMPASSWORD = "georacle"
DATAFILEDESTINATION ="/opt/oracle/oradata/"
RECOVERYAREADESTINATION="/opt/oracle/flash_recovery_area"
STORAGETYPE=FS
CHARACTERSET = "ZHS16GBK"
MEMORYPERCENTAGE = "40"
SCRIPTDESTINATION ="/opt/oracle/admin/ora10g/scripts"
EMCONFIGURATION=”LOCAL”
SYSMANPASSWORD = "georacle"
DBSNMPPASSWORD = "georacle"其中最后1项不是必须的,这个的目的是在建立数据库的同时生成脚本。
下面就可以开始SILENT模式的数据库创建了:
[oracle@enterprice64 database]$ dbca -silent -responseFile /home/oracle/dbca.rsp
用root执行如下脚本:
/opt/oracle/10.2.0.1/oraInventory/orainstRoot.sh最后可以利用netca来SILENT方式设置网络部分,同样的方法设置netca.rsp:
RESPONSEFILE_VERSION="11.1"
CREATE_TYPE= "CUSTOM"
SHOW_GUI=false
LOG_FILE=""/opt/oracle/10.2.0.1/network/tools/log/netca.log""
INSTALLED_COMPONENTS=
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES=
LISTENER_PROTOCOLS=
LISTENER_START=""LISTENER""
NAMING_METHODS=
设置的参数包括上面的部分,然后就可以使用netca启动silent配置:
[oracle@enterprice64 database]$ netca /silent /responsefile /home/oracle/netca.rsp----------------------------------------------------------------静默卸载Oracle数据库ge01
dbca -silent -deleteDatabase -sourceDB <source database sid> [-sysDBAUserName <user name with SYSDBA privileges> -sysDBAPassword <password for sysDBAUserName user name>]
例如:dbca -silent -deleteDatabase -sourceDB ge01 -sysDBAUserName sys -sysDBAPassword georacle静默卸载Oracle数据库软件
执行以下命令静默卸载Oracle数据库软件
$./runInstaller -silent -deinstall -removeallfiles -removeAllPatches "REMOVE_HOMES=" -responseFile ~/enterprise.rsp---------------------------------------------------------------------------------------(一)图形界面开始安装:
1.以oracle用户登录X-WINDOWS系统,进行Oracle的安装(远程安装需打开XDM):[ linux 5}
export DISPLAY=
cd /opt/database (或者你解压缩安装程序包的目录)
./runInstaller 或者./runInstaller -ignoreSysPrereqs
过一会儿就会出现Oracle的X安装界面注意:
1、选择advance install
2、数据库home设置为/opt/oracle/10.2.0.1
3、数据库全局名称设置为ge01
4、数据库字符集选Simplified Chinese ZHS16GBK2.其他用默认设置!
注意:安装过程中会提示以root用户登陆执行一些脚本 ,执行后再按“ok”按钮继续安装。
3、登陆并启动数据库的操作。
su - oracle
[oracle@oracle oracle]$ lsnrctl start
[oracle@oracle oracle]$ sqlplus /nolog
SQL*Plus: Release 9.2.0.0 - Production on Sat Mar 12 22:58:53 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> startup; 启动数据库
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.SQL> shutdown immediate ;关闭数据库 (OR "dbshut" command)
Database closed.
Database dismounted.
ORACLE instance shut down.4, dbstart脚本修改
数据库创建完成后,修改vi /etc/oratab,把ge01:/opt/oracle/10.2.0.1:N那一行最后的N改成Y,
修改vi /opt/oracle/10.2.0.1/bin/dbstart中ORACLE_HOME_LISTNER=/opt/oracle/10.2.0.1
然后执行dbstart启动数据库数据库可能无法启动,报告Can’t find init file …的错误,需要复制一个初始化文件:
cp /opt/oracle/admin/ge01/pfile/init.ora.* /opt/oracle/10.2.0.1/dbs/initge01.ora
重新执行dbstart就可以了。可以执行dbshut 停止ORACLEvi /etc/rc.local 加入下面一行 起动ORACLE ON system boot
su - oracle -c "lsnrctl start"
su - oracle -c "dbstart" 5. 为了root方便管理,可以写一个启动脚本
vi /etc/init.d/ora10g
#!/bin/bash
#
# chkconfig: 2345 91 19
# description: starts the oracle listener and instance status() {
pid=`ps -ef | grep ora_pmon | grep -v grep | awk '{print $8}'`
if [ "X$pid" = "X" ]
then
echo "oracle10g is not running."
exit 1
else
echo "oracle10g is running."
exit 0
fi
}case "$1" in
start)
#startup the listener and instance
echo -n "oracle begin to startup: "
su - oracle -c "lsnrctl start"
su - oracle -c dbstart
echo "oracle10g started"
;;
stop)
# stop listener, apache and database
echo -n "oracle begin to shutdown:"
su - oracle -c "lsnrctl stop"
su - oracle -c dbshut
echo "oracle10g shutdowned"
;;
reload|restart)
$0 stop
$0 start
;;
'status')
status
;;
*)
echo "Usage: ora10g [start|stop|reload|restart]"
exit 1
esac
exit 0 存为ora10g后,然后
chmod a+x /etc/init.d/ora10g
即可在以后以root身份运行/etc/rc.d/init.d/ora10g start |stop 来管oracle的启动和停止了。
如果要将这个脚本加入到系统中使其可开机运行,那么要运行以下命令:
chkconfig --level 35 ora10g on
6, 关于数据库删除重新安装的问题:
1 . 去除 /usr/local/bin 目录 下的 coraenv dbhome oraenv
2 . 去除 /etc/oratab , /etc/oracle
3 . 去掉安装 目录 /opt/oracle 目录下的 product admin oradata oralnventor 目录 。
# userdel -r oracle
# groupdel dba oinstall
rm -rf /tmp/ora*
rm -rf /opt/oracle/*
rm -rf /opt/ORCLfmap
rm -f /etc/ora*
rm -f /usr/local/bin/oraenv
rm -f /usr/local/bin/coraenv
rm -f /usr/local/bin/dbhome
7.修改Oracle10g数据库字符集
SQL> connect sys/oracle as sysdba
SQL> startup mount
SQL> alter session set sql_trace=true;Session altered.SQL> alter system enable restricted session;System altered.SQL> alter system set job_queue_processes=0;System altered.SQL> alter system set aq_tm_processes=0;System altered.SQL> alter database open;Database altered.SQL> set linesize 120;
SQL> alter database character set zhs16gbk;
alter database character set zhs16gbk
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character setSQL> ALTER DATABASE character set INTERNAL_USE zhs16gbk; # 使用INTERNAL_USE可以跳过超集的检查,ALTER DATABASE character set INTERNAL_USE Database altered.SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
SQL> select name,value$ from props$ where name like '%NLS%';NLS_CHARACTERSET
ZHS16GBK8. oracle database异机备份脚本
su - oracle
mkdir /home/oracle/dbbackup(1)vi /home/oracle/dbbackup/bachupdb.sh
#!/bin/bash
#As oracle user, chmod 744 /home/oracle/dbbackup/DBbackuprecover.sh
#crontab -e 35 1 * * * /home/oracle/dbbackup/DBbackuprecover.sh >/dev/null 2>&1
#@tip: modify local database's home directory
#@tip <ip> is remote database ip addressexport ORACLE_HOME=/opt/oracle/10.2.0.1
export PATH=$ORACLE_HOME/bin:$PATH:
export NLS_LANG=AMERICAN_AMERICA.zhs16gbk
export LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_SID=ge01dmpfile=gedb_`date +%F`.dmp
logfile=gedb_`date +%F`.log
restoredblog=restoredb_`date +%F`.log
WORK_DIR=~/dbbackupcd $WORK_DIR
exp USERID=gedb/gegedb@<ip>/ge01 file=$dmpfile log=$logfile owner=gedb
if [ 0 -eq "$?" ]
then
sqlplus / as sysdba @user.sql
imp USERID=gedb/gegedb file=$dmpfile log=./$restoredblog fromuser=gedb touser=gedb
find ./*.dmp -type f -mtime +7 -exec rm {} ;
find ./*.log -type f -mtime +30 -exec rm {} ;
exit 0
else
echo "backup error,quit!" > $logfile
exit 1
fi
#@tip ip地址修改为要备份的oracle的主机地址
exp USERID=gedb/gedb@10.248.1.5/ge01 file=$dmpfile log=$logfile owner=gedb direct=y (2)更改脚本权限:
chown oracle.oinstall backupdb.sh
chmod 744 backupdb.sh
(3)以oracle user role
crontab -e
35 2 * * * /home/oracle/dbbackup/backupdb.sh 9. restore oracle backup
(1) 先创建gedb用户和授权:
su - oracle
sqlplus / as sysdba @createUser.sql
(2)imp USERID=gedb/gegedb file=110.dmp fromuser=gedb touser=gedb
如果要第二次IMP操作要先删除用户gedb,再新建用户gedb,这样imp才不会出错.
DROP USER gedb CASCADE;
CREATE USER gedb IDENTIFIED BY gegedb;
GRANT UNLIMITED TABLESPACE TO gedb;
GRANT CONNECT TO gedb;
GRANT RESOURCE TO gedb;
GRANT DBA TO gedb;
10. oracle优化 SQL> alter system set "_kgl_large_heap_warning_threshold"=8388608 scope=spfile ; (ONLY FOR 10.2.0.1.0 )
SQL> shutdown immediate
SQL> startup
11.BUG FIX(1)10g EM乱码之快速解决
[oracle@danaly ~]$ cd $ORACLE_HOME/jdk/jre/lib
[oracle@danaly lib]$ ls font*zh_CN*
font.properties.zh_CN.Redhat font.properties.zh_CN.Redhat2.1
font.properties.zh_CN.Sun font.properties.zh_CN_UTF8.Sun [oracle@danaly lib]$ cd $ORACLE_HOME/jre/1.4.2/lib/
[oracle@danaly lib]$ ls font*zh_CN*
font.properties.zh_CN.Redhat font.properties.zh_CN.Redhat2.1
font.properties.zh_CN.Sun font.properties.zh_CN_UTF8.Sun 我们只要用合适的中文字符集文件替换缺省文件即可,我选择使用font.properties.zh_CN.Redhat来替换缺省字体定义文件: [oracle@danaly lib]$ cp font.properties.zh_CN.Redhat font.properties 替换之后需要清理一下Cache,重启EM即可. Cache路径通常位于: $ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs 清除所有gif文件即可.然后重新启动EM(2)10201上一个严重的BUG
环境 10201,AIX53
但据ORACLE解释,在任何操作系统版本都有此问题。现象:监听器启动后,隔一段时间(长短不定),就会出现无法
连接: 若是用10201版本的SQLPLUS,则会出现 NO LISTENER。
9207 版本的SQLPLUS,则会出现:没反应,HANG住。原因:10201 版本上的一个BUG:4518443。其会自动创建一个子
监听器,当出现此情况时,监听器将会挂起。
/opt/oracle/product/10g/network/log/listener.log有如下语句:
WARNING: Subscription for node down event still pending检查是否真因为此BUG造成此现象:
$ ps -ef | grep tnslsnr
ora10g 8909 1 0 Sep 15 ? 902:44 /u05/10GHOME/DBHOME/bin/tnslsnr sales -inherit
ora10g 22685 8909 0 14:19:23 ? 0:00 /u05/10GHOME/DBHOME/bin/tnslsnr sales –inherit
正常情况只有一个监听器,而此BUG则会出现两个监听器。解决方法:
打补丁4518443
或者在listener.ora 文件里加入:
SUBSCRIBE_FOR_NODE_DOWN_EVENT_<listener_name>=OFF
其中,<listener_name> 是数据库的监听器的名称。如:
默认情况下,监听器名为:LISTENER 。则语句就是:
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
同时:
cd $ORACLE_HOME/opmn/conf
mv ons.config ons.config.orig
重启监听程序:
lsnrctl stop
lncrctl start
转载:http://server.zol.com.cn/127/1274030.html