Windows上常见问题

创建日期:2024-06-21
更新日期:2025-02-27

1、oracle删除用户及用户所有表。

drop user user_name cascade;

2、Oracle ORA-01033: ORACLE initialization or shutdown in progress。

注意:下面的命令会把数据库删除。

a. 打开cmd,执行以下命令进入sqlplus。

sqlplus 用户名/密码@IP地址:端口/服务名 AS SYSDBA

b. 在sqlplus中执行以下命令。

shutdown normal;
startup mount;
alter database open;

这时会报错:

ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 6: 'D:\JAVA\ORACLE\PRODUCT\10.2.0\DB_1\SDE.DBF'

c. 执行命令删除有问题的文件。

alter database datafile 'D:\java\oracle\product\10.2.0\db_1\SDE.DBF' offline drop;

d. 重新执行b和c两步即可。

3、ORA-01157: 无法标识/锁定数据文件,请参阅 DBWR 跟踪文件。

同问题2,删除有问题的数据文件即可。

4、ORA-28009: connection as SYS should be as SYSDBA or SYSOPER。

使用sqlplus登录时,用户名输入sys as SYSDBA。

5、ORA-01113: 文件 6 需要介质恢复。

文件损坏,按问题2的步骤删除后重建。

6、navicat转储的sql文件导入报错:ORA-00936: 缺失表达式。

INSERT INTO "SDE"."A141" VALUES ('1', '200', , '93'); 

注意sql文件中出现了连续两个逗号。

7、ORA-29861: 域索引标记为 LOADING/FAILED/UNUSABLE。

索引有问题。

8、ORA-02429:无法用于删除强制唯一/主键的索引。

9、ORA-01940: 无法删除当前连接的用户。

10、ORA-28000: the account is locked。

账号锁定了,执行以下命令解锁。

alter user SDE account unlock;

11、ORA-31655: 尚未为作业选择数据或元数据对象。

12、ORA-12560: TNS: 协议适配器错误。

sqlplus未提供数据库连接地址。

13、ORA-03135: connection lost contact。

将 D:\java\instantclient\instantclient_19_12_64 添加到环境变量中,重启navicat。

14、ORA-01017: invalid username/password; logon denied。

15、新安装数据库 Oracle Database Express Edition,使用navicat连接报错:ORA-12541:TNS:无监听程序。

Express版本默认服务名是XE,不是ORCL。将服务名由ORCL改为XE即可。

16、怎么修改 Oracle 服务名?

a. 打开PowerShell,输入以下命令。

sqlplus 用户名/密码 as sysdba

b. 查看服务名。

show parameter service_name

c. 修改服务名为ORCL。

alter system set service_names='ORCL' scope=both;

d. 修改listener.ora,将DEFAULT_SERVICE_LISTENER

XE修改为DEFAULT_SERVICE_LISTENER

ORCL。

17、数据库管理员和普通用户应授予哪些角色?

数据库管理员:CONNECT、RESOURCE、DBA。

普通用户:CONNECT、RESOURCE。

18、ORACLE 21c 创建用户报错:ORA-65096:公用用户名或角色名无效。

a. 使用 navicat 登录时,服务名由 ORCL 改为 XEPDB1。(创建PDB用户)

b. 将用户名以C~#~#开头即可。(创建CDA用户)

19、ORA-65048:在插接式数据库XEPDB1中处理当前DDL语句时出错。

使用navicat登录时,服务名由ORCL改为XEPDB1。

20、ORA-00959:表空间SDE不存在。

使用navicat登录时,服务名由ORCL改为XEPDB1。

22、OracleOraDb11g_home1TNSListener服务启动后又停止。

方法一:

出现这个问题是因为你的Oracle文件出了问题;

在你的Oarcle安装路径下:D: \ Oracle11g \ product \ 11.1.0 \ db \ NETWORK \ ADMIN

找到 listener.ora ,打开

将 HOST 的值修改成你自己电脑的名称(一般的电脑都是 XXX_PC)

方法二:配置环境变量

ORACLE_HOME:E:\app\Administrator\product\11.2.0\dbhome_1

TNS_ADMIN:E:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN

方法三:修改注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\OracleOraDb11g_home1TNSListener的ImagePath值,

E:\app\Administrator\product\11.2.0\dbhome_1\BIN\TNSLSNR中没有‘.exe’,所以也加上后缀。

方法四:重新配置监听程序

删除 D: \ Oracle11g \ product \ 11.1.0 \ db \ NETWORK \ ADMIN 下的 listener.ora 文件

选择 Net Configuration Assistant 监听,一直无脑下一步,新建了个listener.ora文件,启动OracleOraDb11g_home1TNSListener服务还是报错,但是此时多了个OracleTNSListener服务,可以正常启动,然后试着ODBC和数据库连接,还是报错。

方法五:重启数据库

sqlplus / as sysdba
startup force

参考文档:https://www.cnblogs.com/lqfnotes/articles/12830718.html

23、减小Oracle占用内存。

参考文档:https://blog.csdn.net/u010741112/article/details/117248291

a. 执行以下命令打开sqlplus。

sqlplus system/密码 as sysdba;

b. 执行以下命令即可。

show parameter sga;
alter system set sga_max_size=400m scope=spfile;
alter system set sga_target=150m scope=spfile;
alter system set memory_target=1208m scope=spfile;
startup;
quit;

注意:sga_target < = sga_max_size <= memory_target <= memory_max_target;sga_max_size不得少于400m;memory_target不得少于1208m。

d. 如果上述修改后,数据库无法启动,可以按下面的方法解决。

使用system以sysdba角色登录sqlplus,执行以下代码导出配置。

create pfile=’D:/1.txt’ from spfile;

编辑 D:/1.txt,修改参数满足上面的注意事项,然后执行以下代码。

startup pfile=’D:/1.txt’;
create spfile from pfile=’D:/1.txt’;
startup

24、ORA-01219,数据库或插接式数据库未打开。

插接式数据库未打开,以sysdba角色登录sqlplus。

sysplus / as sysdba;

然后执行以下代码即可。

alter session set container=CDB$root;
create or replace trigger open_pdbs
after startup on database
begin
execute immediate 'alter pluggable database all open'
end open_pdbs;

25、使用exp导出数据时报错:EXP-00010: HYLAB_BUSINESS; 是无效的用户名。

exp "用户名/密码@IP地址:端口/服务名" file="导出文件名.dmp" log="日志文件名.log" owner=用户名

注意:owner=用户名后面不能有分号。

26、使用SQL语句创建表报错:SQL 错误 [907] [42000]: ORA-00907: 缺失右括号;ORA-06512: 在 line 6。

把 NOT NULL DEFAULT 0 改成 DEFAULT 0 NOT NULL 即可。

CREATE TABLE PIPE_SEGMENT (
  ID NUMBER(22,0) NOT NULL PRIMARY KEY,
  IS_DELETED NUMBER(11,0) DEFAULT 0 NOT NULL
)

27 、使用navicat连接oracle时报错:ORA-12638: Credential retrieval failed。

28、Underlying DBMS error [ORA-04030: 在尝试分配12404字节(QERHJ hash-joi,kllcqas:kllsltba)时进程内存不足】。

测试