问题描述:因为每次Oracle删除数据库的时候磁盘文件还没删除,然后自己手动停止Oracle,删除磁盘里的.DBF文件导致数据库重启后无法连接。
cmd
sqlplus
sys as sysdba
执行alter database open;查看你报错的数据文件(就是你停止Oracle删除的数据库文件路径)
alter database open;
错误提示如下
alter database open
*
第 1 行出现错误:
ORA-01110: 数据文件 6: ‘D:\SOFTWAREWORK\ORACLE\ORADATA\TEST’ #这个就是你停止数据库后删除的文件路径
ORA-01115: 从文件 6 读取块时出现 IO 错误 (块 # 1)
ORA-27069: 试图超出文件范围执行 I/O
OSD-04026: 传递的参数无效。
O/S-Error: (OS 1) 函数不正确。
删除Oracle里已经删除的数据库
alter database datafile 'D:\SOFTWAREWORK\ORACLE\ORADATA\TEST' offline drop;
-- 数据库已更改。
alter database open;
--数据库已更改。
重新使用sys连接数据库即可
其它相关
删除表空间
drop tablespace TEST including contents and datafiles;
drop tablespace TEST_INDEX including contents and datafiles;
创建表空间,确保路径里的文件夹都是存在的,最后一个是文件名称
CREATE TABLESPACE TEST DATAFILE 'D:\softwareWork\Oracle\oradata\test\TEST' size 512M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
索引表空间
CREATE TABLESPACE TEST_INDEX DATAFILE 'D:\softwareWork\Oracle\oradata\test\TEST_INDEX' size 256M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
创建用户TEST密码TEST授予表空间TEST
create user TEST identified by TEST default tablespace TEST;
授权
不授权dba可能会出现ORA-00942: 表或视图不存在的错误
grant connect,resource,dba to TEST;
grant create any sequence to TEST;
grant create any table to TEST;
grant delete any table to TEST;
grant insert any table to TEST;
grant select any table to TEST;
grant unlimited tablespace to TEST;
grant execute any procedure to TEST;
grant update any table to TEST;
grant create any view to TEST;
Navicat创建序列和触发器
序列
新建序列
序列命名建议SEQ_加表名,如:SEQ_USER
触发器
新建触发器
点击定义
SEQ_USER是你创建的序列的名称,NEW.ID其中ID是你表里面的主键列名
BEGIN
select SEQ_USER.nextval into:NEW.ID from dual;
END;
触发器命名建议TRG_加表名,如:TRG_USER