Linux无界面新建Oracle数据库实例

在这里插入图片描述

Linux无界面新建Oracle数据库实例

根据https://blog.csdn.net/qq_24058757/article/details/88220437
步骤操作后总结整理的自己的新建实例过程

内存检查

通过df -h看看服务器整体挂载和内存使用情况

[oracle@oracledb ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G  1.9G  5.9G  25% /dev/shm
tmpfs           7.8G  481M  7.3G   7% /run
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda2        31G   31G  508M  99% /
/dev/sda1      1014M  176M  839M  18% /boot
/dev/sda4       256G   73G  170G  31% /data
tmpfs           1.6G     0  1.6G   0% /run/user/1001
tmpfs           1.6G     0  1.6G   0% /run/user/0

如图可以看出/根目录挂载要满了,可以清一清根目录的一些日志或者备份文件(内存充足的不用管)

如图/data目录下挂载的内存较大,因此后续建表空间建议放在/data下,这里根据自己服务器情况自己考虑

内存检查,查看当前可用内存还有多少,带不带的起这台服务器上跑的服务,应该没啥问题

[oracle@oracledb ~]$ grep -i memtotal /proc/meminfo
MemTotal:       16265868 kB

切换到oracle用户下,后续操作都在oracle用户下进行

创建的ORACLE的SID

设置ORACLE的SID为我们要新建的实例

#切换到oracle用户环境
[root@oracledb ~]# su oracle

#本次创建的ORACLE的SID为tfcpzx
[oracle@oracledb ~]$ export ORACLE_SID=tfcpzx

#打印当前ORACLE的SID
[oracle@oracledb ~]$ echo $ORACLE_SID
tfcpzx

如果echo $ORACLE_SID查到的值不是新设置的SID
可以修改.bash_profile里面的SID

#上述操作没成功的执行这步
#进入根目录
[oracle@oracledb ~]$ cd ~  
#编辑.bash_profile,修改其中的export ORACLE_SID=tfcpzx
[oracle@oracledb ~]$ vi .bash_profile 

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

umask 022
export ORACLE_HOSTNAME=oracledb
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/
export ORACLE_SID=tfcpzx  #修改成你新建的实例名
export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LC_ALL="en_US"
export LANG="en_US"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
".bash_profile" 24L, 556C

按i,进入编辑模式,进行修改完毕后,按ESC退出编辑,输入:wq保存并退出
然后重新加载配置

#重新加载配置
[oracle@oracledb ~]$ source .bash_profile 
#选择新建的实例SID
[oracle@oracledb ~]$ export ORACLE_SID=tfcpzx
[oracle@oracledb ~]$ echo $ORACLE_SID
tfcpzx

查看无误

创建实例对应的用户

#将tfcpzx换成自己的SID
[oracle@oracledb ~]$ mkdir -p $ORACLE_BASE/admin/tfcpzx/{a,b,c,u}dump
[oracle@oracledb ~]$ mkdir -p $ORACLE_BASE/admin/tfcpzx/pfile
[oracle@oracledb ~]$ mkdir -p $ORACLE_BASE/oradata/tfcpzx

创建初始化文件

这里一定要注意控制文件的生成

等下在下面创建新的实例的初始文件时,注意文件的这里(可以先看下面创建新实例的初始化文件,把注意事项写前面是怕你们直接新建初始化文件了)
control_files = (ora_control3, ora_control4)

这里写的两个控制文件一定不要和当前库中其他的实例的控制文件重复了!!!

检查是否重复的方法:

可以进入cd $ORACLE_HOME/dbs目录下检查,有了的(ora_control数字 就不要写这个了,换一个大一点的,如下已经存在的ora_control数字 控制文件就不要用了

[oracle@oracledb ~]$ cd $ORACLE_HOME/dbs
[oracle@oracledb dbs]$ ls
ora_control4    ora_control9          hc_tfcpzx.dat   lkTFCPZX    
hc_tgpt.dat     lkTGPT                orapwtfcpzx     ora_control10       orapwtgpt       init.ora              ora_control3    inittfcpzx.ora  ora_control5    inittgpt.ora          ora_control6

另外最好再去看看这个目录下,其他实例的初始化文件比如其他的 init实例名.ora,
cat init其他实例名.ora
看看其他实例的control_files = (ora_control3, ora_control4)这里写的多少,其他实例初始化文件用到了的控制文件避免取名重复!!!

[oracle@oracledb dbs]$ cat inittgpt.ora 
# 
# $Header: rdbms/admin/init.ora /main/23 2009/05/15 13:35:38 ysarig Exp $ 
# 
# Copyright (c) 1991, 1997, 1998 by Oracle Corporation
# NAME
#   init.ora
# FUNCTION
# NOTES
# MODIFIED
#     ysarig     05/14/09  - Updating compatible to 11.2
#     ysarig     08/13/07  - Fixing the sample for 11g
#     atsukerm   08/06/98 -  fix for 8.1.
#     hpiao      06/05/97 -  fix for 803
#     glavash    05/12/97 -  add oracle_trace_enable comment
#     hpiao      04/22/97 -  remove ifile=, events=, etc.
#     alingelb   09/19/94 -  remove vms-specific stuff
#     dpawson    07/07/93 -  add more comments regarded archive start
#     maporter   10/29/92 -  Add vms_sga_use_gblpagfile=TRUE 
#     jloaiza    03/07/92 -  change ALPHA to BETA 
#     danderso   02/26/92 -  change db_block_cache_protect to _db_block_cache_p
#     ghallmar   02/03/92 -  db_directory -> db_domain 
#     maporter   01/12/92 -  merge changes from branch 1.8.308.1 
#     maporter   12/21/91 -  bug 76493: Add control_files parameter 
#     wbridge    12/03/91 -  use of %c in archive format is discouraged 
#     ghallmar   12/02/91 -  add global_names=true, db_directory=us.acme.com 
#     thayes     11/27/91 -  Change default for cache_clone 
#     jloaiza    08/13/91 -         merge changes from branch 1.7.100.1 
#     jloaiza    07/31/91 -         add debug stuff 
#     rlim       04/29/91 -         removal of char_is_varchar2 
#   Bridge     03/12/91 - log_allocation no longer exists
#   Wijaya     02/05/91 - remove obsolete parameters
#
##############################################################################
# Example INIT.ORA file
#
# This file is provided by Oracle Corporation to help you start by providing
# a starting point to customize your RDBMS installation for your site. 
# 
# NOTE: The values that are used in this file are only intended to be used
# as a starting point. You may want to adjust/tune those values to your
# specific hardware and needs. You may also consider using Database
# Configuration Assistant tool (DBCA) to create INIT file and to size your
# initial set of tablespaces based on the user input.
###############################################################################

# Change '<ORACLE_BASE>' to point to the oracle base (the one you specify at
# install time)

db_name='tgpt'
memory_target=1G
processes = 150
audit_file_dest='/u01/app/oracle/admin/tgpt/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
#db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='/u01/app/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=tgptXDB)'
open_cursors=300 
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = (ora_control5, ora_control6)  #检查该目录下其他实例初始化文件的这里,确保不会和其他实例的初始化生成的控制文件重名!!!
compatible ='11.2.0'
下面开始创建新建实例初始化文件

!!!一定要注意下面标注的几个注意替换成自己环境的地方,不然后续会报错找不到文件

[oracle@oracledb ~]$ cd $ORACLE_HOME/dbs
[oracle@oracledb dbs]$ ll
total 57556
-rw-r--r-- 1 oracle oinstall     2851 May 15  2009 init.ora

#复制初始化文件,命名规则init+实例名.ora
[oracle@oracledb dbs]$ cp init.ora inittfcpzx.ora
[oracle@oracledb dbs]$ ls
init.ora         inittfcpzx.ora

#编辑,将<ORACLE_BASE>换成对应的绝对路径,不知道的可以通过echo $ORACLE_BASE命令查看
[oracle@oracledb dbs]$ vi inittfcpzx.ora
db_name='tfcpzx' #换成自己的SID
memory_target=1G
processes = 150
audit_file_dest='/u01/app/oracle/admin/tfcpzx/adump'#替换成自己的
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='/u01/app/oracle/fash_recovery_area' #替换成自己的
db_recovery_file_dest_size=2G
diagnostic_dest='/u01/app/oracle' #替换成自己的
dispatchers='(PROTOCOL=TCP) (SERVICE=tfcpzxDB)'#tfcpzxDB将替换成自己的SID+DB
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = (ora_control3, ora_control4) #改成在$ORACLE_HOME/dbs下不存在的即可,如果生成失败,会生成这两个文件,下次生成就需要删除已经生成的,或者将这里的数值增加(防止文件已经存在)
compatible ='11.2.0'

创建密码

修改sys用户的密码为sys

#将orapwtfcpzx的tfcpzx改成自己的SID,password=123456是设置密码,如果设置的密码是字符要加双引号(因为这里是在服务器上执行的),如"password"
[oracle@oracledb dbs]$ orapwd file=$ORACLE_HOME/dbs/orapwtfcpzx password=123456 entries=5 force=y

创建oracle的建库脚本

#进入到oradata自己的实例下
[oracle@oracledb dbs]$ cd $ORACLE_BASE/oradata/tfcpzx

#创建文件,文件信息里面的路径注意替换为自己实例的
#我这里是在根目录下的data里,一般是在/u01/oracle/oradata/自己的实例/  目录下的
[oracle@oracledb dbs]$ vi createdb.sql
create database tfcpzx #替换
MAXINSTANCES 1
MAXLOGHISTORY 1
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
DATAFILE
'/data/oracle/oradata/tfcpzx/system01.dbf' size 100m reuse autoextend on next 1m maxsize unlimited extent management local
sysaux datafile
'/data/oracle/oradata/tfcpzx/sysaux01.dbf' size 100m reuse autoextend on next 1m maxsize unlimited 
default temporary tablespace TEMP tempfile
'/data/oracle/oradata/tfcpzx/temp01.dbf' size 20m reuse autoextend on next 640k maxsize unlimited 
undo tablespace UNDOTBS1 datafile
'/data/oracle/oradata/tfcpzx/undo01.dbf' size 20m reuse autoextend on next 5M maxsize unlimited 
logfile
GROUP 1 ('/data/oracle/oradata/tfcpzx/redo1.dbf') size 10m, 
GROUP 2 ('/data/oracle/oradata/tfcpzx/redo2.dbf') size 10m, 
GROUP 3 ('/data/oracle/oradata/tfcpzx/redo3.dbf') size 10m  
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
;

注意:上述建库脚本中,各目录得存在且权限都为oracle用户,比如上述的/data/oracle/oradata/tfcpzx/目录,是需要自己去建立的。如果不存在此目录,下面执行脚本会报打不开文件夹的错误,且注意一旦下面执行建库脚本报错,就需要把自己生成的ora_control控制文件删除,或者去初始化脚本中将这个文件名更改,不然再次执行会提示控制文件已存在。

执行建库和数据字典脚本

#切换到oracle的根目录
[oracle@oracledb ~]$ cd ~
#打印当前ORACLE的SID,如果不是或没显示,就按第一步进行选择到新建的实例下
[oracle@oracledb ~]$ echo $ORACLE_SID
tfcpzx

#连接数据库
[oracle@oracledb ~]$ sqlplus / as sysdba

#当前数据库并未建立,所以通过startup nomount只启动实例
SQL> startup nomount;
SQL> @$ORACLE_BASE/oradata/tfcpzx/createdb.sql;#替换成自己的SID路径
SQL> @?/rdbms/admin/catalog.sql;#直接执行这句话,需要时间,请等待结束标志再操作
SQL> @?/rdbms/admin/catproc.sql;#直接执行这句话,需要时间,请等待结束标志再操作
SQL> @?/rdbms/admin/catexp.sql;#直接执行这句话,需要时间,请等待结束标志再操作

#上述操作执行完毕后quit退出sqlplus

拓展:
startup nomount 只是启动了实例而没有启动数据库,
startup mount 启动了实例,并加载了数据库,但是数据库没有打开,
startup 最全的操作,实例,数据库加载,数据库打开都完成

catalog.sql 该脚本用户创建oracle动态性能视图,比如v$session,v$session_wait,v$transactoin等,这类性能视图主要用于监控oracle实例运行的状态
创建以下项目的对象

  1. 基本 PL/SQL 环境包括 PL/SQL 声明1) 数据类型2)预定义异常3)内置过程和函数4)SQL 操作
  2. 审计
  3. 导入/导出
  4. SQL*Loader
  5. 已安装选项

catproc.sql 脚本建立 PL/SQL 功能的使用此外它创建几个可用于扩展RDBMS 功能的 PL/SQL 程序包catproc.sql 脚本还为以下项目创建其它程序包和视图

  1. 警报
  2. 管道
  3. Logminer
  4. 大型对象
  5. 对象
  6. 高级排队
  7. 复制选项
  8. 其它内置项目和选项

catexp.sql EXPORT需要的VIEW是由CATEXP.SQL创建,这些内部VIEW用于EXPORT组织DUMP文件中数据格式。大部分VIEW用于收集创建DDL语句的,其他的主要供ORACLE开发人员用

修改监听的配置文件

[oracle@oracledb ~]$ cd $ORACLE_HOME/network/admin
[oracle@oracledb admin]$ ls
listener.ora  samples  shrept.lst  sqlnet.ora  tnsnames.ora
[oracle@oracledb admin]$ vi tnsnames.ora 
[oracle@oracledb admin]$ vi listener.ora 

# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

#将tfcpzx替换成自己的SID,将HOST替换为自己的IP,1521是默认的oracle端口,如果改了改成你自己的端口,下同
tfcpzx =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.50)(PORT = 1521))
      )
    )
  )

#将tfcpzx替换成自己的SID,将HOST替换为自己的IP,目录改成自己的ORACLE_HOME(自己oracle的安装目录)
SID_LIST_tfcpzx =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = tfcpzx)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0)
      (SID_NAME = tfcpzx)
    )
  )

#这个一般自带,不用改,HOST写自己的主机ip
LISTENER_FATPASE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1521))

启动监听

#这里要指明启动哪个数据库实例的监听
[oracle@oracledb admin]$ lsnrctl start tfcpzx

#查看监听状态lsnrctl status
[oracle@oracledb admin]$ lsnrctl status       

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 18-MAY-2021 17:43:51

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                18-MAY-2021 14:21:58
Uptime                    0 days 3 hr. 21 min. 53 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracledb/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracledb)(PORT=1521)))
Services Summary...
Service "tfcpzx" has 1 instance(s).
  Instance "tfcpzx", status READY, has 1 handler(s) for this service...
Service "tfcpzxDB" has 1 instance(s).
  Instance "tfcpzx", status READY, has 1 handler(s) for this service...
The command completed successfully


#拓展,无需操作
#停止监听,全部关闭
[oracle@oracledb admin]$ lsnrctl stop
#启动监听,全部启动
[oracle@oracledb admin]$ lsnrctl start

启动数据库服务

#切换到oracle的根目录
[oracle@oracledb ~]$ cd ~
#打印当前ORACLE的SID,如果不是或没显示,就按第一步进行选择到新建的实例下
[oracle@oracledb ~]$ echo $ORACLE_SID
tfcpzx

#连接数据库
[oracle@oracledb ~]$ sqlplus / as sysdba
#关闭服务,刚才开启了实例的,现在这里全部关闭
SQL> shutdown

#启动服务
SQL> startup 

完毕,PLSQL链接

启动服务完毕后,就可以进行PLSQL连接了
我们创建的密码是 sys用户,密码为我们前面设置的123456

如果密码不对
可以在linux服务器上修改用户密码

#连接数据库
[oracle@oracledb ~]$ sqlplus / as sysdba
#修改密码,字符串不需要加双引号(这是在数据库里执行的),sys为DBA用户,需要加as sysdba,其他的用户不需要
SQL> alter user sys identified by 123456 as sysdba;

WMSYS.WM_CONCAT标识符无效问题

这个建库会缺少WMSYS用户,有的库里面可能会用到这个用户
链接:https://pan.baidu.com/s/1buQ2u68L6hjMpSvdEqLhJQ
提取码:6666
需要的可以去下

  • 8
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
以下是在 Linux 上使用 Oracle 19c 创建数据库实例的步骤: 1. 安装 Oracle 19c 软件 2. 打开终端,以 oracle 用户身份登录 3. 创建一个文件夹用于存放 Oracle 数据库文件,例如 /u01/app/oracle/oradata 4. 在终端中运行 dbca 命令,启动 Database Configuration Assistant 5. 在 Database Configuration Assistant 界面中,选择“创建数据库”,然后单击“下一步” 6. 在“选择创建方法”界面中,选择“高级创建”,然后单击“下一步” 7. 在“数据库标识”界面中,输入数据库名称和全局数据库名称,然后单击“下一步” 8. 在“系统类别”界面中,选择“服务器类”,然后单击“下一步” 9. 在“配置数据库控制文件”界面中,选择“手动配置控制文件”,然后单击“下一步” 10. 在“控制文件位置”界面中,输入控制文件的位置,例如 /u01/app/oracle/oradata/control01.ctl,然后单击“下一步” 11. 在“配置数据文件”界面中,选择“手动配置数据文件”,然后单击“下一步” 12. 在“数据文件位置”界面中,输入数据文件的位置,例如 /u01/app/oracle/oradata/system01.dbf,然后单击“下一步” 13. 在“配置临时文件”界面中,选择“手动配置临时文件”,然后单击“下一步” 14. 在“临时文件位置”界面中,输入临时文件的位置,例如 /u01/app/oracle/oradata/temp01.dbf,然后单击“下一步” 15. 在“配置恢复文件”界面中,选择“手动配置恢复文件”,然后单击“下一步” 16. 在“恢复文件位置”界面中,输入恢复文件的位置,例如 /u01/app/oracle/oradata/redo01.log,然后单击“下一步” 17. 在“配置数据库字符集”界面中,选择适当的字符集,然后单击“下一步” 18. 在“配置数据库身份验证”界面中,输入 sys 和 system 用户的密码,然后单击“下一步” 19. 在“配置监听器”界面中,选择“手动配置监听器”,然后单击“下一步” 20. 在“监听器名称”界面中,输入监听器的名称,例如 LISTENER,然后单击“下一步” 21. 在“监听器协议”界面中,选择“TCP”,然后单击“下一步” 22. 在“监听器端口”界面中,输入监听器的端口号,例如 1521,然后单击“下一步” 23. 在“监听器绑定”界面中,选择“根据 IP 地址绑定”,然后输入 IP 地址,例如 127.0.0.1,然后单击“下一步” 24. 在“完成创建界面中,查看所有设置是否正确,然后单击“完成” 25. 等待 Database Configuration Assistant 创建数据库实例完成。 以上是在 Linux 上使用 Oracle 19c 创建数据库实例的步骤,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值