SQL>Select owner,table_name from dba_tables where owner='SYSTEM';结果:
OWNER TABLE_NAME
SYSTEM LOGMNR_UID$
SYSTEM LOGMNR_LOG$
.
.
.
SYSTEM TB1
SYSTEM AAA
结果把数据库里所有表的名称都显示出来了,我只想要自己建立的,即只想得到TB1,AAA其他的都不想显示,请问怎么写呢?谢谢
OWNER TABLE_NAME
SYSTEM LOGMNR_UID$
SYSTEM LOGMNR_LOG$
.
.
.
SYSTEM TB1
SYSTEM AAA
结果把数据库里所有表的名称都显示出来了,我只想要自己建立的,即只想得到TB1,AAA其他的都不想显示,请问怎么写呢?谢谢
解决方案 »
- 求昨天凌晨1点到今天凌晨1点的SQL语句
- HACMP6.1 ,ORACLE 11G RAC,GPFS,AIX6.1安装的视频分享
- 碰到一个oracle汇总的很奇怪的问题,求解!
- Oracle 10G启动报错,启问能否提供解决方案?
- 急需帮助:在WindowsXp Pro下安装Oracle11g无法创建数据库
- oracle查询问题,请会的人进来看一下指点一下菜鸟
- 存储过程中给表增加一个字段并赋值 。。出错了
- 菜鸟发问:自动编号的作用?
- 以日期时间为查询条件的SQL语句怎么写呀?急!!!!!!!!!
- Oracle9i4Win2000怎样才能使用2GB以上的内存
- Oracle 9i 创建过程出现问题,帮忙解决下!
- 如何实现两个数据库数据一致
我用一句话概括:谁(用户)的东西(表,视图,索引等)放在哪里(表空间)换句话说
一张表有自己的主人,即谁拥有了这张表再看,SYSTEM也是一个用户,它有自己的表
SYSTEM是数据库建好就有的,包含了很多系统的东西
你不应该用SYSTEM用户建立你自己的应用表,如果你用SYSTEM用户建立了表
那么你建立的表属于SYSTEM用户
并非你说:“只想看到自己的表”
而实际上你的SQL并没有错,的确是“看到了自己的表”也就是SYSTEM自己的表
因为SYSTEM一出生(数据库建好后)就有很多表了,你只不过又加了一些而已
它们都是属于SYSTEM的而你在建立自己的数据的时候,应该新建一个自己的用户
比如
create user test identified by test;然后授予必要的权限,
grant connect to test;
grant resource to test;
alter user test default tablespace users;然后用test用户连接到数据库
此时当前用户是test
再建表
然后查询 select table_name from user_tables
and tablespace_name='USERS'--加上这个条件试试
跟你说的表空间是没有关系的
概念不对
我确实是把表都放到SYSTEM里了,所以把本来属于SYSTEM的表和自己建立的表都显示出来了.
我按照1楼说的重新建立了一个用户test,
有没有什么方法能使我把在SYSTEM用户里建的表移到test里,难道只能是重新用test连接数据库后再在这里建表吗,因为表很多,重新建麻烦,有没有方法使他们都移到test用户里.谢谢
先列一下哪些表是你自己的
然后 exp userid=system/密码 file=test.dmp tables=(t1,t2,t3,...)
然后 imp userid=system/密码 fromuser=system touser=test file=test.dmp
sqlplus "SYSTEM/administrator"
"先列一下哪些表是你自己的"这个是怎么写的?是
Select owner,table_name from dba_tables where owner='SYSTEM'; 这样不是还是把所有的都列出来了吗?SQL>exp userid=SYSTEM/administrator file=test.dmp tables=(TB1,AAA);
提示错误"未知的命令开头,exp userid..,忽略了剩余的行"
"先列一下哪些表是你自己的"
首先SYSTEM是个用户,这个用户在数据库建好的时候就有了,它有自己的一些表
然后你用SYSTEM登录,建立了"你自己的"表,这里“你自己的”指的是你,不是oracle的用户SYSTEM,此时oracle的用户依然是SYSTEM,从oracle层面来说,“你自己的”都是指SYSTEM由于你把“你自己的”表给了SYSTEM,所以此时“你自己的”表都属于SYSTEM
你用SYSTEM用户建立的表 OWNER自然是SYSTEM了;Oracle是不知道你的名字的
它不知道你的名字是meiyu_0707,它只知道SYSTEM用户登录了WHERE OWNER='SYSTEM'自然指的都是SYSTEM的表了明白没?
Oracle并不知道有一个叫meiyu_0707的人在往SYSTEM用户里添加表所以,你肯定知道SYSTEM用户里,哪些表是你这个人建立的对于oracle来说,哪个人指的是oracle用户,而不是你
exp命令是在windows的命令窗口执行的,不是SQL语句exp.exe
TABLE_X
TABLE_Y然后你用SYSTEM用户登录,又建了2张表如下
TABLE_1
TABLE_2我说的”你自己的“就是指你建的TABLE_1和TABLE_2
而这4张表的OWNER都是SYSTEM虽然你的名字是meiyu_0707,,可是oracle并不认识你
你登录的时候告诉oracle你的大名是SYSTEM因此你建的表的OWNER当然都是SYSTEM了此时你是没法用owner来列出”你自己的“表的
只有你自己肉眼去看了,因为所有这些表的owner都是system
明白吗?
sql>select table_name from user_tables;
我写下我的运行过程
开始->运行 输入cmd,回车
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.C:\Documents and Settings\Administrator>exp SYSTEM/administrator file=test.dmp tables=(TB1);Export: Release 10.2.0.1.0 - Production on 星期五 1月 11 16:02:26 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集即将导出指定的表通过常规路径...
. . 正在导出表 TB1导出了 11 行
EXP-00011: SYSTEM.; 不存在
导出成功终止, 但出现警告。C:\Documents and Settings\Administrator>imp SYSTEM/administrator fromuser=SYSTEM touser test file=test.dmp;Import: Release 10.2.0.1.0 - Production on 星期五 1月 11 16:04:13 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsIMP-00002: 无法打开 test.dmp; 进行读取
这是我运行的结果,我哪个地方写错了呢?
(C) 版权所有 1985-2003 Microsoft Corp.C:\Documents and Settings\Administrator>exp SYSTEM/administrator file=test.dmp tables=(TB1);
Export: Release 10.2.0.1.0 - Production on 星期五 1月 11 16:02:26 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集即将导出指定的表通过常规路径...
. . 正在导出表 TB1导出了 11 行
EXP-00011: SYSTEM.; 不存在
导出成功终止, 但出现警告。C:\Documents and Settings\Administrator>imp SYSTEM/administrator fromuser=SYSTEM touser test file=test.dmp;
Import: Release 10.2.0.1.0 - Production on 星期五 1月 11 16:04:13 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsIMP-00002: 无法打开 test.dmp; 进行读取
我只写了红色部分
不过你看人家ATGC 给你讲得那么详细。花了大量时间和精力打字。
所以以后如果遇到类似的问题也不要偷懒了,因为这是种惰性,对于奋进的人是种阻碍。举个很直白的例子,就是妻子和二奶争夺财产的问题。
男的死了,结果剩下妻子和二奶,当然二奶没有子女,这种情况下,
虽然我们知道二奶所住的房子,她一直拥有,但是法律上,二奶是没有继承资格的。
所以男的死了,二奶再怎么争论,那房子原则上还是不会给她的。
只有结发的妻子及子女才是合法的继承人。
你这里的system是登陆用户名字,administrator是登陆密码。
刚才我现研究了一下,你没有服务器的名字,按我上面的写法再试下吧,或许是这原因。
我按照这个写法,成功导出了。
看你的命令只能连接到本地机器的数据库,因此要先查一下你的本地的数据库的SYSTEM用户有没有TB1表如果是远程的机器上的数据库
则要加上连接名 system/manager@连接名
这个连接名是在 tnsnames.ora里定义的其次你的imp命令有问题 应该是 touser=test
Export: Release 10.2.0.1.0 - Production on 星期一 1月 14 14:55:35 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集即将导出指定的表通过常规路径...
. . 正在导出表 TB3导出了 4 行
EXP-00011: SYSTEM.; 不存在
导出成功终止, 但出现警告。
C:\Documents and Settings\Administrator>imp SYSTEM/administrator file=test.dmp fromuser=SYSTEM touser=test tables=(TB3,TB2);Import: Release 10.2.0.1.0 - Production on 星期一 1月 14 14:58:55 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options经由常规路径由 EXPORT:V10.02.01 创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 SYSTEM 的对象导入到 TEST
. . 正在导入表 "TB3"导入了 4 行
IMP-00033: 警告: 在导出文件中未找到表 ";"
成功终止导入, 但出现警告。C:\Documents and Settings\Administrator>每次只能导出一个表,这是为什么呢
exp SYSTEM/administrator file=test.dmp tables=(TB3,TB2)imp SYSTEM/administrator file=test.dmp fromuser=SYSTEM touser=test tables=(TB3,TB2)谢谢大家