oracle要创建表要首先创建表空间,当然默认是有表空间的。而mysql创建表时,会自动创建表空间,myisam会自动建三个文件.MYD,.MYI,.frm。innodb呢,如果没有配置独立表空间的话,默认表空间ibdata1,oracle用户权限根着表空间走的,而mysql不是,mysql服务器端安装好后,会自动带上一个mysql数据库,用户的权限是记录在mysql这个数据库的表中。在这方面二种数据库设计的理念不同。
1,创建临时表空间
SQL> create temporary tablespace test_temp tempfile '/opt/ora10/oradata/test/test_tmp.dbf' size 32m autoextend on next 32m maxsize 148m extent management local; Tablespace created.
2,创建表空间
SQL> create tablespace test_data logging datafile '/opt/ora10/oradata/test/test_data.dbf' size 32m autoextend on next 32m maxsize 148m extent management local; Tablespace created.
3,创建表用户,并表空间分配给用户
SQL> create user tank identified by tank default tablespace test_data temporary tablespace test_temp; User created
4,查看创建的表空间
SQL> select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name group by t.tablespace_name;
TABLESPACE_NAME TS_SIZE
------------------------------ ----------
SYSAUX 240
UNDOTBS1 25
TEST_DATA 32
USERS 5
SYSTEM 480
5,查看临时表空间
SQL> select sum(bytes)/1024/1024 "temp size(M)" from dba_temp_files where tablespace_name='TEST_TMP'
temp size(M)
------------
6,将表空间的部分操作权限分配给用户
SQL> grant connect,resource,imp_full_database,exp_full_database, dba to user;
Grant succeeded.
7,resource这是一个权限组,有这个组就不要一个一个加了。
SQL> select GRANTEE,PRIVILEGE from DBA_SYS_PRIVS where GRANTEE ='RESOURCE'
GRANTEE PRIVILEGE
------------------------------ ----------------------------------------
RESOURCE CREATE TRIGGER
RESOURCE CREATE SEQUENCE
RESOURCE CREATE TYPE
RESOURCE CREATE PROCEDURE
RESOURCE CREATE CLUSTER
RESOURCE CREATE OPERATOR
RESOURCE CREATE INDEXTYPE
RESOURCE CREATE TABLE
8 rows selected.
以下操作我都是能以tank这个用户进行操作的
9,创建表
create table test( id number(10) not null primary key, name varchar(2) null , city number(1) null );
10,创建临时表
CREATE GLOBAL TEMPORARY TABLE test1 ( id number(10) not null primary key, name varchar(2) null , city number(1) null );
11,查看表
SQL> select distinct table_name from user_tables;
TABLE_NAME
------------------------------
TEST
TEST1
//或者
SQL> select table_name from dba_tables where owner='TANK
TABLE_NAME
------------------------------
TEST
TEST1