1.1.1.1Oracle数据库的安装1.1.1.1.1前端安装ORACLE前端安装比较简单,主要通过点击setup.exe显示如图2-1所示窗体,从此窗体可以看出,可以卸载ORACLE前端或本地ORACLE数据库、添加ORACLE产品、查找已安装产品。图2-1选定安装路径,路径选择必须不能有中文,否则可能无法安装成功,见图2-2。图2-2在选定要安装的产品中选client安装(注意,可以使用oracleforwindows安装软件安装,本安装就是使用安装软件安装,因此有可以安装数据库的选项,见图2-3。图2-3如果作单纯配置而没有管理功能的话,可以使用运行时,见图2-4,这种安装模式占用空间比较小;或选择自定义,这个选项需要了解oracle部件,安装管理员主要是在后续的说明中如何了解ORACLE当前状态而用。图2-4当选完后,一直按下一步操作,提示需要配置可以暂时不做,以后单独配置,这样客户端就安装完成。1.1.1.1.2客户端配置安装完成后,可以进行客户端配置,在开始菜单按如图3-1中选NetManger。图3-1在打开的窗体中选服务命名,见图3-2。图3-2鼠标点击左边的“+”添加服务命名,在打开的窗体中Net服务名即为以后连接到数据库使用的配置字符串,这个命名应该有一定意义,下次看见就知道配置的是那台服务器,见图3-3所示。图3-3下一步选协议,一般使用TCP/IP协议,见图3-4所示。图3-4配置数据库的服务名或sid,这个值必须从数据库上查找,查找方法为:用telnet登录到数据库服务器,一般用oracle用户登录,然后进入监听文件所在目录($ORACLE_HOME/network/admin/),打开监听文件(一般为listener.ora),如下:cd$ORACLE_HOME/network/admin/catlistener.ora………….SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=PLSExtProc)(ORACLE_HOME=/home/oracle/product/9.2.0)(PROGRAM=extproc))(SID_DESC=(GLOBAL_DBNAME=ora92.domain)(ORACLE_HOME=/home/oracle/product/9.2.0)(SID_NAME=ora92)))……………从如上可以找到服务名:ora92.domain或sid:ora92,一般情况配置服务名比较好,8i以上基本都使用服务名,如下可以选服务名输入ora92.domain,也可以选sid输入ora92也能配置成功,见图3-5所示。图3-5配置完成后可以进行测试,如果测试显示连接测试成功,说明配置没有问题,由于默认的用户名为scott,有时安装数据库可能此用户没有建立,因此,需要通过更改登录配置其它的登录名和密码,一般最好用应用数据库用户名登录,配置完成后,保存配置,这样,在配置文件tnsnames.ora文件中就保存了以上配置的参数,见图3-6所示。图3-61.1.1.1.3数据库管理及操作前端配置完成后,现在可以使用ORACLE自带的工具对数据库进行管理和操作了,连接数据库对应用数据库作操作可使用如下ORACLE自带工具:SQLPlus及sqlplusworksheet,见图4-1所示。图4-1Sqlplus和sqlplusworksheet都可以用来运行各种SQL语句,调试各种存储过程,触发器等,登陆方法比较简单,输入用户名,密码及配置的字符串登陆。Oracle10G以后没有sqlplusworksheet这个工具。这个工具相对直接telnet登录服务器然后用sqlplus命令要方便的多。数据库管理工具(8i,9i)主要使用EnterpriseManagerConsole来处理,登录方式如图4-2所示。图4-2选择的登陆方式为独立启动,见图4-3所示。图4-3由于以前配置的服务写到配置文件,第一次使用此服务,需要将此配置从配置文件中添加到如下图显示的树中,如图4-4所示。图4-4登陆要求为SYS,SYSTEM等用户名,这样才能查询系统表。如果使用SYS登陆,需要将连接身份设为SYSDBA,如果为SYSTEM,可以使用NORMAL正常登陆,如图4-5所示。图4-5登陆后显示的窗体,从如图4-6看出可以查看内存信息,所有初始化配置参数等信息。图4-6鼠标点击所有初始化参数显示如图4-7所示窗体,从中可以看出各个参数当前值为多少,此参数是否可以动态修改等,如果可以动态修改,那么在此地修改后马上生效,由于参数的修改需要对数据库参数特别了解,否则可能造成数据库不能正常运行,因此,建议不要对此做修改,尤其是生产库。图4-7鼠标点击会话,在右边显示所有连接到数据库的连接,并详细列出了各个连接的状态,关联到操作系统的进程,登录到数据库的客户端的机器名等,这样对各个进程能有一个全面的了解。如图4-8所示。图4-8鼠标点击锁,在右边显示所有的锁信息,包含造成锁的进程号,锁的类型,进程所登录的用户,被锁的表等信息;由于锁的存在,可能造成其它进程无法访问此表,造成系统进程等待,数据库运行缓慢,客户端死掉等状态。锁的删除比较简单,但造成锁的原因必须比较明确,确认此锁可以被删除才能删,实际上,通过锁所属的进程号SID,关联到会话中的进程号,我们基本可以定位到造成锁的进程是哪个客户端机器发出的,因为在会话窗体上显示了此进程的机器名;如果没有机器名,说明可能是系统内部进程。实际上在后续的文档中我们可以查出造成锁的访问数据库的SQL语句,从而进一步确认问题所在,见图4-9所示。图4-9鼠标点击用户,在右边状态框中显示所有用户的状态,包含系统用户,各个应用用户等,从这里,可以看出用户默认使用的表空间名,用户创建时间,用户目前状态等,这样,对系统所有的用户有了一个大概的了解,见图4-10所示。图4-10鼠标点击表空间,在右边状态框中将显示所有表空间使用情况,给维护人员一个比较直观的显示,包含表空间大小,目前使用了多少,使用率为多少,并有状态条直观显示,实际上,在对ORACLE数据库维护过程中,表空间维护占有比较重要的位置,一旦出现表空间满了,而没有及时作出处理,可能造成数据库无法正常工作,严重时可能会宕机,因此,当表空间达到90%以上时,需要考虑是否可以扩充还是清理表空间了,见图4-11所示。图4-11点击数据文件,显示此数据库下所有的数据文件,数据文件在操作系统详细位置,数据文件所属表空间,数据文件大小,数据文件使用情况等,通过如下显示方式,可以比较直观看出数据库的数据文件所在位置,也能为在操作系统中清理文件时,提醒用户这些文件是不能删除或移动的,见图4-12所示。图4-12如上只是对EnterpriseManagerConsole一部分功能的介绍,实际上还有很多功能可以用来对数据维护,作为维护人员需要对这些功能有一个基本的了解。1.1.1.1.4管理数据库一些比较常用的SQL语句如下语句都需要在SQLPLUS以系统管理员身份登录作操作,如:sys,system等1,如下语句用来检查表空间使用情况,在没有EnterpriseManagerConsole的情况下,用sqlplus直接登陆数据库查询表空间,如下语句比较实用:selecta.tablespace_name,a.total/1048576total,(a.total-b.free)/1048576used,(1-b.free/a.total)*100ratefrom(selecttablespace_name,sum(bytes)totalfromsys.dba_data_fileswherestatus='AVAILABLE'groupbytablespace_name)a,(selecttablespace_name,sum(bytes)freefromsys.dba_free_spacegroupbytablespace_name)bwherea.tablespace_name=b.tablespace_nameorderbya.tablespace_name/2,为一个表空间增加一个数据文件(注意,此操作请在对数据库熟悉情况下使用)altertablespace表空间名adddatafile'/u1/oradata/userdata_002.ora'size50m;3,修改一个数据文件大小(注意,此操作请在对数据库熟悉情况下使用)alterdatabasedatafile'/u1/oradata/userdata_002.ora'resize500m;4,新建一个表空间(注意,此操作请在对数据库熟悉情况下使用)CREATETABLESPACETMN34DATAFILE'D:\ORACLE\ORADATA\ORA92\TMN34.ora'SIZE5MEXTENTMANAGEMENTLOCALSEGMENTSPACEMANAGEMENTAUTO;5,新建一个用户,此用户的默认表空间为TMN34,密码为tmn713,(注意,此操作请在对数据库熟悉情况下使用)Createuserdbuser40identifiedbytmn713defaulttablespaceTMN34;Grantconnect,resourcetodbuser40;6,根据进程的SID号查询被锁进程对数据库操作的sqlselectsql_textfromv$sqltextwhereaddressin(selectsql_addressfromv$sessionwherepaddrin(selectaddrfromv$processwherespid='sid'));其中sid需要将对应的进程sid写入7,杀进程方法,确定进程被锁造成客户端死掉,定位进程sid号1,selectSESSION_ID,OBJECT_IDfromv$locked_object;----从此表中获得进程号,和表ID号2,selectobject_namefromdba_objectswhereobject_id=OBJECT_ID;----根据第一个SQL查询的object_id,查询第二个SQL,获得被锁的表的名称3,selectsid,serial#fromv$sessionwheresid=SESSION_ID;----根据第一个SQL获得的SESSION_ID来查询第三个SQL,获得杀进程必须的值4,altersystemkillsession‘sid,serial#’;---将第三个SQL运行的结果放第四个SQL中,运行第四个SQL即可以将进程杀掉,有时由于回滚,可能需要一段时间才能消失。8,查找当前数据库的用户,用户创建时间selectusername,createdfromdba_users;---如上查询当前数据库的用户,确定自己所要登录的用户名,及此用户创建时间等1.1.1.1.5数据库起停1.1.1.1.5.1数据库启动1,telnet登陆到服务器所安装的ORACLE用户下2,sqlplus/nolog3,conn/assysdba4,startup注:如果数据库没有启动,conn/assysdba后将显示connecttoanidleinstance,这样可以输入startup启动数据库,数据库启动过程中注意检查启动日志是否出现ORA-等错误1.1.1.1.5.2启动监听5,telnet登陆到服务器所安装的ORACLE用户下6,lsnrctlstart注:请注意检查监听启动过程中是否出现问题,检查监听状态为lsnrctlstatus1.1.1.1.5.3数据库停止•sqlplus/nolog•conn/assysdba1.shutdown2.shutdownimmediate3.shutdownabort注:如上三种停数据库方法,一般情况请用第一种,是最安全的停库方法,第二种方法速度相对比第一种要快,因此,很多情况下可以使用第二种方法处