简答题 1.  动态注册和静态注册有什么区别?
【正确答案】Oracle的注册就是将数据库作为一个服务注册到监听程序,而客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库。这个服务名可能与实例名一样,也有可能不一样。在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务,根据注册方式的不同,目前Oracle支持动态注册和静态注册这两种注册方式。
   动态注册是实例启动的时候PMON进程根据参数文件中的NSTANCE_NAME, SERVICE_NAMES两个参数将实例和服务动态注册到LISTENER中。动态注册默认只注册到默认的监听器上(名称为LISTENER、端口为1521),如果要向非默认监听注册,那么需要配置LOCAL_LISTENER参数。需要注意的是,动态注册默认端口在数据库启动后大约1min之后才可以查询(lsnrct status),但可以在数据库中使用SQL语句“ALTER SYSTEM REGISTER;”立即注册数据库。
   有两种使用LOCAL_LISTENER的方式,下面分别介绍。
   第一种方式,在Oracle用户下的$ORACLE_HOME/network/admin/tnsnames.ora文件中配置监听器的名称,然后配置LOCAL_LISTENER参数的值,如下:
   
   然后以SYS用户运行:
   
   第二种方式,直接配置LOCAL_LISTENER参数的值,如下:
   
   需要注意的是,若LOCAL_LISTENER设置为空,则下一次数据库启动的时候会自动配置该参数的值。
   静态注册就是在监听启动的时候,不管实例启动了没有,实例的名字都已经注册到监听中了,主要用于DBA远程启动数据库实例。静态注册主要在$ORACLE_HOME/network/admin/listener.ora文件中配置,静态注册的示例如下:
   
【答案解析】