win10系统下怎样用oracle生成oracle新建数据库连接脚本

在Oracle中创建数据库,通常有两种方法。
一是:使用Oracle的DBCA,这是一个图形界面工且,使用起来方便且很容易理解,因为它的界面友好、美观,而且提示也比较齐全。(ps:可以从开始菜单中进入DBCA,也可以在CMD中敲入dbca命令启动DBCA)
二是:手动创建数据库,手工建库比起使用DBCA建库来说,是比较麻烦的,但是如果我们学好了手工建库的话,就可以使我们更好地理解Oracle数据库的体系结构。
使用DBCA与手工建库的区别就像使用傻瓜相机与单反相机照相的区别,作为一个资深的oracle DBA必须学会手动建库,以更好的适应企业业务的需要。
手工建库须要经过几个步骤,每一个步骤都非常关键。它包括:
1、 创建必要的相关目录
2、 创建初始化参数文件
3、 设置环境变量Oracle_sid
4、 创建实例(windows服务)
5、 创建口令文件
6、 启动数据库到nomount(实例)状态
7、 执行建库脚本
8、 执行catalog脚步本创建数据字典
9、 执行catproc创建package包
10、 执行pupbld 脚本设置sqlplus
11、 由初始化参数文件创建spfile文件
12、 执行scott脚本创建scott模式
做完了以上的步骤之后就可以使用“SQL&”打开数据库正常的使用了。
这里我们就创建一个sid为mydb的数据库,具体的目录根据自己安装oracle情况决定:
1、创建必要的相关目录
首先,创建admin目录下的mydb,mydb下的子文件夹
这几个子目录主要用于存放数据库运行过程中的跟踪信息。最重要的两上子目录是bdump和udump目录,bdump目录存放的是数据库动行过程中的各个后台进程的跟踪信息,当中alert文件是警告文件,其文件名称为alert_book.log,当数据库出现问题时,首先就可以去查看此文件以找出原因,手工创建过程中出现的各种问题往往也可以通过查看这个文件找到原因。Udump目录存放特定会话相关的跟踪信息。
第二,在oradata下创建数据库文件存放目录
C:/oracle/product/10.1.0/oradata/mydb目录存放各种数据库文件,包括控制文件、数据文件、重做日志文件
2、创建初始化参数文件
数据库系统启动时须要用初始化参数文件的设置分配内存、启动必要的后台进程的。因此,初始化参数文件创建的是否正确、参数设置是否正确关系着整个建库的“命运”。 创建初始化参数文件可以通过拷贝现在的初始化参数文件并将其做适当的修改即可,从而不必要用手工去一句一句地写出来,因为初始化参数文件的结构体系基本上都是一样的。在我们安装Oracle的时候,系统已经为我们安装了一个名为orcl的数据库,于是我们可以从它那里得到一份初始化参数文件。打开C:/oracle/product/10.1.0/admin/orcl/pfile,找到init.ora文件,把它拷贝到C:/oracle/product/10.1.0/bd_1/databse与C:/oracle/product/10.1.0/bd_1/dbs下,并将其改名为initmydb.ora。接着用记事本的方式打开initmydb.ora,根据自己情况修改内容。如:必须修改db_name=mydb
注意:如果script文件中的init.ora文件路径比较乱(既有斜杠也有反斜杠)的情况,可以从C:/oracle/product/10.1.0/bd_1/dbs中拷贝复制。或者自己创建,备份。
3、打开命令行,设置环境变量oracle_sid
&& 命令:set ORACLE_SID=mydb
4、创建实例服务(即后台控制windows服务)
命令:oradim -new -sid mydb
oradim是创建实例的工具程序名称,-new表明执行新建实例,-delete表明执行删掉实例,-sid指定实例的名称。
命令执行完毕可以验证服务是否创建成功
5、创建口令文件
命令为:orapwd file=C:/oracle/product/10.1.0/db_1/database/PWDmydb.ora password=oracle entries=2
orapwd是创建口令文件的程序名称,file参数指定口令文件所在的目录和文件名称,password参数指定sys用户的口令,entries参数指定数据库拥用DBA权限的用户的个数。 请注意,这里的命令要一行输入,中间不得换行,否则会出现不必要的错误。 口令文件是专门存放sys用户的口令,因为sys用户要负责建库、启动数据库、关闭数据库等特殊任务,把以sys用户的中令单独存放于口令文件中,这样数据库末打开时也能进行口令验证。
6、启动数据库到nomount(实例)状态
如图所示:
7、执行建库脚本
执行建库脚本,首先要有建库的脚本。那怎么去找到脚本呢?得到一个符合自己要求的建库脚本有两种方法,一种方法是利用原来orcl创建数据库DBCA生成的数据库创建脚本,并参照oracle文档。另一种方法就是自己手工去写一份建库脚本,并将其保存为文件名任取而后缀名为(*.sql)的SQL脚本,名称为mydbcreate.sql。
CREATE DATABASE mydb
&&&&&&&& USER SYS IDENTIFIED BY oracle
&&&&&&&& USER SYSTEM IDENTIFIED BY oracle
&&&&&&&& LOGFILE GROUP 1 ('C:/oracle/product/10.2.0/oradata/mydb/redo01.log') SIZE 100M,
&&&&&&&& GROUP 2 ('C:/oracle/product/10.2.0/oradata/mydb/redo02.log') SIZE 100M,
&&&&&&&& GROUP 3 ('C:/oracle/product/10.2.0/oradata/mydb/redo03.log') SIZE 100M
&&&&&&&& MAXINSTANCES 8
&&&&&&&& MAXLOGHISTORY 1
&&&&&&&& MAXLOGFILES 16
&&&&&&&& MAXLOGMEMBERS 3
&&&&&&&& MAXDATAFILES 100
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
DATAFILE 'C:/oracle/product/10.2.0/oradata/mydb/SYSTEM01.DBF' SIZE 325M REUSE
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE 'C:/oracle/product/10.2.0/oradata/mydb/SYSAUX01.DBF' SIZE 325M REUSE
DEFAULT TABLESPACE tbs_1
DEFAULT TEMPORARY TABLESPACE TEMP
TEMPFILE 'C:/oracle/product/10.2.0/oradata/mydb/TEMP01.DBF' SIZE 20480K REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
UNDO TABLESPACE UNDOTBS1
DATAFILE 'C:/oracle/product/10.2.0/oradata/mydb/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
执行上面的代码有两种方法,一种为直接复制粘贴到sqlplus中执行,另一种为用@命令执行。执行完第七步已经成功创建数据库文件,但是还没有创建数据字典。
&(在第8步之前,执行了sql.bsq脚本,D:/oracle/product/10.2.0/db_1/RDBMS/ADMIN文件夹下,用于创建oracle数据字典基表,在create
database 时自动调用)
8、执行catalog脚步本创建数据字典
SQL&@C:/oracle/product/10.1.0/db_1/rdbms/admin/catalog.sql&
9、执行catproc创建package包
SQL&@C:/oracle/product/10.1.0/db_1/rdbms/admin/catproc.sql
10、执行pupbld
在执行pupbld之前要把当前用户(sys)转换成system,即以system账户连接数据库。因为此数据库是刚建的,所以system的口令是oracle(参加创建数据库代码)。
SQL&connect system/oracle
SQL&@C:/oracle/product/10.1.0/db_1/sqlplus/admin/pupbld.sql
11、由pfile创建spfile
SQL&create spfile from pfile
12、执行scott脚本创建scott模式 (如果需要练习环境)
SQL&@C:/oracle/product/10.1.0/db_1/rdbms/admin/scott.sql
13、把数据库打开到正常状态
OK,手动创建数据库成功!请多加练习,体会oracle创建的过程,理解oracle的体系架构。
ORA-1092 signalled during: CREATE DATABASE mydb
阅读(...) 评论()你正在使用的浏览器版本过低,将不能正常浏览和使用知乎。oracle使用脚本创建数据表空间和用户
oracle使用脚本创建数据表空间和用户
-- &创建表空间(企业库)-----
declare v_rowcount number(5);
& select count(*) into v_rowcount from dual
& where exists (select 1 from dba_tablespaces where tablespace_name='PLSTWHEPT');
& If v_rowcount = 0 Then
& & Execute immediate 'CREATE TABLESPACE PLSTWHEPT DATAFILE ''E:\app\lukelu\oradata\PLSTWHEPT.dbf'' SIZE 50M
& & AUTOEXTEND ON NEXT 1M
& & EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K
& & SEGMENT SPACE MANAGEMENT AUTO';
-- 创建表空间(用户库)
declare v_rowcount number(5);
& select count(*) into v_rowcount from dual
& where exists (select 1 from dba_tablespaces where tablespace_name='PLSTWMWH1');
& If v_rowcount = 0 Then
& &Execute immediate 'CREATE TABLESPACE PLSTWMWH1 DATAFILE ''E:\app\lukelu\oradata\PLSTWMWH1.dbf'' SIZE 50M
& & AUTOEXTEND ON NEXT 1M
& & EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K
& & SEGMENT SPACE MANAGEMENT AUTO';
---- 创建用户并把用户赋予某个空间----
declare v_rowcount number(5);
& select count(*) into v_rowcount from dual
& where exists (select 1 from all_users where username= 'plstwms') ;
& If v_rowcount = 0 Then
& & Execute immediate 'create user plstwms identified by &999666& DEFAULT TABLESPACE PLSTWHEPT TEMPORARY TABLESPACE TEMP';
grant create a
grant execute on DBMS_LOCK
grant select on DBA_OBJECTS
grant create any
---- 创建用户----
declare v_rowcount number(5);
& select count(*) into v_rowcount from dual
& where exists (select 1 from all_users where username= 'plstwms1') ;
& If v_rowcount = 0 Then
& & Execute immediate 'create user plstwms1 identified by &999666& DEFAULT TABLESPACE PLSTWMWH1 TEMPORARY TABLESPACE TEMP';
grant create any table to plstwms1 ;
grant dba to plstwms1;
grant execute on DBMS_LOCK to plstwms1;
grant select on DBA_OBJECTS to plstwms1;
grant create any sequence to plstwms1;实战:oracle新建用户shell脚本
#!/bin/bash
#create user
if [ $# -ne 4 ]; then
echo -e &\e[1;32m
********************************************************************************* \e[0m&
echo -e &\e[1;32m
Usage: $0 USERNAME PASSWORD DEFAULT_TABLESPACE INDEX_TABLESPACE \e[0m&
echo -e &\e[1;32m
********************************************************************************* \e[0m&
#configure oracle env:about oracle envs, username and password
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_SID=orcl
ora_data=/u01/app/oracle/product/11.2.0/db_1/dbs/
ora_user=&sys&
ora_pass=&password&
outfiletmp01=/tmp/createusertmp01.txt
#specify the output file location
outfiletmp02=/tmp/createusertmp02.txt
#specify the output file location
outfiletmp03=/tmp/createusertmp03.txt
#specify the output file location
cre_user=$1
chk_user=$(echo $1 | tr '[a-z]' '[A-Z]')
cre_user_pwd=$2
def_tbsp=$3
def_idx_tbsp=$4
def_temp_tbsp=temp
smk_test_table=t1
sqlplus -S &${ora_user}/${ora_pass} as sysdba& &&!01 &/dev/null #禁止sqlplus执行结果回显
set pagesize 0;
spool ${outfiletmp01}
select username from dba_users where username='${chk_user}';
##check oracle instance is down or up
ins_jug=`grep -i &ORA-01034:&
${outfiletmp01} &${outfiletmp03} `
-s ${outfiletmp03} ]; then
echo -e &\e[1;31m
******************************************************************
echo -e &\e[1;31m
!!!!, oracle IS down!
echo -e &\e[1;31m
******************************************************************
tps_jug=`grep -i ${chk_user} ${outfiletmp01} `
if [ &${tps_jug}& = &${chk_user}& ]; then
echo -e &\e[1;31m
sorry, The username ${cre_user} exits!
wind_crtusr=$(
sqlplus -S &${ora_user}/${ora_pass} as sysdba& &&!01 &/dev/null #禁止sqlplus执行结果回显
spool ${outfiletmp02}
CREATE USER ${cre_user} IDENTIFIED BY ${cre_user_pwd}
DEFAULT TABLESPACE ${def_tbsp}
TEMPORARY TABLESPACE ${def_temp_tbsp};
GRANT CREATE SESSION TO ${cre_user};
GRANT CREATE TABLE
TO ${cre_user};
GRANT CREATE INDEX
TO ${cre_user};
ALTER USER ${cre_user} QUOTA UNLIMITED ON ${def_tbsp};
ALTER USER ${cre_user} QUOTA UNLIMITED ON ${def_idx_tbsp};
-- Smoke test
CONN ${cre_user}/${cre_user_pwd}
CREATE TABLE ${smk_test_table}(tid NUMBER) TABLESPACE ${def_tbsp};
CREATE INDEX ${smk_test_table}.idx1 ON ${cre_user}.${smk_test_table}(tid) TABLESPACE ${def_idx_tbsp};
INSERT INTO ${smk_test_table} VALUES(1);
DROP TABLE ${smk_ttbl};
# execute the variable $wind_crtusr
&${wind_crtusr}& = &&
echo -e &\e[1;32m
ok, The create user ${cre_user} success!
echo -e &\e[1;31m
${wind_crtusr}
rm -rf ${outfiletmp01}
rm -rf ${outfiletmp02}
rm -rf ${outfiletmp03}

我要回帖

更多关于 oracle数据库新建用户 的文章

 

随机推荐