【Centos】Oracle简单运维问题汇总

最后更新日期 5月 24th, 2023 at 03:40 下午

一、问题描述:

对金蝶ERP的oracle数据库进行备份,使用exp、imp无法导出主键、索引等,所以使用oracle的数据泵,expdp、impdp。

1.进入sqlplus

sqlplus /nolog

conn /as sysdba

2. 创建新的备份逻辑目录并mkdir相同绝对路径目录

create or replace directory 逻辑目录名称 as '/home/oracle/backup';
退出sqlplus。
mkdir /home/oracle/backup

3.根据用户导出表空间

expdp 导出用户名/密码@orcl schemas=导出用户名 dumpfile=expdp20210709.dmp DIRECTORY=逻辑目录名

PS:若有报错,自行根据报错信息查阅解决。

4.成功导出后,赋予“导入的用户”逻辑目录权限。

PS:进入sqlplus。

3和4并无先后顺序,个人建议先4后3,免得多次登录sqlplus。

grant read,write on directory 逻辑目录名 to 用户名;

PS:记得要创建新表空间和用户名。并赋予dba权限。

#赋予权限
grant create session,create table,unlimited tablespace to TESTDBA1;
grant connect,resource,dba to TESTDBA1;

5.以上确保全部完成后,输入impdp直接导入。

impdp 导入用户(该用户需授权逻辑目录权限)/密码@orcl DIRECTORY=逻辑目录 dumpfile=expdp20210709.dmp  REMAP_SCHEMA=旧用户(导出的):新用户(要导入的)  include=TYPE transform=oid:n exclude=user

参考链接:https://blog.csdn.net/gty931008/article/details/86160808

————————————分割线——————————–

二、问题描述:

金蝶在测试环境的数据中心进行测试,生成凭证出现ORA-00001违反唯一约束条件报错。

测试环境的表空间在同一实例库中,怀疑跟缓存有关,清除缓存。

alter system flush shared_pool;
alter system flush BUFFER_CACHE;

在负载很重的生产库环境中,务必慎用!!

————————————分割线——————————–

三、问题描述

出现问题报错信息:ORA-28001: the password has expired

是由于Oracle11G的新特性所致, Oracle11G创建用户时缺省密码过期限制是180天(即6个月), 如果超过180天用户密码未做修改则该用户无法登录。 Oracle公司是为了数据库的安全性默认在11G中引入了这个默认功能,但是这个默认的功能很容易被DBA或者是开发人员给疏忽,一旦密码180天未修改过,就会出现这样的问题。

1.首先修改过期的账户,如下命令。

#登录oracle
sqlplus /nolog
#修改密码已过期用户的密码
alter user 用户名 identified by 密码;
到此就可以解决报错问题,如果为了一劳永逸,可设置密码永不过期。
#然后设置密码永不过期
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改后设置立即生效,不需要重启数据库,此时密码永远不会过期。
#查看系统profiles中PASSWORD_LIFE_TIME设置
SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
#查看用户的profile设置
SELECT username,profile FROM dba_users;

参考连接:https://blog.csdn.net/yechaodechuntian/article/details/24887873

————————————分割线——————————–

四、问题描述

机房断电维护后,oracle数据库本地启动可连接,但无法远程连接。

提示报错:ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

重新启动监听:lsnrctl start时发现报错“The listener supports no services”

解决方法:

$ vi $ORACLE_HOME/network/admin/listener.ora

添加内容如下:
SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = orcl)     //假设实例名为 orcl
  (SID_NAME = orcl)         //假设实例名为 orcl
  )
)

添加完毕后重新加载。
$ lsnrctl reload

再次远程连接,即可成功。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注