使用oracle 10g数据库创建脚本实现手动创建数据库

Oracle11g 使用create database手动创建数据库 1.使用create database创建数据库步骤: oradim -new -sid 数据库实例名 -intpwd 密码 oradim -new -sid OracleDB -intpw OraclePass 2.创建初始化数据参数文件(PFile),目标文件保存为initOracleDb.ora,保存地址为:D:\initOracleDb.ora db_name='OracleDb' 阅读详情

最近工作稍微比较空闲,便把使用DBCA 创建数据库时的输出的脚本拿来研究研究,并参照脚本文件,手动实现一个数据库的创建过程。首先使用DBCA工具创建一份建库脚本,整个脚本文件包含如下文件,

感觉应该是从BAT文件开始入手,打开BAT文件查看内容如下:

mkdir f:/oracle/product/10.2.0/admin/test/adump

mkdir f:/oracle/product/10.2.0/admin/test/bdump

mkdir f:/oracle/product/10.2.0/admin/test/cdump

mkdir f:/oracle/product/10.2.0/admin/test/dpdump

mkdir f:/oracle/product/10.2.0/admin/test/pfile

mkdir f:/oracle/product/10.2.0/admin/test/udump

mkdir f:/oracle/product/10.2.0/db_1/cfgtoollogs/dbca/test

mkdir f:/oracle/product/10.2.0/db_1/dbs

mkdir f:/oracle/product/10.2.0/oradata/test

set ORACLE_SID=test

f:/oracle/product/10.2.0/db_1/bin/oradim.exe -new -sid TEST -startmode manual -spfile

f:/oracle/product/10.2.0/db_1/bin/oradim.exe -edit -sid TEST -startmode auto -srvcstart system

f:/oracle/product/10.2.0/db_1/bin/sqlplus /nolog @f:/test/scripts/test.sql

发现原来ORACLE先创建了一批相关的文件目录,于是效仿在%oracle_home%下建立对应的目录。此处有两种方法可供选择:

1.通过WINDOWS的可视界面创建

2.通过命令行工具使用如下命令创建(直接偷他的了)

mkdir f:/oracle/product/10.2.0/admin/test/adump

mkdir f:/oracle/product/10.2.0/admin/test/bdump

mkdir f:/oracle/product/10.2.0/admin/test/cdump

mkdir f:/oracle/product/10.2.0/admin/test/dpdump

mkdir f:/oracle/product/10.2.0/admin/test/pfile

mkdir f:/oracle/product/10.2.0/admin/test/udump

mkdir f:/oracle/product/10.2.0/db_1/cfgtoollogs/dbca/test

mkdir f:/oracle/product/10.2.0/db_1/dbs

mkdir f:/oracle/product/10.2.0/oradata/test

创建完成相关目录后,继续向下,发现他在BAT文件中执行了set ORACLE_SID=test,设置环境变量,它设置我也照着设置,进入CMD,直接输入set ORACLE_SID=test

完成环境变量设置后继续向下,

f:/oracle/product/10.2.0/db_1/bin/oradim.exe -new -sid TEST -startmode manual -spfile

f:/oracle/product/10.2.0/db_1/bin/oradim.exe -edit -sid TEST -startmode auto -srvcstart system

他创建并编辑了一个新的实例(不知道此处为何要先创建它以manual方式启动后有更改为auto 方式启动,望高手指点迷津),既然他创建了一个实例,我也同样创建一个实例,在CMD中输入 oradim –new –sid test创建一个名为test的实例。

在完成实例创建后,发现他在执行如下语句:

f:/oracle/product/10.2.0/db_1/bin/sqlplus /nolog @f:/test/scripts/test.sql

我对此步理解为使用/nolog方式登录sqlplus然后执行名为test.sql的文件,打开test.sql文件,内容如下:

set verify off

PROMPT specify a password for sys as parameter 1;

DEFINE sysPassword = &1

PROMPT specify a password for system as parameter 2;

DEFINE systemPassword = &2

PROMPT specify a password for sysman as parameter 3;

DEFINE sysmanPassword = &3

PROMPT specify a password for dbsnmp as parameter 4;

DEFINE dbsnmpPassword = &4

host f:/oracle/product/10.2.0/db_1/bin/orapwd.exe file=f:/oracle/product/10.2.0/db_1/database/PWDtest.ora password=&&sysPassword force=y

@f:/test/scripts/CloneRmanRestore.sql

@f:/test/scripts/cloneDBCreation.sql

@f:/test/scripts/postScripts.sql

host "echo SPFILE='f:/oracle/product/10.2.0/db_1/dbs/spfiletest.ora' > f:/oracle/product/10.2.0/db_1/database/inittest.ora"

@f:/test/scripts/postDBCreation.sql

研读后发现他先是在%oracle_home%/database下创建了SYS用户登录认证的密码文件,于是效仿他的操作,进入CMD,执行

orapwd file=f:/oracle/product/10.2.0/db_1/database/PWDtest.ora password=test force=y,在%oracle_home%/database下创建一个名为PWDtest.ora的密码文件,且指定密码为test.

创建完成密码文件后,发现他接着执行了名为CloneRmanRestore.sql的文件,打开CloneRmanRestore.sql后发现内容如下

connect "SYS"/"&&sysPassword" as SYSDBA  --使用刚才创建的SYS密码以DBA方式连接

set echo on

spool f:/test/scripts/CloneRmanRestore.log      --记录日志,不管它

startup nomount pfile="f:/test/scripts/init.ora";   --以init.ora中参数启动数据库为nomount模式

@f:/test/scripts/rmanRestoreDatafiles.sql;      --执行rmanRestoreDatafiles.sql

于是参照文档使用/NOLOG方式登录sqlplus,使用conn sys/test as sysdba连接,连接成功后执行 startup nomount pfile="f:/test/scripts/init.ora"启动数据库,发现报错信息如下

SQL> startup nomount pfile="f:/test/scripts/init.ora"

ORA-01031: insufficient privileges

将init.ora文件复制到%oracle_home%/database下改名为inittest.ora,

使用SQL> startup nomount 启动

启动完成后,他执行名为rmanRestoreDatafiles.sql的文件来创建数据文件,打开rmanRestoreDatafiles.sql,内容如下:

set echo off;

set serveroutput on;

select TO_CHAR(systimestamp,'YYYYMMDD HH:MI:SS') from dual;

variable devicename varchar2(255);

declare

omfname varchar2(512) := NULL;

  done boolean;

  begin

    dbms_output.put_line(' ');

    dbms_output.put_line(' Allocating device.... ');

    dbms_output.put_line(' Specifying datafiles... ');

       :devicename := dbms_backup_restore.deviceAllocate;

    dbms_output.put_line(' Specifing datafiles... ');

    dbms_backup_restore.restoreSetDataFile;

      dbms_backup_restore.restoreDataFileTo(1, 'f:/oracle/product/10.2.0/oradata/test/SYSTEM01.DBF', 0, 'SYSTEM');

      dbms_backup_restore.restoreDataFileTo(2, 'f:/oracle/product/10.2.0/oradata/test/UNDOTBS01.DBF', 0, 'UNDOTBS1');

      dbms_backup_restore.restoreDataFileTo(3, 'f:/oracle/product/10.2.0/oradata/test/SYSAUX01.DBF', 0, 'SYSAUX');

      dbms_backup_restore.restoreDataFileTo(4, 'f:/oracle/product/10.2.0/oradata/test/USERS01.DBF', 0, 'USERS');

    dbms_output.put_line(' Restoring ... ');

    dbms_backup_restore.restoreBackupPiece('f:/oracle/product/10.2.0/db_1/assistants/dbca/templates/Seed_Database.dfb', done);

    if done then

        dbms_output.put_line(' Restore done.');

    else

        dbms_output.put_line(' ORA-XXXX: Restore failed ');

    end if;

    dbms_backup_restore.deviceDeallocate;

  end;

/

select TO_CHAR(systimestamp,'YYYYMMDD HH:MI:SS') from dual;

之所以这样,是因为使用DBCA创建数据库时,数据文件是从种子数据库Seed_Database.dfb中恢复出来的,避免了创建文件及字典对象等信息,提高数据库的创建速度。执行后,他在%oracle_home%/oradata/的对应数据库文件下恢复出来四个文件,分别为SYSTEM01.DBF、UNDOTBS01.DBF、SYSAUX01.DBF、USERS01.DBF。

回到前面test.sql文件中,接下来被执行的语句是:@f:/test/scripts/cloneDBCreation.sql,打开cloneDBCreation.sql仔细阅读后,发现使用DBCA创建数据库时采用的是 “克隆”一个数据库的方式,由于上一步执行rmanRestoreDatafiles.sql时我们重种子数据库中恢复出来了数据文件,因此接下来执行的语句就是要在恢复出来的文件上进行“克隆”并对其进行改造。

首先

Create controlfile reuse set database "test"

MAXINSTANCES 8

MAXLOGHISTORY 1

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

Datafile

'f:/oracle/product/10.2.0/oradata/test/SYSTEM01.DBF',

'f:/oracle/product/10.2.0/oradata/test/UNDOTBS01.DBF',

'f:/oracle/product/10.2.0/oradata/test/SYSAUX01.DBF',

'f:/oracle/product/10.2.0/oradata/test/USERS01.DBF'

LOGFILE GROUP 1 ('f:/oracle/product/10.2.0/oradata/test/redo01.log') SIZE 51200K,

GROUP 2 ('f:/oracle/product/10.2.0/oradata/test/redo02.log') SIZE 51200K,

GROUP 3 ('f:/oracle/product/10.2.0/oradata/test/redo03.log') SIZE 51200K RESETLOGS;

使用上边的语句创建控制文件,然后通过执行exec dbms_backup_restore.zerodbid(0);清空数据文件头的部分信息,zeroDbid主要用于清除数据文件头的3类信息:Database id信息、Checksum信息和Checksum符号位信息。

信息清除后,执行shutdown immediate;

startup nomount pfile="f:/test/scripts/inittestTemp.ora";

重启数据库,此时重启时使用了inittestTemp.ora文件,区别于最初重启时的init.ora文件,在末尾处多了_no_recovery_through_resetlogs=true,查阅相关资料后得知这个参数用于限制恢复能否跨越resetlogs,对于数据库的恢复来说,resetlogs通常意味着不完全恢复,在数据库resetlogs打开之后,控制文件中的很多信息被改写,在Oracle 10g之前,如果数据库resetlogs打开,那么将不再能够通过当前的控制文件再次进行resetlogs点之前的恢复,而Oracle 10g改变了这个历史。在Oracle 10g中,即使通过resetlogs方式打开了数据库,Oracle仍然支持再次从resetlogs时间点之前进行恢复;在Clone数据库时,Oracle设置这个参数为True,意思就是不允许再次进行跨越resetlogs时间点的恢复。然后使用

Create controlfile reuse set database "test"

MAXINSTANCES 8

MAXLOGHISTORY 1

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

Datafile

'f:/oracle/product/10.2.0/oradata/test/SYSTEM01.DBF',

'f:/oracle/product/10.2.0/oradata/test/UNDOTBS01.DBF',

'f:/oracle/product/10.2.0/oradata/test/SYSAUX01.DBF',

'f:/oracle/product/10.2.0/oradata/test/USERS01.DBF'

LOGFILE GROUP 1 ('f:/oracle/product/10.2.0/oradata/test/redo01.log') SIZE 51200K,

GROUP 2 ('f:/oracle/product/10.2.0/oradata/test/redo02.log') SIZE 51200K,

GROUP 3 ('f:/oracle/product/10.2.0/oradata/test/redo03.log') SIZE 51200K RESETLOGS;

重写控制文件。

接下来Oracle设置restricted session模式,resetlogs打开数据库:

alter system enable restricted session;

alter database "test" open resetlogs;

修改global_name,添加临时文件等:

alter database rename global_name to "test";

ALTER TABLESPACE TEMP ADD TEMPFILE 'f:/oracle/product/10.2.0/oradata/test/TEMP01.DBF' SIZE 20480K REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED;

select tablespace_name from dba_tablespaces where tablespace_name='USERS';

select sid, program, serial#, username from v$session;

由于种子数据库的字符集通常与用户要求的不符,接下来Oracle通过内部操作强制更改了字符集、国家字符集(这个内容在后面的章节有详细的介绍):

alter database character set INTERNAL_CONVERT ZHS16GBK;

alter database national character set INTERNAL_CONVERT AL16UTF16;

最后修改用户口令,禁用restricted session模式,这个克隆过程执行完毕:

alter user sys identified by "&&sysPassword";

alter user system identified by "&&systemPassword";

alter system disable restricted session;

至此,完成了通过克隆方式创建数据库的过程。

完成以上步骤以后,ORACLE继续执行postScripts.sql已完成相应的维护工作,打开该文件发现内容如下:

connect "SYS"/"&&sysPassword" as SYSDBA

set echo on

spool f:/test/scripts/postScripts.log

@f:/oracle/product/10.2.0/db_1/rdbms/admin/dbmssml.sql;

execute dbms_datapump_utl.replace_default_dir;

commit;

connect "SYS"/"&&sysPassword" as SYSDBA

alter session set current_schema=ORDSYS;

@f:/oracle/product/10.2.0/db_1/ord/im/admin/ordlib.sql;

alter session set current_schema=SYS;

connect "SYS"/"&&sysPassword" as SYSDBA

connect "SYS"/"&&sysPassword" as SYSDBA

alter user CTXSYS account unlock identified by change_on_install;

connect "CTXSYS"/"change_on_install"

@f:/oracle/product/10.2.0/db_1/ctx/admin/defaults/dr0defdp.sql;

@f:/oracle/product/10.2.0/db_1/ctx/admin/defaults/dr0defin.sql "SIMPLIFIED CHINESE";

connect "SYS"/"&&sysPassword" as SYSDBA

execute dbms_swrf_internal.cleanup_database(cleanup_local => FALSE);

commit;

spool off

最后执行的脚本是postDBCreation.sql,在这个脚本中将创建spfile,解锁SYSMAN、DBSNMP用户,编译失效对象并配置DB Control:

connect "SYS"/"&&sysPassword" as SYSDBA

set echo on

spool f:/test/scripts/postDBCreation.log

connect "SYS"/"&&sysPassword" as SYSDBA

set echo on

create spfile='f:/oracle/product/10.2.0/db_1/dbs/spfiletest.ora' FROM pfile='f:/test/scripts/init.ora';

shutdown immediate;

connect "SYS"/"&&sysPassword" as SYSDBA

startup ;

alter user SYSMAN identified by "&&sysmanPassword" account unlock;

alter user DBSNMP identified by "&&dbsnmpPassword" account unlock;

select 'utl_recomp_begin: ' || to_char(sysdate, 'HH:MI:SS') from dual;

execute utl_recomp.recomp_serial();

select 'utl_recomp_end: ' || to_char(sysdate, 'HH:MI:SS') from dual;

host f:/oracle/product/10.2.0/db_1/bin/emca.bat -config dbcontrol db -silent -DB_UNIQUE_NAME test -PORT 1521 -EM_HOME f:/oracle/product/10.2.0/db_1 -LISTENER LISTENER -SERVICE_NAME test -SYS_PWD &&sysPassword -SID test -ORACLE_HOME f:/oracle/product/10.2.0/db_1 -DBSNMP_PWD &&dbsnmpPassword -HOST 0d819df6bbbd490 -LISTENER_OH f:/oracle/product/10.2.0/db_1 -LOG_FILE f:/test/scripts/emConfig.log -SYSMAN_PWD &&sysmanPassword;

spool f:/test/scripts/postDBCreation.log

exit;

到此处,整个数据库创建脚本就已经执行完成,通过这个过程我们创建了一个名为TEST的数据库。

 

卸载 Oracle DataBase 10g Oracle Database 10g数据库系统的卸载与安装同等重要。怎样将Oracle系统完全卸载又不影响操作系统的使用是许多用户所关心的问题。不同版本Oracle的卸载方法基本相同。卸载Oracle的方式有三种:不完全安装的手工卸载;单独组件的卸载;数据库安装后的完全卸载。1.5.1不完全安装的手工卸载不完全安装是由于下列几种原因造成的,此时可选择手工卸载:  ·安装时,系统 阅读详情

相关推荐

(oracle10g复习一)oracle10g创建数据库的方法

有段时间没有摸这个东西了,说起来也惭愧啊,现在的工作根本用不到甲骨文,但是我觉得这个东西以后还是很有用的,所以我觉得很有必要复习下了,下面我会就这个一话题做一个全面的复习计划,待续... ... ... ... ... ... ... ... 在Oracle中建库,通常有两种方法。一是使用Oracle的建库工具DBCA,这是一个图形界面工具,使用起来方便且很容易理解,因为它的界面友好、美观,而

jason的java世界 1万+

oracle手动创建数据库

手动创建数据库大致分为以下几个步骤: 1.创建实例 2.创建初始化参数文件 3.启动实例到nomount创建数据库(注意这里要设置ORACLE_SID环境变量) 4.使用create database创建数据库 5.用catalog.sql脚本创建数据字典基表和数据字典视图 6.用catproc.sql脚本安装Oracle系统包 7.用pupbld.sql脚本安装PRODUCT_US

Database、Code 1690

oracle10数据库安装教程,Oracle Database 10g数据库安装及配置教程

Oracle安装配置教程分享给大家供大家参考,具体内容如下1、安装Oracle 版本:Oracle Database 10gRelease 2 (10.2.0.1)下载地址:http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10201winsoft.html安装设置:1)这里的全局数据库名即为...

weixin_34271369的博客 1676

oracle 10g手动建库,[转载]oracle 10g手工建库

1)建库前准备1.确保Oracle软件已经安装上2.设计数据库:确定数据库用途、类型、体系结构、数据库名3.必须是已授权SYSDBA的账户 //操作系统或者口令文件验证4.确保有足够的内存启动实例5.确保存储空间可以运行数据库2)建库1.配置环境变量$ vi .profileORACLE_SID=mia //配置实例名$ ..profile //执行.profile$ echo $ORACLE_S...

weixin_36335279的博客 215

Oracle 10g数据库实例创建全程详解

Oracle 10g是甲骨文公司推出的一款高效、可伸缩、可靠和安全的数据库管理系统,广泛应用于大型企业以及云计算平台。作为Oracle第10个主要版本,它标志着网格计算功能的引入,即通过动态配置和利用可用的系统资源,实现资源的有效管理和数据库性能的提升。本章将简要介绍Oracle 10g的特性,如其对数据仓库的增强支持、OLAP功能的改进以及对XML数据类型的处理能力。同时,我们也将探讨Oracle 10g如何通过集成自动化管理和高可用性功能,来降低数据库管理的复杂性。

weixin_42400643的博客 1259

Oracle Database 10g 数据仓库构建与优化实战指南

ETL(Extract, Transform, Load)流程是数据仓库中非常关键的一部分,它涉及数据从源系统抽取、转换和加载到目标数据仓库的过程。抽取(Extract)是指从源系统中获取数据;转换(Transform)包括清洗、格式化、计算等操作,以满足数据仓库的数据模型和质量要求;加载(Load)则是将转换后的数据导入到目标数据库中。ETL工具有多种,比如开源工具如Talend, Apache NiFi,商业工具如Informatica, Oracle Data Integrator等。

weixin_33750664的博客 1135

oracle创建数据库脚本

--1:导出数据库: exp username/password@databasename file =d:\test.dmp eg:exp jxpt/jxpt@jxpt file =d:\jxpt.dmp 注:databasename为oracle\ora92\network\admin\tnsnames.ora下的名字。 --2:创建数据库 开始菜单====>"oraHome...

jxpt的专栏 756

oracle 数据库用脚本创建的方法

oracle 数据库用脚本创建的方法。此方法使用多instance安装

创建数据库脚本oracle数据库,oracle 10g数据库使用创建脚本实现手动创建数据库-oracle...

使用DBCA 创建数据库时的输出的脚本,并参照脚本文件,手动实现一个数据库的创建过程。首先使用DBCA工具创建一份建库脚本,整个脚本文件包含如下文件,打开BAT文件查看内容如下:mkdir f:\oracle\product\10.2.0\admin\test\adumpmkdir f:\oracle\product\10.2.0\admin\test\bdumpmkdir f:\oracle\p...

weixin_42298969的博客 397

Oracle 10g 手动创建数据库及实例

DBA必修课,oracle10g手动创建数据库和实例教程。

oracle 10g 的sqlplus运行sql文件

以下是user.sql文件的内容: connect system/oracle@ORCL as SYSDBA; drop user gep cascade; create user gep identified by gep default tablespace USERS; grant connect,resource,dba to gep; grant create table to gep; grant select any table to gep; exit

【转载】ORACLE 10G DBCA创建脚本实现手动创建数据库

【oracle】oracle 10g数据库创建脚本实现手动创建数据库 把使用DBCA 创建数据库时的输出的脚本拿来研究研究,并参照脚本文件,手动实现一个数据库的创建过程。首先使用DBCA工具创建一份建库脚本,整个脚本文件包含如下文件,感觉应该是从BAT文件开始入手,打开BAT文件查看内容如下:mkdir f:\oracle\product\10.2.0\admin\test\adu...

abc20140的博客 168

Oracle数据库实例创建脚本。导表操作

数据库操作,自己整理的脚本,包含数据库创建完成之后的基本使用内容,如:创建表空间,创建用户、赋权限,各种表文件导入导出等

oracle手动 建库_Oracle Create the Database for 11g(手动创建数据库)

Oracle Create the Database for 11g(手动创建数据库,附整个过程自动运行脚本) 这里说的创建数据库并非是dbca调用OUI图形来进行的,而是手动建库方式。 介绍一下操作环境: OS – win7 64bit DB – 11.2.0.1 64bit 原先有一个库,这个不要紧,我们只是创建一个另一个库。SQL> select name from v$d...

weixin_39753213的博客 432

oracle_10g_创建数据库和表用户名和密码

创建数据库和表是Oracle 10g最基本的工作,数据库和表是Oracle用于组织和管理数据的对象。本章将讲述数据库、表的基本概念,以及创建数据库和表的两种方式。

oracle10g手动创建实例

oracle10g手动创建实例适合初学者看看.

Oracle 11g利用Create Database手工创建数据库

除了利用DBCA创建数据库之外,还可以利用Create Database语句手工创建数据库,本篇主要探讨如何手工进行数据库的创建。

个人公众号:Alen的数据库学习笔记 4321

AgentScope Java多智能体框架

AgentScope Java 的核心设计理念是“Agent-Oriented Programming” (面向智能体编程)。

zzz19920821的博客 1734
上一篇: oracle10G密码认证文件
下一篇: oracle SQL分类
princelele
博客等级 码龄21年 5粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值