第四章管理Oracle实例(1)实例(instance)是一组Oracle后台进程和内存结构(SGA)的集合。后台进程主要包括SMON、PMON、DBWR、CKPT和LGWR等;而其内存结构则包括数据缓冲区、重做日志缓冲区、共享池,它们合称为系统全局区(SGA)。(2)OracleServer是由实例和数据库组成的。我们已经知道数据库实际上就是三种物理文件:控制文件、数据文件和联机重做日志文件。(3)一个实例只能访问一个数据库,而一个数据库可以由多个实例同时访问。(4)启动数据库时将在内存中创建与该数据库所对应的实例。实例是通过初始化参数control_files与数据库建立关联的。该参数用于指定数据库的控制文件名,控制文件中又指出了数据文件和联机重做日志文件的名称和位置。4.1Oracle用户身份认证在数据库创建之后,只有具有合法身份的用户才能够访问数据库。用户身份认证方式有(1)操作系统认证、(2)口令认证和(3)数据库服务器认证三种方式。数据库服务器的认证方式需要每个连接到Oracle的用户都在数据库中有一个账户,但这些帐户的信息都保存在数据库内部,在打开数据库之前,不能使用这些信息来对用户进行身份认证。因此在执行如启动实例、加载和打开数据库等操作时(这些操作数据库还没打开)就不能使用数据库服务器的认证方式,只能使用操作系统和口令认证方式。具体选用哪种认证方式主要取决于两个因素:用户的操作是在本地进行还是通过网络进行。如果需要在本地执行管理操作,或通过网络进行,但是有安全的网络连接,可以使用操作系统认证方式。如果需要从其它计算机上远程执行数据库管理操作,而又没有安全的网络连接,就只能使用口令文件认证的方式。在口令文件认证方式下,Oracle使用口令文件来对具有SYSDBA或SYSOPER权限的用户进行身份认证。在操作系统认证方式下,由操作系统的安全机制来对具有SYSDBA或SYSOPER权限的用户进行身份认证。4.1.1特殊系统权限:SYSDBA和SYSOPER在Oracle中,有两个特殊的系统权限:SYSDBA和SYSOPER,它们包含了一些最基本的管理操作权限。1。SYSDBA权限可执行的操作(1)使用STARTUP或SHUTDOWN语句启动或关闭数据库与实例(2)使用ALTERDATABASE语句执行打开、卸载、备份数据库等操作。(3)使用CREATEDATABASE语句以手工方式创建数据库。(4)对数据库进行归档或恢复。(5)具有RESTRICTEDSESSION权限,可以在受限状态下连接数据库。2。SYSOPER权限可执行的操作(1)使用STARTUP或SHUTDOWN语句启动或关闭数据库与实例。(2)使用CREATESPFILE语句创建服务器端初始化参数文件。(3)使用ALTERDATABASE语句执行打开、卸载、备份数据库等操作。(4)对数据库进行归档或恢复。(5)具有RESTRICTEDSESSION权限,可以在受限状态下连接数据库。注意:(1)具有SYSDBA和SYSOPER系统权限用户,能够在不打开数据库的情况下直接访问实例,可见他们的身份认证是与数据库完全无关的。(2)用户在使用SYSDBA或SYSOPER权限连接实例时,实际上并不是进入到用户所属的模式中,而是进入默认的模式。对于SYSDBA来说是SYS模式,对于SYSOPER来说是PUBLIC模式。4.1.2操作系统认证方式(1)如果需要在本地执行管理操作,或者可以通过安全网络连接来执行远程管理操作,则可以使用操作系统认证方式。(2)Oracle可以利用运行数据库的WindowsNT/2000操作系统来验证用户身份。在操作系统认证方式下,当用户试图建立到Oracle服务器的连接时,Oracle服务器不会向用户要求用户名和口令,而是从操作系统中获得用户的登录信息。在操作系统认证方式下,Oracle在操作系统中创建一个特殊的用户组(ORA_DBA),所有属于这个组的用户都将被授予SYSDBA或SYSOPER权限。如果登陆到操作系统中的用户属于这个组,他将自动具有SYSDBA或SYSOPER权限,因此,当他试图建立到Oracle服务器的连接时,就不必再提供用户名和口令,也不需要在数据库中创建相应的用户帐户。所有的用户认证工作都由操作系统本身来完成,不需要在数据库中保存任何相关的信息。用操作系统认证方式的步骤如下:(1)在WindowsNT/2000的计算机管理中,添加一个用户如abc,将其加入ora_dba组。(2)注销系统,以abc用户登录。(3)然后输入以下命令c:\sqlplus/nologsqlconnect/assysdba或sqlconnect/assysoper这样abc用户就以sysdba或sysoper的角色登录Oracle了。不过这时abc实际上是以sys模式连接到数据库中的。注意:(1)操作系统验证,要将初始化参数remote_login_passwordfile设置为none。(2)如果不是ora_dba组,则使用connect/assysdba命令时会出现权限不足的情况,另外要把Oracle服务启动,TNSLISTERNER可以不启动4.1.3用口令文件认证在口令文件认证方式下,具有SYSDBA和SYSOPER权限的用户被记录在一个经过加密处理的口令文件中,这个口令文件保存有SYS用户的口令,并利用SYS用户的口令来访问数据库。口令文件是一个操作系统文件,它被存储在服务器中(不是数据库中)。当用户连接数据库时,Oracle使用口令文件对用户的身份进行认证。Oracle数据库在运行过程中将参与口令文件的管理和维护工作。使用口令文件认证方式,按照如下的步骤进行操作:(1)在WindowsNT/2000中为DBA创建一个新的用户账户,如jxf。(2)使用口令实用程序orapwd创建口令文件。Oracle提供了一个口令实用程序,允许用标准的用户名和口令连接到Oracle服务器,其语法如下:orapwdfile=fnamepassword=passwordentries=entries其中,fname参数是口令文件完整的路径和文件名。file参数是必须的。password参数指定sys用户的口令。sys用户的默认口令为change_on_install。如果数据库中使用alteruser语句修改了sys用户的口令,Oracle会自动更新口令文件中sys用户的口令。password参数是必须的。entries参数指定能够具有SYSDBA或SYSOPER权限的最大数据库用户数量,在向口令文件中添加用户时,不能超过这个数目,如果需要包含更多的用户,必须重新建立口令文件。该参数是可选的。例:用口令admin为用户sys创建的口令文件,并接受10个不同口令的用户c:\orapwdfile=%oracle_home%/database/pwdstudentpassword=adminentries=10注意:口令文件的位置通常在oracle主目录的database目录下(口令文件的位置和文件名都可以随便取)(3)将初始化参数remote_login_passwordfile设置为exclusive或shared。如果将该参数设置为none,表示没有口令文件被使用,使用操作系统认证方式时将该参数设置为none。如果将该参数设置为exclusive,表明只有一个实例可以使用该口令文件,并且该口令文件可以包含除sys以外的用户。如果将该参数设置为shared,表明可以由多个实例使用口令文件,但是这时不能向口令文件加入除sys用户外的其它用户,口令文件可以识别的用户只有sys。这种设置适用于只有一位DBA同时管理多个实例的情况。(4)使用一个具有DBA权限的用户(如sys)连接到数据库,如以sysdba身份用操作系统认证方式来连接到数据库服务器。sqlconnect/assysdba(5)在数据库中创建同名的数据库用户,然后为该用户授予sysdba或sysoper系统权限。只有以sysdba身份连接,Oracle才允许管理员给用户授予sysdba或sysoper权限,否则不允许。即使以system账户连接也不行。(很重要,所以要有connectassysdba。)例:创建特权用户jxfc:\sqlplus/nologsqlconnectsys/adminassysdbasqlcreateuserjxfidentifiedbygyr&mothersqlgrantsysdbatojxf;当授权时,用户jxf就被添加到口令文件中了,其口令为gyr&mother。如果要查看口令文件中的用户信息,可以查询动态性能视图v$pwfile_users。例如sqlselect*fromv$pwfile_users;如果已授予sysdba权限,动态视图v$pwfile_users有用户名,在sysdba列有true值;如果授予sysoper权限,在sysoper列有true值。如果想撤销某用户管理员权限可以使用命令revokesysdbafrom用户名实现。例如:sqlrevokesysdbafromjxf;(6)完成上述操作后,如果使用jxf账户登录WindowsNT/2000,可以通过如下命令连接到数据库:sqlconnectjxf/gyr&motherassysdba当通过使用sysdba权限连接到数据库时,被连接到sys模式上而不是用户名jxf所提供的方案;而当使用sysoper权限连接时,被连接到public模式。•4.1.4数据库服务器认证•Oracle可以通过数据库服务器来验证用户身份。在数据库验证方式下,DBA需要为每个想登录Oracle服务器的用户创建用户和口令,登录时用户必须提供用户名和口令,该方式是最常用的用户身份验证方式。•如果采用数据库验证,那么创建用户时必须为新用户指定一个口令,口令以加密方式保存在数据库中。当用户连接到数据库时,Oracle从数据库中提取口令来对用户的身份进行验证。例如,下面的语句将创建一个数据库验证的用户peter,同时为他指定了口令、默认表空间、临时表空间、空间配额和配置文件:createuserpeteridentifiedbymylstsondefaulttablespacedatatemporarytablespacetempquota15mondataprofileaccounting_user;新创建的用户peter并不能立即连接到数据库中,因为他还不具有CREATESESSION系统权限。因此,在建立新用户之后,通常使用GRANT语句为他授予CREATESESSION系统权限,使他具有连接到数据库中的能力。如下所示:grantcreatesessiontopeter;一种更为便捷的方式是直接授予新用户Oracle中预定义的CONNECT角色,该角色包含了CREATESESSION系统权限。如下所示:grantconnecttopeter;然后peter用户就可连接数据库了,如下所示:SQLconnectpeter/mylstson•4.2初始化参数文件在每一个数据库中都有一个初始化参数文件,该文件决定数据库的物理结构、内存、数据库的极限及系统大量的默认值,是进行数据库设计与性能调节的重要文件。例如可以在初始化参数文件中定义SGA尺寸,设置数据库名称,定义用户和进程限制,定义控制文件、跟踪文件和警告日志的位置等。4.2.1Oracle9i文本参数文件在安装Oracle数据库时,系统自动创建了一个传统的文本参数文件pfile,Oracle9i提供了200多个初始化参数,并且每个初始化参数都有默认值。在修改或增加初始化参数时,必须要遵从特定的规则。如果违反了参数设置原则,在启动实例时可能会显示错误信息,或者会导致配置不起任何作用。修改或增加初始化参数的原则如下:所有的初始化参数都是可选的,只有需要设置的参数才在初始化参数文件中列出,没有列出的参数,采用默认值。每行只能设置