重建SCOTT使用者及SCOTT軼事

來源:互聯網
上載者:User

重建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 sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on 星期三 5月 13 10:24:10 2015

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

串連到:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>

SQL>

SQL> select * from v$version;

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

PL/SQL Release 10.2.0.4.0 - Production

CORE 10.2.0.4.0 Production

TNS for 64-bit Windows: Version 10.2.0.4.0 - Production

NLSRTL Version 10.2.0.4.0 - Production

SQL>

SQL> drop user scott cascade;

使用者已刪除。

SQL>

3.重建scott使用者
Oracle提供了scott使用者的重建指令碼,指令碼位於ORACLE_HOME\RDBMS\ADMIN目錄下,指令碼名稱為utlsampl.sql。我們在sys使用者下執行該指令碼,如下:

SQL>
 
SQL> show user

USER 為 \"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 Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷

C:\\Users\\Administrator>
執行完指令碼後,系統會自動推出sql*plus。接下來我們串連scott使用者,確認指令碼是否執行成功。

C:\\Users\\Administrator>sqlplus scott/tiger

SQL*Plus: Release 10.2.0.4.0 - Production on 星期三 5月 13 10:34:29 2015

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

串連到:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from cat;

TABLE_NAME TABLE_TYPE

------------------------------ -----------

DEPT TABLE

EMP TABLE

BONUS TABLE

SALGRADE TABLE

SQL> select * from dept;

    DEPTNO DNAME LOC

---------- -------------- -------------

        10 ACCOUNTING NEW YORK

        20 RESEARCH DALLAS

        30 SALES CHICAGO

        40 OPERATIONS BOSTON

SQL>

SQL>

4.utlsampl.sql指令碼內容
在ORACLE_HOME\RDBMS\ADMIN目錄下有很多指令碼,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 OFF

rem CONGDON Invoked in RDBMS at build time. 29-DEC-1988
rem OATES: Created: 16-Feb-83

DROP 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%的相當於幾億美元喲。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.