数据库和数据库实例
***关系:***一对多
***概念:**数据库是一组存储数据的文件(文件或磁盘);
数据库实例是管理文件的内存结构;
下图正好描述数据库和数据库实例的关系
数据库
物理存储结构
1,数据文件;
2,控制文件;
3,联机重做日志文件;
4,参数文件、网络文件、备份文件、归档重做日志文件
逻辑存储结构
块(DataBlocks),范围(extends),段(segments),表空间(TableSpaces,每个表空间至少包含一个数据文件)
数据库实例
数据库实例是客户端应用程序(用户)和数据库之间的接口
由三部分组成:系统全局区(SGA),程序全局区(PGA)和后台进程
安装oracle11g注意:
1,下载oracle11g 和客户端(**必须是三十二位的,如果想用plsql连接的话**)
2,如果oracle的TNSListener服务启动后马上自动关闭,注意看看有没有配环境变量:TNS_ADMIN:(oracle安装目录的\NETWORK\ADMIN目录)
NLS_LANG:(SIMPLIFIED CHINESE_CHINA.ZHS16GBK)
3,可在开始菜单中的:oracle目录下\NET Configuration Assistant 中**配置监听服务**、**配置数据库实例**(测试连接的时候若是失败,请重新配置登陆账 号,据说第一次测试登陆默认会失败)
oracle目录下\Net Manager中 ****查看监听服务****
4,plsql配置连接信息的话:分别配上客户端安装路径和客户端安装路径下\oci.dll;
同时将oracle安装路径下的listener.ora和tnsnames.ora文件复制到客户端的安装路径下;
oracle的优化器
RBO(已淘汰)和CBO(目前都用)
cbo:查询优化器由查询转换器(Query Transform)、代价估算器(Estimator)和计划生成器(Plan Generator)组成。
oracle的rownum
伪列是在筛选出结果后才生成的,初始值永远是1
注意:rownum从1开始;
rownum按照记录插入时的顺序给记录排序,所以有order by的子句时一定要注意啊!(只需在order by 的字段上加主键或索引即可让oracle先按该字段排序,然后再rownum)
使用时rownum,order by字段是否为主键有什么影响?
子查询中rownum rn,而rn用到外查询中到底是怎样的序列?
若id主键是按照从小到大的顺序插入的,select语句没有group by 和order by的子句时,rownum的顺序和id顺序基本一致。