oracle实例名、数据库名与服务名的理解
实例名(instance_name),一个用于数据库和操作系统之间通信的标志,数据库和操作系统之间要进行交互用的就是实例名,实例名可以和数据库名相同,一会再说数据库名,一般一个数据库名对应一个实例名,一对一关系,但在oracle的集群应用中,数据库名和实例名就是一对多的关系了。
查看实例名:select instance_name from v$instance;
oracle_sid与instance_name的关系:同样都是实例名,instance_name是oracle数据库参数,而oracle_sid是操作系统环境变量,操作系统所访问的实例名,必须是oracle_sid,oracle_sid必须与instance_name一致。
数据库(db_name)名就是数据库的唯一标识,相当于人的身份证一样,数据库名在创建时应该就要考虑好,后面尽量不要修改,因涉及修改的地方比较多,容易出错,在创建数据库create database时,其中的参数必须是DB_name,否则会出错,修改数据库时同理。注,这边的创建数据库其实是创建数据库文件,也就是俗称的用户。
查看当前数据库名:select name from v$database;
服务名(service_name),一般来讲,数据库服务名与数据库名相同。
查看服务名:select value from v$parameter where name = 'service_name';
上述均为个人观点,如有不对请多多指正,共同进步!
相关文档:
从游标提取数据
从游标得到一行数据使用FETCH命令。每一次提取数据后,游标都指向结果集的下一行。语法如下:
FETCH cursor_name INTO variable[,variable,...]
对于SELECT定义的游标的每一列,FETCH变量列表都应该有一个变量与之相对应,变量的类型也要相同。
例:
SET SERVERIUTPUT ON
DECLARE
......
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。
举例说明:
例如表:student(学生)表,表结构为:
ID char(6) --学号
name ......
症状:oracle sqlplus没反应
oracle10g的有十几个机器客户端10.2.0.1.0,执行sqlplus这个命令没反映。此时cpu使用为99.9%,观察了一会,不释放。
oracle其他命令都好使。
环境变量、ping tnsname等都没问题。。且这些机器都是至少运行了200多天左右,
但一旦重启OS就好使了。。
或者不重启OS,换成9i的客户端,sqlplus ......
安装前的准备:
登录系统:sqlplus system/0621
1. 从数据字典v$instance中获取数据库的实例名和版本号:select instance_name,version from v$instance;
2. 从数据字典v$version中获取版本的详细信息:select * from v$version;
3.确认oracle所使用的参数文件 ......
最近发现一个比较有意思的问题:
当我们在执行一条查询语句时,如果条件谓词中含有函数,如 abs(age)<10,此时,通过查询计划看到的结果集的基数值与实际的值相差很大。当我们改变查询条件时,如abs(age)<20,这时的基数值不会改变,和abs(age)<10得到的基数值一样。
但现在还没找到问题的原因,searching... ......