赞
踩
略
创建空实例:oradim -new -sid orcl
略
[INS-40931] The following nodes do not have interfaces configured on a subnet matching the SCAN VIP subnet: [node1.domain, node2.domain]
A:Public IP and SCAN VIP should be in same subnet
B:check the /etc/hosts ip and hostname settings.
第一种
# cd /u01/app/oracle/product/11.2.0/client_1/deinstall/
# ./deinstall
# rm -rf /u01/app/oracle
# rm -rf /etc/oratab
# rm -rf /etc/oraInst.loc
第二种
1. 运行 $ORACLE_HOME/bin/localconfig delete
2. rm -rf $ORACLE_BASE/*
3. rm -f /etc/oraInst.loc /etc/oratab
4. rm -rf /etc/oracle
5. rm -f /etc/inittab.cssd
6. rm -f /usr/local/bin/coraenv /usr/local/bin/dbhome /usr/local/bin/oraenv
7. rm –rf /opt/ORCLfmap
第三种
1.删除$ORACLE_BASE/product/oraInventory目录;
2.删除$ORACLE_BASE/product目录;
3.删除/etc/oratab文件;
4.删除/tmp/目录下与"ora"关键字相关的文件;
5.删除/opt/目录下与Oracle相关的内容;
6./usr/local/bin/下的几个文件可以暂不删除。注意在下次安装Oracle运行root.sh脚本提示覆盖文件时选择"y";
7.重新启动操作系统,完成卸载。
第四种
Use DBCA to remove the databases.
Use OUI to remove the installation
Physically remove all the instation from your $ORACLE_HOME and later $ORACLE_HOME itself.
You may want to edit oratab and remove the entries too.
windows:
设置实例同windows服务启动
oradim -EDIT -SID 实例名 -STARTMODE auto -SRVCSTART system
linux:
- #!/bin/bash
- echo 'current user:'$(whoami)
- if [ $(whoami) = "oracle" ] ; then
- sqlplus / as sysdba <<AAA
- startup
- exit
- AAA
- lsnrctl start
- elif [ $(whoami) = "root" ];then
- echo 'switch to ORACLE user.'
- su - oracle <<CCC
- sqlplus / as sysdba <<DDD
- startup
- exit
- DDD
- lsnrctl start
- CCC
- fi
linux:
- #!/bin/bash
- echo 'current user:'$(whoami)
- if [ $(whoami) = "oracle" ] ; then
- sqlplus / as sysdba <<AAA
- shutdown immediate
- exit
- AAA
- lsnrctl stop
- elif [ $(whoami) = "root" ];then
- echo 'switch to ORACLE user.'
- su - oracle <<CCC
- sqlplus / as sysdba <<DDD
- shutdown immediate
- exit
- DDD
- lsnrctl stop
- CCC
- fi
sqlplus "as sysdba" 要系统管理员权限
1.1 查看表空间信息
select TABLESPACE_NAME,FILE_NAME from dba_data_files;
1.2 关闭数据库
SQL> shutdown immediate;
1.3 复制system表空间对应数据文件去新路径(建议使用oracle用户,复制的文件不会有权限问题)
!cp /opt/oracle/oradata/orcl/system01.dbf /data/tb_oracle/system01.dbf
1.4 给新复制的文件修改为原文件所属用户和用户组
!chown chown oracle.oinstall system01.dbf
1.5 以mount启动数据库
SQL> startup mount
1.6 修改system表空间对应数据文件去新路径
SQL> alter database rename file '/opt/oracle/oradata/orcl/system01.dbf' to '/data/tb_oracle/system01.dbf';
1.7 启动数据库
SQL> alter database open;
1.8 确认修改完成
select TABLESPACE_NAME,FILE_NAME from dba_data_files;
1.查看undo空间;
show parameter undo_tablespace;
2.查看表空间和文件的对应关系 UNDOTBS1是ONLINE
select file_name, tablespace_name, online_status from dba_data_files where tablespace_name like '%UNDOTBS%';
D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS02.DBF UNDOTBS2 ONLINE
3.查询当前回退表空间状态
select tablespace_name, status from dba_rollback_segs;
4.undo_tablespace 是一个必须一直存在的表空间,要想删除当前的,我们必须设置一个临时空间供undo_tablespace 使用;
create undo tablespace UNDOTBS1 datafile 'E:\oradata\UNDOTBS01.DBF' size 100M;
alter system set undo_tablespace=UNDOTBS1;
5.重新查询当前回退表空间状态 UNDOTBS1已经变成OFFLINE
select tablespace_name, status from dba_rollback_segs;
6.删除回退表空间UNDOTBS1
drop tablespace UNDOTBS2 including contents and datafiles;
查询默认临时表空间:
SQL> select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
查询临时表空间状态:
SQL> select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
扩展临时表空间:
方法一、增大临时文件大小:
SQL> alter database tempfile '/u01/app/oracle/oradata/orcl/temp01.dbf' resize100m;
Database altered.
方法二、将临时数据文件设为自动扩展:
SQL> alter database tempfile '/u01/app/oracle/oradata/orcl/temp01.dbf' autoextend on next 5m maxsize unlimited;
创建临时表空间:
CREATE TEMPORARY TABLESPACE TEMP1 TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf' SIZE 8G AUTOEXTEND ON MAXSIZE 32G;
修改临时表空间大小、自增长等:
ALTER TABLESPACE TEMP1 ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp02.dbf' SIZE 4G AUTOEXTEND ON NEXT 128M MAXSIZE 6G;
设置默认临时表空间:
alter database default temporary tablespace temp2;
删除临时表空间的一个数据文件:
方法1:
SQL> ALTER TABLESPACE TEMP DROP TEMPFILE '/u01/app/oracle/oradata/GSP/temp02.dbf';
注意:这种删除临时表空间的写法会将对应的物理文件删除。
方法2:
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ drop;
删除临时表空间(彻底删除):
SQL> ALTER DATABASE TEMPFILE '/u01/app/oracle/oradata/GSP/temp02.dbf' DROP INCLUDING DATAFILES;
注意:删除临时表空间的临时数据文件时,不需要指定INCLUDING DATAFILES 选项也会真正删除物理文件,否则需要手工删除物理文件
方法三:
SQL> drop tablespace temp1 including contents and datafiles cascade constraints;
1、offline表空间:alter tablespace tablespace_name offline;
2、复制数据文件到新的目录;
3、rename修改表空间,并修改控制文件;
4、online表空间;
操作示例:
1、offline表空间tbs1
select name from v$datafile
alter tablespace tbs1 offline;
2、复制数据文件到新的目录
复制数据文件D:\app\Administrator\oradata\orcl\TBS1.DBF到E:\oradata\TBS1.DBF;
3、rename修改表空间数据文件为新的位置,并修改控制文件
alter tablespace tbs1 rename datafile 'D:\app\Administrator\oradata\orcl\TBS1.DBF' to 'E:\oradata\TBS1.DBF';
4、online表空间
alter tablespace tbs1 online;
select name from v$datafile;
一、创建日志文件
1.创建文件组
alter database add logfile group 4('D:\APP\ADMINISTRATOR\ORADATA\redo04.log') size 50M blocksize 512;
2.添加成员
①通过组的成员
alter database add logfile member 'D:\APP\ADMINISTRATOR\ORADATA\redo04a.log' to ('D:\APP\ADMINISTRATOR\ORADATA\redo04.log');
②通过组名
alter database add logfile member 'D:\APP\ADMINISTRATOR\ORADATA\redo04b.log' to group 4;
select group#,member from v$logfile;
二、移动、重命名日志文件
1.关闭数据库
shutdown
2.装载数据库
startup mount
3.移动日志文件
mv D:\APP\ADMINISTRATOR\ORADATA\redo04a.log E:\oradata\redo04a_new.log
4.重命名日志文件
SYS@cdb1> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\redo04a.log' to 'E:\oradata\redo04a_new.log';
5.打开数据库
SYS@cdb1> alter database open;
三、删除日志文件
删除日志文件前提:
①一个实例至少需要两组重做日志文件,而不考虑组中的成员数。
②只有当重做日志组处于非活动状态时,才能删除它。如果必须删除当前组,则首先强制进行日志切换。
③在删除重做日志组之前,请确保该组已存档(如果已启用存档)。
查看日志文件状态:
alter system switch logfile;
select * from v$log;
1.删除成员
alter database drop logfile member 'E:\oradata\redo04a_new.log';
select group#,member from v$logfile;
2.删除组
alter database drop logfile group 4;
select * from v$log;
表分区移动
ALTER TABLE MINDETAILMOVE PARTITION SYS_P7784 TABLESPACE ANAL ;
查看用户MFW333所用的表空间及其容量:
select owner,tablespace_name,sum(bytes)/1024/1024/1024 GB from dba_segments t where owner='MFW333' group by owner,tablespace_name
查看用户MFW333下所有存储对象及其存储空间大小:
select OWNER,SEGMENT_NAME,t.tablespace_name,t.segment_type,sum(t.BYTES)/1024/1024/1024 GB
from dba_segments t WHERE OWNER='MFW333' GROUP BY OWNER,SEGMENT_NAME ,t.tablespace_name,t.segment_type ORDER BY 2 DESC;
查看表STOCKHIS的所有存储对象和存储空间,主要为数据和索引:
select t.owner,t.segment_name,t.segment_type,T.partition_name,t.tablespace_name,bytes
from dba_segments t LEFT JOIN DBA_INDEXES I ON I.INDEX_NAME=T.segment_name AND T.owner=I.OWNER
WHERE T.segment_name='STOCKHIS' OR I.TABLE_NAME='STOCKHIS';
查看表STOCKHIS所占用的总存储空间大小:
select 'STOCKHIS',sum(bytes)/1024/1024/1024 GB
from dba_segments t LEFT JOIN DBA_INDEXES I ON I.INDEX_NAME=T.segment_name AND T.owner=I.OWNER
WHERE T.segment_name='STOCKHIS' OR I.TABLE_NAME='STOCKHIS';
查看表STOCKHIS存储对象所在的表空间及数据文件:
select t.owner,t.segment_name,t.partition_name,t.segment_type,t.segment_subtype,t.tablespace_name,t.header_file,t.bytes,t.blocks,t.extents,
d.FILE_NAME,d.FILE_ID,d.TABLESPACE_NAME,d.bytes,d.blocks,d.STATUS
from dba_segments t
left join DBA_INDEXES I ON I.INDEX_NAME=T.segment_name --AND t.owner=I.owner
left join DBA_DATA_FILES d on d.FILE_ID=t.header_file
WHERE t.owner=I.owner and T.segment_name='STOCKHIS' OR I.TABLE_NAME='STOCKHIS';
查看数据库归档情况:
archive log list
设置归档模式:
关闭数据库:shutdown immediate
启动数据库:startup mount
开启归档模式:alter database archivelog;
设置归档日志大小: system set DB_RECOVERY_FILE_DEST_SIZE= 100G;
打开数据库:alter database open;
查看归档模式情况:archive log list;
归档日志查询:select * from v$recovery_file_dest;
归档日志占比查询:select * from v$flash_recovery_area_usage;归档日志占比查询
详细设置资料:
1. 设置归档日志存储路径
设置归档日志存储路径有两种办法,使用LOG_ARCHIVE_DEST_N或者FRA
1.1使用LOG_ARCHIVE_DEST_N
假定使用了spfile(如果没使用,需要手动配置init<SID>.ora文件), 在SQLPlus里使用alter system命令:
SQL> alter system set log_archive_dest_1='location=/home/oracle/archlog/orcl' scope=both;
SQL> alter system set log_archive_format='orcl_%t_%s_%r.arc' scope=spfile;
SQL> show parameter log_archive_dest
NAME TYPE VALUE
---------------------- ---------- ------------------------------
log_archive_dest string
log_archive_dest_1 string location=/home/oracle/archlog/orcl
log_archive_dest_10 string
...
上面命令中的location就表示归档日志的位置。log_archive_format指定了日志格式,%t是线程号,%s是日志序列号,%r是Resetlogs ID,可以自定义格式。
1.2使用FRA
FRA是磁盘上设置的一块区域,不仅可以存储归档日志,还可以存放RMAN备份文件等。
SQL> alter system set db_recovery_file_dest_size=20G scope=both;
SQL> alter system set db_recovery_file_dest='/home/oracle/fra' scope=both;
SQL> show parameter db_recovery_file_dest;
NAME TYPE VALUE
-------------------------- ----------- -----------------
db_recovery_file_dest string /home/oracle/fra
db_recovery_file_dest_size big integer 20G
上面的命令将FRA路径设置为/home/oracle/fra,总大小最多20G
Tip1:如果两者(LOG_ARCHIVE_DEST_N和FRA)都设置了,会归档到哪里?
那么日志只会归档到LOG_ARCHIVE_DEST_N指定的目录里,而不会归档到FRA目录里,如果想要两个地方都归档,可以如下设置
SQL> alter system set log_archive_dest_1='location=/home/oracle/archlog/orcl' scope=both;
SQL> alter system set log_archive_dest_2='location=USE_DB_RECOVERY_FILE_DEST';
Tip2: 已经设置了FRA的情况下,如何取消FRA?
SQL> alter system reset db_recovery_file_dest;
SQL> alter system reset db_recovery_file_dest_size;
2. 查看归档模式
archive log list命令可以看到,使用的是非归档模式:
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /home/oracle/archlog/orcl
Oldest online log sequence 1
Current log sequence 3
或者使用select log_mode from v$database:
SQL> select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG
3. 启用归档模式
启用归档模式需要把数据库启动到mount状态,然后使用alter database archivelog命令开启:
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
3.1 如果采用的是LOG_ARCHIVE_DEST_N,结果如下:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /home/oracle/archlog/orcl
Oldest online log sequence 1
Next log sequence to archive 3
Current log sequence 3
在使用了一些日志之后,在/home/oracle/archlog/orcl目录下生成了两个归档文件,名子为orcl_1_3_968797779.arc和orcl_1_4_968797779.arc
3.2 如果采用的是FRA,结果如下(另一个系统):
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1
Next log sequence to archive 2
Current log sequence 2
在使用了一些日志之后,生成了一个归档文件,全名为 /home/oracle/fra/ORCL/archivelog/2018_02_23/o1_mf_1_2_f906v40g_.arc
=======
当然,也可以不设置LOG_ARCHIVE_DEST_N或者FRA, 直接开启归档模式,它有默认的目录。
————————————————
***原文链接:https://blog.csdn.net/qingsong3333/article/details/79357377
查询Oracle归档空间使用情况: select * from V$FLASH_RECOVERY_AREA_USAGE;
进入rman: rman target /
查看所有日志情况: list archivelog all;
检查一些无用的archivelog: crosscheck archivelog all;
删除截止到前一天的所有archivelog: DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-1';
删除过期的归档: delete expired archivelog all;
select name from v$archived_log;
list backupset 20;
delete noprompt backuppiece 'D:\ORACLE\RMANBAK\CHIC_30_20111003_3.DBF';
delete backupset 12;
backup device type disk format='/u01/fra/bak/%d_%s_%T_%p' database ;
backup device type disk format='/u01/fra/bak/%d_%s_%T_%p' incremental level 0 database ;
backup device type disk format='/u01/fra/bak/%d_%s_%T_%p' incremental level 1 database ;
backup format='/u01/fra/bak/%d_%s_%T_%p.dbf' incremental level 1 database plus archivelog format='/u01/fra/bak/arc_%d_%s_%T_%p';
backup device type disk format='/u01/fra/bak/%d_%s_%T_%p.dbf' incremental level 1 database plus archivelog format='/u01/fra/bak/arc_%d_%s_%T_%p';
backup device type disk format='/u01/fra/bak/%d_%s_%T_%p.dbf' incremental level 1 database plus archivelog format='/u01/fra/bak/arc_%d_%s_%T_%p' delete input;
analyze table DAPAN_2023_11_20 compute statistics for table;
analyze index idx_name compute statistics;
- FOR loop_counter IN [REVERSE] low_value..high_value LOOP
- -- statements to be executed
- END LOOP;
- --简单理解v:
- for 变量 in [reverse]小值..大值 loop --(两值之间要有两个点,不能多不能少)
- 要执行的语句;
- [exit when 中途退出的条件;]
- end loop;
- ·加上reverse是从大值循环到小值
示例:1
- begin
- for i in 1..10 loop
- dbms_output.put_line(i);
- end loop;
- end;
示例:2
- declare
- v2 int:=0;
- begin
- for a in 1..9 loop
- v2:=v2+a;
- dbms_output.put(a||'+');
- end loop;
- dbms_output.put_line('10='||(v2+10));
- end;
示例:3
- declare
- cursor c_stk is
- select code from stockhis t group by t.code order by t.code asc;
- stk c_stk%rowtype;
- begin
- for stk in c_stk loop
- update stockhisavg t set t.avg250=fun_get_stockavgprice(t.code,250,t.day) where t.avg250 is null and t.code=stk.code;
- dbms_output.put_line(SQL%ROWCOUNT);
- commit;
- end loop;
- end;
运行命令:
D:\app\client\Administrator\product\12.2.0\client_1\bin\sqlldr orc/orc@orcl control=I:\stock\files\20231110.ctl bad=I:\stock\files\20231110.bad log=I:\stock\files\20231110.log skip=0 errors=9999 rows=500000 direct=true
20231110.ctl控制文件:
- load data
- infile 'I:\stock\files\202312157173785.csv'
- APPEND
- into table STOCKTRADEMINDETAIL2
- fields terminated by "," optionally enclosed by ' ' TRAILING NULLCOLS
- (code, name, day date "yyyymmdd", time, price, turnover, num, col1, tradetype, mess)
202312157173785.csv 数据文件内容:
600694 | 大商股份 | 20231215 | 9:15:09 | 17.3 | 15570 | 9 | 0 | 竞价申报 |
600698 | 湖南天雁 | 20231215 | 9:15:05 | 5.8 | 4060 | 7 | 0 | 竞价申报 |
600696 | 岩石股份 | 20231215 | 9:15:01 | 17.6 | 216480 | 123 | 0 | 竞价申报 |
600692 | 亚通股份 | 20231215 | 9:15:06 | 6.85 | 33565 | 49 | 0 | 竞价申报 |
600697 | 欧亚集团 | 20231215 | 9:24:02 | 13.39 | 22763 | 17 | 0 | 竞价申报 |
600693 | 东百集团 | 20231215 | 9:16:58 | 4.25 | 7225 | 17 | 0 | 竞价申报 |
600697 | 欧亚集团 | 20231215 | 9:24:20 | 13.39 | 22763 | 17 | 0 | 竞价申报 |
600694 | 大商股份 | 20231215 | 9:15:12 | 17.3 | 15570 | 9 | 0 | 竞价申报 |
600696 | 岩石股份 | 20231215 | 9:15:04 | 17.6 | 828960 | 471 | 0 | 竞价申报 |
600697 | 欧亚集团 | 20231215 | 9:24:29 | 13.42 | 22814 | 17 | 0 | 竞价申报 |
600698 | 湖南天雁 | 20231215 | 9:15:08 | 5.82 | 7566 | 13 | 0 | 竞价申报 |
600692 | 亚通股份 | 20231215 | 9:15:09 | 6.91 | 270872 | 392 | 0 | 竞价申报 |
600693 | 东百集团 | 20231215 | 9:20:25 | 4.33 | 8660 | 20 | 0 | 竞价申报 |
600692 | 亚通股份 | 20231215 | 9:15:12 | 6.93 | 428274 | 618 | 0 | 竞价申报 |
600694 | 大商股份 | 20231215 | 9:20:03 | 17.3 | 17300 | 10 | 0 | 竞价申报 |
600698 | 湖南天雁 | 20231215 | 9:15:11 | 5.8 | 17400 | 30 | 0 | 竞价申报 |
600697 | 欧亚集团 | 20231215 | 9:24:38 | 13.45 | 44385 | 33 | 0 | 竞价申报 |
日志文件结果:
SQL*Loader: Release 12.2.0.1.0 - Production on 星期五 12月 15 23:15:49 2023 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. 控制文件: I:\stock\files\20231215.ctl 数据文件: I:\stock\files\202312157173785.csv 错误文件: I:\stock\files\20231215.bad 废弃文件: 未作指定 (可废弃所有记录) 要加载的数: ALL 要跳过的数: 0 允许的错误: 9999 继续: 未作指定 所用路径: 直接 表 STOCKTRADEMINDETAIL2,已加载从每个逻辑记录 插入选项对此表 APPEND 生效 TRAILING NULLCOLS 选项生效 列名 位置 长度 中止 包装 数据类型 ------------------------------ ---------- ----- ---- ---- --------------------- CODE FIRST * , O ( ) CHARACTER NAME NEXT * , O ( ) CHARACTER DAY NEXT * , O ( ) DATE yyyymmdd TIME NEXT * , O ( ) CHARACTER PRICE NEXT * , O ( ) CHARACTER TURNOVER NEXT * , O ( ) CHARACTER NUM NEXT * , O ( ) CHARACTER COL1 NEXT * , O ( ) CHARACTER TRADETYPE NEXT * , O ( ) CHARACTER MESS NEXT * , O ( ) CHARACTER 表 STOCKTRADEMINDETAIL2: 已成功载入 10907479 行。 由于数据错误, 0 行 没有加载。 由于所有 WHEN 子句失败, 0 行 没有加载。 由于所有字段都为空值, 0 行 没有加载。 日期高速缓存: 最大大小: 1000 条目数: 1 命中数 : 10907478 未命中数 : 0 在直接路径中没有使用绑定数组大小。 列数组 行数: 5000 流缓冲区字节数: 256000 读取 缓冲区字节数: 1048576 跳过的逻辑记录总数: 0 读取的逻辑记录总数: 10907479 拒绝的逻辑记录总数: 0 废弃的逻辑记录总数: 0 由 SQL*Loader 主线程加载的流缓冲区总数: 2497 由 SQL*Loader 加载线程加载的流缓冲区总数: 1867 从 星期五 12月 15 23:15:49 2023 开始运行 在 星期五 12月 15 23:16:15 2023 处运行结束 经过时间为: 00: 00: 25.84 CPU 时间为: 00: 00: 12.07
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。