作为一个初级程序员经常接到一个需求,那就是去数据库里新建一个用户,然后导入测试数据。
最开始的时候想法很简单,创建一个用户然后授权就完了呗
create user supermap identified by supermap;
grant connect to supermap;
grant resource to supermap;
后来随着对数据库的学习,发现上述方式有很多的缺陷,如果只是测试还好,但是如果是正式环境有可能会产生问题
那么正确的创建用户的姿势是什么样的呢?
先建立临时表空间
create temporary tablespace user_temp
tempfile '/home/app/oracle/oradata/orcl/supermap_temp.dbf' /*指定数据库文件*
size 50m /*数据库文件初始大小*/
autoextend on /*autoextend on 表空间大小不够用时自动扩展*/
next 50m /*next 50m 自动扩展增量为50MB */
maxsize 20480m /*数据文件最大为20g */
extent management local; /*extent management local 代表管理方式为本地*/
说明一下为什么要建临时表空间,临时表空间主要用途是在数据库进行排序运算]、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。
然后建立数据库表空间
create tablespace supermap
/*logging 是对象的属性,创建数据库对象时,oracle 将日志信息记录到练级重做日志文件中。代表空间类型为永久型 */
logging
datafile '/home/app/oracle/oradata/orcl/supermap.dbf' /*指定数据库文件*/
size 50m /*数据库文件初始大小*/
autoextend on /*autoextend on 表空间大小不够用时自动扩展*/
next 50m /*next 50m 自动扩展增量为50MB */
maxsize unlimited /*数据文件可以无限增大,unlimited慎用 */
extent management local; /*extent management local 代表管理方式为本地*/
-
datafile子句:在建立表空间的时候,都会生成至少一个数据文件作为表空间信息保存的地方。如果在Create tablespace时没有进行指定datafile子句,那么Oracle会自动依据OMF的方式创建出一个数据文件
-
size子句:指定生成数据文件的初始大小,默认值通常为100m。对成熟的系统部署移植工作而言,通常是可以确定文件的固定大小。避免经常性的文件膨胀,引起性能变化;
-
autoextend开关与next子句:文件大小变化开关是通过autoextend来实现的。如果设置on,表示该文件允许进行动态拓展,文件写满之后就会以next指定的大小进行拓展。如果设置为off,则该文件不进行拓展;
-
next子句:当文件设置为可拓展时,next为每次进行拓展的步长。如果数据文件是经常大批量的增加,设置一个较大的next值为好;
-
maxsize子句:文件大小上限;
创建用户并指定表空间
create user supermapidentified by supermap
default tablespace user_data
temporary tablespace user_temp;
授权
grant connect to supermap;
grant resource to supermap;
grant dba to supermap;