实验环境:Centos7.4 +Oracle11G R2
实验目的:手工创建Oracle数据库
实验步骤:
1、Centos7.4上安装Oracle数据库
请参考之前的文章,
上面文章是软件与数据库同时安装,如单独安装Oracle软件,则需要修改dsp文件
cat <<EOF >>/home/oracle/db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_AND_CONFIG
ORACLE_HOSTNAME=$HOSTNAME
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/data/oracle/oraInventory
SELECTED_LANGUAGES=en
ORACLE_HOME=/data/oracle/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/data/oracle/app
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=false
oracle.install.db.customComponents=
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.CLUSTER_NODES=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=hpprdzb
oracle.install.db.config.starterdb.SID=hpprdzb
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryLimit=480
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=Orasys12
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
oracle.install.db.config.starterdb.dbcontrol.emailAddress=
oracle.install.db.config.starterdb.dbcontrol.SMTPServer=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/data/oracle/app/oradata
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
EOF
安装Oracle软件
$/data/database/runInstaller -silent -ignorePrereq -responseFile /home/oracle/dbonly_install.rsp
2、手工创建Oracle数据库实例
方法一、Oracle Universal Installer,即图形化界面与Oracle软件一起安装,非图形化方式(字符界面)使用silence模式创建Oracle数据库实例
Silence模式请查看文章《字符界面安装Oracle11GR2》
方法二、DBCA(Database Configuration Assistant)方式创建,也可以分为图形化安装与字符界面安装Silence模式创建
方法三、手工创建数据库,用Oracle的SQL语句创建数据库
Step1、设置环境变量.bash_profile
export PATH=$PATH:$HOME/.local/bin:$HOME/bin
export ORACLE_BASE=/data/oracle/app/oracle
export ORACLE_HOME=/data/oracle/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=hpprdzb
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
加颜色的为新增内容,$source .bash_profile
Step2、创建参数文件(位置:$ORACLE_HOME/dbs)
$grep -v \# $ORACLE_HOME/dbs/init.ora >$ORACLE_HOME/dbs/init$ORACLE_SID.ora
db_name='hpprdzb' memory_target=480M processes = 150 audit_file_dest=/data/oracle/app/oracle/admin/hpprdzb/adump audit_trail ='db' db_block_size=8192 db_domain='' db_recovery_file_dest=/data/oracle/app/oracle/flash_recovery_area db_recovery_file_dest_size=2G diagnostic_dest=/data/oracle/app/oracle/diag dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)' open_cursors=300 remote_login_passwordfile='EXCLUSIVE' undo_tablespace='UNDOTBS1' control_files = (/data/oracle/app/oracle/oradata/hpprdzb01.ctl,/data/oracle/app/oracle/oradata/hpprdzb02.ctl) compatible ='11.2.0'
|
Step3、创建目录结构
$ cd $ORACLE_BASE/
$ mkdir -p $ORACLE_BASE/admin/hpprdzb/adump
$ mkdir flash_recovery_area
$ mkdir diag
$ mkdir oradata
$vi create_hpprdzb.sql
| create database hpprdzb maxlogfiles 5 maxlogmembers 5 maxdatafiles 100 maxinstances 1 logfile group 1 ('/data/oracle/app/oracle/oradata/redo1.log') size 10m, group 2 ('/data/oracle/app/oracle/oradata/redo2.log') size 10m, group 3 ('/data/oracle/app/oracle/oradata/redo3.log') size 10m datafile '/data/oracle/app/oracle/oradata/system.dbf' size 200m reuse EXTENT MANAGEMENT LOCAL sysaux datafile '/data/oracle/app/oracle/oradata/sysaux.dbf' size 100m reuse UNDO TABLESPACE undotbs1 datafile '/data/oracle/app/oracle/oradata/undo1.dbf' size 100m default temporary tablespace temp tempfile '/data/oracle/app/oracle/oradata/temp01.dbf' size 100m reuse character set al32utf8 ; |
Step4、执行建库脚本
$sqlplus /nolog
SQL>conn / as sysdba
SQL>startup nomount

SQL>@/data/create_hpprdzb.sql
$ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapwhpprdzb password=Orasys123 force=y
SQL>@$ORACLE_HOME/rdbms/admin/catalog.sql
SQL>@$ORACLE_HOME/rdbms/admin/catproc.sql
SQL>CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/data/oracle/app/oracle/oradata/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
SQL>ALTER DATABASE DEFAULT TABLESPACE "USERS";
SQL> shutdown immediate
SQL> create spfile from pfile;
SQL>startup
Step5、验证是否创建完成Oracle实例
SQL> col name for a60
SQL> select file#,name from v$datafile union select file#,name from v$tempfile;
设置数据文件自动扩展
SQL>alter database datafile 1 autoextend on;
SQL>alter database datafile 2 autoextend on;
SQL>alter database datafile 3 autoextend on;
SQL>alter database datafile 4 autoextend on;
SQL>alter database tempfile 1 autoextend on;
Step6、配置监听
$cat<< EOF >>$ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = hpprdzb)
(ORACLE_HOME = /data/oracle/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = hpprdzb)
)
(SID_DESC =
(PROGRAM = extproc)
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /data/oracle/app/oracle/product/11.2.0/dbhome_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hpprdxfx)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /data/oracle/app/oracle
EOF
$cat<< EOF >>$ORACLE_HOME/network/admin/tnsnames.ora
HPPRDZB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hpprdxfx)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = hpprdzb)
)
)
EOF
$lsnrctl start
$sqlplus / as sysdba
SQL>shutdown immediate
SQL>startup
到此,手工创建Oracle数据库实例已完成。
方法四、使用seed种子数据库还原Oracle数据库,也是新建Oracle数据库实例
3、删除Oracle数据库
(--非必选项) Step 1:获得控制文件、数据文件,日志文件等相关信息
SQL> select status ,name from v$controlfile;
SQL> select * from v$dbfile;
SQL> select * from v$logfile;
SQL>archive log list;
(--必选项) Step 2: 停止监听服务和OEM
$ lsnrctl stop 或 lsnrctl stop listener_name
$ emctl stop dbconsole
(--必选项) Step 3: 关闭数据库实例
SQL> shutdown immediate;
(--必选项) Step 4:启动到数据库实例到mount状态
SQL> startup mount exclusive restrict;
或
SQL> startup mount;
(--必选项) Step 5:修改参数为允许受限的会话模式
SQL> alter system enable restricted session;
缺少此步骤,直接执行Step6,会报如下图片错误。

(--必选项)Step 6: 使用drop database命令来清除数据库
SQL> drop database;
(--必选项)Step 7: 删除Oracle SID的相关目录
本例中Oracle的SID为hpprdzb
$rm -rf `find /data -name $ORACLE_SID -type d`
注:find前面有反引号
删除oracle数据库的步骤已完成。
此节中的内容来自潇湘隐者《Oracle手工删除数据库》
https://www.cnblogs.com/kerrycode/p/5447757.html
作者还提供了一个自动化的脚本,也列示如下:
SQL> SET SERVEROUTPUT ON SQL> DECLARE TYPE string_arr IS TABLE OF VARCHAR2(1024); file_list string_arr; BEGIN SELECT t.file_path BULK COLLECT INTO file_list FROM (SELECT NAME file_path FROM V$DATAFILE UNION SELECT MEMBER file_path FROM V$LOGFILE UNION SELECT NAME file_path FROM v$controlfile UNION SELECT VALUE file_path FROM v$parameter WHERE NAME LIKE '%dest' UNION SELECT VALUE file_path FROM v$parameter2 WHERE NAME = 'utl_file_dir' UNION SELECT '$ORACLE_BASE/admin/$ORACLE_SID' file_path FROM dual ) t;
FOR i IN file_list.FIRST .. file_list.LAST LOOP DBMS_OUTPUT.PUT_LINE('rm -f ' || file_list(i)); END LOOP;
END; / |
4、删除Oracle软件
Step1、 停止监听服务(oracle用户登录)
$ lsnrctl stop
Step2、停止数据库(oracle用户登录)
$sqlplus / as sysdba
SQL>shutdown immediate
Step3、删除Oracle的安装路径(root登录)
# rm -rf /data/oracle/app
# rm -rf /data/oracle/oraInventory
Step4、删除系统路径文件(root用户登录)
# rm -rf /usr/local/bin/dbhome
# rm -rf /usr/local/bin/coraenv
# rm -rf /usr/local/bin/oraenv
Step5、删除数据实例表(root用户登录)
# rm -rf /etc/oratab
Step6、 删除数据库实例lock文件(root用户登录)
# rm -rf /etc/oraInst.loc
(非必需)Step7、删除oracle用户及用户组(root用户登录)
# userdel -r oracle
# groupdel dba
# groupdel oinstall
如果还需要在此服务器上安装Oracle软件以及配置Oracle数据库,Step7可以忽略。
请思考是否还有其他方式创建数据库实例,如何实现的?
Linux与Oracle的一段旅程暂告一段落,最近几篇文章均为笔者亲自实验成功,读者只需照着文章一点一点实验即可,让读者有成功的喜悦,萌生巨大的兴趣,然后开展深入思考,不断的对自己发问,为什么要这样做,那样做可不可以,还有没有其它方法实现,实现方式可不可以批量实现,能不能用shell脚本实现,四种方式实现的前提条件,适用于哪些情况等等。
吕世浩先生读书的三个层次:1、诵书,背诵书中内容,烂熟于心;2、读书,能够分析、归纳书中的原理;3、念书,书中的道理时时刻刻放在心中去实践它。
操作娴熟->思路清晰->原理通透。 恩墨学院
诵书->读书->念书。 吕世浩
孰能生巧。
如果您喜欢我的文章,请长按标识符关注我的公众号,学习Linux的路上,期待与您同行。




