생계/AWS2024. 5. 9. 14:39

스태츠팩 리포트를 생성하고, 이를 로컬에 다운받는 방법을 알아보자.

1. 스태츠팩 리포트 생성 

select snap_id, snap_time
  from stats$snapshot
 where snap_time > trunc(sysdate) -6
order by 1
;

begin rdsadmin.rds_run_spreport('start snapshot number', 'end snapshot number');
end;

2. AWS 콘솔에서 다운받기

- 콘솔에 로긴후  "로그 및 이벤트" 탭

아래 로그쪽에 'spreport' 를 입력..

이름이 일치하는 파일이 나오면 클릭하여 오른쪽 다운로드 버튼 클릭

* 보안 등의 이유로 다운이 되지 않는 다면 아래 유틸로 툴에서 확인가능하다. 

select text
  from table(rdsadmin.rds_file_util.read_text_file('DIR_NAME','FILE_NAME'))
;
  
 

반응형

'생계 > AWS' 카테고리의 다른 글

아마존 AWS EC2 생성하기 프리티어  (0) 2024.03.03
Posted by 돌고래트레이너
생계/AWS2024. 3. 3. 12:48

아마존 AWS 프리티어 계정으로 EC2 생성하기
EC2 는 Elastic Compute Cloud 의 약자이며, RDS 는 DBaas 로 DB만 서비스로 제공해주는데 EC2 는
OS만 깔린 서버를 제공해준다. 
 

사진출처 :  https://www.whatap.io/ko/blog/9/

 
정확하게는 저장된 AMI (amazon machine image)  이미지를 사용하여 서버를 제공해주기에 매우 빠른시간에(수초) 서버 사용이 가능해진다. 
 

1. AWS 프리티어 계정에 로긴

프리티어 계정으로 로긴하자
서비스옆에 네모박스 클릭해서 자주가는 서비스를 별표 클릭하여 즐겨찾기 해놓자

 

2. EC2 인스턴스 시작 

상단의 EC2 를 클릭한 후 '인스턴스 시작' 을 클릭 

 
AWS 에서는 생성된 가상머신 하나 하나를 인스턴스라고 부르는데, EC2 인스턴스를 생성하자.
이름은 적당히 하나 정해서 만들자. 
이미 저장된 AMI 로 인스턴스를 생성할건데 나는 우분투 를 선택했다. 

 
인스턴스 유형은 디폴트를 선택했다. 

"새 키 페어 생성" 을 눌러 새로 키 페어를 생성한다.
팝업창에서 이름만 새로 지정해주고 생성한다.

 네트웍설정은 vpc 랑 서브넷은 기존에 있는거 잡아주고 퍼블릭 ip 만 활성화로 설정하자

소스유형은 내 ip를 알면 내IP 로 잡는게 좋다. 
 
스토리지는 프리티어는 최대 30까지 사용가능하다. 

 
인스턴스 시작을 눌러 ec2인스턴스를 시작하자.

 
3. EC2 에 연결하기 
AMI 로 인스턴스를 시작하는 것은 순식간이다. 
이제 생성된 인스턴스에 연결하자. 

 
 - EC2 instance connect 

콘솔에서 바로 연결하는 방법도 있다. 우측 하단의 연결 버튼을 클릭하자.

정상적으로 접속이 된 화면이다. 
 
- SSH 클라이언트
SSH 클라이언트로 연결하자. 

아까 키페어를 생성한게 있는데 그걸로 접속을 할것이다.
MobaXterm 이라는 툴로 ec2 에 연결하자. 없으면 설치하자. 무료다 

 
아까 생성한 키페어를 터미널 폴더에 카피한다.  

콘솔에 나온 명령어 ssh -i "ec2-xxxx" 카피해서 실행하면 접속이 된다. 

반응형

'생계 > AWS' 카테고리의 다른 글

[RDS]oracle console에서 파일 다운받기  (0) 2024.05.09
Posted by 돌고래트레이너
생계/MySQL2024. 1. 16. 15:20

DBeaver 에서 information_schema, performance_schema 보이게 하기. 

디비버 설치 직후 디폴트 상태에서는 information/performance schema 가 아래처럼 보이지 않습니다. 

 

그것을 보려면 아래처럼 따라하면 됩니다. 

커넥션에서 우클릭 -> Connection view -> show system objects 선택

 

선택후 재접속하면 Databases 아래에 information/performance schema 가 보이게 됩니다. 

 

이상 끗

반응형
Posted by 돌고래트레이너
생계/MySQL2024. 1. 15. 14:36

 

mysql 접속시 유저/패스워드 입력안하고 로긴하는 방법을 알아보자 

 

lee@mysql-m:~$ 
lee@mysql-m:~$ mysql_config_editor print --all
lee@mysql-m:~$ 
lee@mysql-m:~$ mysql_config_editor set --login-path=rootconn --host=localhost --user=root --password
Enter password: 
lee@mysql-m:~$ 
lee@mysql-m:~$ 
lee@mysql-m:~$ ls -al
합계 48
drwxr-xr-x  6 lee  lee  4096  1월 16 21:43 .
drwxr-xr-x  3 root root 4096  1월 13 01:00 ..
-rw-------  1 lee  lee   106  1월 14 19:46 .Xauthority
-rw-------  1 lee  lee  1416  1월 16 17:57 .bash_history
-rw-r--r--  1 lee  lee   220  1월 13 01:00 .bash_logout
-rw-r--r--  1 lee  lee  3771  1월 13 01:00 .bashrc
drwx------ 11 lee  lee  4096  1월 13 01:29 .cache
drwx------ 11 lee  lee  4096  1월 14 18:21 .config
drwx------  3 lee  lee  4096  1월 13 01:14 .gnupg
drwxr-xr-x  3 lee  lee  4096  1월 13 01:14 .local
-rw-------  1 lee  lee   136  1월 16 21:44 .mylogin.cnf
lee@mysql-m:~$ mysql_config_editor print --all
[rootconn]
user = "root"
password = *****
host = "localhost"
lee@mysql-m:~$ 

mysql_config_editor 명령으로 credential 을 생성하면 유저 홈 디렉토리에 ".mylogin.cnf" 파일이 생성이 된다.

이후부터는 mysql 로긴시 패스워드를 입력할 필요없이 login-path 옵션을 붙여주면 된다.  

 

반응형
Posted by 돌고래트레이너
생계/MySQL2024. 1. 15. 00:30

virtual box 에 mysql master-slave replication 을 구성해보자  

가상머신은 oracle virtual box 을 사용하고 VM 에는 우분투를 설치하자. 

해당 작업은 이전에 작성한 내용을 참고하자

버추얼박스에 우분투 설치하기

1) 서버구성 

- mysql 설치 (master 역할) 

이것도 이전에 작성한 글을 참고해서 mysql 설치하자. 

버추얼박스에 mysql 설치하기

- vm 복제 (slave 역할)

vm 이 내려간 상태에서 vm 관리자 메뉴에서 대상vm을 복제하자

 

이름과 경로를 설정해준다.

 

같은 네트워크 대역을 사용하여 slave 에서 master 로 통신이 가능하게 설정해야한다. 
 vm 시작전 설정 -> 네트워크 -> 호스트전용어댑터


- hostname 변경 

복제한 vm의 hostname 이 그대로 사용중이니 mysql-s 로 변경해준다. 

@slave 

hostname
sudo hostnamectl set-hostname mysql-s

sudo reboot


2) Replication 설정
 2-1) 설정파일

@master
cd /etc/mysql
sudo vi my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1

sudo service mysql restart

*선택적 설정 고려 
max_binlog_size
expire_log_days
binlog_format=statement|mixed|row


@slave
cd /etc/mysql
sudo vi my.cnf

[mysqld]
server-id=2
relay-log=mysql-relay-bin
read_only

sudo service mysql restart


 2-2) Replication 유저 생성
@master
sudo mysql -u root -p1111

-- slave ip 로 생성한다. 
CREATE USER 'REP_ADM'@'192.168.56.102' IDENTIFIED WITH mysql_native_password BY '1111';
GRANT REPLICATION SLAVE ON *.* TO 'REP_ADM'@' 192.168.56.102';
   
SHOW MASTER STATUS;  

File, Position 값을 확인 

@slave 
sudo mysql -u root -p1111

-- master IP 를 넣는다 
CHANGE MASTER TO
MASTER_HOST='192.168.56.101',  
MASTER_USER='REP_ADM',
MASTER_PASSWORD='1111',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=2391;

START SLAVE;

SHOW SLAVE STATUS \G
=> [ERROR] : equal MySQL server UUIDs

sudo rm -rf /var/lib/mysql/auto.cnf
sudo service mysql restart


START SLAVE;


3) Replicatin 연결 확인 

-- 복제확인
sudo mysql --login-path=rootconn -e 'show slave status \G'|egrep "Master_Host|Master_User|Master_Log_File|Master_Log_Pos|ReplicateIgnore_DB|Running|IO_Err|SQL_Err|Seconds_Behind_Master|SQL_Delay"

** 아래 메세지가 보여야 정상 복제중
Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates


-- 에러확인
show variables like '%log_error%';
=> tail -100f  /var/log/mysql/error.log



4) Replication 에러 메시지별 대응

[ERROR] [MY-013117] [Repl] Replica I/O for channel '': Fatal error: The replica I/O thread stops because source and replica have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: MY-013117
=> VM 을 복제하면서 동일 uuid 문제 => auto.cnf 삭제 

[ERROR] [MY-013124] [Repl] Replica SQL for channel '': Replica failed to initialize applier metadata structure from the repository, Error_code: MY-013124
=> slave 를 리셋해준다. 
  stop slave; 
  reset slave;
  stop slave;
   
[ERROR] [MY-010584] [Repl] Replica I/O for channel '': Error connecting to source 'REP_ADM@192.17.7.5:3306'. This was attempt 1/86400, with a delay of 60 seconds between attempts. Message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. Error_code: MY-002061
=> rep user error : Authentication 확인 => mysql.user 의 plugin 확인 후 변경 => WITH mysql_native_password

[ERROR] [MY-010584] [Repl] Replica SQL for channel '': Worker 1 failed executing transaction 'ANONYMOUS' at source log mysql-bin.000003, end_log_pos 342; Error 'Can't create database 'test'; database exists' on query. Default database: 'test'. Query: 'create database test', Error_code: MY-001007
=> 트랜잭션 실패 : 대상 object 가 존재하지 않거나 실행할수 없어서 발생. skip 또는 object 동일하게 만들고 slave 재시작

** 트랜잭션 실패로 인한 에러메세지가 아는 내용이고 굳이 적용할 필요 없으면 아래명령으로 skip 한다. 
stop slave;
set global sql_slave_skip_counter=1;  -- skip 할 error 갯수
start slave;
show slave status\G

 

이상 끗.

도움되었다면 따봉줘!

반응형
Posted by 돌고래트레이너
생계/MySQL2024. 1. 13. 02:33

vm 재설치한 mysql 에 workbench 로 재접속시 에러 발생 

server public key 를 삭제

해당 파일을 날려준다. 

 

반응형

'생계 > MySQL' 카테고리의 다른 글

mysql login-path 로 로그인하기  (0) 2024.01.15
가상머신 virtualbox mysql replication 구성하기  (0) 2024.01.15
mysql 자주쓰는 함수  (0) 2023.11.06
mysql show 명령어 db정보 확인  (0) 2023.10.23
mysql select lock  (0) 2021.08.02
Posted by 돌고래트레이너
생계/MySQL2023. 11. 6. 17:50

mysql 자주쓰는 함수 정리해보자 

1) 문자열 

SELECT SUBSTR(STMT,2,3)                  -- 문자열 자르기
            , CHAR_LENGTH(STMT)            -- 문자열길이
            , LENGTH(STMT)                         -- 문자열길이 (byte)
            , REVERSE(STMT)                      -- 거꾸로 출력
            , CONCAT(STMT,'AAA','!@#')      -- 문자열 붙이기 ||
  FROM (
               SELECT 'ABC테스트123!@#' STMT FROM DUAL;
              )A;

2) 날짜 

- 현재시간 

select now()                  -- sysdate
 , curdate()                    -- trunc(sysdate)
 , date_add(now(), interval 1 second)   -- 기준시간 + 1초 
 , date_add(now(), interval 1 minute)    -- 기준시간 + 1분  
 , date_add(now(), interval 1 hour)        -- 기준시간 + 1시간  
 , date_add(now(), interval 1 day)        -- 기준시간 + 1일
 , date_add(now(), interval 1 month)    -- 기준시간 + 1달 
 , date_add(now(), interval 1 year)       -- 기준시간 + 1년
 , date_sub(now(), interval 1 second)
 , date_sub(now(), interval 1 minute)
 , date_sub(now(), interval 1 hour)
 , date_sub(now(), interval 1 day)
 , date_sub(now(), interval 1 month)
 , date_sub(now(), interval 1 year)
  from dual
;
  

반응형
Posted by 돌고래트레이너
생계/MySQL2023. 10. 23. 18:01

mysql 에서 DB정보들 확인하는 법 

1) TABLES  
- show tables from dbname like '%ABC' => 테이블 리스트 
- show create table TABLE_NAME; => DDL 확인
- show columns from TABLE_NAME; == desc TABLE_NAME
- show table status from dbname like '%ABC' => table info
 * 참조제약조건
 select constraint_name, table_name
   from information_schema.referential_constraints
  where constraint_schema='SCHEMA_NAME'
    and referenced_table_name='TABLE_NAME';


2) USER 
- select * from mysql.user => 유저리스트 
- show grants for 'user'@'ip'; => 권한 확인 

3) DB 
- show variables like '%server%'
- select database(); => 현재접속 DB
- select user();    => 현재접속 user 
- select version(); => 버전정보 == show variables like 'version'.
- show processlist => select * from performance_schema.processlist;

- show events => select * from information_schema.events;

 

반응형
Posted by 돌고래트레이너
생계/Oracle2023. 9. 20. 15:01

1) test 유저 생성

create user test identified by "Passw0rd";
grant connect to test;

2) wallet 용 tns alias 추가 
cd $ORACLE_HOME/network/admin
vi tnsnames.ora

WAL_TEST = 
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xx.xx.xxx)(PORT=1521))
)
(CONNECT_DATE=
(SERVICE_NAME=DFS)(SERVER=DEDICATED)
)
)


3) conn script 

cd /home/oracle/

-- vi p_test.sql
conn test/"Passw0rd" @WAL_TEST
show user;
select count(*) from all_objects;
exit;

-- vi np_test.sql
conn /@WAL_TEST
show user;
select count(*) from all_objects;
exit;


4) make wallet

-- wallet 저장 디렉토리 생성
mkdir $ORACLE_HOME/network/admin/wallet

-- wallet 생성, wallet 패스워드 입력
orapki wallet create -wallet "wallet 디렉토리" -auto_login_local

-- credential 생성, alias, 계정/비번 wallet 패스워드 입력 
mkstore -wrl "wallet 디렉토리" -createCredential WAL_TEST test Passw0rd

=> wallet 비밀번호 입력 

-- sqlnet.ora 에 wallet dir 추가 

cd $ORACLE_HOME/network/admin

vi sqlnet.ora

WALLET_LOCATION=
(SOURCE=
(METHOD=FILE)
(METHOD_DATA=
(DIRECTORY= "wallet 디렉토리")
))

SQLNET.WALLET_OVERRIDE = TRUE
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_VERSION = 0

5) 실행

cd /home/oracle/

ss
@p_test

@np_test


-- ### wallet 관리 #######

select *
  from v$encryption_wallet
;


-- credential list 확인 

mkstore -wrl "wallet 디렉토리" -listCredential


-- credential list 삭제 
mkstore -wrl "wallet 디렉토리" -deleteCredential WAL_TEST


-- credential 비번 수정 
mkstore -wrl "wallet 디렉토리" -modifyCredential WAL_TEST test pass1234

-- wallet 비번 수정 
orapki wallet change_pwd -wallet "wallet 디렉토리" -oldpwd "Passw0rd" -newpwd "oracle123"


-- wallet 삭제 
rm *wallet*

반응형

'생계 > Oracle' 카테고리의 다른 글

oracle audit 파일 삭제  (0) 2023.05.29
대용량 컬럼 drop 하기 # set unused  (0) 2023.05.04
리눅스 오라클 hugepage 설정  (0) 2023.05.03
RMAN CATALOG DB 쓰는 이유  (0) 2023.02.28
오라클 메모리 구조 Memory Architecture  (0) 2023.01.24
Posted by 돌고래트레이너
생계/OERR2023. 6. 8. 11:15

운영 상태에서 인덱스를 생성, 변경시 online 옵션은 매우 유용하지만 가끔 의도치 않는 상황을 만들기도 한다. 

의도치 않거나 혹은 의도해서 해당 프로세스를 kill 했을때 uncommit 된 트랜잭션이 정리가 되지 않는 상태로 오래 지속될수가 있다. 

08104, 00000, "this index object %s is being online built or rebuilt"
// *Cause:  the index is being created or rebuild or waited for recovering
//          from the online (re)build
// *Action: wait the online index build or recovery to complete

CREATE TABLE TEST_TAB(A INT, B VARCHAR2(10));
insert into TEST_TAB 
select dbms_random.value(1,1000000), 'A'
  from dual
 connect by level < 1000000;
 
CREATE INDEX IDX_TEST ON TEST_TAB(A)online;
 => cancel 

DROP INDEX IDX_TEST;

 => ORA-08104

08104, 00000, "this index object %s is being online built or rebuilt"
// *Cause:  the index is being created or rebuild or waited for recovering
//          from the online (re)build
// *Action: wait the online index build or recovery to complete

아래처럼 수동으로 상태를 정리해주자.
 
declare
v_result boolean;
begin
v_result := DBMS_REPAIR.ONLINE_INDEX_CLEAN(73252);  -- 인덱스의 object_id
end;
/



반응형
Posted by 돌고래트레이너