oracle数据库实例的创建和修改

合集下载

navicat 建oracle 实例

navicat 建oracle 实例

navicat 建oracle 实例摘要:一、引言二、Navicat 简介三、Navicat 创建Oracle 实例的步骤1.安装和配置Navicat2.连接到Oracle 数据库3.创建新的数据库实例4.设置实例参数5.启动和关闭实例四、总结正文:一、引言avicat 是一款常用的数据库管理工具,支持多种数据库,包括Oracle。

本文将详细介绍如何使用Navicat 创建Oracle 实例,帮助用户更好地管理和操作Oracle 数据库。

二、Navicat 简介avicat 是一款强大的数据库管理工具,提供了一个统一的平台,用于管理和操作各种数据库,如Oracle、MySQL、SQL Server 等。

它具有易于使用的界面、丰富的功能和高度的灵活性,使得数据库管理员和开发人员能够更高效地完成工作。

三、Navicat 创建Oracle 实例的步骤1.安装和配置Navicat首先,需要在计算机上安装Navicat。

可以从官方网站下载最新版本的软件,并按照安装向导完成安装。

安装完成后,启动Navicat 并按照提示进行配置。

2.连接到Oracle 数据库在Navicat 中,点击“连接”按钮,选择Oracle 数据库类型,并输入Oracle 数据库的详细信息,如主机名、端口号、服务名、用户名和密码。

点击“测试连接”以验证连接是否成功。

3.创建新的数据库实例在Navicat 中,右键单击Oracle 数据库,选择“新建数据库”。

在弹出的对话框中,输入数据库的名称、字符集、存储选项等参数,并选择是否自动创建表空间。

完成后,点击“确定”创建数据库实例。

4.设置实例参数在创建实例后,可以对实例进行参数设置。

例如,可以设置内存大小、调整日志文件大小等。

这些参数可以根据实际需求进行调整,以优化数据库性能。

5.启动和关闭实例在Navicat 中,可以方便地启动和关闭Oracle 数据库实例。

点击工具栏上的“启动”按钮,可以启动数据库实例;点击“关闭”按钮,可以关闭数据库实例。

linux oracle19c创建数据库实例

linux oracle19c创建数据库实例

linux oracle19c创建数据库实例如何在Linux上使用Oracle 19c创建数据库实例在本文中,我们将详细讨论如何在Linux操作系统上使用Oracle 19c创建数据库实例。

Oracle 19c是Oracle数据库管理系统中最新的版本,其集成了许多新功能和改进,可以提高数据库的性能和安全性。

在开始创建数据库实例之前,我们首先需要安装Oracle 19c软件包。

可以从Oracle官方网站上下载最新的Oracle 19c软件包,并按照官方指南进行安装。

安装完成后,我们可以按照以下步骤来创建数据库实例:第1步:创建数据库目录在Linux系统上,我们需要创建一个目录来存储数据库文件。

可以选择在任何位置创建该目录,但是最好选择一个容量足够大的磁盘。

通过以下命令,我们可以创建一个名为"oracle"的目录,该目录将用作数据库文件的存储位置:sudo mkdir /oraclesudo chown oracle:oinstall /oracle上述命令将创建一个名为"oracle"的目录,并将其所有权分配给用户"oracle"和组"oinstall"。

第2步:设置环境变量在创建数据库实例之前,我们需要设置一些必要的环境变量。

可以通过编辑"~/.bash_profile"文件来设置这些变量。

以下是一个示例:export ORACLE_SID=mydbexport ORACLE_HOME=/usr/local/oracle19cexport PATH=ORACLE_HOME/bin:PATH上述环境变量设置了数据库实例的名称为"mydb",Oracle 19c软件的安装目录为"/usr/local/oracle19c"。

请注意,上述示例假设Oracle 19c软件已经正确安装在"/usr/local/oracle19c"目录中。

oracle数据库创建实例

oracle数据库创建实例

oracle数据库创建实例数据库已经安装完成,可以正常登陆查看⽤户等操作system⽤户只能⽤normal⾝份登陆em。

除⾮你对它授予了sysdba的系统权限或者syspoer系统权限。

sys⽤户具有“SYSDBA”或者“SYSOPER”权限,登陆em也只能⽤这两个⾝份,不能⽤normal。

sys所有oracle的数据字典的基表和视图都存放在sys⽤户中,这些基表和视图对于oracle的运⾏是⾄关重要的,由数据库⾃⼰维护,任何⽤户都不能⼿动更改。

sys⽤户拥有dba,sysdba,sysoper等⾓⾊或权限,是oracle权限最⾼的⽤户。

system⽤户⽤于存放次⼀级的内部数据,如oracle的⼀些特性或⼯具的管理信息。

system⽤户拥有普通dba⾓⾊权限。

检查数据库[root@oracle12c ~]# su – oracle[oracle@oracle12c ~]$ lsnrctl startLSNRCTL for Linux: Version 12.2.0.1.0 - Production on 21-10⽉-2019 03:04:10Copyright (c) 1991, 2016, Oracle. All rights reserved.启动/usr/local/Oracle/Product/11.2.0/bin/tnslsnr: 请稍候...TNSLSNR for Linux: Version 12.2.0.1.0 - Production系统参数⽂件为/usr/local/Oracle/Product/11.2.0/network/admin/listener.ora写⼊/usr/local/Oracle/diag/tnslsnr/oracle12c/listener/alert/log.xml的⽇志信息监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle12c)(PORT=1521)))监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle12c)(PORT=1521)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for Linux: Version 12.2.0.1.0 - Production启动⽇期 21-10⽉-2019 03:04:10正常运⾏时间 0 天 0 ⼩时 0 分 0 秒跟踪级别 off安全性 ON: Local OS AuthenticationSNMP OFF监听程序参数⽂件 /usr/local/Oracle/Product/11.2.0/network/admin/listener.ora监听程序⽇志⽂件 /usr/local/Oracle/diag/tnslsnr/oracle12c/listener/alert/log.xml监听端点概要...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle12c)(PORT=1521)))(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))监听程序不⽀持服务命令执⾏成功[oracle@oracle12c ~]$ lsnrctl statusLSNRCTL for Linux: Version 12.2.0.1.0 - Production on 21-10⽉-2019 03:04:13Copyright (c) 1991, 2016, Oracle. All rights reserved.正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle12c)(PORT=1521)))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for Linux: Version 12.2.0.1.0 - Production启动⽇期 21-10⽉-2019 03:04:10正常运⾏时间 0 天 0 ⼩时 0 分 3 秒跟踪级别 off安全性 ON: Local OS AuthenticationSNMP OFF监听程序参数⽂件 /usr/local/Oracle/Product/11.2.0/network/admin/listener.ora监听程序⽇志⽂件 /usr/local/Oracle/diag/tnslsnr/oracle12c/listener/alert/log.xml监听端点概要...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle12c)(PORT=1521)))(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))监听程序不⽀持服务命令执⾏成功创建新的实例1. ⾸先设置要创建的ORACLE的SID[oracle@oracle12c ~]$ export ORACLE_SID=addb2、创建相应⽬录[oracle@oracle12c ~]$ mkdir -p $ORACLE_BASE/admin/addb/{a,b,c,u}dump[oracle@oracle12c ~]$ mkdir -p $ORACLE_BASE/admin/addb/pfile[oracle@oracle12c ~]$ mkdir -p $ORACLE_BASE/oradata/addb3、在$ORACLE_HOME/dbs⽬录下创建初始化⽂件命名⽅法:init实例名.ora 本例中initaddb.ora[oracle@oracle12c ~]$ cd $ORACLE_HOME/dbs[oracle@oracle12c dbs]$ cp init.ora initaddb.ora[oracle@oracle12c dbs]$ vi initaddb.oradb_name='addb'memory_target=1Gprocesses = 150audit_file_dest='/usr/local/Oracle/admin/addb/adump'audit_trail ='db'db_block_size=8192db_domain=''db_recovery_file_dest='/usr/local/Oracle/fast_recovery_area'db_recovery_file_dest_size=2Gdiagnostic_dest='/usr/local/Oracle'dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'open_cursors=300remote_login_passwordfile='EXCLUSIVE'undo_tablespace='UNDOTBS1'# You may want to ensure that control files are created on separate physical# devicescontrol_files = (ora_control1, ora_control2)compatible ='11.2.0'注意不要⽤原来的<ORACLE_BASE>作为路径,修改为对应的绝对路径,否则会报错4、创建密码⽂件[oracle@oracle12c dbs]$ orapwd file=$ORACLE_HOME/dbs/orapwaddb password=p@ssw0rd entries=5 force=y有复杂度要求5、创建oracle的建库脚本 createdb.sql,内容如下,将其放在了$ORACLE_BASE/oradata/addb下⾯[oracle@oracle12c dbs]$ cd $ORACLE_BASE/oradata/addb[oracle@oracle12c addb]$ vi createdb.sqlCREATE DATABASE addbMAXINSTANCES 8MAXLOGHISTORY 1MAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100DATAFILE '/usr/local/Oracle/oradata/addb/system01.dbf' size 100m reuse autoextend on next 1m maxsize unlimited extent management localsysaux datafile '/usr/local/Oracle/oradata/addb/sysaux01.dbf' size 100m reuse autoextend on next 1m maxsize unlimiteddefault temporary tablespace TEMP tempfile '/usr/local/Oracle/oradata/addb/temp01.dbf' size 20m reuse autoextend on next 640k maxsize unlimited undo tablespace UNDOTBS1 datafile '/usr/local/Oracle/oradata/addb/undo01.dbf' size 20m reuse autoextend on next 5M maxsize unlimitedlogfileGROUP 1 ('/usr/local/Oracle/oradata/addb/redo1.dbf') size 10m,GROUP 2 ('/usr/local/Oracle/oradata/addb/redo2.dbf') size 10m,GROUP 3 ('/usr/local/Oracle/oradata/addb/redo3.dbf') size 10mCHARACTER SET ZHS16GBKNATIONAL CHARACTER SET AL16UTF16;6、执⾏建库和数据字典脚本以sysdba进⼊:sqlplus / as sysdba依次执⾏以下命令startup nomount;@$ORACLE_BASE/oradata/addb/createdb.sql@?/rdbms/admin/catalog.sql;@?/rdbms/admin/catproc.sql;@?/rdbms/admin/catexp.sql;[oracle@oracle12c addb]$ sqlplus / as sysdbaSQL> startup nomount;创建所需⽂件⽬录[oracle@oracle12c addb]$ mkdir /usr/local/Oracle/fast_recovery_area 再次尝试[oracle@oracle12c addb]$ sqlplus / as sysdbaSQL> startup nomount;ORACLE 例程已经启动。

linuxoracle创建实例

linuxoracle创建实例

linuxoracle创建实例在Linux系统上使用Oracle创建实例是一个相对复杂的过程,但是通过一步一步的指导,可以顺利完成。

在本文中,我将向您介绍如何在Linux上使用Oracle创建实例的步骤。

要在Linux系统上使用Oracle创建实例,您需要确保系统已经安装了Oracle数据库软件。

如果您还没有安装Oracle数据库软件,可以通过Oracle官方网站下载并按照官方文档进行安装。

一旦Oracle数据库软件安装完成,接下来就可以开始创建实例了。

首先,您需要登录到Linux系统上的Oracle用户。

然后,使用sqlplus命令连接到Oracle数据库。

在SQL命令行界面上,输入以下命令来创建一个新的实例:CREATE DATABASE myinstanceUSER sys IDENTIFIED BY passwordUSER system IDENTIFIED BY passwordLOGFILE GROUP 1 ('/u01/oradata/myinstance/redo01a.log') SIZE 100M,GROUP 2 ('/u01/oradata/myinstance/redo02a.log') SIZE 100M, GROUP 3 ('/u01/oradata/myinstance/redo03a.log') SIZE 100M MAXLOGFILES 5MAXLOGHISTORY 100MAXDATAFILES 100MAXINSTANCES 1CHARACTER SET utf8NATIONAL CHARACTER SET utf8;在上面的命令中,您需要将myinstance替换为您要创建的实例的名称,password替换为您要设置的密码。

另外,您还可以根据自己的需求修改日志文件的路径和大小,以及数据库的字符集和国家字符集等参数。

oracle数据库创建实例

oracle数据库创建实例

oracle数据库创建实例Oracle数据库是目前世界上使用最广泛的商业数据库之一,它的稳定性和数据处理能力备受业界推崇。

在使用Oracle数据库时,首先需要创建一个实例,本文将介绍Oracle数据库创建实例的步骤和注意事项。

1. 配置环境变量在创建Oracle实例之前,需要先配置好相关的环境变量,确保Oracle数据库可以正常运行。

首先需要设置ORACLE_BASE,这是Oracle的基础路径,一般情况下设为/opt/oracle。

其次需要设置ORACLE_HOME,这是Oracle的安装路径,一般情况下设为/opt/oracle/product/11.2.0/dbhome_1。

最后需要设置PATH和LD_LIBRARY_PATH,将Oracle相关的二进制文件路径和库文件路径加入到系统环境变量中。

2. 创建实例创建Oracle实例需要使用dbca命令行工具,该工具可以通过Oracle安装程序自动安装。

在使用dbca之前,需要确保Oracle 数据库服务已经启动。

执行以下命令启动Oracle服务:$ su - oracle$ sqlplus / as sysdbaSQL> startup在Oracle服务启动后,使用dbca创建实例。

执行以下命令:$ dbca在dbca的图形界面中,选择创建数据库。

在创建数据库的过程中,需要指定实例名称、数据库名称、数据库字符集、数据库管理员密码等信息。

需要注意的是,实例名称和数据库名称可以不同,但是实例名称必须唯一。

3. 配置监听器在创建Oracle实例后,需要配置监听器。

监听器是Oracle数据库服务的入口,它负责监听客户端的连接请求,并将请求转发给相应的实例。

在Oracle中,监听器可以使用lsnrctl命令进行管理。

执行以下命令启动监听器:$ lsnrctl start在监听器启动后,需要将实例注册到监听器中。

执行以下命令:$ lsnrctl status$ sqlplus / as sysdbaSQL> alter system register;4. 连接实例在实例和监听器配置完成后,可以使用sqlplus命令连接Oracle实例。

oracle数据库新建数据库语句

oracle数据库新建数据库语句

oracle数据库新建数据库语句以Oracle数据库新建数据库语句为题,我们将介绍如何在Oracle数据库中创建数据库。

Oracle是一种关系型数据库管理系统,可以用于存储和管理大量数据。

下面是创建数据库的步骤:1. 确认数据库实例已启动在创建新的数据库之前,确保Oracle数据库实例已经启动。

可以使用以下命令检查数据库实例的状态:```$ sqlplus / as sysdbaSQL> SELECT instance_name, status FROM v$instance;```2. 创建数据库使用CREATE DATABASE语句来创建新的数据库。

以下是一个示例:```CREATE DATABASE mydbUSER SYS IDENTIFIED BY passwordUSER SYSTEM IDENTIFIED BY passwordLOGFILE GROUP 1 ('/u01/oradata/mydb/redo01.log') SIZE 100M,GROUP 2 ('/u01/oradata/mydb/redo02.log') SIZE 100M,GROUP 3 ('/u01/oradata/mydb/redo03.log') SIZE 100MMAXLOGFILES 5MAXLOGMEMBERS 5MAXDATAFILES 100CHARACTER SET utf8NATIONAL CHARACTER SET utf8EXTENT MANAGEMENT LOCALDATAFILE '/u01/oradata/mydb/system01.dbf' SIZE 500M REUSESYSAUX DATAFILE '/u01/oradata/mydb/sysaux01.dbf' SIZE 500M REUSEDEFAULT TABLESPACE usersDATAFILE '/u01/oradata/mydb/users01.dbf' SIZE 500M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITEDTEMPFILE '/u01/oradata/mydb/temp01.dbf' SIZE 100M REUSE;```在上面的示例中,我们创建了一个名为mydb的数据库。

linux服务器oracle创建实例

linux服务器oracle创建实例

linux服务器oracle创建实例在Linux服务器上创建Oracle实例是一个关键的步骤,它需要一些独特的步骤和配置。

下面将介绍如何在Linux服务器上创建Oracle 实例的过程。

确保已经正确安装了Oracle数据库软件。

如果还没有安装,请根据官方文档进行安装。

安装完成后,打开终端并以root用户身份登录。

我们需要创建一个新的Oracle用户。

我们可以使用以下命令创建一个名为"oracle"的用户:```useradd -m -d /home/oracle -s /bin/bash oracle```接下来,我们需要切换到oracle用户并设置密码:```su - oraclepasswd oracle```然后,我们需要编辑oracle用户的.bash_profile文件,以配置Oracle环境变量。

使用以下命令打开.bash_profile文件:```vi ~/.bash_profile```在文件的末尾添加以下内容:```export ORACLE_HOME=/opt/oracle/product/12.1.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/libexport ORACLE_SID=orcl```保存并关闭文件。

执行以下命令以使配置生效:```source ~/.bash_profile```接下来,我们需要创建一个新的Oracle实例。

使用以下命令打开Oracle实例创建向导:```dbca```在向导中,选择"创建数据库"选项,并按照向导的指示完成配置。

确保输入正确的数据库名称、SID、字符集和存储位置等信息。

完成配置后,向导将开始创建Oracle实例。

这个过程可能需要一些时间,具体取决于你的系统性能和数据库大小。

Oracle数据库建表及其基本操作

Oracle数据库建表及其基本操作

1.在对oracle数据操作之前,需要了解oracle的类型,oracle的常用类型有:2.登录创建好的用户,然后在表空间中建立表,以userinfo表为例:--创建表create table userinfo(id number(6,0),usernam varchar2(20),userpwd varchar2(20),email varchar2(30),regdate date);表建立成功之后,查看是否建表成功,有很多方法,列举我常用的两个方法:方法一:在控制台输入desc userinfo 回车, 可以成功查询出新建表字段的类型方法二:使用图形化工具直接查询表select * from userinfo;3.添加字段alter table table_nameadd column_name datatype;table_name是表名称, column_name是列名称, datatype是数据类型eg:添加一个字段remark字段,是varchar2类型,长度为100alter table userinfoadd remarks varchar2(100);查看表结构:给字段添加注释comment on column 表.列 is '列注释';eg:comment on column new_uesrinfo.remarks is '注释';在plsql上面的运行结果:4.修改表字段名称和表名--给字段改名alter table table_namerename column column_name To new_column_name; --修改表的名字rename table_name to new_table_name;5.删除字段alter table table_namedrop column column_name;6.更改字段长度,类型eg:修改remarks字段修改字段的长度alter table userinfomodify remarks varchar2(150);eg:修改字段类型a.如果表中没有数据alter table 表名 modify(字段名1 类型,字段名2 类型,字段名3 类型.....)b.如果表中有数据(分为四步)--修改原字段名ALTER TABLE 表名 RENAME COLUMN 字段名A TO 字段名B;--添加一个和原字段同名的字段"字段名A",添加的字段ALTER TABLE 表名 ADD 字段名目标类型;--将"字段名B"的数据更新到新建字段"字段名A"中UPDATE 表名 SET 字段名A = TIRM(字段名B);--更新完成后,删除原备份字段"字段名B"ALTER TABLE 表名 DROP COLUMN 字段名Beg:例如将上表的remarks字段修改为number(32,2)alter table userinfo rename column remarks to remarks_tmp;alter table userinfo add remarks number(32,2);update userinfo set remarks = trim(remarks_tmp);alter table userinfo drop column remarks_tmp;7.删除数据,删除表--删除表数据truncate table table_name;delete from table_name这里truncate和delete的区别是,truncate是截断了表,它的效率比delete要快--删除表的结构drop table table_name;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

我们经常所说的数据库实例这一称谓应该换做数据库更为准确,数据库可以理解为是一个物理的静态概念,主要包括一些物理存在的数据库文件,而数据库实例则是一个动态概念,包括一些内存区域以及若干进程,数据库实例是对数据库进行操作的执行者。

安装完Oracle数据库系统的安装后,需要创建数据库实例才能真正开始使用Oracle 数据库服务。

总结起来,Oracle有三种创建数据库实例的方法。

第一种,最常用也最简单,那就是通过DBCA(Database Configuration Assistant),这是Oralce提供的一个图形界面的数据库实例配置工具,通过它可以创建、删除和修改数据库实例,它的使用也比较简单、易懂,交互式的图形界面操作,非常准确有效的提示与配置,是一个比较方便的创建数据库实例的方式。

按照DBCA给出的提示,很容易创建一个新数据库实例。

在创建数据库的时候,DBCA还提供了两个选项,让你可以根据刚刚设置好的参数生成一个数据库实例模板和一份数据库实例创建脚本。

这两个东西是非常好,非常有用的东西,数据库模板由Oracle自己管理维护,已经创建好的数据库实例模板可以在DBCA图形程序新建数据库实例时作为模板来使用,另外在DBCA使用responseFile文件或者命令行参数创建数据库时也需要用到(见后面介绍);数据库创建脚本是一组脚本,包括shell脚本和sql 脚本,这些脚本共同实现一个功能,那就是按照你之前在DBCA中设置好的那样创建一个数据库实例(后面也会有介绍),你需要做的只是将这些脚本在你的代码中调用起来。

当然,你也可以选择只生成数据库模板或者数据库脚本,而不用去创建一个真的数据库(这通常很费时间)。

Oracle数据库实例的创建、删除、修改DBCA是一个非常强大的工具,上面看到的只是DBCA最常用的创建一个数据库实例的使用,其实DBCA还提供另外两种使用方法,分别是responseFile和命令行带参调用。

先说DBCA的responseFile使用方法,responseFile这个东东并不陌生,前文讲的Oracle自动安装就是使用responseFile完成的,DBCA的responseFile使用方法和Oracle 安装程序的responseFile使用方法基本一致。

但DBCA的responseFile的来源只能是Oracle 安装包中提供的模板文件,而不能向Oracle安装程序的responseFile一样,先自己record 一个,然后再用这个record去指导Oracle的自动安装。

从Oracle安装包中获取到DBCA 的responseFile模板文件后,你可以根据自己的需要编辑修改该模板文件,以完成对数据库实例的某些参数设置(DBCA图形界面所提供的参数设置,responseFile中都可以设置,而且该responseFile模板文件的注释写的很好,你完全不用担心无法搞定那些繁杂的数据库实例参数设置,赞Oralce一个!)。

该模板文件在Oracle安装包中的位置一般在${ORACLE_PACKAGE}/response目录下。

有了responseFile之后,你只需在调用DBCA的时候指定responseFile的位置和另外一些参数:dbca [-silent|-progressOnly] -responseFileresponseFile名称其中-silent|-progressOnly选项意义和Oracle安装程序命令行参数中的同名选项一样,表示完全字符界面自动安装或者带图形提示界面的半自动化安装。

responseFile名称当然就是responseFile的具体位置了。

但是,有一点不是很好,那就是使用DBCA的responseFile方式创建Oracle数据库实例,需要事先已经存在一个数据库实例模板了,在responseFile中再指定该数据库实例模板名,然后DBCA再依据这个已有的数据库实例模板完成新数据库实例的创建,所以就会有前面讲到的DBCA图形界面创建数据库实例时提供生成数据库实例模板的选项(数据库实例模板也可以从一个已有数据库实例生成),就是在这要用到的。

从上面调用DBCA使用responseFile的命令中,应该已经看到了DBCA是提供一些命令行参数选项的,其实DBCA提供的命令行参数选项远比你想象的强大,甚至可以这么说,所有DBCA图形界面和responseFile能够办到的事,通过DBCA丰富的命令行参数选项都可以办到。

你在DBCA图形界面上设置的参数或者在responseFile中指定的参数值都可以通过DBCA的命令行参数选项来进行设置,所以你完全可以只通过DBCA的命令行带参调用来完成一个数据库实例的创建(当然也包括删除、修改数据库实例等所有DBCA图形界面所能提供的功能)。

其实,我更愿意这样认为,DBCA的responseFile应用也是一种DBCA命令行带参调用的使用。

需要注意的是,当DBCA的命令行参数和responseFile同时设置一个参数时,命令行参数的优先级是比responseFile要高的。

另外,使用DBCA命令行带参调用新建数据库实例和使用responseFile新建数据库实例一样,也是需要事先已经存在一个数据库实例模板,才能完成新数据库实例的创建。

一份非常详细的DBCA所有命令行参数选项列表,你可以通过执行dbca -help获得。

到现在你可能已经发现,DBCA图形界面、DBCA的responseFile使用以及DBCA的命令行带参调用,其实是三个分别具备完全数据库实例设置功能的工具或者接口,分别对应不同的应用场景,它们可以满足你几乎所有的应用需求(使用这样的工具来帮助构建自己的软件真是非常惬意的一件事情,再赞Oracle一个!)。

第二种是通过脚本(是否称为命令行方式更合适,下文描述的脚本方式其实都是命令行方式的非交互式方法,或者说命令行的自动化方式,但其实所有脚本方式都可以将shell 脚本或sql脚本中的shell命令、sqlplus命令拆分出来,手工在shell中或者sqlplus界面中进行交互式的输入执行,这可以称为命令行的手工方式)来完成数据库实例的代码中自动创建。

这里说的脚本包括shell脚本和sql脚本,这种方式可以说是最适合与编程结合的,因为这些shell脚本或者sql脚本都可以直接在shell命令中调用执行,所以可以很好与shell编程相结合。

而这其实是基于一个非常重要的事实,即Oracle提供了一个交互式的命令行工具sqlplus(类似与DB2的db2cmd),这个工具可以认为是一个Oracle数据库管理工具,通过它可以执行一些Oracle的数据库管理命令,来完成一些数据库管理工作(这当然就包括数据库实例的创建),同时你也可以把它当作一个SQL语句执行器,直接在里边执行你想要执行的SQL语句或者存储过程等,并获取执行结果。

并且,更重要的是,sqlplus 可以直接在shell命令行中进行非交互式的调用执行(通常是调用执行一段sqlplus语句,或者是一个由一些sqlplus语句组成的sql脚本,我所说的sqlplus语句包括Oracle数据库管理维护命令、SQL语句和存储过程等),这就为在shell编程中使用sqlplus完成数据库实例自动创建工作提供了可能。

shell命令行中非交互式调用sqlplus执行一段sqlplus语句是利用shell编程中重定向命令的一个特性,即分隔符重定向输入。

一般用法如下:command<<任意自定义分隔符>(换行)内容>(换行)内容>自定义分隔符shell中遇到<<则会自动将下一个单词认作分隔符,并将分隔符后面的文本当作command命令执行的内容传递给command依次全部执行直至遇到下一个分隔符单词才结束。

这里的分隔符可以是任意自定义的单词,通常使用EOF,举例:sqlplus / as sysdba<<EOFstartupnomount;select * from v$version;shutdown immediate;exit;EOF这段shell程序调用sqlplus执行了若干sqlplus语句,用来启动数据库实例,查询数据库版本信息,然后关闭数据库实例,退出sqlplus。

shell命令行中非交互式调用sqlplus执行一个sql脚本是利用sqlplus本身提供的命令行参数。

在sqlplus界面中可以通过start命令和@命令来执行一个sql脚本,两者功效相同,用法如下:SQL>start sql脚本绝对路径;SQL>@sql脚本绝对路径;而在shell命令行中可以使用@来完成sqlplus对sql脚本的调用执行,举例:sqlplus / as sysdba @./MySQL.sql以上命令会调用sqlplus执行当前目录下的MySQL.sql脚本。

使用脚本来完成数据库实例的创建工作,也分为两种情况。

一种是诚如前文所述的那样,在使用DBCA图形工具创建数据库实例的同时生成一份数据库实例创建脚本(包括若干shell脚本和sql脚本),那么你就可以使用这份脚本,在shell 中进行调用,完成数据库实例的代码自动创建。

使用这份数据库实例创建脚本创建的新数据库实例和原数据库实例是完全一样,当然,你可以将生成的脚本进行修改,以完成你对数据库实例的某些设置,但是请在你对脚本内容已经足够了解,并且知道你自己在干什么的情况下修改脚本,否则你很有可能使用修改后的脚本无法正确创建数据库实例。

这种方法中shell脚本对sqlplus的使用,更多的是使用sqlplus来执行一些Oracle生成的sql脚本(这些sql脚本的内容是就是一些sqlplus语句的集合,它们的任务就是完成数据库实例的创建以及设置)。

另一种情况则是不依靠DBCA生成的脚本,完全由自己来编写实现一份shell脚本,在脚本中你可以调用sqlplus执行一段sqlplus语句或者其它一些sql脚本,以完成数据库实例的创建和设置,这完全取决于你的实现;而最常用的用来创建数据库实例的一个方法就是在sqlplus中使用create database语句,create database语句提供了许多丰富的选项和参数设置,确保你能完全创建一个自己所需要的数据库实例。

当然,还有一些其它方法可以创建数据库实例,比如调用执行oracle提供某些存储过程等。

至于create database语句的详细介绍可以参考oracle的sql reference。

第三种严格来说不能算作一种创建Oracle数据库实例的方法,它是通过已有的数据库实例为基础来完成新数据库实例的创建的。

相关文档
最新文档