Linux安装Oracle数据库(后续篇)

举报
WHYBIGDATA 发表于 2023/02/15 16:04:57 2023/02/15
【摘要】 Linux安装Oracle数据库(后续篇)

Linux安装Oracle数据库(后续篇)



因文章字数限制,本文拆分为两部分,该文未后续篇

  • 上篇

https://bbs.huaweicloud.com/blogs/391937

3.5 设置Oracle 监听

默认监听端口1521

  • 创建监听
[oracle@node01 ~]$ cd /home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/netca
[oracle@node01 netca]$ pwd
/home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/netca
[oracle@node01 netca]$
[oracle@node01 netca]$ netca /silent /responseFile /home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/netca/netca.rsp

正在对命令行参数进行语法分析:
    参数"silent" = true
    参数"responsefile" = /home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/netca/netca.rsp
完成对命令行参数进行语法分析。
Oracle Net Services 配置:
完成概要文件配置。
Oracle Net 监听程序启动:
    正在运行监听程序控制:
      /home/oracle/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start LISTENER
   监听程序控制完成。
    监听程序已成功启动。
监听程序配置完成。
成功完成 Oracle Net Services 配置。退出代码是0

要在响应文件模式下运行 Oracle DBCA,请执行以下操作

Warnning:修改响应文件模板并保存文件以供使用时,响应文件可能包含纯文本密码。响应文件的所有权应仅授予 Oracle 软件安装所有者,并且响应文件的权限应更改为 600。Oracle 强烈建议数据库管理员或其他管理员在不使用响应文件时删除或保护它们。

  • 操作如下:

以静默方式创建和配置 Oracle 数据库 使用Oracle DBCA。

[oracle@node01 ~]$ cd /home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/
[oracle@node01 dbca]$ ll
总用量 40
-rw-r----- 1 oracle sql 25502 46 2019 dbca.rsp
drwxr-xr-x 2 oracle sql  4096 417 2019 doc
drwxr-xr-x 2 oracle sql  4096 417 2019 jlib
drwxr-xr-x 2 oracle sql  4096 417 2019 template
[oracle@node01 dbca]$ cp dbca.rsp dbca.rsp.bak
[oracle@node01 dbca]$ vim dbca.rsp

Note:如果未正确配置响应文件,那么 Oracle DBCA 将失败。

  • 添加的内容如下:
gdbName=node01gdb
sid=node01gdb
databaseConfigType=SI

templateName=General_Purpose.dbc
sysPassword=123456
systemPassword=123456
emConfiguration=DBEXPRESS
dbsnmpPassword=123456
datafileDestination=/home/oracle/app/oracle/oradata
characterSet=AL32UTF8
totalMemory=1024

totalMemory参数在老版本中默认是800MB

totalMemory:调大内存,一般设置为1.5-2倍的物理内存大小即可

  • 可以通过以下命令检查配置是否正确
[oracle@node01 ~]$ egrep -v "(^#|^$)" /home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=node01gdb
sid=node01gdb
databaseConfigType=SI
RACOneNodeServiceName=
policyManaged=
createServerPool=
serverPoolName=
cardinality=
force=
pqPoolName=
pqCardinality=
createAsContainerDatabase=
numberOfPDBs=
pdbName=
useLocalUndoForPDBs=
pdbAdminPassword=
nodelist=
templateName=General_Purpose.dbc
sysPassword=123456
systemPassword=123456
oracleHomeUserPassword=
emConfiguration=DBEXPRESS
emExpressPort=5500
runCVUChecks=
dbsnmpPassword=123456
omsHost=
omsPort=
emUser=
emPassword=
dvConfiguration=
dvUserName=
dvUserPassword=
dvAccountManagerName=
dvAccountManagerPassword=
olsConfiguration=
datafileJarLocation=
datafileDestination=/home/oracle/app/oracle/oradata
recoveryAreaDestination=
storageType=
diskGroupName=
asmsnmpPassword=
recoveryGroupName=
characterSet=AL32UTF8
nationalCharacterSet=
registerWithDirService=
dirServiceUserName=
dirServicePassword=
walletPassword=
listeners=
variablesFile=
variables=
initParams=
sampleSchema=
memoryPercentage=
databaseType=
automaticMemoryManagement=
totalMemory=1024

创建存储Oracle数据的存储路径/home/oracle/app/oracle/oradata

[oracle@node01 oracle]$ cd /home/oracle/app/oracle
[oracle@node01 oracle]$ pwd
/home/oracle/app/oracle
[oracle@node01 oracle]$ mkdir oradata
[oracle@node01 oracle]$ ll
总用量 20
drwxr-x---  3 oracle sql 4096 111 21:29 cfgtoollogs
drwxr-xr-x  2 oracle sql 4096 111 21:06 checkpoints
drwxrwxr-x 23 oracle sql 4096 111 21:06 diag
drwxr-xr-x  2 oracle sql 4096 111 21:44 oradata
drwxr-xr-x  3 oracle sql 4096 110 18:39 product

3.6 静默创建数据库

DBCA 静默模式命令语法说明

选择 描述
-silent 指定以静默模式运行 DBCA。-silent在静默模式下,DBCA 使用您指定为命令行选项的值来创建或修改数据库。
command options 指定 DBCA 命令和该命令的有效选项。
-h | -help 显示 DBCA 的帮助。您可以通过输入以下内容来显示特定命令的帮助:dbca 命令 -help例如,要显示命令的帮助,请输入以下内容:-createDatabase``dbca -createDatabase -help
  • 使用以下命令语法以静默方式或响应文件方式运行 Oracle DBCA
$ORACLE_HOME/bin/dbca [-silent] -createDatabase -responseFile /local_dir/dbca.rsp 

使用响应文件:

[oracle@node01 dbca]$ dbca -silent -createDatabase -responseFile /home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp
[WARNING] [DBT-06208] 输入的 'SYS(S)' 口令未遵从 Oracle 建议的标准。
   原因:
a. Oracle 建议, 输入的口令长度不应少于 8 个字符, 至少包含 1 个大写字符, 1 个小写字符和 1 个数字 [0-9]。
b. 输入的口令是一个关键字, Oracle 建议不要将其用作口令
   操作: 指定强口令。如果需要, 请参阅 Oracle 文档以了解相关指南。
[WARNING] [DBT-06208] 输入的 'SYSTEM' 口令未遵从 Oracle 建议的标准。
   原因:
a. Oracle 建议, 输入的口令长度不应少于 8 个字符, 至少包含 1 个大写字符, 1 个小写字符和 1 个数字 [0-9]。
b. 输入的口令是一个关键字, Oracle 建议不要将其用作口令
   操作: 指定强口令。如果需要, 请参阅 Oracle 文档以了解相关指南。
准备执行数据库操作
已完成 10%
复制数据库文件
已完成 40%
正在创建并启动 Oracle 实例
已完成 42%
已完成 46%
已完成 50%
已完成 54%
已完成 60%
正在进行数据库创建
已完成 66%
已完成 70%
执行配置后操作
已完成 100%
数据库创建完成。有关详细信息, 请查看以下位置的日志文件:
 /home/oracle/app/oracle/cfgtoollogs/dbca/node01gdb。
数据库信息:
全局数据库名:node01gdb
系统标识符 (SID):node01gdb
有关详细信息, 请参阅日志文件 "/home/oracle/app/oracle/cfgtoollogs/dbca/node01gdb/node01gdb.log"

Note:该步骤考验网络情况,大概10min左右考研完成!

3.7 验证

  • 登录数据库,进入到SQL交互界面即成功!!!

Note:以sqlplus / as sysdba方式登录时,采用的是操作系统验证的方式,所以用户名/密码输入与不输入本质上是没有差别的。

[oracle@node01 dbca]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 11 22:48:20 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> show parameter name;
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0


SQL> 
  • 查询数据库状态
SQL> select status from v$instance;
select status from v$instance
*
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0


SQL> 

出现Error:ORA-01034: ORACLE not available

  • 执行startup命令,根据提示修复上述Error
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/19.3.0/dbhome_1/dbs/initORCL.ora'

根据startup命令的结果提示,我们需要将$ORACLE_BASE/admin/你设置的数据库名称/pfile目录下的init.ora.xxx形式的文件复制到ORACLE_HOME/dbs目录下initORCL.ora(请注意命名)即可

Note:上述「你设置的数据库名称」指的是在bdbca.rsp文件中参数gdbName的值(此处本人的数据库名称为node01gd)

[oracle@node01 pfile]$ cp init.ora.0112023223752 $ORACLE_HOME/dbs/initORCL.ora
[oracle@node01 pfile]$ ll $ORACLE_HOME/dbs
总用量 28
-rw-rw---- 1 oracle sql 1544 111 22:40 hc_node01gdb.dat
-rw-r--r-- 1 oracle sql 3079 514 2015 init.ora
-rw-r----- 1 oracle sql 2052 112 19:48 initORCL.ora
-rw-r----- 1 oracle sql   24 111 22:30 lkHADOOP10
-rw-r----- 1 oracle sql   24 111 22:29 lknode01GDB
-rw-r----- 1 oracle sql 2048 111 22:31 orapwnode01gdb
-rw-r----- 1 oracle sql 3584 111 22:42 spfilenode01gdb.ora
  • 再次执行startup命令,出现同样的错误

查看$ORACLE_BASE/dbs/init.ora文件中db_name的参数值和环境变量(.bash_profile)中ORACLE_SID的参数值是否一致「注意大小写」

  • 本人确实是大小写不一致的问题,修改.bash_profile中ORACLE_SID为db_name的参数值即可,并重新source一下环境变量
[oracle@node01 pfile]$ cat /home/oracle/.bash_profile
...
#ORACLE_HOME
export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=/home/oracle/app/oracle/product/19.3.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=ORCL
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
...

[oracle@node01 pfile]$ cat $ORACLE_HOME/dbs/init.ora
....
db_name='ORCL'
memory_target=1G
....
[oracle@node01 pfile]$ vim ~/.bash_profile
[oracle@node01 pfile]$ source /home/oracle/.bash_profile
  • 依旧执行startup命令,成功打开数据库
[oracle@node01 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jan 12 20:11:07 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 1073737800 bytes
Fixed Size                  8904776 bytes
Variable Size             704643072 bytes
Database Buffers          352321536 bytes
Redo Buffers                7868416 bytes
Database mounted.
Database opened.
SQL>
  • 再次查询数据库状态,可以看到状态为open
SQL> select status from v$instance;

STATUS
------------------------
OPEN

SQL>

简单的示例:查询当前数据库show parameter name,执行结果的最后一行就是当前数据库名

SQL> show parameter name;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
cdb_cluster_name                     string

cell_offloadgroup_name               string

db_file_name_convert                 string

db_name                              string
hadoop10
db_unique_name                       string

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
node01gdb
global_names                         boolean
FALSE
instance_name                        string
ORCL
lock_name_space                      string

log_file_name_convert                string


NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
pdb_file_name_convert                string

processor_group_name                 string

service_names                        string
node01gdb

4. 进入虚拟机图像化页面安装Oracle软件

5. 创建数据库实例

5.1 查看监听状态

  • 命令行输入lsn,连续按下两次「Tab」键即可查看到lsnsrctl命令
[oracle@node01 dbhome_1]$ lsn
lsnodes  lsnrctl  lsns
  • 查看状态
[oracle@node01 dbhome_1]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 12-JAN-2023 19:23:22

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node01)(PORT=1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
[oracle@node01 dbhome_1]$ lsnrctl start

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 12-JAN-2023 19:23:34
 
Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Starting /home/oracle/app/oracle/product/19.3.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /home/oracle/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Log messages written to /home/oracle/app/oracle/diag/tnslsnr/node01/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node01)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node01)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                12-JAN-2023 19:23:36
Uptime                    0 days 0 hr. 0 min. 2 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Listener Log File         /home/oracle/app/oracle/diag/tnslsnr/node01/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node01)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

5.2. 创建一个普通用户并授权

  • 创建用户
[oracle@node01 dbs]$ sqlplus

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jan 12 21:20:56 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Enter user-name: system
Enter password:
Last Successful login time: Thu Jan 12 2023 21:18:48 +08:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> create user whybigdata identified by 123456;

User created.

SQL> 
  • 授权
SQL> grant create session,create table,create view,create sequence,unlimited tablespace to whybigdata;

Grant succeeded.

5.3 创建表

Note:student表的创建实在system用户下创建的

  • 创建表student
SQL> create TABLE student(id INTEGER,name VARCHAR2(20));

Table created.

SQL> insert into student values (1,'zhangsan');

1 row created.

SQL> select * from student;

        ID NAME
---------- ----------------------------------------
         1 zhangsan

SQL>
  • 在其他会话窗口(虚拟机终端工具)查询不到表student的数据

2.png

原因:在当前会话(创建表的会话)中需要提交(commit)才可以在终端(其他会话)查询到表插入的数据

SQL> commit;

Commit complete.
  • 虚拟机终端再次查询表数据

3.png

  • 切换到上述创建的普通用户whybigdata中,查询不到表student的数据
[oracle@node01 dbs]$ sqlplus

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jan 12 21:28:38 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Enter user-name: whybigdata
Enter password:

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> select * from student;
select * from student
              *
ERROR at line 1:
ORA-00942: table or view does not exist

原因:Oracle是按照用户来隔离的,每个用户所属的表空间是不一样的

注意:安装完成后重启机器可能出现 ORACLE not available 错误,解决方法如下:

[oracle@node01 ~]$ sqlplus / as sysdba 
SQL>startup
SQL>conn whybigdata Enter password:

6. 参考

结束!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。