The president, who revels in large crowds and had predicted his first rally in months would be epic, complained that the media had discouraged attendees from coming and cited bad behavior from protesters outside but did not specifically acknowledge the fact that many seats in the 19,000-seat BOK Center arena were empty.
Attendees largely did not wear face masks at the rally.
Trump was seeking to bring momentum back to his campaign after coming under fire for his responses to the coronavirus and to the death of George Floyd, a Black man who died in the custody of Minneapolis police.
He has brushed aside criticism for his decision to hold his first rally since March 2 in Tulsa, the site of the country's bloodiest outbreaks of racist violence against Black Americans some 100 years ago.
Trump, who has encouraged a militaristic response to the demonstrations nationwide while taking criticism for not showing more empathy for the plight of Black Americans, criticized some of the protests.
"The unhinged left-wing mob is trying to vandalize our history, desecrate our monuments - our beautiful monuments - tear down our statues and punish, cancel and persecute anyone who does not conform to their demands for absolute and total control. We're not conforming," Trump said.
The Republican president is trailing the presumptive Democratic presidential nominee, former Vice President Joe Biden, in polls ahead of the November election. Biden has hammered Trump for his response to the pandemic.
Trump defended his response, saying that more testing had led to identifying more cases, seemingly to his chagrin.
"When you do testing to that extent, you're going to ... find more cases," he said. "So, I said to my people, 'Slow the testing down, please.'"
Hours before the rally, Trump's campaign announced six members of its advance team had tested positive for COVID-19. Only a handful of attendees wore masks inside the arena.
Oklahoma has reported a surge in new COVID-19 infections in recent days, and the state's department of health warned that attendees face an increased risk of catching the virus.
"I'm not concerned about it. I think it's mostly a hoax," said attendee Will Williams, 46, about the coronavirus, questioning why Democrats were not more concerned about people who die from drug overdoses. Williams did not wear a mask.
The president, unusually, suggested that his own speech to the partially empty arena was not his best.
"So far tonight, I'm average," Trump said.
"I've never seen anything like it. You are warriors. Thank you," Trump told the crowd, filled with people wearing red t-shirts, the campaign's signature color. "We are the party of Abraham Lincoln and we are the party of law and order," he said.
Trump campaign officials had said prior to the event that demand far outstripped the capacity of the venue.
Trump and Pence canceled addresses to an expected "overflow" crowd outside the arena after "protesters interfered with supporters," Trump campaign spokesman Tim Murtaugh said.
Television images showed a dozen or so Trump supporters in the "spillover" area watching the event on a large screen.
There were some scuffles outside the event between Black Lives Matter protesters and Trump supporters.
"Racists go home," shouted a woman wearing a Black Lives Matter shirt.
Tulsa Police reported the arrest of a white woman wearing a T-shirt reading "I can't breathe" from a private event area after she refused to leave.
A small group of armed men could be seen outside the event. One of them told reporters they were there in case "antifa" protesters turned violent, using the acronym for "anti-facist."
The country's racial divide remains a political vulnerability for Trump. His "law and order" reaction to the protests triggered by Floyd's death has put him at odds with the views of most Americans.
After intense criticism, Trump postponed the rally by a day so that it did not coincide with the anniversary of the June 19 commemoration of the end of Black slavery in the United States.
On Friday, he threatened unspecified action against any "protesters, anarchists, agitators, looters or lowlifes" who traveled to Oklahoma, a warning that his campaign said was not aimed at peaceful demonstrators. Critics accused Trump of trying to provoke conflict.
White House and Trump campaign officials had largely dismissed concerns about the rally's health safety, saying masks and hand sanitizer would be available. However, participants were required to waive their right sue if they contract the coronavirus at the event.