导出:
exp account_dev/account_dev@dev file=d:/1.dmp log=d:/1.log tables=(USER,ACCOUNT)
- account_dev/account_dev:数据库用户名密码
- dev:sid
- file:导出的dmp文件
- log:导出的日志文件
- tables:需要导出的表名
导入:
imp account_test/account_test@test file=d:/1.dmp log=d:/1.log fromuser=account_dev touser=account_test ignore=y
- account_test/account_test:目标数据库用户名密码
- test:sid
- file:需要导入的数据文件(dmp)
- log:需要导入的数据库日志文件
- fromuser: 导出该数据文件(dmp)的用户名
- touser:目标数据库用户名
- ignore=y:当源数据文件的表空间与目标数据库表空间不一样,且存在CLOB等字段(这种数据类型对表空间有依赖),需要使用该参数
注意:不同版本间数据库导入导出存在的clob字段兼容问题。
其他常用的SQL与命令
1.查看该数据库下本用户下的所有表:SELECT table_name FROM user_tables;
2.查看该数据库下所有表:SELECT TABLE_NAME FROM ALL_TABLES;
3.查看该数据库下本用户的所有sequence:select * from user_sequences;
4.查看数据库版本号:select * from product_component_version;
5.查看表备注:desc USER;
6.获取当前的Oracle用户的session id:SELECT USERENV('SID') FROM DUAL;
每个工程启动并连接数据库会产生一个会话ID,这个会话ID在工程运行过程中一直存在且不变。当重启工程时会话ID才会改变。
7.数据库字符集查询:select userenv('language') from dual;
DUAL介绍:
1.DUAL是Oracle与数据字典一起自动创建的一个表,它只有一列:DUMMY,其数据类型为:VARCHAR2(1)。
2.DUAL中只有一行数据:'X'。
3.DUAL属于SYS模式,但所有用户都可以使用DUAL名称访问它。用SELECT计算常量表达式、伪列等值时常用该表,因为它只返回一行数据,而使用其它表时可能返回多个数据行。
在linux下的操作
查看数据库进程:ps -ef|grep oracle
启动Oracle命令
使用oracle用户:su - oracle
使用sysdba用户:sqlplus / as sysdba
启动数据库:startup
退出:exit
启动监听:lsnrctl start
停止监听:lsnrctl stop
进入监听器:lsnrctl
查看监听器状态:status
退出:exit
linux下杀掉Oracle运行中的存储过程
- Root账户登录服务器
- 切换到Oracle用户,执行命令:su - oracle
- sqlplus登录Oracle,执行命令:sqlplus / as sysdba
- 查询存储过程对象:select * from v$access a where object like '存储过程名%';--存储过程名为大写字母
- 查询得到可能是多个的对应serial#的值:select serial# from v$session where sid=74; --74为上一个查询得到的SID值,可能是多个,这里找到他们对应的serial#值
- 执行杀进程命令:alter system kill session '74,118';--参数为'sid,serial#'
注意:杀Session时多确认一下,别杀错session,带来不必要的麻烦。