首页 / 数据库 / MySQL / 重建SCOTT用户及SCOTT轶事
学习Oracle最早就是从scott用户下的dept表和emp表开始的,直到现在也习惯于在scott用户下做测试。有时为了方便测试,需要重建scott用户以便提供一个全新的测试环境,在这儿记录一下重建scott用户的过程。1.scott用户简介
SCOTT是在Oracle数据库中,一个示例用户的名称。其作用是为初学者提供一些简单的应用示例,不过其默认是锁定状态。SCOTT的缺省口令为tiger,下面有表emp, dept等,这些表和表间的关系演示了关系型数据库的一些基本原理,Oracle举例说明时一般都用这个用户,一些关于Oracle的书、教材上一般也都用这个用户来讲解。它对于Oracle本身不是必须的,如果不想用可以删除(如果你没在它下面建其它对象的话)。2.环境准备
我们在Oracle 10g中进行试验,把scott用户删除。点击(此处)折叠或打开C:\Users\Administrator>sqlplus sys/hoegh as sysdbaSQL*Plus: Release 10.2.0.4.0 - Production on 星期三 5月 13 10:24:10 2015Copyright (c) 1982, 2007, Oracle. All Rights Reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL>SQL>SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64biPL/SQL Release 10.2.0.4.0 - ProductionCORE 10.2.0.4.0 ProductionTNS for 64-bit Windows: Version 10.2.0.4.0 - ProductionNLSRTL Version 10.2.0.4.0 - ProductionSQL>SQL> drop user scott cascade;用户已删除。SQL>3.重建scott用户
Oracle提供了scott用户的重建脚本,脚本位于ORACLE_HOMERDBMSADMIN目录下,脚本名称为utlsampl.sql。我们在sys用户下执行该脚本,如下:SQL>
SQL> show userUSER 为 "SYS"SQL>SQL> @C:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlsampl.sql从 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options 断开C:\Users\Administrator>
执行完脚本后,系统会自动推出sql*plus。接下来我们连接scott用户,确认脚本是否执行成功。C:\Users\Administrator>sqlplus scott/tigerSQL*Plus: Release 10.2.0.4.0 - Production on 星期三 5月 13 10:34:29 2015Copyright (c) 1982, 2007, Oracle. All Rights Reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> select * from cat;TABLE_NAME TABLE_TYPE------------------------------ -----------DEPT TABLEEMP TABLEBONUS TABLESALGRADE TABLESQL> select * from dept; DEPTNO DNAME LOC---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL>SQL>4.utlsampl.sql脚本内容
在ORACLE_HOMERDBMSADMIN目录下有很多脚本,utlsampl.sql只是其中一个。感兴趣的话,看看这些脚本也会有收获的。在这儿我们看一下utlsampl.sql脚本的内容。Rem Copyright (c) 1990, 1996, 1997, 1999, 2001 by Oracle Corporation
Rem NAME
REM UTLSAMPL.SQL
Rem FUNCTION
Rem NOTES
Rem MODIFIED
Rem menash 02/21/01 - remove unnecessary users for security reasons
Rem gwood 03/23/99 - make all dates Y2K compliant
Rem jbellemo 02/27/97 - dont connect as system
Rem akolk 08/06/96 - bug 368261: Adding date formats
Rem glumpkin 10/21/92 - Renamed from SQLBLD.SQL
Rem blinden 07/27/92 - Added primary and foreign keys to EMP and DEPT
Rem rlim 04/29/91 - change char to varchar2
Rem mmoore 04/08/91 - use unlimited tablespace priv
Rem pritto 04/04/91 - change SYSDATE to 13-JUL-87
Rem Mendels 12/07/90 - bug 30123;add to_date calls so language independent
Rem
rem
rem $Header: utlsampl.sql 21-feb-01.18:15:30 menash Exp $ sqlbld.sql
rem
SET TERMOUT OFF
SET ECHO OFFrem CONGDON Invoked in RDBMS at build time. 29-DEC-1988
rem OATES: Created: 16-Feb-83DROP USER SCOTT CASCADE;
DROP USER ADAMS CASCADE;
DROP USER JONES CASCADE;
DROP USER CLARK CASCADE;
DROP USER BLAKE CASCADE;
GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO SCOTT IDENTIFIED BY TIGER;
DROP PUBLIC SYNONYM PARTS;CONNECT SCOTT/TIGER
CREATE TABLE DEPT
(DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14) ,
LOC VARCHAR2(13) ) ;
CREATE TABLE EMP
(EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);
INSERT INTO DEPT VALUES
(10,"ACCOUNTING","NEW YORK");
INSERT INTO DEPT VALUES (20,"RESEARCH","DALLAS");
INSERT INTO DEPT VALUES
(30,"SALES","CHICAGO");
INSERT INTO DEPT VALUES
(40,"OPERATIONS","BOSTON");
INSERT INTO EMP VALUES
(7369,"SMITH","CLERK",7902,to_date("17-12-1980","dd-mm-yyyy"),800,NULL,20);
INSERT INTO EMP VALUES
(7499,"ALLEN","SALESMAN",7698,to_date("20-2-1981","dd-mm-yyyy"),1600,300,30);
INSERT INTO EMP VALUES
(7521,"WARD","SALESMAN",7698,to_date("22-2-1981","dd-mm-yyyy"),1250,500,30);
INSERT INTO EMP VALUES
(7566,"JONES","MANAGER",7839,to_date("2-4-1981","dd-mm-yyyy"),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,"MARTIN","SALESMAN",7698,to_date("28-9-1981","dd-mm-yyyy"),1250,1400,30);
INSERT INTO EMP VALUES
(7698,"BLAKE","MANAGER",7839,to_date("1-5-1981","dd-mm-yyyy"),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,"CLARK","MANAGER",7839,to_date("9-6-1981","dd-mm-yyyy"),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,"SCOTT","ANALYST",7566,to_date("13-JUL-87","dd-mm-rr")-85,3000,NULL,20);
INSERT INTO EMP VALUES
(7839,"KING","PRESIDENT",NULL,to_date("17-11-1981","dd-mm-yyyy"),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,"TURNER","SALESMAN",7698,to_date("8-9-1981","dd-mm-yyyy"),1500,0,30);
INSERT INTO EMP VALUES
(7876,"ADAMS","CLERK",7788,to_date("13-JUL-87", "dd-mm-rr")-51,1100,NULL,20);
INSERT INTO EMP VALUES
(7900,"JAMES","CLERK",7698,to_date("3-12-1981","dd-mm-yyyy"),950,NULL,30);
INSERT INTO EMP VALUES
(7902,"FORD","ANALYST",7566,to_date("3-12-1981","dd-mm-yyyy"),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,"MILLER","CLERK",7782,to_date("23-1-1982","dd-mm-yyyy"),1300,NULL,10);
CREATE TABLE BONUS
(
ENAME VARCHAR2(10) ,
JOB VARCHAR2(9) ,
SAL NUMBER,
COMM NUMBER
) ;
CREATE TABLE SALGRADE
( GRADE NUMBER,
LOSAL NUMBER,
HISAL NUMBER );
INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
COMMIT;
EXIT
脚本主要分为几个部分,
第一部分是备注部分,行首有Rem关键字,描述了utlsampl.sql脚本的演进过程;
第二部分是drop对象,大家关注一下我标黄的语句;也就是说,在环境准备部分的drop user语句,纯粹是画蛇添足,Oracle已经替我们想到了;
第三部分是创建表和插入数据。5.scott是谁从Oracle第一个商业化版本至今,oracle的默认数据库里都少不了这个名字为scott,密码为tiger的用户。这个scott究竟有何来历,怎么在我们的oracle的版本里一直都不能少呢。这个就要追朔到Oracle的创业阶段了, 1977年6月,埃里森,Bob Miner和Ed Oates在硅谷共同创办了一家名为软件开发实验室(Software Development Laboratories,SDL)的计算机公司,这个只有三个人的公司就是后来在独领数据库风骚的ORACLE公司的前身。 当时埃里森年界32岁,呵呵呵,和我一样,三十而立的年龄,由于合同的关系还在自己原来的公司里不能出来,只是一个程序员而已。他过不来,总要有写代码的人呀,公司的第一个程序员出现了,他的名字就是scott,他的猫的名字就叫trigger,可能是为了这个第一位的程序员的缘故吧,所以也就有了scott这个用户,而且一直没有忘怀,留恋至今。1983年3月,RSI发布了ORACLE第三版的,Miner和Scott这两个老牛用c语言,在埃里森的高压下进行第三版的开发,要知道,C语言当时推出不久,用它来写ORACLE软件也是具有一定的风险的,但除此之外,别无他法。很快就证明了这样做是多么的正确:C编译器便宜而又有效,还有很好的移植性。不过,当这个第三版还没有结束的时候。scott离开了Oracle公司,也许是c开发和初始阶段的无休止的变更,让scott无法承受,这个大牛选择了离开公司并出售了自己的4%的股票,不过scott离开Oracle以后,还是混迹于数据库开发市场,他自己创立了PointBase公司,是一个不错的嵌入式数据库,不过好像是java写的,我曾经还用之开发过项目。这位大牛没有想到,日后这个由他开笔的Oracle是未来时代的数据库巨人,那4%的相当于几亿美元哟。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址