首先简单总结一下:
1. service name 服务名(其实揍是:数据库名),装 ORACLE 时肯定要指定的一个名字
2. tablespace 表空间,数据库对象的磁盘存储位置
3. schema 方案,数据库对象的逻辑分类
4. user 用户,等同于 schema
5. service name > tablespace > schema(user)
详细说明:
schema 为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的 schema 下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema 里面包含了各种对象如:tables,views,sequences,stored procedures,synonyms,indexes,clusters,and database links。
一个用户(user)对应一个 schema,该用户的 schema 名等于用户名,并作为该用户缺省的 schema。这也就是我们在企业管理器的 schema 下看到 schema 名都为数据库用户名的原因。Oracle 数据库中不能新创建一个 schema,要想创建一个 schema,只能通过创建一个 user 的方法解决(Oracle 中虽然有 create schema 语句,但是它并不是用来创建一个 schema 的),在创建一个 user 的同时为这个 user 创建一个与用户名同名的 schem 并作为该用户的缺省 shcema。即 schema 的个数同 user 的个数相同,而且 schema 名字同 user 名字一一对应并且相同,所有我们可以称 schema 为 user 的别名,虽然这样说并不准确,但是更容易理解一些。
一个 user 有一个缺省的 schema,其 schema 名就等于用户名,当然一个 user 还可以使用其他的 schema。如果我们访问一个表时,没有指明该表属于哪一个 schema 中的,系统就会自动给我们在表上加上缺省的 sheman 名。比如我们在访问数据库时,访问 scott 用户下的 emp 表,通过select * from emp; 其实,这 sql 语句的完整写法为 select * from scott.emp。在数据库中一个对象的完整名称为 schema.object,而不属 user.object。类似如果我们在创建对象时不指定该对象的 schema,在该对象的 schema 为 user 的缺省 schema。这就像一个 user 有一个缺省的 tablespace,但是该 user 还可以使用其他的 tablespace,如果我们在创建对象时不指定 tablespace,则对象存储在缺省 tablespace 中,要想让对象存储在其他 tablespace 中,我们需要在创建对象时指定该对象的 tablespace。
举例如下:
C:\windows\system32>sqlplus system/niit@ORCL as sysdba
SQL> Grant dba to scott
授权成功。
SQL> connect scott/tiger@ORCL
已连接。
SQL> create table test(name char(10));
Table created.
SQL> create table system.test(name char(10));
Table created.
SQL> insert into test values('scott');
1 row created.
SQL> insert into system.test values('system');
1 row created.
SQL> commit;
Commit complete.
SQL> conn system/manager
Connected.
SQL> select * from test;
NAME
----------
system
SQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改变用户缺省schema名
Session altered.
SQL> select * from test;
NAME
----------
scott
SQL> select owner ,table_name from dba_tables where table_name=upper('test');
OWNER TABLE_NAME
------------------------------ ------------------------------
SCOTT TEST
SYSTEM TEST
--上面这个查询就是将 schema 作为 user 的别名的依据。实际上在使用上,shcema 与 user 完全一样,没有什么区别,在出现 schema 名的地方也可以出现 user 名。
schema 和 user 一般是一致的,建立一个 user 后即可得到一个 schema,如:HR 用户建立后便有 HR 方案,接下来建立表、索引等数据库对象时,要指定其属于哪个 schema,也要指定其存放在哪个 tablespace 里。
也可以这样理解,schema 是数据库对象的逻辑归属和分类,而 tablespace 是数据库对象的物理和实际存放位置。
from:http://blog.itpub.net/9880886/viewspace-462626
from:http://czmmiao.iteye.com/blog/1967034
总结如下: 不同的schema之间它们没有直接的关系,不同的shcema之间的表可以同名, 也可以互相引用(但必须有权限),在没有操作别的schema的操作根权下, 每个用户只能操作它自己的schema下的所有的表。不同的schema下的同名的表, 可以存入不同的数据(即schema用户自己的数据)。好比一个房子,里面放满了家具,对这些家具有支配权的是房子的主人(user),而不是房子(schema)。user好比房子的主人,schema好比房子,view等好比房子里面的家具。你可以也是一个房子的主人(user),拥有自己的房子(schema)。可以通过alter session的方式进入别人的房子。
相关推荐
5. **创建Schema用户**:Schema在Oracle中是逻辑上的数据库对象集合,通常与一个特定的数据库用户关联。使用`CREATE USER`创建用户,`GRANT`权限: ```sql CREATE USER MyUser IDENTIFIED BY password; GRANT ...
alter database mydb2 owner to user1;alter database mydb2 set tablespace tbs1; 删除数据库 删除数据库可以使用DROP DATABASE语句,例如:drop database mydb4; 查询数据库 查询数据库可以使用SELECT语句,...
在Oracle中,**用户**是用来标识数据库中的合法使用者,每个用户都有自己的密码,并且可以拥有自己的模式(schema),模式包含了该用户所有的对象。 ```sql CREATE USER zhangsan IDENTIFIED BY zhangsan DEFAULT ...
在Oracle数据库管理中,表空间(Tablespace)是存储数据的主要单位,用户(User)则是在数据库中拥有特定权限的实体。本篇文章将深入解析如何在Oracle中创建表空间、创建用户以及如何将权限授予新创建的用户。 一、...
ALTER USER testuser DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; ``` 二、删除用户 删除用户的命令是`DROP USER`,需要谨慎操作,因为这将永久删除用户及其所有对象: ```sql DROP USER username ...
expdp username/password@dblink DIRECTORY=directory_name DUMPFILE=dumpfile_name TABLES=(table1, table2) REMAP_SCHEMA=source_schema:target_schema REMAP_TABLESPACE=source_tablespace:target_tablespace ...
Impdp lwzx/1@orcl dumpfile=EXPDAT.DMP REMAP_SCHEMA=old_schema_name:new_schema_name Impdp 用户名/密码 数据库导出路径为oracle数据库备份/导入设置路径:E:\app\Hejiah\admin\orcl\dpdump exp username/...
SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_role_privs; 查看当前用户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * ...
impdp datauser/datauser dumpfile=databak.DMP directory=dirpath remap_schema=datauser_old:datauser remap_tablespace=dataname_old:dataname ``` 这里,`remap_schema`参数用于重映射模式,即将`datauser_...
impdp DIRECTORY=datadir DUMPFILE=user1.DMP remap_schema=user1:user3, remap_tablespace=users:test2 ``` 此命令不仅将数据从 `user1` 迁移到 `user3` 用户下,还将数据所在的表空间从 `users` 更改为 `test2`。...
CREATE USER username IDENTIFIED BY password DEFAULT TABLESPACE user_data TEMPORARY TABLESPACE user_temp; ``` 用户创建后,可通过以下命令修改其默认表空间和临时表空间: ```sql ALTER USER 用户名 DEFAULT...
- `GRANT USE OF TABLESPACE GD_MAIN_TBS, GD_IDX_TBS TO USER dstuser;` 用户可以使用指定的表空间GD_MAIN_TBS和GD_IDX_TBS存储数据。 - `GRANT ALTERIN, CREATEIN, DROPIN ON SCHEMA dstuser TO USER dstuser;` ...
4. **设置默认表空间**:`ALTER USER new_user DEFAULT TABLESPACE users;` 设置用户的新建对象将存储在名为`users`的表空间中。 5. **授权特定表**:`GRANT SELECT, INSERT, UPDATE, DELETE ON schema_name.table_...
impdp username/password directory=DIR_NAME dumpfile=data.dmp remap_table=old_schema.old_table:new_schema.new_table ``` 这将把`data.dmp`中的`old_schema.old_table`映射到`new_schema.new_table`。 总的来...
CREATE USER new_user IDENTIFIED BY password DEFAULT TABLESPACE users QUOTA 10M ON users; ``` 这里,`new_user`是新用户名,`password`是用户密码,`users`是默认表空间,`QUOTA 10M ON users`指定了用户在...
GRANT DROP ON SCHEMA user1 TO user1 - C. GRANT DROP ON SCHEMA payroll TO user1 - D. GRANT DROP ON SCHEMA employee TO user1 **正确答案**:C. GRANT DROP ON SCHEMA payroll TO user1 **解析**:根据错误...
3. 导入到指定用户:`impdp jl22/jl22@10.3.205.20/xnh DIRECTORY=dir DUMPFILE=jl2012117.dmp tables=(d101,d101annual,d201) REMAP_SCHEMA=jlxnh:jl22`,将`jlxnh`用户的数据导入到`jl22`用户。 4. 处理表已存在...
impdp user/password REMAP_TABLESPACE=users:new_users ``` ##### REUSE_DATAFILES **功能说明**:此选项用于控制在创建表空间时是否覆盖已存在的数据文件,默认情况下为`N`(不覆盖)。 **语法格式**: ```sql ...
- 示例:`CREATE USER lemon IDENTIFIED BY 123 DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE test;` #### 授予权限 - 使用`GRANT`命令向用户授予权限。 - `DBA`权限:授予用户所有对象权限。 - `CONNECT`...
CREATE USER username IDENTIFIED BY password DEFAULT TABLESPACE default_tablespace TEMPORARY TABLESPACE temp_tablespace; ``` 除了基本的创建用户,我们还可能需要授予用户一些权限,例如连接到数据库的权限...