1、oracle中导入dmp文件语句
imp 用户名/密码 file=dmp文件在root用户下的目录 log=日志存放的文件名 grants=no full=y
示例:
imp zr1234/zr1234 file=/home/backup/DJP_db_20210302.dmp log=imp_zr1234_311.log grants=no full=y
此数据库备份文件,是用exp命令导出的文件,可用imp命令导入,如上述示例所示
impdp 系统用户名/密码 文件所在目录 文件名 日志存放文件名 remap_schema=exp导出文件的用户名:要导入的用户名 transform=oid:n,segment_attributes:n
示例:
impdp system/Test.123456 directory=DUMPDIR dumpfile=TEST.DUMP logfile=20210316imp.log remap_schema=Test:Test12345 transform=oid:n,segment_attributes:n
上述文件所在目录,和文件名都是用的oracle数据库配置好的变量DUMPDIR,TEST.DUMP,可直接配置文件绝对路径
impdp system/Test.123456 directory=/root/DBbak/ dumpfile=2023-12-28.dmp logfile=20210316imp.log remap_schema=Test:Test12345 transform=oid:n,segment_attributes:n
此备份文件是用expdp命令导出的,用impdp命令导入,如上
2、oracle中删除用户及用户下面的所有表信息:
##首先,登录oracle
su - oracle
sqlplus / as sysdba 进入SYS用户下; sqlplus "as sysdba" 这个命令可以进入想进入的用户下,输入对应用户名,密码就OK
然后运行drop user userName cascade; (username就是对应要删除的用户名)
这个时候可能会报错:
上述报错原因是,此删除的用户可能正在被程序使用
首先停掉对应服务进程,然后查看一下还有那些进程在占用此用户
select sid,serial# from v$session where username='userName'; ###同样username改为对应的要删除的用户名
##可以看到有进程在使用此用户,需要运行下述命令,停掉对应进程
alter system kill session '110,31711';
alter system kill session '112,31069';
alter system kill session '135,59997';
alter system kill session '140,12142';
alter system kill session '146,12751';
alter system kill session '536,17808';
alter system kill session '561,54915';
###如上述需要一行一行删除
###然后重新运行删除用户命令
drop user userName cascade; (username就是对应要删除的用户名)
##发现用户正常删除,OK
有时候我们服务没有关闭完,导致一直有数据库进程连接,kill调后还会出现,这时首先把该用户下锁表操作,然后再次kill,就OK
##锁表,用户test
alter user test account lock;
用下述PLSQL删除该用户下进程:
如上图,可以PLSQL查看进程,右边框可以选择查看哪个用户下进程,
比如这个我们就选择了所有用户下的sessions,这时我可以看到,我们要删除的用户下,是有进程的,
可以手动选择之后,右键选择kill,手动删除进程,稍后,点击空白地方右键选择refresh list,
然后看到我们要删除的用户下进程已经没有了,
这时,再运行命令drop user username cascade;删除用户,就可以正常删除了,
具体操作如下图:
注: 还有一种情况,按照上述所有session都kill了,
但是最后还是有一个session一直显示killed状态,就是关闭不了,
这时查看一下,是不是该用户在PLSQL中有登录状态,正在登陆的话也是站用session的,
只要有session,删除用户就会报错,
这时,我们disconnect 用户的登录链接之后,刷新list,看到该用户下没有session了,重新尝试删除用户成功
3、oracle新建用户
###首先查看常规将用户表空间放置路径:
select name from v$datafile;
如上图,可以看到常用用户表空间路径为:E:\APP\ADMINISTRATOR\ORADATA\ORCL\
###运行下述语句,创建用户表空间:
CREATE TABLESPACE test datafile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\testNS.dbf' size 600M autoextend on next 50m maxsize unlimited;
##上述test为对应tablespace名称,然后后边的datafile为存放用户表空间位置
###然后创建用户
CREATE USER testUser IDENTIFIED BY abc DEFAULT TABLESPACE test; 创建用户 testUser ,密码为abc,指定用户表空间test
###给testUser用户授予对应角色权限
grant connect,resource,dba to testUser;
4、linux下oracle数据登录到非sys账号下方法:
sqlplus username/password
例如要登录到test用户下,密码也是Test.123456, sqlplus test/Test.123456
可以通过下面命令查看登录的当前用户:
desc user_users;
select username from user_users;
###由下图可知,oracle数据当前登录用户
5、windows中,怎么修改oracle示例内存:
##首先登录oracle, win+r 进入命令行界面
sqlplus / as sysdba ##进入oracle数据库
##查看现在示例内存:
show parameter sga;
##修改占用内存大小:
alter system set sga_max_size= 3072m scope=spfile;
##再运行
alter system set sga_target=3072m scope=spfile;
##然后重启oracle
shutdown immediate; ##关闭数据库(可能会耗时较长,耐心等待)
startup ##启动
##再次查看示例占用内存
show parameter sga; ##发现已经修改成功
6、oracle数据库备份数据库
###oracle dmp导出命令 ---运行这个导出命令,不需要进入oracle中,直接在打开的命令行执行就OK
expdp 数据库username/数据库password directory=DUMPDIR dumpfile=导出的dmp文件名 schemas=test(导出数据库备份文件用户) logfile=日志名
##如下示例,进入命令行界面
> expdp test/Test.123456 directory=DUMPDIR dumpfile=test0818.dmp schemas=test logfile=test0818.log
##上述DUMPDIR是指oracle数据库配置好的变量DUMPDIR,如下图可以看到:
###注意,运行导出备份命令前,需要对应导出用户有数据读写权限
grant read,write on directory DUMPDIR to senelec;
##如果没有上述权限,imp导入时,会报错
7、linux下重启Oracle
##查看监听状态:
lsnrctl status
##停止监听:
lsnrctl stop
##重启监听:
lsnrctl start
##停止数据库:
> shutdown immediate ;
##启动数据库
> startup
##查看Oracle数据库版本
select * from v$version
8、Oracle开启日志归档
##查看是不是归档模式
sql> archive log list;
##启动主动归档
sql> alter system set log_archive_start=true scope=spfile;
##设置归档路径
sql> alter system set log_archive_dest='location=/oracle/ora9/oradata/arch' scope=spfile;
##如果归档到两个位置,则可以通过下边方法实现 ---视情况运行
sql> alter system set log_archive_dest_1='location=/oracle/ora9/oradata/arch1' scope=spfile;
sql> alter system set log_archive_dest_2='location=/oracle/ora9/oradata/arch2' scope=spfile;
##设置归档日志款式
sql> alter system set log_archive_format='arch_%d_%t_%r_%s.log' scope = spfile;
sql> shutdown immediate;
##打开控制文件,不打开数据文件
sql> startup mount;
##将数据库切换为归档模式
sql> alter database archivelog;
##将数据文件打开
sql> alter database open;
##查看此时是否处于归档模式
sql> archive log list;
##查询以确定数据库位于archivelog模式中且归档过程正在运行
sql> select log_mode from v$database;
sql> select archiver from v$instance;
##日志切换
sql> alter system switch logfile;
查看:
sql> select name from v$archived_log;
----按照上述操作startup mount;启动时可能会报错,如下图:
解决方法:
解决方法类似上图中所示,不同项目对应pfile路径可能不同,可根据实际情况自行修改
##上述运行后,重启Oracle
sql> shutdown immediate;
sql> startup;
9、linux命令行界面,oracle数据库,执行sql脚本
##切换到oracle用户下
su - oracle
##将要运行脚本上传到oracle用户路径下
##连接数据库
$sqlplus username/password
##执行/home/oracle目录下test.sql脚本
SQL>@/home/oracle/test.sql
SQL>exit; --退出
如下截图: