一、原因:pl/sql 每当oracle client中service name发生变化,都会按照client安装目录下最新的tnsnames.ora,去作为它的读取文件;如果该文件在卸载oracle client后被手工删除或手工改动过后,未在oracle client中修改;则会报“ORA-12514:tns:无法解析指定的连接标识符”错误。
二、解决方法:
1、用tnsping 检测 plSQL登陆时database(数据库)别名是否可正确解析,如报“TNS-03505:无法解析名称”,则此database别名有冲突,需更改。
2、手工改动tnsnames.ora后,在oracle client中修改主机名(“对象”--“将数据库添加到树”--“从本地的??”,然后把错误主机名删除或从树中移除)
3、重新打开plSQL,用正确的database别名登陆,即恢复正常
4、如仍有问题,不登陆进入plSQL界面"tools”--"Preferences"--"Oracle"--"Connection",把"home”(oracle主目录名)里的数据清空,应用后,重新启动plSQL即可。
三、附录:
1、在做以上更改后oracle自带的sqlPLUS,可能会出现不能正常登陆远程服务器的情况;因为其访问的是database下的tnsnames.ora文件,目录与client的不一样,默认为 X(盘符):\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora
2、解决方法:只需将client下tnsnames.ora中定义的主机字符串(service_name)的命令行复制到database 下的tnsnames.ora内,然后保存就可以了。
TreeNode tno = new TreeNode("root")DataTable dt = new DataTable()
dt.Columns.Add("ID")
dt.Columns.Add("Name")
dt.Columns.Add("Category")
dt.Rows.Add("1", "民政人士", "政治面貌")
dt.Rows.Add("2", "其他党派", "政治面貌")
dt.Rows.Add("3", "博士", "学历")
dt.Rows.Add("4", "硕士", "学历")
dt.Rows.Add("5", "本科", "学历")
dt.Rows.Add("6", "大专", "学历")
DataTable categoryTable = dt.DefaultView.ToTable(true, new string[] { "Category" })
foreach (DataRow category in categoryTable.Rows)
{
tno.Nodes.Add(category["Category"].ToString(), category["Category"].ToString())
}
foreach (TreeNode item in tno.Nodes)
{
foreach (DataRow name in dt.Rows)
{
string secondNode = name["Category"].ToString()
if (item.Text.Equals(secondNode))
{
item.Nodes.Add(name["Name"].ToString())
}
}
}
treeView1.Nodes.Add(tno)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)