Linux安装Oracle数据库(后续篇)
Linux安装Oracle数据库(后续篇)
因文章字数限制,本文拆分为两部分,该文未后续篇
- 上篇
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 4月 6 2019 dbca.rsp
drwxr-xr-x 2 oracle sql 4096 4月 17 2019 doc
drwxr-xr-x 2 oracle sql 4096 4月 17 2019 jlib
drwxr-xr-x 2 oracle sql 4096 4月 17 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 1月 11 21:29 cfgtoollogs
drwxr-xr-x 2 oracle sql 4096 1月 11 21:06 checkpoints
drwxrwxr-x 23 oracle sql 4096 1月 11 21:06 diag
drwxr-xr-x 2 oracle sql 4096 1月 11 21:44 oradata
drwxr-xr-x 3 oracle sql 4096 1月 10 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 1月 11 22:40 hc_node01gdb.dat
-rw-r--r-- 1 oracle sql 3079 5月 14 2015 init.ora
-rw-r----- 1 oracle sql 2052 1月 12 19:48 initORCL.ora
-rw-r----- 1 oracle sql 24 1月 11 22:30 lkHADOOP10
-rw-r----- 1 oracle sql 24 1月 11 22:29 lknode01GDB
-rw-r----- 1 oracle sql 2048 1月 11 22:31 orapwnode01gdb
-rw-r----- 1 oracle sql 3584 1月 11 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的数据
原因:在当前会话(创建表的会话)中需要提交(commit)才可以在终端(其他会话)查询到表插入的数据
SQL> commit;
Commit complete.
- 虚拟机终端再次查询表数据
- 切换到上述创建的普通用户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. 参考
- https://www.cnblogs.com/charelee/p/13866895.html
- Creating Operating System Privileges Groups (oracle.com)
- https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/installing-the-oracle-database-software.html
- https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/completing-preinstallation-tasks-manually.html
- https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/configuring-operating-systems-for-oracle-database-on-linux.html
- https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/Chunk72467155.html
- https://community.oracle.com/mosc/discussion/3997981/ins-35341-while-installing-11g-and-12c
- Running Oracle DBCA Using Response Files
- https://docs.oracle.com/en/database/oracle/oracle-database/21/multi/dbca-reference.html
- https://docs.oracle.com/en/database/oracle/oracle-database/18/rilin/editing-a-response-file-template.html
- http://www.dba-oracle.com/sf_ora_01034_oracle_not_available.htm
- https://www.techiepage.net/how-to-fix-ora-01034-oracle-not-available-error/
- https://asktom.oracle.com/pls/apex/asktom.search?tag=ora-01034-oracle-not-available
- https://blog.sina.com.cn/s/blog_4b5bc0110101d310.html
- https://community.oracle.com/tech/developers/discussion/4488389/ora-01078-failure-in-processing-system-parameters-lrm-00109-could-not-open-parameter-file
- https://ittutorial.org/ora-01078-failure-in-processing-system-parameters/
结束!
![](https://res.hc-cdn.com/ecology/9.3.130/v2_resources\images\global\blog-dialog.png)
华为开发者空间发布
让每位开发者拥有一台云主机
- 点赞
- 收藏
- 关注作者
评论(0)