“ora-00911,无效字符串”的问题,为什么是";"引起的

[复制链接]
查看11 | 回复9 | 2009-1-4 14:52:28 | 显示全部楼层 |阅读模式
今天在SQL Plus里修改control_files是在最后输入了“;”提示“ora-00911,无效字符串”。
为什么啊不是输入“;”和“/”都可以运行吗?我格式 也对的啊!
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
把你的具体操作贴出来。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
ALTER SYSTEM SET CONTROL_FILES=
'H:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL',
'H:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL',
'H:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL',
'I:\Oracle back up\CONTROL04.CTL' SCOPE=SPFILE;
/
运行时提示
第5行出现错误:
ORA-00911:无效字符
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
去掉”;“,它是命令结束符,不是命令的一部分。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
要么你用英文半角的分号,要么你用/作为执行符。
不要一起用,另,请确认你的分号是全角还是半角的。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
是用了英文半角的分号,别的语句用同样的格式输入分号都可以用。就是这条就不能用不知怎么回事。
[ 本帖最后由 Erichuchahui 于 2008-11-6 20:11 编辑 ]
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
我试了一下没问题,我建了一下这样的脚本,取名为itpub1.sql
ALTER SYSTEM SET CONTROL_FILES=
'/home/jj1/ct01.ctl',
'/home/jj1/ct02.ctl',
'/home/jj1/ct03.ctl',
'/home/jj1/ct04.ctl' SCOPE=SPFILE;
/
执行结果如下:
SQL> @/home/jj1/itpub1.sql
System altered.

System altered.
仔细看看你的图片,
1ALTER SYSTEM SET CONTROL_FILES=
2'H:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL',
3'H:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL',
4'H:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL',
5'I:\Oracle back up\CONTROL04.CTL' SCOPE=SPFILE;
SQL> /
Alter system是命令的开始,为什么在它之前会有个“1”的行号呢。正常的应该是这样的:
SQL> ALTER SYSTEM SET CONTROL_FILES=
2'/home/jj1/ct01.ctl',
3'/home/jj1/ct02.ctl',
4'/home/jj1/ct03.ctl',
5'/home/jj1/ct04.ctl' SCOPE=SPFILE;
System altered.
SQL> /
System altered.
第一个;号,语句成功执行,再到/,语句又被执行了一次,这很正常。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
同意sqysl 孤独剑客的观点,
经过模拟测试,这里列出了楼主的操作过程
楼主的操作应该是:
SQL> edit
Wrote file afiedt.buf
1alter system set control_files=
2* 'E:\oracle\product\oracle db back\control01.ctl' scope=spfile; ----注意:楼主这里手工加入了";"
SQL> /----请注意这里,楼主肯定是在编辑时加入了";"之后执行了"/"运行操作,结果oracle认为";"是作为alter 命令的一部分运行的,所以出现了ORA-00911
'E:\oracle\product\oracle db back\control01.ctl' scope=spfile;

*
ERROR at line 2:
ORA-00911: invalid character

-------------重新编辑,将";"去掉就没问题了,见如下操作
SQL> edit
Wrote file afiedt.buf

1alter system set control_files=
2* 'E:\oracle\product\oracle db back\control01.ctl' scope=spfile
SQL> /
System altered.
SQL>
[ 本帖最后由 wghxwl12 于 2008-11-9 00:08 编辑 ]
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
应该不是文件夹空格的问题,因为我在跟目标也试过也是不行
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
那个“1”不是我加上去的,而是退出afiedt.buf时在SQL Plus 里给自动加上去的。
过两天有个同门可能做我这行,到时在他那试试。
谢谢大家!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行