创建用户
drop user USER cascade;
create user USER identified by PASSw0rD default tablespace DATA_SPACE temporary tablespace TEMP ;
GRANT RESOURCE,CONNECT TO USER;
GRANT SELECT ANY DICTIONARY,SELECT ANY TABLE,UNLIMITED TABLESPACE,
CREATE DATABASE LINK,CREATE SEQUENCE,CREATE MATERIALIZED VIEW,CREATE VIEW
TO USER;
GRANT IMP_FULL_DATABASE,EXP_FULL_DATABASE TO USER;
conn USER/PASSw0rD@ORCL;
SQLPLUS 插入数据乱码
1. 先查看数据库语言编码
select userenv('language') from dual;
2. 设置编码
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
3. 重新登录sqlplus,问题解决
CPU资源占用过高分析
- 先使用TOP命令,查看占用资源过高的进程
- 然后使用ps -ef|grep '进程号' ,查看对应的进程信息
- 如果进程为ora_j000_xxx,j000 表示是数据库 job,编号为从000 - 999
- 使用数据库命令查看查看job列表:select * from dba_jobs_running,找到对应的job编号
- 然后使用如下命令:select * from dba_jobs,根据job编号查看what字段,看看具体的执行内容
本地登录远程数据库
sqlplus "sys/M435m1N7lo@TSSH_DEV_NEW as sysdba"
远程登录异常问题解决
- 异常信息: ORA-01017: invalid username/password; logon denied
- 异常描述:
在数据库主机可以使用sys用户登录,在windows主机不能使用sys用户登录,使用sysdba角色登录,报上面的异常信息。 - 解决办法:
- 在数据库主机上,使用sys用户和sysdba角色登录
- 查看远程访问开关是否打开
SQL> show parameter remote_login
- 需要启动密码文件的话,需要前提就是这个值, 这里的值可以NONE,EXCLUSIVE和SHARE。EXCLUSIVE和SHARE都可以,EXCLUSIVE是独占的文件,SHARE是多实例的体系中的共享模式。
- 如果值是NONE,使用以下命令进行变更
SQL> alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile;
- 打开开关仍然不能访问,查看当前数据库实例(easyweb)是否存在口令文件
SQL> ho ls $ORACLE_HOME/dbs/orapw*
-
使用orapwd重建当前数据库实例口令文件
orapwd file=/oracle/app/oracle/product/11.2.0.4/dbs/orapweasyweb password=M435m1N7lo entries=20 force=y其中参数entries的含义是表示口令文件中可以存放的最大用户数,对应于允许以SYSDBA/SYSOPER权限登录数据库的最大用户数,如果用户数 超过这个值只能重建口令文件,增大entries。force 表示是否覆盖已经存在的文件。
-
再次查看口令文件
查看口令文件内容
SQL>select * from v$pwfile_users;
- 为什么需要口令文件
在数据库没有启动之前,数据库内建用户是无法通过数据库来验证身份的。口令文件中存放sysdba/sysoper 用户的用户名及口令,允许用户通过口令文件验证,在数据库未启动之前登陆,从而启动数据库。如果没有口令文件,在数据库未启动之前就只能通过操作系统认 证。 使用Rman,很多时候需要在nomount,mount等状态对数据库进行处理。所以通常要求sysdba权限如果属于本地DBA组,可以通过操作系统认证登陆。如果是远程sysdba登陆,需要通过passwordfile认证。