我有一个问题与Oracle 21 c PDB连接。我已经创建了一个操作系统用户,应该能够登录到可插入数据库与.
sqlplus /
字符串
.命令。但是它不工作的方式我如何配置。
详情
**操作系统:**Rocky Linux 8.8版(绿色黑曜石)
**Oracle版本:**Oracle 21 c
**CDB:**iqlink2c
**PDB:**iqlink2
下面你可以看到步骤…
1.)我已在**.cshrc文件中使用以下参数创建了orcshrc**OS(Linux - Rocky 8)用户.
setenv ORACLE_BASE /opt/oracle
setenv ORACLE_HOME $ORACLE_BASE/product/21c/dbhome_1
setenv ORACLE_SID iqlink2
setenv ORACLE_TERM xsun5
setenv NLS_LANG AMERICAN_AMERICA.WE8ISO8859P1
setenv PATH ${PATH}:${ORACLE_HOME}/bin
setenv EDITOR /bin/vi
型
2.)我已登录到Pluggable Database(iqlink 2),并已使用以下语句创建了original DB用户.
create user orasync
identified externally
default tablespace COMPANY
temporary tablespace TEMP
quota unlimited on COMPANY
quota unlimited on COMPANY_INDX
/
型
。并授予dba特权。。
GRANT dba TO orasync
/
型
3.)我登录到容器数据库(iqlink 2c),并检查了os_authent_prefix和remote_os参数.
SQL> SHOW PARAMETERS os_authent_prefix;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix string ops$
SQL> SHOW PARAMETERS remote_os;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_os_roles boolean FALSE
SQL>
型
- 注意:我知道remote_os_authent参数应该为TRUE**,但它在Oracle 21 c中根本不再可用。此时我想知道Oracle 21 c PDB是否可以进行远程操作系统登录?!*
4.)我删除了os_authent_prefix值,然后重新启动数据库...
[oracle@company02 ~]$ sqlplus sys@iqlink2c as sysdba
SQL*Plus: Release 21.0.0.0.0 - Production on Sat Nov 11 00:52:45 2023
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
SQL> alter system set os_authent_prefix='' scope=SPFILE;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
Total System Global Area 4294967152 bytes
Fixed Size 9695088 bytes
Variable Size 3388997632 bytes
Database Buffers 872415232 bytes
Redo Buffers 23859200 bytes
Database mounted.
Database opened.
SQL> show parameter os_authent_prefix;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix string
型
5.)我使用orbloc用户登录并尝试登录到可插入数据库.
[orasync@company02 ~]$ sqlplus /
SQL*Plus: Release 21.0.0.0.0 - Production on Sat Nov 11 01:04:49 2023
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Additional information: 4775
Additional information: 1962365431
Process ID: 0
Session ID: 0 Serial number: 0
Enter user-name:
型
.我也试过.
[orasync@company02 ~]$ sqlplus /@iqlink2
SQL*Plus: Release 21.0.0.0.0 - Production on Sat Nov 11 00:47:53 2023
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
**ERROR:
ORA-01017: invalid username/password; logon denied**
Enter user-name:
型
在这一点上,我真的不明白为什么不工作,因为我得到的答案为tnsping.
[orasync@company02 ~]$ tnsping iqlink2
TNS Ping Utility for Linux: Version 21.0.0.0.0 - Production on 11-NOV-2023 01:08:00
Copyright (c) 1997, 2021, Oracle. All rights reserved.
Used parameter files:
/opt/oracle/product/21c/dbhome_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = iqlinkxg02)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = iqlink2)))
OK (0 msec)
[orasync@company02 ~]$
型
.我也可以从同一个操作系统用户使用其他数据库用户登录.
[orasync@company02 ~]$ sqlplus sys1@iqlink2
SQL*Plus: Release 21.0.0.0.0 - Production on Sat Nov 11 01:09:18 2023
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Enter password:
Last Successful login time: Sat Nov 11 2023 01:03:42 +01:00
Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
SQL>
型
我试图解决的第一件事是删除os_authent_prefix参数的ops$值,但在这种情况下,我得到了ORA-01017: invalid username/password; logon denied
错误。
我尝试的另一件事是,我在服务器上配置了Oracle 19 c客户端,并相应地修改了Oracle 19 c用户的.cshrc文件。配置是好的,因为我可以用其他DB用户登录到DB,但我仍然得到ORA-01017: invalid username/password; logon denied
错误。
最重要的是,我试图将setenv TWO_TASK $ORACLE_SID
参数添加到.cshrc文件中,但实际上这只是一个形式上的更改,没有帮助。
任何帮助将不胜感激!
2条答案
按热度按时间ncgqoxb01#
remote_os_authentication
被删除是有充分理由的。这是一个主要的安全漏洞。* 任何 * 客户端-甚至是黑客-与本地用户共享与数据库用户相同的名称可以连接到数据库。这是一个永远不应该使用的身份验证架构。也就是说,不能以您描述的方式直接连接到PDB。只有CDB可以通过IPC类型的连接进行连接。对于PDB,您 * 必须 * 指定TNS别名并通过网络侦听器进行连接。然后,您可以在客户端上使用Oracle Wallet来保存用户名/密码凭据,并实现与OS身份验证IPC连接相同的效果。
请参阅此处的文档:https://www.oracle.com/technetwork/database/security/twp-db-security-secure-ext-pwd-stor-133399.pdf
网址:https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-authentication.html#GUID-3EA07020-A9F3-4FF9-9518-E1AEA3BDDBBE
基本步骤如下:
1.创建一个钱包
1.将用户名/密码凭据添加到钱包
1.将sqlnet.ora配置为指向Wallet
1.使用类似
sqlplus /@pdb_tns_alias
的方式连接另请注意:您的Linux发行版不支持Oracle服务器;要获得正确的功能,您应该使用Oracle Linux。
v440hwme2#
如果你想让你的新操作系统用户(orboc)可以使用Oracle操作系统身份验证,那么你必须修改orboc的操作系统成员身份,使其成为Oracle dba组的成员(通常是dba,使用
#usermod
)。当位于操作系统级别时,你不能使用操作系统身份验证直接连接到Pluggable数据库(因为它只会让你处于根数据库)。解决方法是在
tnsnames.ora
文件后面附加PDB的Net Service Name(如果不存在)。然后使用以下语法:字符串
注意:此演练不需要修改操作系统成员资格!祝你好运!