ORA-12505
Listener refused the connection with following error:ORA-12505,TNS:listener
确定这是连接数据库的SID错误,
解决方法:
1.知道你的SID名:可以再注册表中查找,也可以通过借助Oracle的sqlplus工具并以管理员方式连接敲命令查看:select instance_name from v$instance;必须是管理员身份,否则“视图不存在”。
2.在Oracle SQL Developer连接工具上修改你的数据库SID名,我的如下(把"xe"修改成"orcl"):
3.勾选“保存命令”,“角色”选择数据库管理员。
4.点击“保存”和“测试”,并连接,剩下的就是连接成功了。
ORA-12560:TNS:协议适配器错误
在控制台下输入set oracle_sid=orcl
,然后再输入sqlplus
出现这种问题的原因就是注册表oracle_sid所代表的数据库不存在。
原因很有可能是:你使用DBCA创建了一个数据库,然后又把它删除了。
解决方案是:更改注册表,搜索oracle_sid.它在HKEY_LOCAL_MACHINESOFTWAREORACLEKEY_OraDb11g_home1
项中。
查看实例名称
select instance_name from v$instance
show parameter instance
V$instance
是视图,查看这个视图是怎么来的
SELECT * FROM v$fixed_view_definition WHERE view_name =upper('v$instance')
定义
数据库实例是用于和操作系统进行联系的标识,也就是说数据库和操作系统之间的交互使用的是数据库实例。
单机中,一个数据库对应一个实例。分布式中,一个数据库对应多个实例。一个实例只能对应一个数据库,一个数据库可以对应多个实例。
Oracle_sid
可以在控制台下使用set oracle_sid=orcl来指明oracle默认实例
也可以在注册表中修改oracle_sid
还可以在环境变量中添加oracle_sid
当创建新数据库之后,注册表中的oracle_sid变成新数据库名字。如果此时删除此数据库,注册表中的oracle_sid不会马上变回来,这是在控制台下打开sqlplus就无法创建实例。
参数文件(pfile和spfile)
initSID.ora或init.ora文件,通常位于$ORACLE_BASE/admin/<SID>/pfile
初始化文件记载了许多数据库的启动参数,如内存,控制文件,进程数等,在数据库启动的时候加载(Nomount时加载)
Oracle数据库
Oracle数据库是一系列物理文件的集合,包括控制文件、数据文件、联机日志文件、参数文件、密码文件等。
即:Oracle Database = Controlfile + datafile + logfiel + spfile
Oracle实例
Oracle实例包括了内存结构(SGA)和一系列后台进程(Background Process),两者合起来称为一个Oracle实例。即:Oracle Instance = SGA + Background Process