Oracle操作

1、Oracle设置开机自启

vi /etc/oratab

 

找到  ORCLCDB:/opt/oracle/product/19c/dbhome_1:N  ,改成 ORCLCDB:/opt/oracle/product/19c/dbhome_1:Y

 

编辑rc.local文件   vi /etc/rc.d/rc.local

 用root用户修改此文件,增加两行:
先用dbstart启动数据库,然后启动监听程序,两个命令都用双引号。
启动监听的命令有空格,lsnrctl start ,必须使用双引号。

su oracle -lc "/opt/oracle/product/19c/dbhome_1/bin/dbstart"
su oracle -lc "/opt/oracle/product/19c/dbhome_1/bin/lsnrctl start"

 

  使用root用户:给rc.local赋予可执行权限  chmod u+x /etc/rc.d/rc.local

 

  最后重启linux  reboot

 

2、开归档日志

1、切换到oracle用户  su - oracle

2、创建数据需要的目录,需要提前创建,否则启用日志归档会报错目录不存在

mkdir /home/oracle/oracle-data

 3、以DBA身份连接到数据库,后续操作都是终端操作

sqlplus / as sysdba

 4、启用日志归档,(这里的db_recovery_file_dest归档文件夹必须存在)

alter system set db_recovery_file_dest_size = 50G;

alter system set db_recovery_file_dest = '/home/oracle/oracle-data' scope=spfile;

shutdown immediate;

startup mount;    --挂载

ALTER DATABASE MOUNT;  --挂载

 alter database archivelog;

 alter database open;

 5、检查日志归档是否开启,"Database log mode: Archive Mode" 

archive log list;

 6、设置数据库启用补充日志记录;

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

 

3、创建dba用户、创建表空间

1、su - oracle             切换到oracle用户

2、在/opt/oracle/oradata 目录下新建一个文件夹,后面创建表空间需要用到

 cd /opt/oracle/oradata

 mkdir abc

3、sqlplus / as sysdba   ( 以dba身份登录数据库, 系统的超级用户)

4、创建临时表空间

 

创建用户前必须要先创建临时表空间和数据库表空间两个表空间,否则用系统默认的表空间不好

create temporary tablespace abc_temp tempfile'/opt/oracle/oradata/abc/abc_temp.dbf' size 1024m autoextend on next 100m maxsize 10240m extent management local;

说明:

1)abc_temp 临时表空间名字

2)/home/oracle/oradata/abc 存放数据库文件的地方,一般是安装数据库后有控制文件,数据文件和日志文件的文件夹,再加上要创建表空间的名字+dbf (数据文件)

3)1024m 表空间的初始大小

4)100m 表空间的自动增长大小

5)10240m 表空间最大的大小

5、创建数据表空间

create tablespace abc logging datafile'/opt/oracle/oradata/abc/abc.dbf' size 1024m autoextend on next 100m maxsize 10240m extent management local;

 6、创建用户并指定表空间

 create user c##abc identified by abc default tablespace abc temporary tablespace abc_temp; --创建用户并指定表空间

create tablespace HYZPINFO datafile '/opt/oracle/oradata/HYZPINFO/HYZPINFO.dbf' size 200M;  --创建表空间

 

alter user c##abc default tablespace HYZPINFO;   --指定表空间(表空间创建完之后)

 

7、给用户授予dba权限

grant dba to c##abc;

8、查询所有用户

SELECT username FROM dba_users;

9、修改c##abc用户的密码

alter user c##abc identified by zlh123;

 10、查询所有表空间

select tablespace_name from user_tablespaces;

11、登入这个ABC_TEMP表空间赋予权限的用户

sqlplus

c##abc

zlh123

 

 12、创建表,并把所创建的表给ABC_TEMP表空间

(1)临时表空间里创建表

CREATE GLOBAL TEMPORARY TABLE ceshi_table (
memo1 VARCHAR(200),
memo2 VARCHAR(200),
memo3 VARCHAR(200)
) ON COMMIT PRESERVE ROWS TABLESPACE ABC_TEMP;

 (2)永久表空间里创建表

CREATE TABLE abctest_table(

memo1 VARCHAR(200),

memo2 VARCHAR(200),

memo3 VARCHAR(200)

) TABLESPACE HYZPINFO;

 

13、添加数据

INSERT INTO abctest_table (memo1, memo2, memo3) VALUES ('1', '测试1', '测试2');

然后提交数据

commit;

 

 14、删除数据

DELETE FROM abctest_table where memo1 = '1';

 然后提交 commit;

 

 

4、数据闪回

1、检查是否开启闪回

select flashback_on from v$database;

 2、设置闪回区(先大小,后位置,反之报错)

alter system set db_recovery_file_dest_size=10G scope=both;

 

3、设置闪回区位置

alter system set db_recovery_file_dest='/opt/oracle/fast_recovery_area' scope=both;   --(如果/opt/oracle/fast_recovery_area这个没有fast_recovery_area会报错,执行这个命令之前先创建文件夹)

4、设置闪回目标为5天,以分钟为单位,每天为1440分钟:

 alter system set db_flashback_retention_target=4320 scope=both;

 

5、开启flashback (10g在mount开启)

 (1)alter database flashback on;  开启闪回

 (2)alter database flashback off;  关闭闪回

 6、最后查询闪回是否开启

select flashback_on from v$database;

 7、根据时间查询历史数据

SELECT * FROM abctest_table AS OF TIMESTAMP TO_TIMESTAMP('2023-12-19 14:53:00', 'YYYY-MM-DD HH24:MI:SS');

 8、查看数据库中的备份集详情

REPORT SCHEMA;

 9、进入sqlplus / as sysdba 命令下  (数据闪回还原历史数据)

(1)关闭数据库

shutdown immediate;

 (2)装载数据库

startup mount;

 (3 )  连接数据库

 connect target

 (4)输入要还原的时间点,还原数据

FLASHBACK DATABASE TO TIME="TO_DATE('2023-12-19 14:53:00','YYYY-MM-DD HH24:MI:SS')";

 (5)错误:

这个错误提示指出在执行 ALTER DATABASE OPEN; 命令时,需要指定 RESETLOGS 或 NORESETLOGS 选项。这两个选项分别用于数据库的不同恢复场景。

RESETLOGS 选项用于在数据库恢复期间,例如在恢复数据库文件时(如恢复备份后),要求 Oracle 重置日志序列号和日志文件头的信息。
NORESETLOGS 选项用于在不需要重置日志序列号和日志文件头的情况下打开数据库,例如在正常情况下启动数据库时。
解决方法是在 ALTER DATABASE OPEN; 命令中添加 RESETLOGS 或 NORESETLOGS 选项,具体取决于你的需求和情景。

例如,如果你需要重置日志序列号和日志文件头,可以执行:

ALTER DATABASE OPEN RESETLOGS;
如果你希望在不重置日志序列号和日志文件头的情况下打开数据库,则执行:

ALTER DATABASE OPEN NORESETLOGS;
(6)登入查询表数据

 

posted @   天真~  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示