ORACLE-工作常用配置及命令记录-导入sql、unl文件、查看数据库状态、修改字符集等

简介:

博文说明【前言】:

    本文将记录个人工作中常用的oracle配置命令及相关知识,在目前时间点【2017年5月16号】下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容。




正文:


1、cmd中执行sql脚本

sqlplus mcpdb/McPDBds00@10.133.200.230/cxydck1 @D:\浏览器下载-download\TS_COMPANY-副本.sql

上面这是在没有使用ora文件的情况下,如有ora文件,则10.133.200.230/cxydck1可以替换成自定义的名称

2、plsql中执行sql脚本

打开命令窗口-->@d:\database.sql  或者 start d:\database.sql


3、将unl文件数据导入oracle数据库


1、编辑sql.ctl文件,sql.ctl文件内容如下:


load data  
infile 'C:\Users\Administrator\Desktop\移动查勘上线测试\2016-10-26-更新分公司用户数据库\prpdbankaccount.txt'  
insert  
into table ts_bankaccount_bak2  
fields terminated by'#'  
trailing nullcols  
(  
    OPENBANKCODE,  
    OPENBANKNAME,  
    NAMECODE, 
    AREACODE, 
    USEFLAG   
)


注意:文件中的“#”代表的是unl文件中以#为分隔符,如果文件中是以|作为分隔符,则需要将#替换成|,括号中的5个字段指的是对应的5个字段。


 2、打开cmd,路径进入ctl和data.txt所在的路径,运行


sqlldr mcp31000000/mcp31000000@jspt control=sql.ctl log=log.log bad=bad.log errors=5000 
rows=500 bindsize=1048576


注意:

rows与bindsize相关,rows默认64行,如果不修改bindsize,只修改rows无效。

bindsize --(每次提交记录的缓冲区的大小,字节为单位,默认256000)


4、AIX服务器上使用topas,查看时出现:Terminal linux is unknown

解决方法:export TERM=vt100  然后在CRT终端上修改将terminal修改为VT100,输出结果后可以再次修改回linux


5、查看RAC集群资源信息

# srvctl  config database -d cxydck -a 【注意:-d后面接的是server_name】


6、查看RAC集群监听信息

# srvctl config listener -n ZB23YDCK1(主机名)


7、查看RAC集群连接信息

# srvctl  config database -d cxydck -t


8、查看RAC集群实例状态【cxydck为server_name】

# srvctl  status database -d cxydck  -v


9、查看节点应用程序状态: srvctl status nodeapps


10、列出所配置的数据库名称:srvctl config database


11、列出所配置的数据库的详细信息:srvctl config database -d cxydck -a


12、查看ASM磁盘:srvctl status asm -a


13、查看listener:srvctl status listener


14、查看磁盘空间信息

进grid用户下进入asmcmd,然后lsdg查看磁盘组空间


15、修改数据库默认字符集

查看当前数据库的字符集

Sql> select userenv('language') from dual;

错误操作:

改服务器端字符集,通过ORACLE的SQL PLUS命令窗口改

在SQL*PLUS中,以DBA登录 conn 用户名 as sysdba

然后执行以下命令

>shutdown immediate;    (把database停了,关闭数据库实例Instance)

>startup mount;        (把database重开去可更改情況,实例装载数据库)

>alter system enablerestricted session;

>alter system set job_queue_processes=0;

>alter system setaq_tm_processes=0;

>alter database open;                     (Instance打开数据库)

>alter database characterset utf8;

OR

>alter database characterset internal_use utf8;(AL32UTF8)

>shutdown immediate;

>startup;        (重开正常oracle)


注意:oracle修改字符集只能全局修改,不能只针对某一个用户进行修改,并且在建库的时候字符集是已经选好的,后期是不能被修改的。如果使用命令强制修改字符集,虽然在在表面,字符集是显示的被修改,但是实际上,数据库被不可逆的破坏了。

一般修改字符集的准确做法是新建实例,做迁移。也就是说上面这一种方法是错误的,正确的修改方法为:





16、死锁问题解决


一、数据库死锁的现象

程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。

二、死锁的原理

当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提

交,另一条对于这一列数据做更新操作的语句在执行的时候就会处于等待状态,

此时的现象是这条语句一直在执行,但一直没有执行成功,也没有报错。

三、死锁的定位方法

通过检查数据库表,能够检查出是哪一条语句被死锁,产生死锁的机器是哪一台。

1)用dba用户执行以下语句

select username,lockwait,status,machine,program from v$session where sid in

(select session_id fromv$locked_object)

如果有输出的结果,则说明有死锁,且能看到死锁的机器是哪一台。字段说明:

Username:死锁语句所用的数据库用户;

Lockwait:死锁的状态,如果有内容表示被死锁。

Status:状态,active表示被死锁

Machine:死锁语句所在的机器。

Program:产生死锁的语句主要来自哪个应用程序。


2)用dba用户执行以下语句,可以查看到被死锁的语句。

select sql_text from v$sqlwhere hash_value in

(select sql_hash_value fromv$session where sid in

(select session_id fromv$locked_object))

四、死锁的解决方法

     一般情况下,只要将产生死锁的语句提交就可以了,但是在实际的执行过程中。用户可

能不知道产生死锁的语句是哪一句。可以将程序关闭并重新启动就可以了。

 经常在Oracle的使用过程中碰到这个问题,所以也总结了一点解决方法。

1)查找死锁的进程:

sqlplus "/assysdba" (sys/change_on_install)

SELECTs.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,

l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS

FROM V$LOCKED_OBJECTl,V$SESSION S WHERE l.SESSION_ID=S.SID;

2)kill掉这个死锁的进程:

alter system kill session ‘sid,serial#’; (其中sid=l.session_id)

3)如果还不能解决:

select pro.spid fromv$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr;

  其中sid用死锁的sid替换: exit

ps -ef|grep spid

  其中spid是这个进程的进程号,kill掉这个Oracle进程



17、执行startup时,提示ORA-00845:MEMORY_TARGET not supported on this system


在重启oracle11G的时候出现这个错误,解决方法:

如上的内容就详细的解释了该错误是由于/dev/shm小于MEMORY_TARGET的大小,或者是/dev/shm根本就没有挂载,如果同时设置了MEMORY_TARGET和MENORY_MAX_TARGET,那么/dev/shm至少必须和MEMORY_MAX_TARGET的大小一致

因此在这里需要重新把这个目录进行挂载,在挂载的时候,添加内存参数,进入/etc/fstab文件

修改为:tmpfs                   /dev/shm                tmpfs   defaults,size=3G        0 0

[root@tp-oracle11g-1 ~]# df-h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              60G   18G  39G  31% /

tmpfs                 1.9G  909M 1009M 48% /dev/shm

/dev/sda1             194M   32M 152M  18% /boot

/dev/sda5              36G  177M  34G   1% /home

/dev/sr0              4.1G 4.1G     0 100% /media

提示无法umount的时候使用  fuser -km /dev/shm/  然后再umount

重新挂载之后的状态:

[root@tp-oracle11g-1 ~]# df-h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              60G   18G  39G  31% /

/dev/sda1             194M  32M  152M  18% /boot

/dev/sda5              36G  177M  34G   1% /home

/dev/sr0              4.1G  4.1G    0 100% /media

tmpfs                 3.0G     0 3.0G   0% /dev/shm

然后:

SQL> startup;

ORACLE instance started.

Total System Global Area1603411968 bytes

Fixed Size               2213776 bytes

Variable Size               939526256 bytes

Database Buffers        654311424 bytes

Redo Buffers                 7360512 bytes

Database mounted.

Database opened.

然后重新挂载,如果在卸载umount  /dev/shm的时候失败,无法卸载,那么输入:fuser–km /dev/shm,

然后再重新挂载mount –a 





结尾:



     感谢阅读,祝有收获的一天,谢谢!




      本文转自1清风揽月1  51CTO博客,原文链接:http://blog.51cto.com/watchmen/1926634,如需转载请自行联系原作者




相关文章
|
16小时前
|
负载均衡 关系型数据库 MySQL
关系型数据库的安装和配置数据库节点
关系型数据库的安装和配置数据库节点
11 3
|
1天前
|
存储 Oracle 关系型数据库
oracle 数据库 迁移 mysql数据库
将 Oracle 数据库迁移到 MySQL 是一项复杂的任务,因为这两种数据库管理系统具有不同的架构、语法和功能。
11 0
|
10天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
28 0
|
11天前
|
运维 安全 数据管理
数据管理DMS产品使用合集之要在DMS中实现数据库工单发布时必须经过人工审核才能进入下一步,我该怎么配置
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
13天前
|
存储 Java 数据库
SpringBoot使用jasypt实现数据库配置加密
这样,你就成功地使用Jasypt实现了Spring Boot中的数据库配置加密,确保敏感信息在配置文件中以加密形式存储,并在应用启动时自动解密。
46 2
|
17天前
|
存储 Oracle 网络协议
Oracle 11gR2学习之二(创建数据库及OEM管理篇)
Oracle 11gR2学习之二(创建数据库及OEM管理篇)
|
18天前
|
SQL XML 数据库
sql导入数据库命令
在SQL Server中,数据库导入可通过多种方式实现:1) 使用SSMS的“导入数据”向导从各种源(如Excel、CSV)导入;2) BULK INSERT语句适用于导入文本文件;3) bcp命令行工具进行批量数据交换;4) OPENROWSET函数直接从外部数据源(如Excel)插入数据。在操作前,请记得备份数据库,并可能需对数据进行预处理以符合SQL Server要求。注意不同方法可能依版本和配置而异。
|
21天前
|
Oracle 网络协议 关系型数据库
异地使用PLSQL远程连接访问Oracle数据库【内网穿透】
异地使用PLSQL远程连接访问Oracle数据库【内网穿透】
|
9天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
9天前
|
SQL 关系型数据库 MySQL
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)