Oracle 忘记/修改密码、Linux 中启动与关闭 Oracle

本文详细介绍了在Oracle数据库中如何修改忘记的系统账户密码,包括使用SQL*Plus进行操作的具体步骤。同时,提供了在Linux环境下启动和关闭Oracle数据库的全过程,涵盖监听器和数据库实例的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Oracle 忘记/修改密码

Linux 中启动与关闭 Oracle


Oracle 忘记/修改密码

1、以本机安装的 Oracle 11g 忘记 system 账户的密码为例。

A、以管理员身份运行 cmd 窗口.
B、以暂不登录的方式打开 sqlplus:sqlplus /nolog
C、以DBA的身份连接到数据库实例:connect / as sysdba
D、修改密码:alter user 用户名 identified by 新密码 ;

2、完整的 cmd 命令演示如下:

C:\WINDOWS\system32>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 3月 29 10:43:09 2022
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
SQL> connect /as sysdba
已连接。
SQL> alter user system identified by wmx1993328 ;
用户已更改。
SQL>

3、修改之后,不需要重启 oracle 服务,直接可以新密码登录。

Linux 中启动与关闭 Oracle

1、启动 Oracle 时,先启动监听,再启动数据库实例。

2、关闭 Oracle 时,一般先关闭监听,让远程客户端无法再连进来后,再去关闭数据库实例。

启动 Oracle 数据库

su - oracle             # 切换到 Oracle 用户

lsnrctl status          # 查看监听状态

lsnrctl start             # 启动监听

sqlplus /nolog         #  不以任何用户登录,只打开登录窗口

conn /as sysdba     # 以超级管理员身份登录

startup                    # 启动数据库实例

关闭 Oracle 数据库

su - oracle                  # 切换到 Oracle 用户

lsnrctl stop                  # 关闭监听

sqlplus /nolog              # 不以任何用户登录,只打开登录窗口
conn /as sysdba          # 以超级管理员身份登录
shutdown immediate   # 关闭数据库实例

3、启动 Oracle 完整演示:

1、切换到 Oracle 用户
	[root@localhost ~]# su - oracle
	上一次登录:日 10月  9 09:48:14 CST 2022pts/0 上
	[oracle@localhost ~]$ 

2、查看监听状态
	[oracle@localhost ~]$ lsnrctl status
	LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 11-OCT-2022 14:24:14
	Copyright (c) 1991, 2019, Oracle.  All rights reserved.
	Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.104.65.181)(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@localhost ~]$

3、启动监听
	[oracle@localhost ~]$ lsnrctl start
	LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 11-OCT-2022 14:26:54
	Copyright (c) 1991, 2019, Oracle.  All rights reserved.
	Starting /u01/app/oracle/product/19.2.0/db_1/bin/tnslsnr: please wait...
	TNSLSNR for Linux: Version 19.0.0.0.0 - Production
	System parameter file is /u01/app/oracle/product/19.2.0/db_1/network/admin/listener.ora
	Log messages written to /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
	Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.104.65.181)(PORT=1521)))
	Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

	Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.104.65.181)(PORT=1521)))
	STATUS of the LISTENER
	------------------------
	Alias                     LISTENER
	Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
	Start Date                11-OCT-2022 14:26:56
	Uptime                    0 days 0 hr. 0 min. 0 sec
	Trace Level               off
	Security                  ON: Local OS Authentication
	SNMP                      OFF
	Listener Parameter File   /u01/app/oracle/product/19.2.0/db_1/network/admin/listener.ora
	Listener Log File         /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
	Listening Endpoints Summary...
	  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.104.65.181)(PORT=1521)))
	  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
	Services Summary...
	Service "orcl" has 1 instance(s).
	  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
	The command completed successfully
	[oracle@localhost ~]$ 

4、登录 Oracle 启动数据库实例
	[oracle@localhost ~]$ sqlplus /nolog          # 不以任何用户登录,只打开登录窗口

	SQL*Plus: Release 19.0.0.0.0 - Production on Tue Oct 11 14:25:00 2022
	Version 19.3.0.0.0

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

	SQL> conn /as sysdba                         # 以超级管理员身份登录
	Connected to an idle instance.
	SQL> startup								 # 启动数据库实例
	ORACLE instance started.

	Total System Global Area 4747949400 bytes
	Fixed Size		    8906072 bytes
	Variable Size		 2717908992 bytes
	Database Buffers	 2013265920 bytes
	Redo Buffers		    7868416 bytes
	Database mounted.
	Database opened.
	SQL> 

<think>好的,用户现在的问题是忘记Oracle的账号和密码,需要解决这个问题。首先,我需要回想一下Oracle数据库的账户管理和密码恢复的方法。根据之前的历史对话,用户已经了解过如何使用SQL*Plus的管理员权限,所以可能需要利用SYSDBA权限来重置密码。 首先,用户可能没有普通账户的登录权限,但如果是本地访问,可能可以通过操作系统认证的方式以SYSDBA身份登录,这样不需要密码。然后,他们可以重置其他用户的密码。不过,如果用户连管理员账户的密码忘记了,可能需要更复杂的步骤,比如修改密码文件或者使用恢复模式。 接下来,我需要考虑不同情况下的解决方案,比如是否能够物理访问数据库服务器,是否有可用的操作系统认证,或者是否启用了密码文件认证。另外,还需要注意不同操作系统下的路径差异,比如Linux和Windows的密码文件位置不同。 用户可能遇到的常见错误包括ORA-01017(无效的用户名/密码)或者ORA-01031(权限不足),需要针对这些错误提供解决方法。同时,需要提醒用户安全注意事项,比如定期备份密码文件,避免使用默认账户等。 还要确保回答结构清晰,分步骤说明,使用中文,并遵循之前的格式要求,比如行内公式用$...$,独立公式用$$...$$,但这里可能不太需要数学公式,但需要确保LaTeX语法正确,不过用户的问题更多是操作步骤,可能用代码块更合适。 另外,用户可能需要知道如何预防这种情况再次发生,比如开启审计、定期修改密码等。总结时,可能需要强调备份和权限管理的重要性。 现在需要组织这些思路,分步骤给出解决方案,从本地访问到远程访问的不同情况,包括重置密码、处理忘记所有账户的情况,以及常见错误的解决方法和预防措施。确保每个步骤清晰,代码示例正确,并且用中文简洁明了地表达出来。</think>以下是解决Oracle数据库忘记账号和密码的分步指南: --- ### 一、核心思路 若忘记普通用户密码,可通过**管理员权限**(`SYSDBA`)登录后重置密码;若连管理员密码也丢失,需通过**操作系统认证**或**密码文件修复**恢复权限。 --- ### 二、具体步骤 #### 步骤1:尝试通过本地操作系统认证(无需密码) **适用条件** - 物理访问数据库服务器 - 操作系统用户属于`dba`组(Linux/Unix)或`ORA_DBA`组(Windows) **操作命令** ```sql sqlplus / as sysdba ``` - 登录后即可重置其他用户密码(无需原密码)。 --- #### 步骤2:重置普通用户密码 以管理员身份登录后执行: ```sql ALTER USER 用户名 IDENTIFIED BY 新密码; ``` **示例** ```sql ALTER USER scott IDENTIFIED BY tiger; ``` --- #### 步骤3:若忘记管理员密码(SYSDBA/SYSOPER) ##### 方法1:操作系统认证(推荐) 1. 确保操作系统用户属于`dba`或`ORA_DBA`组。 2. 直接以`SYSDBA`身份登录: ```sql sqlplus / as sysdba ``` 3. 重置`SYS`或`SYSTEM`用户密码: ```sql ALTER USER sys IDENTIFIED BY 新密码; ``` ##### 方法2:重建密码文件 1. 删除原密码文件(路径示例): - Linux: `$ORACLE_HOME/dbs/orapw<SID>` - Windows: `%ORACLE_HOME%\database\PWD<SID>.ora` 2. 使用`orapwd`创建新密码文件: ```bash orapwd file=orapw<SID> password=新密码 entries=10 ``` - `entries`:允许的SYSDBA用户数量。 --- #### 步骤4:若无法本地登录(远程数据库) 需通过**本地备份的密码文件**或**数据库恢复模式**: 1. 关闭数据库: ```sql SHUTDOWN IMMEDIATE; ``` 2. 启动到**挂载模式**: ```sql STARTUP MOUNT; ``` 3. 修改`SYS`密码: ```sql ALTER USER sys IDENTIFIED BY 新密码; ``` 4. 重启数据库: ```sql ALTER DATABASE OPEN; ``` --- ### 三、常见错误解决 #### 错误1:`ORA-01017: invalid username/password` - **原因**:输入的用户名或密码错误。 - **解决**:通过`SYSDBA`重置密码。 #### 错误2:`ORA-01031: insufficient privileges` - **原因**:当前用户无`SYSDBA`权限。 - **解决**:使用操作系统认证或检查密码文件配置。 --- ### 四、预防措施 1. **定期备份密码文件** ```bash cp $ORACLE_HOME/dbs/orapw<SID> /backup_path/ ``` 2. **启用审计** ```sql AUDIT CREATE SESSION BY ACCESS; ``` 3. **避免依赖默认账户** - 禁用默认测试账户(如`SCOTT`),创建专属管理员账号。 --- ### 五、总结 | 场景 | 解决方案 | |-----------------------|----------------------------------| | 忘记普通用户密码 | 通过`SYSDBA`重置密码 | | 忘记管理员密码 | 操作系统认证或重建密码文件 | | 远程数据库无法登录 | 启动到挂载模式修改密码 | 通过以上方法,可高效恢复对Oracle数据库的访问权限。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚩尤后裔-汪茂雄

芝兰生于深林,不以无人而不芳。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值