暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OCM第一场景:手工安装Oracle数据库

Linux日常小实验 2018-06-14
454

实验环境:Centos7.4 +Oracle11G R2

实验目的:手工创建Oracle数据库

实验步骤:


1、Centos7.4上安装Oracle数据库

请参考之前的文章,

字符界面安装Oracle 11GR2

上面文章是软件与数据库同时安装,如单独安装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模式创建

DBCA创建Oracle数据库实例


方法三、手工创建数据库,用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数据库实例

Seed种子数据库还原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的路上,期待与您同行。



文章转载自Linux日常小实验,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论