
2008-5-24 21:04
yanfenggood
关于数据库连接问题
我在机上创建两个数据库orcl和test,在doc登陆如下:
C:Documents and Settingsyanfeng>sqlplus system/root@orcl as sysdba
SQL*Plus: Release 10.1.0.2.0 - Production on 星期六 5月 24 20:49:21 2008
Copyright (c) 1982, 2004, Oracle. All rights reserved.
Connected to an idle instance.
登陆后改换其他用户登陆
[color=Red]SQL> conn yanfeng/yanfeng[/color]
ERROR:
ORA-12560: TNS:protocol adapter error
Warning: You are no longer connected to ORACLE.
[color=Red]为什么出现以上问题????[/color]
紧接着在同一个窗口我又再改成如下用户登陆,把数据库打开
SQL> conn system/root@orcl as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 171966464 bytes
Fixed Size 787988 bytes
Variable Size 145750508 bytes
Database Buffers 25165824 bytes
Redo Buffers 262144 bytes
Database mounted.
再接着以如下身份登陆,还是同一窗口
SQL> conn yanfeng/yanfeng@orcl
Connected.
这次成功,想问下这又是为什么,还有我在上面doc已经用这句话[color=Red]“sqlplus system/root@orcl as sysdba”[/color],为什么登陆数据库后切换用户时还是得写如下格式“SQL> conn yanfeng/yanfeng@orcl”(在机上有两个数据库实例orcl和test)
2008-5-24 21:16
晶晶小妹
第一个问题,是因为在数据库没有打开时,只能以AS SYSDBA登录管理用户。这个时候普通用户是无法登录的,道理很简单。用户的密码等信息都是在数据库内存贮着的,数据库没打开,没办法读出密码进行核对。而管理用户不一样,它的密码没有记录在数据库中,而是在密码文件中的。
2008-5-24 21:18
晶晶小妹
第二个问题,你是不是不想用“SQL> conn yanfeng/yanfeng@orcl”,
而想用“SQL> conn yanfeng/yanfeng”登录。
这样的话,使用设置DOS环境变量的命令设置一下:
SET ORACLE_SID=数据库SID
然后再进入SQLPLUS,就可以不用在用户名后加@了
2008-5-24 21:27
yanfenggood
回复 #3 晶晶小妹 的帖子
但我已经用sqlplus system/root@orcl as sysdba
登陆了,为什么切换用户时还是用@orcl啊
2008-5-24 21:27
yanfenggood
回复 #3 晶晶小妹 的帖子
希望您可以解释再清楚一点谢谢你啊
2008-5-24 23:09
晶晶小妹
已经用sqlplus system/root@orcl as sysdba登录,和切换用户是没有关系的。
你切换用户,就是重新登录了。重新登录和上一次登录没有关系。
“CONN 用户/密码@服务名 ” 这是ORACLE的登录命令,不能说因为以前已经登录过谁了,就省略其中的某一部分。
如果你设置了环境变量ORACLE_SID,“@服务名”是可以省略的。
2008-5-25 00:14
yanfenggood
回复 #6 晶晶小妹 的帖子
能否留下您的联系方式qq,如果遇到问题可以问问你谢谢
2008-5-25 22:23
jason_wang2002
@后面跟着的是TNS_NAME
TNS_NAME一般来说是通过tnsnames.ora来解析的,例如以下内容
MTSDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.4.165)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = MTSDB)
)
)
第一行MTSDB就是TNS_NAME,通过解析TNS_NAME找到远端的IP和SERVICE_NAME
再通过远端的listener.ora文件把SERVICE_NAME解析成ORACLE_SID
最后连接到具体的数据库
如果只连接本机的ORACLE的话,只要在.bash_profile指定ORACLE_SID和你想连接的数据库SID一样就可以了
下面以Linux为例
$ echo "ORACLE_SID=mtsdb" >> .bash_profile
$ echo "export ORACLE_SID" >> .bash_profile
$ sqlplus /nolog
SQL>conn jason/jason
使用jason用户时不用指定@,oracle会自动连接到mtsdb数据库
[[i] 本帖最后由 jason_wang2002 于 2008-5-26 09:18 编辑 [/i]]
2008-5-26 11:51
yanfenggood
回复 #8 jason_wang2002 的帖子
谢谢
2008-5-27 11:11
zggyl
晶晶小妹回答的很完整了
2008-5-29 23:42
DINGNING239
很简洁,很完美
2008-7-4 11:51
owlstudio
晶晶小妹思路很清晰!赞一个!
2008-7-16 17:01
jiayuping
高手就是不同
高手
页:
[1]

Powered by ITPUB论坛