oracle数据库运维必备

数据库创建操作

1.创建表空间和表

create tablespace mapWorldSpace logging
datafile'E:/app/database/mapWorld/mapWorldSpace_data.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;

create user  mapWorld identified by 123456 
default tablespace mapWorldSpace
temporary tablespace TEMP
profile DEFAULT;

grant  connect,resource to  mapworld;
grant dba  to BDCDJ_WXYY;

2.创建用户并赋予密码

create user BWXYY identified by 123456 
default tablespace wx
temporary tablespace TEMP
profile DEFAULT;

3.给用户赋权限

grant dba  to BDCDJ_WXYY;(dba权限)

4.备份库

EXP YG_BDCJ/kngo@10.5.22.1/SJZX file=C:/Users/Administrator/Desktop/9数据备份YG_BDCDJ.DMP OWNER=(YG_BDCDJ)
---备份单表
exp mapworld/123456@127.0.0.1/orcl  file=C:/Users/Administrator/Desktop/9数据备份mapworld.DMP tables=(pic) owner=(mapworld);

导出 (库名)/密码  @ 数据库ip  /数据库实例名  file= 导出DMP文件的路径          DMP文件的名字.DMP OWNER=(导出的库名)

5.导入备份的DMP文件

imp YG_BDCDEW/bdc@10.5.1.50/orcl  file=C:/Users/Administrator/Desktop/备份YG_BDCDJ.DMP  full=y ignore=y
---导入单表
imp mapworld/123456@127.0.0.1/orcl   file=C:/Users/Administrator/Desktop/xxx.dmp ignore=y  tables=(pic)

导入 库名      /密码 @ ip         /数据库实例名  file=导入的DMP文件路径           DMP文件名.DMP  full=y ignore=y

6.备份表(log=路径:日志名.log  可不要导出日志)

exp yg_cy_v2/bdc@10.15.1.50/orcl file=C:Users/Administrator/Desktop/备份YG_BDCY_V2.DMP log=路径:日志名.log tables=表名

导出 (库名)   /密码 @ 数据库ip  /数据库实例名  file= 导出DMP文件的路径          DMP文件的名字.DMP tables=表名

7.密码过期

 SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

8.忘记数据库system密码

1、打开cmd窗口,输入 sqlplus / as sysdba

2、运行cmd ,输入  alter user 用户名 account unlock;  (用户名为你想要找回/修改 密码的用户,这里举例为 system 用户 )

3、alter user 用户名(system) identified by  新密码(m1234) ; 修改密码 (注意:一定要在英文输入状态下输入字母,否则不识别 )

4、修改成功啦 ,现在可以用新密码 m1234 登录啦

9.如果网站发布后提示System.Data.OracleClient requires Oracle client software version 8.1.7 or greater

1、以管理员的用户登录。

2、找到ORACLE_HOME文件夹(我的是D:appAdministratorproduct .2.0),点右键,选属性--安全,在组或用户栏中选“Authenticated Users”,在下面权限列表中把“读取和运行”的权限去掉,再按应用;重新选上“读取和运行”权限,点击应用;选权限框下面的“高级”按钮,确认“Authenticated Users”后面的应用于是“该文件夹、子文件夹及文件”,按确定把权限的更改应用于该文件夹。

3、重新启动计算机,让权限设置生效(请注意,这一步很重要)。

4、登录后运行asp.net应用,正常取得Oracle数据库的数据。  

10.没有监听问题

1、从开始菜单打开Net Manager。

2、本地-监听程序-绿色添加-添加好主机和端口(默认1521)保存就OK了。

11.数据库查询表空间

SELECT a.tablespace_name "表空间名",
total "表空间大小",
free "表空间剩余大小",
(total - free) "表空间使用大小",
total / (1024 * 1024 * 1024) "表空间大小(G)",
free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
round((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) free
FROM dba_free_space
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) total
FROM dba_data_files
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name ;

12.数据库查询表空间地址

select * from dba_data_files;

13.数据库表空间扩容

(1)手动扩容

alter database datafile 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/EDWTEST/APP04.DBF' resize 256M;

(2)给表空间增加数据文件

ALTER TABLESPACE app_data ADD DATAFILE 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/EDWTEST/APP03.DBF' SIZE 50M;

(3)新增数据文件,并且允许数据文件自动增长

ALTER TABLESPACE app_data ADD DATAFILE 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/EDWTEST/APP04.DBF' 
SIZE 50M AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

(4)允许已存在的数据文件自动增长

ALTER DATABASE DATAFILE 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/EDWTEST/APP03.DBF'
AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

14.数据库表解锁(plsql使用for update 没有提交或撤回会锁表)

(1)查询找到被锁定的表和用户

select b.owner,b.object_name,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id;

(2)查询找到被锁定的表

SELECT object_name, machine, s.sid, s.serial# 
FROM gv$locked_object l, dba_objects o, gv$session s 
WHERE l.object_id = o.object_id 
AND l.session_id = s.sid;

(3)查询找到被锁定的表(session后面有个空格,缺少会报缺少的session关键字:杀掉进程 sid,serial#)

alter system kill session '18,7933';


15.删除用户下所有表(先查询到所有表之后将结果复制到另一窗口执行删除)

select 'drop table '||table_name||';' from cat where table_type='TABLE'

16.监听程序找不到符合协议堆栈要求的可用处理程

解决方法:

(1)针对第一个原因就是修改连接数的限制

select count(*) from v$process ;    --当前的数据库连接数
select value from v$parameter where name ='processes';  --数据库允许的最大连接数
alter system set processes=300 scope = spfile;  --改的大点

--在cmd重启数据库
sqlplus /nolog
conn sys / as sysdba
shutdown immediate;  --关闭数据库
startup;    --启动数据库

   然后reboot数据库,使其生效

(2)针对第二个原因,我的个人解决方法是,把tns的动态注册改为静态注册(我目前遇到的错误是这么解决的)

     把global_name和sid_name 都写到linster。


17.用户被锁处理

select * from dba_profiles  where resource_name  like 'FAILED_LOGIN_ATTEMPTS%'; ---查看用户限制
select username,lock_date from dba_users where username='MAPWORLD'; ---查看用户被锁时间
alter profile default limit FAILED_LOGIN_ATTEMPTS 30;----修改限制次数
alter user MAPWORLD account unlock; --查看是那个ip造成的test用户被锁,查看$ORACLE_HOME/network/admin/log/listener.log日志,并解锁

18.归档日志清理

delete_arch.txt

connect target /@localhost:1521/ZX
run{
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-2';
crosscheck archivelog all;
delete expired archivelog all;
}

deletearchive.bat

rman cmdfile=delete_arch.txt

19.批量制造100万条数据

-- Create table
create table TEST
(
  objectid INTEGER not null,
  text     NVARCHAR2(50),
  shape    NVARCHAR2(500),
  xh       INTEGER,
  je       NUMBER(20,5),
  jebz     INTEGER
)
tablespace MAPWORLDSPACE
  pctfree 0
  initrans 4
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );
  
  ---------开始生成数据
declare  
i integer; --定义变量  
begin  
i := 1;  
loop  
insert into TEST(objectid,text,Shape,Xh,je,Jebz)  
values  
(i,'111','222',3,17.00,1);   
i := i + 1;   
exit when i > 1000000;  
end loop;  
commit;  
end;----21s左右

20.高速备份表

(1)带归档(100万条用时:0.664s)

create table testcopy1 as
select * from TEST2 t

(2)非归档(100万条用时:0.009s)

create table testcopy2
nologging as 
select * from TEST2 t

21.创建序列

-- Create sequence 
create sequence SEQ_YG_SHH_YYAAAAA
minvalue 1
maxvalue 9999999999999
start with 1
increment by 1
cache 20;
---查询下一个
select  SEQ_YG_SHH_YYAAAAA.nextval from  DUAL;
---使用直接insert values(SEQ_YG_SHH_YYAAAAA.nextval)就可以了




云笔记 | 创客说| 课程 | 用户中心

版权所有:机遇屋在线 Copyright © 2017-2020 aaoit Co., Ltd.

鲁ICP备16042261号