您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 第07章 其他常用方案对象
第7章其他常用方案对象序列用于产生自增不重复整数一般形象地称为序列生成器7.1序列创建序列语法CREATESEQUENCE[schema.]sequence[INCREMENTBYn][STARTWITHn][MAXVALUEn|NOMAXVALUE][MINVALUEn|NOMINVALUE][CYCLE|NOCYCLE][CACHEn|NOCACHE][ORDER|NOORDER];CACHE:预分配一组序列号放到内存默认情况下缓存20个序号值CYCLE:声明当序列值到达MAXVALUE时,是否从最小值(MINVALUE)开始重新启用那些被使用过的序列号1.序列创建与删除语法数据字典USER_SEQUENCES删除序列语法DROPSEQUENCEsequence;NEXTVAL:序列的下一个新的序号值CURRVAL:序列的当前序号值2.NEXTVAL和CURRVAL伪列引用方法在NEXTVAL和CURRVAL之前冠以序列的名字用“.”连接一般在SELECT语句中使用SELECT序列.nextvalFROMdual;SELECT序列.currvalFROMdual;例7.1某电子商务网站估计每月产生近千万条订单记录。该网站采用年YYYY+月MM+当月流水号nnnnnnnn的形式标识和区分每一份订单。当有用户提交一份订单时,系统自动生成该订单的编号并告知用户这个唯一的订单号。创建一序列,用于生成每月的订单流水号。EXA_07_01.SQLNEXTVAL和CURRVAL伪列可用于下列场合(1)非子查询的SELECT语句的列名表(2)INSERT语句的SELECT子查询的列名表(3)INSERT语句的VALUES子句(4)UPDATE语句的SET子句2.NEXTVAL和CURRVAL伪列NEXTVAL和CURRVAL伪列不可用于以下场合例7.2序列值的使用。EXA_07_02.SQL(1)视图定义(2)带DISTINCT关键字的SELECT语句(3)带GROUPBY、HAVING或ORDERBY子句的SELECT语句(4)SELECT、DELETE、UPDATE语句的子查询(5)CREATETABLE和ALTERTABLE语句的DEFAULT子句3.关于“间隙”序列可被多个用户共享,其值可能被用于多个表,另外由于使用CACHE选项可能导致部分序列号被丢弃,使得不是每个序列号值都会被用上或被用到同一个表中,从而产生“间隙”。所谓“间隙”即在一个表中看到的序列号值不连续、不完整的现象。“间隙”可能是正常的,也可能不是,需要综合分析以作出正确的判断。数据库链接是一个描述符,定义了一条从一个Oracle数据库服务器到另一个Oracle数据库服务器间的单向的通信路径7.2数据库链接创建数据库链接的简要语法如下:CREATE[PUBLIC]DATABASELINKdatabaselinkCONNECTTOuserIDENTIFIEDBYpasswordUSING'connect_string';user:远程数据库上的一个有效用户password:远程数据库用户的口令connect_string:连接被访问远程数据库的主机字符串该字符串位于本地Oracle数据库服务器上也称为数据库链路通过数据库链接允许本地服务器访问远程服务器中对象数据库链接的创建和使用例7.3建立一个从ORCL指向CEMERP的数据库链接。EXA_07_03.SQL可遵循以下步骤使用数据库链接(1)在本地服务器上使用NetConfigurationAssistant建立连接远程服务器的主机字符串(2)在本地服务器上创建指向远程服务器的数据库链接(3)启动远程服务器上Oracle数据库的监听进程(4)使用形如“objectname@databaselink”的格式访问databaselink所指示的远程数据库中的表、视图等数据库对象数据字典USER_DB_LINKS删除数据库链接语法DROPDATABASELINKdatabaselink;实体化视图日志是与实体化视图的主表相联系的表存储主表数据的变化,用于刷新主表的实体化视图7.3实体化视图日志在主数据库上为主表建立实体化视图日志实体化视图日志表命名MLOG$_主表名需要具备创建表的系统特权需要为实体化视图日志指出依据什么来记载主表中数据的变化一般指定为PRIMARYKEY创建实体化视图日志的语法CREATEMATERIALIZEDVIEWLOGON[schema.]table[{physical_attributes_clause|TABLESPACEtablespace|{LOGGING|NOLOGGING}|{CACHE|NOCACHE}}][{NOPARALLEL|PARALLEL[integer]}][table_partitioning_clauses][WITH{OBJECTID|PRIMARYKEY|ROWID|SEQUENCE|(column[,column]...)}[{INCLUDING|EXCLUDING}NEWVALUES]];实体化视图是一个表,它包括了从一个或多个表或视图中查询得到的结果,通常被查的表或视图位于远程数据库中7.4实体化视图提供数据的表或视图称为主表被查询的远程数据库称为主数据库。实体化视图主要用于提高分布式数据库的可用性实体化视图可分为两种简单实体化视图复杂实体化视图CREATEMATERIALIZEDVIEW系统权限1.创建实体化视图的语法CREATEMATERIALIZEDVIEW[schema.]materialized_view[OF[schema.]object_type][BUILD{IMMEDIATE|DEFERRED}]{REFRESH{{FAST|COMPLETE|FORCE}|ON{DEMAND|COMMIT}|{STARTWITH|NEXT}date|WITH{PRIMARYKEY|ROWID}}|NEVERREFRESH}ASsubquery;2.实体化视图的刷新与删除实体化视图刷新类型(1)强制(Force)(2)快速(Fast)(3)完全(Complete)实体化视图刷新时间(1)根据需要(OnDemand)(2)每次提交时(OnCommit)(3)第一次刷新时间(StartWithdate)(4)下次刷新时间(Nextdate)删除实体化视图日志语法DROPMATERIALIZEDVIEWLOGON[schema.]table;删除实体化视图语法DROPMATERIALIZEDVIEW[schema.]materialized_view;3.创建实体化视图实例例7.4假设ORCL数据库为主数据库,CEMERP数据库为从数据库。将ORCL中scott用户下部门表dept的数据5分钟刷新一次,写到CEMERP的scott用户的实体化视图mv_dept中。EXA_07_04.SQL主数据库ORCL(1)检查SCOTT用户的DEPT表有无主键(2)建立主表dept的实体化视图日志从数据库服务器CEMERP(1)授予建立实体化视图和数据库链接的系统权限(2)创建指向主数据库ORCL的数据库链接(3)建立主表dept表的实体化视图测试(1)在主表插入数据(2)查看数据刷新到实体化视图主机字符串是一个描述符,描述要连接的数据库服务器和例程它定义在数据库之外,属于OracleNet对象用法(1)用于Oracle数据库工具和非Oracle的软件工具的登录连接(2)以“CONNECTuser/password@主机字符串”形式出现在SQL脚本文件中,用于切换要连接的数据库和数据库用户身份(3)在一个具体时刻只能使用一个主机字符串连接,以某个具体的身份连接到一个数据库上主机字符串与数据库链接数据库链接是一个描述符,描述了从一个数据库到达另一个数据库的一条链路它是数据库方案对象,存储在系统数据字典中用法(1)以“对象名@数据库链接名”形式出现在SQL和PL/SQL代码中(2)在一个具体的SQL语句中,可以使用多个数据库链接名以访问多个不同数据库的对象数据库链接的建立依赖于主机字符串
本文标题:第07章 其他常用方案对象
链接地址:https://www.777doc.com/doc-4006504 .html